codex-chatgpt-control 0.1.0-alpha.1 → 0.3.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.
- package/CHANGELOG.md +14 -0
- package/README.md +55 -0
- package/contracts/v1/fixtures/backend-capabilities.json +8 -0
- package/contracts/v1/fixtures/blocker-explanation-profiles.json +114 -0
- package/contracts/v1/fixtures/command-descriptors.json +224 -16
- package/contracts/v1/fixtures/doctor-bridge-upload.json +8 -0
- package/contracts/v1/fixtures/doctor-scenario-preflight.json +119 -0
- package/contracts/v1/fixtures/existing-tab-diagnostics-blocker.json +57 -0
- package/contracts/v1/fixtures/files-preflight-success.json +32 -0
- package/contracts/v1/fixtures/help-root.json +1 -1
- package/contracts/v1/fixtures/output-json-parse-success.json +17 -2
- package/contracts/v1/fixtures/project-sources-plan-add.json +71 -0
- package/contracts/v1/fixtures/read-latest-clipped.json +31 -0
- package/contracts/v1/fixtures/reports-create-redacted.json +15 -0
- package/contracts/v1/fixtures/responses-basic-success.json +11 -0
- package/contracts/v1/fixtures/run-basic-success.json +15 -0
- package/contracts/v1/fixtures/run-browser-bridge-blocker.json +2 -2
- package/contracts/v1/fixtures/run-timeout-partial.json +2 -2
- package/contracts/v1/fixtures/runner-budget-blocker.json +1 -1
- package/contracts/v1/fixtures/stream-blocked.ndjson +1 -1
- package/contracts/v1/fixtures/stream-submitted-completed.ndjson +1 -1
- package/contracts/v1/manifest.json +30 -0
- package/contracts/v1/parity-suite.json +80 -7
- package/contracts/v1/schemas/backend-request.schema.json +3 -0
- package/contracts/v1/schemas/command-result.schema.json +48 -0
- package/contracts/v1/schemas/response.schema.json +28 -0
- package/contracts/v1/schemas/run-result.schema.json +84 -0
- package/contracts/v1/surface-drift-policy.json +210 -0
- package/dist/codex-chatgpt-control-backend.mjs +7478 -1789
- package/dist/codex-chatgpt-control.bundle.mjs +8023 -2266
- package/dist/src/backend/client.d.ts +6 -1
- package/dist/src/backend/client.js +5 -0
- package/dist/src/backend/protocol.d.ts +1 -1
- package/dist/src/backend/protocol.js +8 -0
- package/dist/src/backend/session.js +16 -0
- package/dist/src/browser/attach.js +128 -20
- package/dist/src/browser/clipboard.d.ts +11 -0
- package/dist/src/browser/clipboard.js +34 -7
- package/dist/src/browser/downloads.js +2 -1
- package/dist/src/browser/page-state.js +18 -5
- package/dist/src/client.d.ts +17 -1
- package/dist/src/client.js +89 -9
- package/dist/src/commands/artifacts.d.ts +5 -0
- package/dist/src/commands/artifacts.js +432 -0
- package/dist/src/commands/context.js +8 -3
- package/dist/src/commands/conversation.d.ts +15 -0
- package/dist/src/commands/conversation.js +44 -0
- package/dist/src/commands/deadline.d.ts +8 -0
- package/dist/src/commands/deadline.js +14 -0
- package/dist/src/commands/doctor.d.ts +10 -2
- package/dist/src/commands/doctor.js +249 -14
- package/dist/src/commands/files.d.ts +2 -1
- package/dist/src/commands/files.js +406 -18
- package/dist/src/commands/messages.d.ts +2 -1
- package/dist/src/commands/messages.js +430 -98
- package/dist/src/commands/modes.d.ts +4 -1
- package/dist/src/commands/modes.js +404 -37
- package/dist/src/commands/probes.d.ts +15 -0
- package/dist/src/commands/probes.js +64 -0
- package/dist/src/commands/project-sources.d.ts +10 -0
- package/dist/src/commands/project-sources.js +643 -0
- package/dist/src/commands/registry.js +108 -14
- package/dist/src/commands/reports.d.ts +9 -0
- package/dist/src/commands/reports.js +84 -7
- package/dist/src/commands/response-actions.js +33 -0
- package/dist/src/commands/sequence.js +14 -0
- package/dist/src/commands/threads.js +4 -25
- package/dist/src/commands/timeouts.d.ts +2 -0
- package/dist/src/commands/timeouts.js +18 -0
- package/dist/src/diagnostics/blockers.d.ts +54 -0
- package/dist/src/diagnostics/blockers.js +299 -0
- package/dist/src/dom/artifacts.d.ts +7 -0
- package/dist/src/dom/artifacts.js +198 -0
- package/dist/src/dom/generation-state.d.ts +15 -0
- package/dist/src/dom/generation-state.js +109 -0
- package/dist/src/dom/label-match.d.ts +3 -0
- package/dist/src/dom/label-match.js +25 -0
- package/dist/src/dom/locale/am.d.ts +34 -0
- package/dist/src/dom/locale/am.js +34 -0
- package/dist/src/dom/locale/ar.d.ts +35 -0
- package/dist/src/dom/locale/ar.js +35 -0
- package/dist/src/dom/locale/bg.d.ts +35 -0
- package/dist/src/dom/locale/bg.js +35 -0
- package/dist/src/dom/locale/bn.d.ts +35 -0
- package/dist/src/dom/locale/bn.js +35 -0
- package/dist/src/dom/locale/bs.d.ts +34 -0
- package/dist/src/dom/locale/bs.js +34 -0
- package/dist/src/dom/locale/ca.d.ts +34 -0
- package/dist/src/dom/locale/ca.js +34 -0
- package/dist/src/dom/locale/cs.d.ts +34 -0
- package/dist/src/dom/locale/cs.js +34 -0
- package/dist/src/dom/locale/da.d.ts +33 -0
- package/dist/src/dom/locale/da.js +33 -0
- package/dist/src/dom/locale/de.d.ts +36 -0
- package/dist/src/dom/locale/de.js +36 -0
- package/dist/src/dom/locale/el.d.ts +34 -0
- package/dist/src/dom/locale/el.js +34 -0
- package/dist/src/dom/locale/en.d.ts +64 -0
- package/dist/src/dom/locale/en.js +71 -0
- package/dist/src/dom/locale/es-419.d.ts +34 -0
- package/dist/src/dom/locale/es-419.js +34 -0
- package/dist/src/dom/locale/es-ES.d.ts +34 -0
- package/dist/src/dom/locale/es-ES.js +34 -0
- package/dist/src/dom/locale/et.d.ts +34 -0
- package/dist/src/dom/locale/et.js +34 -0
- package/dist/src/dom/locale/fa.d.ts +35 -0
- package/dist/src/dom/locale/fa.js +35 -0
- package/dist/src/dom/locale/fi.d.ts +34 -0
- package/dist/src/dom/locale/fi.js +34 -0
- package/dist/src/dom/locale/fr-CA.d.ts +35 -0
- package/dist/src/dom/locale/fr-CA.js +35 -0
- package/dist/src/dom/locale/fr-FR.d.ts +35 -0
- package/dist/src/dom/locale/fr-FR.js +35 -0
- package/dist/src/dom/locale/gu.d.ts +34 -0
- package/dist/src/dom/locale/gu.js +34 -0
- package/dist/src/dom/locale/hi.d.ts +34 -0
- package/dist/src/dom/locale/hi.js +34 -0
- package/dist/src/dom/locale/hr.d.ts +33 -0
- package/dist/src/dom/locale/hr.js +33 -0
- package/dist/src/dom/locale/hu.d.ts +34 -0
- package/dist/src/dom/locale/hu.js +34 -0
- package/dist/src/dom/locale/hy.d.ts +35 -0
- package/dist/src/dom/locale/hy.js +35 -0
- package/dist/src/dom/locale/id.d.ts +34 -0
- package/dist/src/dom/locale/id.js +34 -0
- package/dist/src/dom/locale/index.d.ts +83 -0
- package/dist/src/dom/locale/index.js +239 -0
- package/dist/src/dom/locale/is.d.ts +34 -0
- package/dist/src/dom/locale/is.js +34 -0
- package/dist/src/dom/locale/it.d.ts +33 -0
- package/dist/src/dom/locale/it.js +33 -0
- package/dist/src/dom/locale/ja.d.ts +33 -0
- package/dist/src/dom/locale/ja.js +33 -0
- package/dist/src/dom/locale/ka.d.ts +34 -0
- package/dist/src/dom/locale/ka.js +34 -0
- package/dist/src/dom/locale/kk.d.ts +34 -0
- package/dist/src/dom/locale/kk.js +34 -0
- package/dist/src/dom/locale/kn.d.ts +35 -0
- package/dist/src/dom/locale/kn.js +35 -0
- package/dist/src/dom/locale/ko.d.ts +34 -0
- package/dist/src/dom/locale/ko.js +34 -0
- package/dist/src/dom/locale/lt.d.ts +35 -0
- package/dist/src/dom/locale/lt.js +35 -0
- package/dist/src/dom/locale/lv.d.ts +34 -0
- package/dist/src/dom/locale/lv.js +34 -0
- package/dist/src/dom/locale/mk.d.ts +33 -0
- package/dist/src/dom/locale/mk.js +33 -0
- package/dist/src/dom/locale/ml.d.ts +35 -0
- package/dist/src/dom/locale/ml.js +35 -0
- package/dist/src/dom/locale/mn.d.ts +35 -0
- package/dist/src/dom/locale/mn.js +35 -0
- package/dist/src/dom/locale/mr.d.ts +35 -0
- package/dist/src/dom/locale/mr.js +35 -0
- package/dist/src/dom/locale/ms.d.ts +34 -0
- package/dist/src/dom/locale/ms.js +34 -0
- package/dist/src/dom/locale/my.d.ts +34 -0
- package/dist/src/dom/locale/my.js +34 -0
- package/dist/src/dom/locale/nb.d.ts +34 -0
- package/dist/src/dom/locale/nb.js +34 -0
- package/dist/src/dom/locale/nl.d.ts +34 -0
- package/dist/src/dom/locale/nl.js +34 -0
- package/dist/src/dom/locale/pa.d.ts +35 -0
- package/dist/src/dom/locale/pa.js +35 -0
- package/dist/src/dom/locale/pl.d.ts +34 -0
- package/dist/src/dom/locale/pl.js +34 -0
- package/dist/src/dom/locale/pt-BR.d.ts +34 -0
- package/dist/src/dom/locale/pt-BR.js +34 -0
- package/dist/src/dom/locale/pt-PT.d.ts +34 -0
- package/dist/src/dom/locale/pt-PT.js +34 -0
- package/dist/src/dom/locale/ro.d.ts +33 -0
- package/dist/src/dom/locale/ro.js +33 -0
- package/dist/src/dom/locale/ru.d.ts +31 -0
- package/dist/src/dom/locale/ru.js +31 -0
- package/dist/src/dom/locale/sk.d.ts +34 -0
- package/dist/src/dom/locale/sk.js +34 -0
- package/dist/src/dom/locale/sl.d.ts +34 -0
- package/dist/src/dom/locale/sl.js +34 -0
- package/dist/src/dom/locale/so.d.ts +34 -0
- package/dist/src/dom/locale/so.js +34 -0
- package/dist/src/dom/locale/sq.d.ts +34 -0
- package/dist/src/dom/locale/sq.js +34 -0
- package/dist/src/dom/locale/sr.d.ts +31 -0
- package/dist/src/dom/locale/sr.js +31 -0
- package/dist/src/dom/locale/sv.d.ts +34 -0
- package/dist/src/dom/locale/sv.js +34 -0
- package/dist/src/dom/locale/sw.d.ts +34 -0
- package/dist/src/dom/locale/sw.js +34 -0
- package/dist/src/dom/locale/ta.d.ts +35 -0
- package/dist/src/dom/locale/ta.js +35 -0
- package/dist/src/dom/locale/te.d.ts +35 -0
- package/dist/src/dom/locale/te.js +35 -0
- package/dist/src/dom/locale/th.d.ts +34 -0
- package/dist/src/dom/locale/th.js +34 -0
- package/dist/src/dom/locale/tl.d.ts +28 -0
- package/dist/src/dom/locale/tl.js +28 -0
- package/dist/src/dom/locale/tr.d.ts +34 -0
- package/dist/src/dom/locale/tr.js +34 -0
- package/dist/src/dom/locale/types.d.ts +52 -0
- package/dist/src/dom/locale/types.js +1 -0
- package/dist/src/dom/locale/uk.d.ts +34 -0
- package/dist/src/dom/locale/uk.js +34 -0
- package/dist/src/dom/locale/ur.d.ts +34 -0
- package/dist/src/dom/locale/ur.js +34 -0
- package/dist/src/dom/locale/vi.d.ts +34 -0
- package/dist/src/dom/locale/vi.js +34 -0
- package/dist/src/dom/locale/zh-HK.d.ts +35 -0
- package/dist/src/dom/locale/zh-HK.js +35 -0
- package/dist/src/dom/locale/zh-Hans.d.ts +35 -0
- package/dist/src/dom/locale/zh-Hans.js +35 -0
- package/dist/src/dom/locale/zh-TW.d.ts +36 -0
- package/dist/src/dom/locale/zh-TW.js +36 -0
- package/dist/src/dom/locale-labels.d.ts +26 -0
- package/dist/src/dom/locale-labels.js +26 -0
- package/dist/src/dom/menus.d.ts +6 -0
- package/dist/src/dom/menus.js +47 -10
- package/dist/src/dom/message-format.d.ts +2 -1
- package/dist/src/dom/message-format.js +67 -10
- package/dist/src/dom/messages.d.ts +2 -1
- package/dist/src/dom/messages.js +2 -4
- package/dist/src/dom/selectors.d.ts +1 -0
- package/dist/src/dom/selectors.js +42 -15
- package/dist/src/dom/wait-snapshot.d.ts +43 -0
- package/dist/src/dom/wait-snapshot.js +127 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.js +5 -0
- package/dist/src/platform/local-paths.d.ts +4 -0
- package/dist/src/platform/local-paths.js +20 -0
- package/dist/src/runner/interruptions.js +15 -4
- package/dist/src/runner/responses.js +18 -1
- package/dist/src/runner/result.js +15 -0
- package/dist/src/runner/resume.js +1 -0
- package/dist/src/runner/types.d.ts +3 -0
- package/dist/src/safety/risk.d.ts +8 -0
- package/dist/src/safety/risk.js +8 -0
- package/dist/src/safety/untrusted-output.d.ts +73 -0
- package/dist/src/safety/untrusted-output.js +199 -0
- package/dist/src/scripts/apply-intelligence-locale-captures.d.ts +1 -0
- package/dist/src/scripts/apply-intelligence-locale-captures.js +270 -0
- package/dist/src/scripts/capture-intelligence-locales.d.ts +25 -0
- package/dist/src/scripts/capture-intelligence-locales.js +669 -0
- package/dist/src/scripts/check-surface-drift.d.ts +1 -0
- package/dist/src/scripts/check-surface-drift.js +11 -0
- package/dist/src/scripts/live-smoke/scenarios.js +84 -0
- package/dist/src/scripts/locale-capture/language-coverage.d.ts +10 -0
- package/dist/src/scripts/locale-capture/language-coverage.js +39 -0
- package/dist/src/testing/surface-drift.d.ts +66 -0
- package/dist/src/testing/surface-drift.js +363 -0
- package/dist/src/types.d.ts +229 -2
- package/package.json +3 -2
- package/references/backend-protocol.md +96 -2
- package/references/language-coverage.md +142 -0
- package/references/localization.md +257 -0
- package/references/python-parity.md +67 -3
- package/references/safety.md +2 -0
- package/references/troubleshooting.md +83 -2
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turkish (tr-TR). Captured 2026-06-09 against a live chatgpt.com session
|
|
3
|
+
* (html lang=tr-TR, 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 tr: {
|
|
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
|
+
modeOptions: {
|
|
21
|
+
instant: string[];
|
|
22
|
+
medium: string[];
|
|
23
|
+
high: string[];
|
|
24
|
+
extraHigh: string[];
|
|
25
|
+
};
|
|
26
|
+
modeOpenerExtra: string[];
|
|
27
|
+
tools: {
|
|
28
|
+
web_search: string[];
|
|
29
|
+
deep_research: string[];
|
|
30
|
+
create_image: string[];
|
|
31
|
+
};
|
|
32
|
+
signedInMarkers: string[];
|
|
33
|
+
responseActions: string[];
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turkish (tr-TR). Captured 2026-06-09 against a live chatgpt.com session
|
|
3
|
+
* (html lang=tr-TR, 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 tr = {
|
|
10
|
+
composerTextbox: ["Herhangi bir şey sor"],
|
|
11
|
+
sendButton: ["Prompt gönder"],
|
|
12
|
+
searchChatsButton: ["Sohbetlerde ara"],
|
|
13
|
+
searchChatsPlaceholder: ["Sohbetlerde ara..."],
|
|
14
|
+
newChat: ["Yeni sohbet"],
|
|
15
|
+
addFilesButton: ["Dosyaları ve çok daha fazlasını ekle"],
|
|
16
|
+
addFilesOpenerCandidates: ["Dosyaları ve çok daha fazlasını ekle"],
|
|
17
|
+
addPhotosFilesMenuItem: ["Fotoğraf ve dosya yükle"],
|
|
18
|
+
copyResponse: ["Yanıtı kopyala"],
|
|
19
|
+
modeLabels: ["Anında", "Orta", "Yüksek", "Çok Yüksek"],
|
|
20
|
+
modeOptions: {
|
|
21
|
+
instant: ["Anında"],
|
|
22
|
+
medium: ["Orta"],
|
|
23
|
+
high: ["Yüksek"],
|
|
24
|
+
extraHigh: ["Çok Yüksek"],
|
|
25
|
+
},
|
|
26
|
+
modeOpenerExtra: ["Yapılandır..."],
|
|
27
|
+
tools: {
|
|
28
|
+
web_search: ["Web araması"],
|
|
29
|
+
deep_research: ["Derin araştırma"],
|
|
30
|
+
create_image: ["Görsel oluştur"],
|
|
31
|
+
},
|
|
32
|
+
signedInMarkers: ["Yeni sohbet", "Sohbetlerde ara", "Yakın zamandakiler", "Sohbet geçmişi", "Projeler", "Herhangi bir şey sor"],
|
|
33
|
+
responseActions: ["Yanıtı kopyala"],
|
|
34
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical shape for a complete locale contribution.
|
|
3
|
+
*
|
|
4
|
+
* Each value is either a single string (one candidate) or a readonly array of strings
|
|
5
|
+
* (multiple candidates for the same semantic slot). The combiner in `index.ts` flattens
|
|
6
|
+
* every contribution into a deduped `string[]` per key, English-first.
|
|
7
|
+
*
|
|
8
|
+
* `tools` is keyed by logical tool id (stable API keys — callers pass `tool: "web_search"`).
|
|
9
|
+
* A locale only needs to list the tools whose display text differs from English.
|
|
10
|
+
*/
|
|
11
|
+
export type ModeOptionId = "latest" | "instant" | "thinking" | "extended" | "medium" | "high" | "extraHigh" | "pro";
|
|
12
|
+
export type ModeOptionLabels = Record<ModeOptionId, string | readonly string[]>;
|
|
13
|
+
export type ModeOptionContribution = Partial<ModeOptionLabels>;
|
|
14
|
+
export type LocaleStrings = {
|
|
15
|
+
composerTextbox: string | readonly string[];
|
|
16
|
+
sendButton: string | readonly string[];
|
|
17
|
+
searchChatsButton: string | readonly string[];
|
|
18
|
+
searchChatsPlaceholder: string | readonly string[];
|
|
19
|
+
newChat: string | readonly string[];
|
|
20
|
+
addFilesButton: string | readonly string[];
|
|
21
|
+
addFilesOpenerCandidates: string | readonly string[];
|
|
22
|
+
addPhotosFilesMenuItem: string | readonly string[];
|
|
23
|
+
projectSourcesTab: string | readonly string[];
|
|
24
|
+
projectSourcesAddSource: string | readonly string[];
|
|
25
|
+
projectSourcesUploadFiles: string | readonly string[];
|
|
26
|
+
copyResponse: string | readonly string[];
|
|
27
|
+
download: string | readonly string[];
|
|
28
|
+
downloadImage: string | readonly string[];
|
|
29
|
+
imageContainerHint: string | readonly string[];
|
|
30
|
+
modeLabels: string | readonly string[];
|
|
31
|
+
modeOptions: ModeOptionLabels;
|
|
32
|
+
modeOpenerExtra: string | readonly string[];
|
|
33
|
+
threadActionMenuItems: string | readonly string[];
|
|
34
|
+
threadActionPrefixes: string | readonly string[];
|
|
35
|
+
tools: Record<"web_search" | "deep_research" | "create_image", string | readonly string[]>;
|
|
36
|
+
signedInMarkers: string | readonly string[];
|
|
37
|
+
transientAssistant: string | readonly string[];
|
|
38
|
+
stopControl: string | readonly string[];
|
|
39
|
+
stoppedAssistant: string | readonly string[];
|
|
40
|
+
responseActions: string | readonly string[];
|
|
41
|
+
loginBlocker: string | readonly string[];
|
|
42
|
+
captchaBlocker: string | readonly string[];
|
|
43
|
+
rateLimitBlocker: string | readonly string[];
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* The type for non-English locale files. Every key is optional so a contributor only
|
|
47
|
+
* needs to supply the strings that differ from English. `tools` is also partial.
|
|
48
|
+
*/
|
|
49
|
+
export type LocaleContribution = Partial<Omit<LocaleStrings, "tools" | "modeOptions">> & {
|
|
50
|
+
modeOptions?: ModeOptionContribution;
|
|
51
|
+
tools?: Partial<Record<"web_search" | "deep_research" | "create_image", string | readonly string[]>>;
|
|
52
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ukrainian (uk-UA). Captured 2026-06-09 against a live chatgpt.com session
|
|
3
|
+
* (html lang=uk-UA, 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 uk: {
|
|
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
|
+
modeOptions: {
|
|
21
|
+
instant: string[];
|
|
22
|
+
medium: string[];
|
|
23
|
+
high: string[];
|
|
24
|
+
extraHigh: string[];
|
|
25
|
+
};
|
|
26
|
+
modeOpenerExtra: string[];
|
|
27
|
+
tools: {
|
|
28
|
+
web_search: string[];
|
|
29
|
+
deep_research: string[];
|
|
30
|
+
create_image: string[];
|
|
31
|
+
};
|
|
32
|
+
signedInMarkers: string[];
|
|
33
|
+
responseActions: string[];
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ukrainian (uk-UA). Captured 2026-06-09 against a live chatgpt.com session
|
|
3
|
+
* (html lang=uk-UA, 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 uk = {
|
|
10
|
+
composerTextbox: ["Запитайте будь-що"],
|
|
11
|
+
sendButton: ["Надіслати запит"],
|
|
12
|
+
searchChatsButton: ["Пошук чатів"],
|
|
13
|
+
searchChatsPlaceholder: ["Пошук у чатах…"],
|
|
14
|
+
newChat: ["Новий чат"],
|
|
15
|
+
addFilesButton: ["Додавайте файли й виконуйте інші дії"],
|
|
16
|
+
addFilesOpenerCandidates: ["Додавайте файли й виконуйте інші дії"],
|
|
17
|
+
addPhotosFilesMenuItem: ["Додати світлини та файли"],
|
|
18
|
+
copyResponse: ["Копіювати відповідь"],
|
|
19
|
+
modeLabels: ["Миттєвий", "Середній", "Високий", "Дуже високий"],
|
|
20
|
+
modeOptions: {
|
|
21
|
+
instant: ["Миттєвий"],
|
|
22
|
+
medium: ["Середній"],
|
|
23
|
+
high: ["Високий"],
|
|
24
|
+
extraHigh: ["Дуже високий"],
|
|
25
|
+
},
|
|
26
|
+
modeOpenerExtra: ["Налаштувати…"],
|
|
27
|
+
tools: {
|
|
28
|
+
web_search: ["Пошук в Інтернеті"],
|
|
29
|
+
deep_research: ["Глибоко дослідити"],
|
|
30
|
+
create_image: ["Створити зображення"],
|
|
31
|
+
},
|
|
32
|
+
signedInMarkers: ["Новий чат", "Пошук чатів", "Нещодавні", "Історія чатів", "Проєкти", "Запитайте будь-що"],
|
|
33
|
+
responseActions: ["Копіювати відповідь"],
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Urdu (ur). Captured 2026-06-09 against a live chatgpt.com session
|
|
3
|
+
* (html lang=ur, 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 ur: {
|
|
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
|
+
modeOptions: {
|
|
21
|
+
instant: string[];
|
|
22
|
+
medium: string[];
|
|
23
|
+
high: string[];
|
|
24
|
+
extraHigh: string[];
|
|
25
|
+
};
|
|
26
|
+
modeOpenerExtra: string[];
|
|
27
|
+
tools: {
|
|
28
|
+
web_search: string[];
|
|
29
|
+
deep_research: string[];
|
|
30
|
+
create_image: string[];
|
|
31
|
+
};
|
|
32
|
+
signedInMarkers: string[];
|
|
33
|
+
responseActions: string[];
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Urdu (ur). Captured 2026-06-09 against a live chatgpt.com session
|
|
3
|
+
* (html lang=ur, 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 ur = {
|
|
10
|
+
composerTextbox: ["کوئی بھی چیز پوچھیں۔۔۔"],
|
|
11
|
+
sendButton: ["پرامپٹ بھیجیں"],
|
|
12
|
+
searchChatsButton: ["چیٹس تلاش کریں"],
|
|
13
|
+
searchChatsPlaceholder: ["چیٹس تلاش کریں..."],
|
|
14
|
+
newChat: ["نئی چیٹ"],
|
|
15
|
+
addFilesButton: ["فائلیں وغیرہ اپ لوڈ کریں"],
|
|
16
|
+
addFilesOpenerCandidates: ["فائلیں وغیرہ اپ لوڈ کریں"],
|
|
17
|
+
addPhotosFilesMenuItem: ["تصویریں اور فائلیں شامل کریں"],
|
|
18
|
+
copyResponse: ["جواب کاپی کریں"],
|
|
19
|
+
modeLabels: ["فوری", "اوسط", "اعلیٰ", "انتہائی اعلیٰ"],
|
|
20
|
+
modeOptions: {
|
|
21
|
+
instant: ["فوری"],
|
|
22
|
+
medium: ["اوسط"],
|
|
23
|
+
high: ["اعلیٰ"],
|
|
24
|
+
extraHigh: ["انتہائی اعلیٰ"],
|
|
25
|
+
},
|
|
26
|
+
modeOpenerExtra: ["کنفیگر کریں..."],
|
|
27
|
+
tools: {
|
|
28
|
+
web_search: ["ویب پر تلاش"],
|
|
29
|
+
deep_research: ["ڈیپ ریسرچ"],
|
|
30
|
+
create_image: ["تصویر بنائیں"],
|
|
31
|
+
},
|
|
32
|
+
signedInMarkers: ["نئی چیٹ", "چیٹس تلاش کریں", "حالیہ", "چیٹ ہسٹری", "پراجیکٹس", "کوئی بھی چیز پوچھیں۔۔۔"],
|
|
33
|
+
responseActions: ["جواب کاپی کریں"],
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vietnamese (vi-VN). Captured 2026-06-09 against a live chatgpt.com session
|
|
3
|
+
* (html lang=vi-VN, 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 vi: {
|
|
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
|
+
modeOptions: {
|
|
21
|
+
instant: string[];
|
|
22
|
+
medium: string[];
|
|
23
|
+
high: string[];
|
|
24
|
+
extraHigh: string[];
|
|
25
|
+
};
|
|
26
|
+
modeOpenerExtra: string[];
|
|
27
|
+
tools: {
|
|
28
|
+
web_search: string[];
|
|
29
|
+
deep_research: string[];
|
|
30
|
+
create_image: string[];
|
|
31
|
+
};
|
|
32
|
+
signedInMarkers: string[];
|
|
33
|
+
responseActions: string[];
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vietnamese (vi-VN). Captured 2026-06-09 against a live chatgpt.com session
|
|
3
|
+
* (html lang=vi-VN, 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 vi = {
|
|
10
|
+
composerTextbox: ["Trò chuyện với ChatGPT"],
|
|
11
|
+
sendButton: ["Gửi lời nhắc"],
|
|
12
|
+
searchChatsButton: ["Tìm kiếm đoạn chat"],
|
|
13
|
+
searchChatsPlaceholder: ["Tìm kiếm đoạn chat..."],
|
|
14
|
+
newChat: ["Đoạn chat mới"],
|
|
15
|
+
addFilesButton: ["Thêm tệp và nhiều tính năng khác"],
|
|
16
|
+
addFilesOpenerCandidates: ["Thêm tệp và nhiều tính năng khác"],
|
|
17
|
+
addPhotosFilesMenuItem: ["Thêm ảnh và tệp"],
|
|
18
|
+
copyResponse: ["Sao chép phản hồi"],
|
|
19
|
+
modeLabels: ["Tức thì", "Trung bình", "Cao", "Rất cao"],
|
|
20
|
+
modeOptions: {
|
|
21
|
+
instant: ["Tức thì"],
|
|
22
|
+
medium: ["Trung bình"],
|
|
23
|
+
high: ["Cao"],
|
|
24
|
+
extraHigh: ["Rất cao"],
|
|
25
|
+
},
|
|
26
|
+
modeOpenerExtra: ["Định cấu hình"],
|
|
27
|
+
tools: {
|
|
28
|
+
web_search: ["Tìm kiếm trên mạng"],
|
|
29
|
+
deep_research: ["Nghiên cứu chuyên sâu"],
|
|
30
|
+
create_image: ["Tạo hình ảnh"],
|
|
31
|
+
},
|
|
32
|
+
signedInMarkers: ["Đoạn chat mới", "Tìm kiếm đoạn chat", "Gần đây", "Thư viện", "Dự án", "Trò chuyện với ChatGPT"],
|
|
33
|
+
responseActions: ["Sao chép phản hồi"],
|
|
34
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chinese — Traditional, Hong Kong (zh-HK). Captured 2026-06-09 against a live chatgpt.com
|
|
3
|
+
* session (html lang=zh-HK, 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 zhHK: {
|
|
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
|
+
modeOptions: {
|
|
21
|
+
instant: string[];
|
|
22
|
+
medium: string[];
|
|
23
|
+
high: string[];
|
|
24
|
+
extraHigh: string[];
|
|
25
|
+
pro: string[];
|
|
26
|
+
};
|
|
27
|
+
modeOpenerExtra: string[];
|
|
28
|
+
tools: {
|
|
29
|
+
web_search: string[];
|
|
30
|
+
deep_research: string[];
|
|
31
|
+
create_image: string[];
|
|
32
|
+
};
|
|
33
|
+
signedInMarkers: string[];
|
|
34
|
+
responseActions: string[];
|
|
35
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chinese — Traditional, Hong Kong (zh-HK). Captured 2026-06-09 against a live chatgpt.com
|
|
3
|
+
* session (html lang=zh-HK, 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 zhHK = {
|
|
10
|
+
composerTextbox: ["與 ChatGPT 對話"],
|
|
11
|
+
sendButton: ["傳送提示"],
|
|
12
|
+
searchChatsButton: ["搜尋對話"],
|
|
13
|
+
searchChatsPlaceholder: ["搜尋對話…"],
|
|
14
|
+
newChat: ["新對話"],
|
|
15
|
+
addFilesButton: ["上載檔案和其他内容"],
|
|
16
|
+
addFilesOpenerCandidates: ["上載檔案和其他内容"],
|
|
17
|
+
addPhotosFilesMenuItem: ["加入相片和檔案"],
|
|
18
|
+
copyResponse: ["複製回覆"],
|
|
19
|
+
modeLabels: ["即時", "均衡", "高", "極高", "專業"],
|
|
20
|
+
modeOptions: {
|
|
21
|
+
instant: ["即時"],
|
|
22
|
+
medium: ["均衡"],
|
|
23
|
+
high: ["高"],
|
|
24
|
+
extraHigh: ["極高"],
|
|
25
|
+
pro: ["專業"],
|
|
26
|
+
},
|
|
27
|
+
modeOpenerExtra: ["設定"],
|
|
28
|
+
tools: {
|
|
29
|
+
web_search: ["網絡搜尋"],
|
|
30
|
+
deep_research: ["深度研究"],
|
|
31
|
+
create_image: ["創作圖像"],
|
|
32
|
+
},
|
|
33
|
+
signedInMarkers: ["新對話", "搜尋對話", "最近對話", "圖庫", "項目", "與 ChatGPT 對話"],
|
|
34
|
+
responseActions: ["複製回覆"],
|
|
35
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chinese Simplified (zh-Hans / zh-CN). Captured 2026-06-09 against a live chatgpt.com session
|
|
3
|
+
* (html lang=zh-CN, 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 zhHans: {
|
|
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
|
+
modeOptions: {
|
|
21
|
+
instant: string[];
|
|
22
|
+
medium: string[];
|
|
23
|
+
high: string[];
|
|
24
|
+
extraHigh: string[];
|
|
25
|
+
pro: string[];
|
|
26
|
+
};
|
|
27
|
+
modeOpenerExtra: string[];
|
|
28
|
+
tools: {
|
|
29
|
+
web_search: string[];
|
|
30
|
+
deep_research: string[];
|
|
31
|
+
create_image: string[];
|
|
32
|
+
};
|
|
33
|
+
signedInMarkers: string[];
|
|
34
|
+
responseActions: string[];
|
|
35
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chinese Simplified (zh-Hans / zh-CN). Captured 2026-06-09 against a live chatgpt.com session
|
|
3
|
+
* (html lang=zh-CN, 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 zhHans = {
|
|
10
|
+
composerTextbox: ["有问题,尽管问"],
|
|
11
|
+
sendButton: ["发送提示"],
|
|
12
|
+
searchChatsButton: ["搜索聊天"],
|
|
13
|
+
searchChatsPlaceholder: ["搜索聊天…"],
|
|
14
|
+
newChat: ["新聊天"],
|
|
15
|
+
addFilesButton: ["添加文件等"],
|
|
16
|
+
addFilesOpenerCandidates: ["添加文件等"],
|
|
17
|
+
addPhotosFilesMenuItem: ["添加照片和文件"],
|
|
18
|
+
copyResponse: ["复制回复"],
|
|
19
|
+
modeLabels: ["极速", "均衡", "高级", "超高", "专业"],
|
|
20
|
+
modeOptions: {
|
|
21
|
+
instant: ["极速"],
|
|
22
|
+
medium: ["均衡"],
|
|
23
|
+
high: ["高级"],
|
|
24
|
+
extraHigh: ["超高"],
|
|
25
|
+
pro: ["专业"],
|
|
26
|
+
},
|
|
27
|
+
modeOpenerExtra: ["配置…"],
|
|
28
|
+
tools: {
|
|
29
|
+
web_search: ["网页搜索"],
|
|
30
|
+
deep_research: ["深度研究"],
|
|
31
|
+
create_image: ["创建图片"],
|
|
32
|
+
},
|
|
33
|
+
signedInMarkers: ["新聊天", "搜索聊天", "最近", "历史聊天记录", "项目", "有问题,尽管问"],
|
|
34
|
+
responseActions: ["复制回复"],
|
|
35
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chinese — Traditional, Taiwan (zh-TW). Captured 2026-06-09 against a live chatgpt.com
|
|
3
|
+
* session (html lang=zh-TW, Google Translate confirmed off). Distinct from zh-HK
|
|
4
|
+
* (e.g. 傳送提示詞 vs 傳送提示, 網頁搜尋 vs 網絡搜尋, 複製回應 vs 複製回覆).
|
|
5
|
+
*
|
|
6
|
+
* Some non-Intelligence surfaces may still fall back to English + `selector_drift`.
|
|
7
|
+
*
|
|
8
|
+
* Intelligence picker labels updated 2026-06-10 from a visible ChatGPT Pro session.
|
|
9
|
+
*/
|
|
10
|
+
export declare const zhTW: {
|
|
11
|
+
composerTextbox: string[];
|
|
12
|
+
sendButton: string[];
|
|
13
|
+
searchChatsButton: string[];
|
|
14
|
+
searchChatsPlaceholder: string[];
|
|
15
|
+
newChat: string[];
|
|
16
|
+
addFilesButton: string[];
|
|
17
|
+
addFilesOpenerCandidates: string[];
|
|
18
|
+
addPhotosFilesMenuItem: string[];
|
|
19
|
+
copyResponse: string[];
|
|
20
|
+
modeLabels: string[];
|
|
21
|
+
modeOptions: {
|
|
22
|
+
instant: string[];
|
|
23
|
+
medium: string[];
|
|
24
|
+
high: string[];
|
|
25
|
+
extraHigh: string[];
|
|
26
|
+
pro: string[];
|
|
27
|
+
};
|
|
28
|
+
modeOpenerExtra: string[];
|
|
29
|
+
tools: {
|
|
30
|
+
web_search: string[];
|
|
31
|
+
deep_research: string[];
|
|
32
|
+
create_image: string[];
|
|
33
|
+
};
|
|
34
|
+
signedInMarkers: string[];
|
|
35
|
+
responseActions: string[];
|
|
36
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chinese — Traditional, Taiwan (zh-TW). Captured 2026-06-09 against a live chatgpt.com
|
|
3
|
+
* session (html lang=zh-TW, Google Translate confirmed off). Distinct from zh-HK
|
|
4
|
+
* (e.g. 傳送提示詞 vs 傳送提示, 網頁搜尋 vs 網絡搜尋, 複製回應 vs 複製回覆).
|
|
5
|
+
*
|
|
6
|
+
* Some non-Intelligence surfaces may still fall back to English + `selector_drift`.
|
|
7
|
+
*
|
|
8
|
+
* Intelligence picker labels updated 2026-06-10 from a visible ChatGPT Pro session.
|
|
9
|
+
*/
|
|
10
|
+
export const zhTW = {
|
|
11
|
+
composerTextbox: ["與 ChatGPT 對話"],
|
|
12
|
+
sendButton: ["傳送提示詞"],
|
|
13
|
+
searchChatsButton: ["搜尋對話"],
|
|
14
|
+
searchChatsPlaceholder: ["搜尋聊天..."],
|
|
15
|
+
newChat: ["新對話"],
|
|
16
|
+
addFilesButton: ["新增檔案等更多功能"],
|
|
17
|
+
addFilesOpenerCandidates: ["新增檔案等更多功能"],
|
|
18
|
+
addPhotosFilesMenuItem: ["新增照片和檔案"],
|
|
19
|
+
copyResponse: ["複製回應"],
|
|
20
|
+
modeLabels: ["即時", "中等", "高", "超高", "專業"],
|
|
21
|
+
modeOptions: {
|
|
22
|
+
instant: ["即時"],
|
|
23
|
+
medium: ["中等"],
|
|
24
|
+
high: ["高"],
|
|
25
|
+
extraHigh: ["超高"],
|
|
26
|
+
pro: ["專業"],
|
|
27
|
+
},
|
|
28
|
+
modeOpenerExtra: ["設定"],
|
|
29
|
+
tools: {
|
|
30
|
+
web_search: ["網頁搜尋"],
|
|
31
|
+
deep_research: ["深入研究"],
|
|
32
|
+
create_image: ["創作圖像"],
|
|
33
|
+
},
|
|
34
|
+
signedInMarkers: ["新對話", "搜尋對話", "最近的對話", "圖庫", "專案", "與 ChatGPT 對話"],
|
|
35
|
+
responseActions: ["複製回應"],
|
|
36
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized, locale-sensitive ChatGPT UI strings — barrel re-export.
|
|
3
|
+
*
|
|
4
|
+
* Every entry is an ORDERED list of candidate strings. English is canonical and MUST
|
|
5
|
+
* stay first: it is also the public API contract for mode/tool selection (callers pass
|
|
6
|
+
* `effort: "Thinking"`, `tool: "web_search"`, etc.). Matchers iterate the whole list,
|
|
7
|
+
* so localizing the SDK is just appending verified strings to these arrays — no selector
|
|
8
|
+
* or command code needs to change.
|
|
9
|
+
*
|
|
10
|
+
* RULES
|
|
11
|
+
* - Do NOT add unverified translations. A locale string is only valid once it has been
|
|
12
|
+
* observed in a real localized ChatGPT session. Guesses are worse than nothing because
|
|
13
|
+
* they mask the `selector_drift` blocker that is the designed recovery path.
|
|
14
|
+
* - Keys are stable logical ids. The localized display text goes in the array; the key
|
|
15
|
+
* never changes.
|
|
16
|
+
* - These are the visible/accessible-name surfaces only. Structural anchors (roles,
|
|
17
|
+
* element ids like `#composer-plus-btn`, `a[href^='/c/']`, `data-message-author-role`)
|
|
18
|
+
* are language-agnostic and live in the selectors directly.
|
|
19
|
+
*
|
|
20
|
+
* Structural-only blocker patterns stay literal in `safety/blockers.ts` on purpose:
|
|
21
|
+
* numeric/HTTP codes (`404`), our own bridge error fragments (`fileChooser.setFiles`,
|
|
22
|
+
* `permission denied`), and the modal heuristic are not ChatGPT-localized UI text.
|
|
23
|
+
*
|
|
24
|
+
* To add a new language, see `src/dom/locale/index.ts`.
|
|
25
|
+
*/
|
|
26
|
+
export { localeLabels, anyLabelPattern, escapeRegExp } from "./locale/index.js";
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized, locale-sensitive ChatGPT UI strings — barrel re-export.
|
|
3
|
+
*
|
|
4
|
+
* Every entry is an ORDERED list of candidate strings. English is canonical and MUST
|
|
5
|
+
* stay first: it is also the public API contract for mode/tool selection (callers pass
|
|
6
|
+
* `effort: "Thinking"`, `tool: "web_search"`, etc.). Matchers iterate the whole list,
|
|
7
|
+
* so localizing the SDK is just appending verified strings to these arrays — no selector
|
|
8
|
+
* or command code needs to change.
|
|
9
|
+
*
|
|
10
|
+
* RULES
|
|
11
|
+
* - Do NOT add unverified translations. A locale string is only valid once it has been
|
|
12
|
+
* observed in a real localized ChatGPT session. Guesses are worse than nothing because
|
|
13
|
+
* they mask the `selector_drift` blocker that is the designed recovery path.
|
|
14
|
+
* - Keys are stable logical ids. The localized display text goes in the array; the key
|
|
15
|
+
* never changes.
|
|
16
|
+
* - These are the visible/accessible-name surfaces only. Structural anchors (roles,
|
|
17
|
+
* element ids like `#composer-plus-btn`, `a[href^='/c/']`, `data-message-author-role`)
|
|
18
|
+
* are language-agnostic and live in the selectors directly.
|
|
19
|
+
*
|
|
20
|
+
* Structural-only blocker patterns stay literal in `safety/blockers.ts` on purpose:
|
|
21
|
+
* numeric/HTTP codes (`404`), our own bridge error fragments (`fileChooser.setFiles`,
|
|
22
|
+
* `permission denied`), and the modal heuristic are not ChatGPT-localized UI text.
|
|
23
|
+
*
|
|
24
|
+
* To add a new language, see `src/dom/locale/index.ts`.
|
|
25
|
+
*/
|
|
26
|
+
export { localeLabels, anyLabelPattern, escapeRegExp } from "./locale/index.js";
|
package/dist/src/dom/menus.d.ts
CHANGED
|
@@ -2,6 +2,12 @@ import type { PageLike } from "../types.js";
|
|
|
2
2
|
export type MenuItem = {
|
|
3
3
|
label: string;
|
|
4
4
|
normalized: string;
|
|
5
|
+
role?: string;
|
|
6
|
+
checked?: boolean;
|
|
7
|
+
expanded?: boolean;
|
|
8
|
+
hasPopup?: boolean;
|
|
9
|
+
testId?: string;
|
|
10
|
+
ariaLabel?: string;
|
|
5
11
|
};
|
|
6
12
|
export declare function extractMenuItemsFromText(text: string): MenuItem[];
|
|
7
13
|
export declare function enumerateVisibleMenuItems(page: PageLike): Promise<MenuItem[]>;
|