codex-chatgpt-control 0.2.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 +8 -0
- package/contracts/v1/fixtures/backend-capabilities.json +1 -0
- package/contracts/v1/fixtures/command-descriptors.json +33 -2
- package/contracts/v1/fixtures/doctor-scenario-preflight.json +12 -1
- package/contracts/v1/fixtures/help-root.json +1 -1
- package/contracts/v1/fixtures/reports-create-redacted.json +1 -1
- package/contracts/v1/parity-suite.json +8 -1
- package/dist/codex-chatgpt-control-backend.mjs +1199 -159
- package/dist/codex-chatgpt-control.bundle.mjs +1198 -156
- package/dist/src/backend/protocol.d.ts +1 -1
- package/dist/src/backend/protocol.js +1 -0
- package/dist/src/backend/session.js +2 -0
- package/dist/src/browser/clipboard.d.ts +11 -0
- package/dist/src/browser/clipboard.js +34 -7
- package/dist/src/browser/page-state.js +12 -2
- package/dist/src/client.d.ts +2 -1
- package/dist/src/client.js +3 -2
- package/dist/src/commands/context.js +3 -1
- 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.js +9 -2
- package/dist/src/commands/files.js +62 -8
- package/dist/src/commands/messages.js +212 -72
- package/dist/src/commands/modes.d.ts +4 -1
- package/dist/src/commands/modes.js +215 -30
- package/dist/src/commands/probes.d.ts +15 -0
- package/dist/src/commands/probes.js +64 -0
- package/dist/src/commands/registry.js +34 -2
- package/dist/src/commands/reports.js +1 -1
- package/dist/src/commands/threads.js +2 -24
- package/dist/src/dom/generation-state.d.ts +7 -0
- package/dist/src/dom/generation-state.js +7 -1
- 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 +6 -0
- package/dist/src/dom/locale/am.js +6 -0
- package/dist/src/dom/locale/ar.d.ts +7 -0
- package/dist/src/dom/locale/ar.js +7 -0
- package/dist/src/dom/locale/bg.d.ts +7 -0
- package/dist/src/dom/locale/bg.js +7 -0
- package/dist/src/dom/locale/bn.d.ts +7 -0
- package/dist/src/dom/locale/bn.js +7 -0
- package/dist/src/dom/locale/bs.d.ts +6 -0
- package/dist/src/dom/locale/bs.js +6 -0
- package/dist/src/dom/locale/ca.d.ts +6 -0
- package/dist/src/dom/locale/ca.js +6 -0
- package/dist/src/dom/locale/cs.d.ts +6 -0
- package/dist/src/dom/locale/cs.js +6 -0
- package/dist/src/dom/locale/da.d.ts +5 -0
- package/dist/src/dom/locale/da.js +5 -0
- package/dist/src/dom/locale/de.d.ts +6 -0
- package/dist/src/dom/locale/de.js +6 -0
- package/dist/src/dom/locale/el.d.ts +6 -0
- package/dist/src/dom/locale/el.js +6 -0
- package/dist/src/dom/locale/en.d.ts +14 -0
- package/dist/src/dom/locale/en.js +15 -0
- package/dist/src/dom/locale/es-419.d.ts +6 -0
- package/dist/src/dom/locale/es-419.js +6 -0
- package/dist/src/dom/locale/es-ES.d.ts +6 -0
- package/dist/src/dom/locale/es-ES.js +6 -0
- package/dist/src/dom/locale/et.d.ts +6 -0
- package/dist/src/dom/locale/et.js +6 -0
- package/dist/src/dom/locale/fa.d.ts +7 -0
- package/dist/src/dom/locale/fa.js +7 -0
- package/dist/src/dom/locale/fi.d.ts +6 -0
- package/dist/src/dom/locale/fi.js +6 -0
- package/dist/src/dom/locale/fr-CA.d.ts +6 -0
- package/dist/src/dom/locale/fr-CA.js +6 -0
- package/dist/src/dom/locale/fr-FR.d.ts +5 -0
- package/dist/src/dom/locale/fr-FR.js +5 -0
- package/dist/src/dom/locale/gu.d.ts +6 -0
- package/dist/src/dom/locale/gu.js +6 -0
- package/dist/src/dom/locale/hi.d.ts +6 -0
- package/dist/src/dom/locale/hi.js +6 -0
- package/dist/src/dom/locale/hr.d.ts +5 -0
- package/dist/src/dom/locale/hr.js +5 -0
- package/dist/src/dom/locale/hu.d.ts +6 -0
- package/dist/src/dom/locale/hu.js +6 -0
- package/dist/src/dom/locale/hy.d.ts +7 -0
- package/dist/src/dom/locale/hy.js +7 -0
- package/dist/src/dom/locale/id.d.ts +6 -0
- package/dist/src/dom/locale/id.js +6 -0
- package/dist/src/dom/locale/index.d.ts +5 -1
- package/dist/src/dom/locale/index.js +37 -0
- package/dist/src/dom/locale/is.d.ts +6 -0
- package/dist/src/dom/locale/is.js +6 -0
- package/dist/src/dom/locale/it.d.ts +6 -0
- package/dist/src/dom/locale/it.js +6 -0
- package/dist/src/dom/locale/ja.d.ts +6 -0
- package/dist/src/dom/locale/ja.js +6 -0
- package/dist/src/dom/locale/ka.d.ts +6 -0
- package/dist/src/dom/locale/ka.js +6 -0
- package/dist/src/dom/locale/kk.d.ts +6 -0
- package/dist/src/dom/locale/kk.js +6 -0
- package/dist/src/dom/locale/kn.d.ts +7 -0
- package/dist/src/dom/locale/kn.js +7 -0
- package/dist/src/dom/locale/ko.d.ts +6 -0
- package/dist/src/dom/locale/ko.js +6 -0
- package/dist/src/dom/locale/lt.d.ts +7 -0
- package/dist/src/dom/locale/lt.js +7 -0
- package/dist/src/dom/locale/lv.d.ts +6 -0
- package/dist/src/dom/locale/lv.js +6 -0
- package/dist/src/dom/locale/mk.d.ts +5 -0
- package/dist/src/dom/locale/mk.js +5 -0
- package/dist/src/dom/locale/ml.d.ts +7 -0
- package/dist/src/dom/locale/ml.js +7 -0
- package/dist/src/dom/locale/mn.d.ts +7 -0
- package/dist/src/dom/locale/mn.js +7 -0
- package/dist/src/dom/locale/mr.d.ts +7 -0
- package/dist/src/dom/locale/mr.js +7 -0
- package/dist/src/dom/locale/ms.d.ts +6 -0
- package/dist/src/dom/locale/ms.js +6 -0
- package/dist/src/dom/locale/my.d.ts +6 -0
- package/dist/src/dom/locale/my.js +6 -0
- package/dist/src/dom/locale/nb.d.ts +6 -0
- package/dist/src/dom/locale/nb.js +6 -0
- package/dist/src/dom/locale/nl.d.ts +6 -0
- package/dist/src/dom/locale/nl.js +6 -0
- package/dist/src/dom/locale/pa.d.ts +7 -0
- package/dist/src/dom/locale/pa.js +7 -0
- package/dist/src/dom/locale/pl.d.ts +6 -0
- package/dist/src/dom/locale/pl.js +6 -0
- package/dist/src/dom/locale/pt-BR.d.ts +6 -0
- package/dist/src/dom/locale/pt-BR.js +6 -0
- package/dist/src/dom/locale/pt-PT.d.ts +6 -0
- package/dist/src/dom/locale/pt-PT.js +6 -0
- package/dist/src/dom/locale/ro.d.ts +5 -0
- package/dist/src/dom/locale/ro.js +5 -0
- package/dist/src/dom/locale/ru.d.ts +3 -0
- package/dist/src/dom/locale/ru.js +3 -0
- package/dist/src/dom/locale/sk.d.ts +6 -0
- package/dist/src/dom/locale/sk.js +6 -0
- package/dist/src/dom/locale/sl.d.ts +6 -0
- package/dist/src/dom/locale/sl.js +6 -0
- package/dist/src/dom/locale/so.d.ts +6 -0
- package/dist/src/dom/locale/so.js +6 -0
- package/dist/src/dom/locale/sq.d.ts +6 -0
- package/dist/src/dom/locale/sq.js +6 -0
- package/dist/src/dom/locale/sr.d.ts +3 -0
- package/dist/src/dom/locale/sr.js +3 -0
- package/dist/src/dom/locale/sv.d.ts +6 -0
- package/dist/src/dom/locale/sv.js +6 -0
- package/dist/src/dom/locale/sw.d.ts +6 -0
- package/dist/src/dom/locale/sw.js +6 -0
- package/dist/src/dom/locale/ta.d.ts +7 -0
- package/dist/src/dom/locale/ta.js +7 -0
- package/dist/src/dom/locale/te.d.ts +7 -0
- package/dist/src/dom/locale/te.js +7 -0
- package/dist/src/dom/locale/th.d.ts +6 -0
- package/dist/src/dom/locale/th.js +6 -0
- package/dist/src/dom/locale/tr.d.ts +6 -0
- package/dist/src/dom/locale/tr.js +6 -0
- package/dist/src/dom/locale/types.d.ts +8 -1
- package/dist/src/dom/locale/uk.d.ts +6 -0
- package/dist/src/dom/locale/uk.js +6 -0
- package/dist/src/dom/locale/ur.d.ts +6 -0
- package/dist/src/dom/locale/ur.js +6 -0
- package/dist/src/dom/locale/vi.d.ts +6 -0
- package/dist/src/dom/locale/vi.js +6 -0
- package/dist/src/dom/locale/zh-HK.d.ts +7 -0
- package/dist/src/dom/locale/zh-HK.js +7 -0
- package/dist/src/dom/locale/zh-Hans.d.ts +7 -0
- package/dist/src/dom/locale/zh-Hans.js +7 -0
- package/dist/src/dom/locale/zh-TW.d.ts +7 -0
- package/dist/src/dom/locale/zh-TW.js +7 -0
- package/dist/src/dom/menus.js +13 -2
- package/dist/src/dom/wait-snapshot.d.ts +43 -0
- package/dist/src/dom/wait-snapshot.js +127 -0
- package/dist/src/safety/risk.d.ts +1 -0
- package/dist/src/safety/risk.js +1 -0
- package/dist/src/scripts/apply-intelligence-locale-captures.js +99 -13
- package/dist/src/types.d.ts +28 -0
- package/package.json +2 -2
- package/references/backend-protocol.md +6 -4
- package/references/localization.md +14 -4
- package/references/python-parity.md +5 -3
- package/references/troubleshooting.md +28 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.3.0-alpha.1
|
|
4
|
+
|
|
5
|
+
- Hardens mode-menu detection and selection against thread/sidebar action menus, with locale-registry-backed thread-action vetoes and container-scoped menu enumeration.
|
|
6
|
+
- Adds the `modes.get` primitive and post-selection verification warnings on `modes.set`.
|
|
7
|
+
- Rewrites wait polling around a single combined DOM snapshot per poll; response text is fetched once at completion instead of every poll.
|
|
8
|
+
- Adds Windows and Linux clipboard capture with DOM fallback.
|
|
9
|
+
- Fixes report `createdAt` to honor the injected clock for deterministic fixtures.
|
|
10
|
+
|
|
3
11
|
## 0.2.0-alpha.1
|
|
4
12
|
|
|
5
13
|
- Adds Windows-safe host path validation and cross-platform backend gates.
|
|
@@ -651,7 +651,13 @@
|
|
|
651
651
|
"summary": "Compose, submit, optionally wait, and optionally read."
|
|
652
652
|
},
|
|
653
653
|
{
|
|
654
|
-
"args": {
|
|
654
|
+
"args": {
|
|
655
|
+
"mode": "normal or deep_research",
|
|
656
|
+
"pollMs": "optional polling interval",
|
|
657
|
+
"responseContent": "include for current behavior, metadata to omit assistant text and return chars/hash only",
|
|
658
|
+
"stableMs": "optional stability window before completion",
|
|
659
|
+
"timeoutMs": "optional wait timeout"
|
|
660
|
+
},
|
|
655
661
|
"blockers": [
|
|
656
662
|
"browser_bridge_unavailable",
|
|
657
663
|
"login_required",
|
|
@@ -779,6 +785,7 @@
|
|
|
779
785
|
},
|
|
780
786
|
{
|
|
781
787
|
"args": {
|
|
788
|
+
"includeHashes": "optional SHA-256 metadata for diagnostics; file contents are not returned",
|
|
782
789
|
"maxBytesPerFile": "optional local per-file byte limit",
|
|
783
790
|
"maxTotalBytes": "optional local total byte limit",
|
|
784
791
|
"paths": "absolute local file paths"
|
|
@@ -791,7 +798,8 @@
|
|
|
791
798
|
"defaults": {},
|
|
792
799
|
"defaultTimeoutMs": 30000,
|
|
793
800
|
"examples": [
|
|
794
|
-
"await chatgpt.files.preflight({ paths: [\"/absolute/host/path.md\"] });"
|
|
801
|
+
"await chatgpt.files.preflight({ paths: [\"/absolute/host/path.md\"] });",
|
|
802
|
+
"await chatgpt.files.preflight({ paths: [\"/absolute/host/path.md\"], includeHashes: true });"
|
|
795
803
|
],
|
|
796
804
|
"layer": "primitive",
|
|
797
805
|
"name": "files.preflight",
|
|
@@ -801,6 +809,8 @@
|
|
|
801
809
|
},
|
|
802
810
|
{
|
|
803
811
|
"args": {
|
|
812
|
+
"includeDiagnostics": "optional preflight and browser input file-size metadata",
|
|
813
|
+
"includeHashes": "optional SHA-256 metadata inside diagnostics; file contents are not returned",
|
|
804
814
|
"paths": "absolute local file paths"
|
|
805
815
|
},
|
|
806
816
|
"blockers": [
|
|
@@ -959,6 +969,27 @@
|
|
|
959
969
|
"risk": "medium",
|
|
960
970
|
"summary": "Select a visible model, intelligence, effort, or nested model-version candidate when unambiguous."
|
|
961
971
|
},
|
|
972
|
+
{
|
|
973
|
+
"args": {
|
|
974
|
+
"timeoutMs": "optional timeout for attaching to the ChatGPT page"
|
|
975
|
+
},
|
|
976
|
+
"blockers": [
|
|
977
|
+
"browser_bridge_unavailable",
|
|
978
|
+
"login_required",
|
|
979
|
+
"selector_drift"
|
|
980
|
+
],
|
|
981
|
+
"defaults": {},
|
|
982
|
+
"defaultTimeoutMs": 30000,
|
|
983
|
+
"examples": [
|
|
984
|
+
"await chatgpt.modes.get();",
|
|
985
|
+
"// Verify an expensive Pro consult before submitting: const current = await chatgpt.modes.get();"
|
|
986
|
+
],
|
|
987
|
+
"layer": "primitive",
|
|
988
|
+
"name": "modes.get",
|
|
989
|
+
"retryPolicy": "Return structured CommandResult failures; retry only when the blocker is recoverable and no duplicate prompt will be submitted.",
|
|
990
|
+
"risk": "low",
|
|
991
|
+
"summary": "Read the mode labels shown on the visible composer controls without changing them."
|
|
992
|
+
},
|
|
962
993
|
{
|
|
963
994
|
"args": {},
|
|
964
995
|
"blockers": [
|
|
@@ -71,8 +71,19 @@
|
|
|
71
71
|
"localization": {
|
|
72
72
|
"details": {
|
|
73
73
|
"englishCanonicalPresent": true,
|
|
74
|
-
"labelCandidateCount":
|
|
74
|
+
"labelCandidateCount": 1542,
|
|
75
|
+
"missingModeOptionIds": [],
|
|
75
76
|
"missingToolIds": [],
|
|
77
|
+
"modeOptionIds": [
|
|
78
|
+
"latest",
|
|
79
|
+
"instant",
|
|
80
|
+
"thinking",
|
|
81
|
+
"extended",
|
|
82
|
+
"medium",
|
|
83
|
+
"high",
|
|
84
|
+
"extraHigh",
|
|
85
|
+
"pro"
|
|
86
|
+
],
|
|
76
87
|
"pageAvailable": false,
|
|
77
88
|
"requiredKeysMissing": [],
|
|
78
89
|
"runtimeSelectorCoverage": "registry_only_stage_2",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"ok": true,
|
|
3
3
|
"requestId": "req_help",
|
|
4
|
-
"result": "ChatGPT browser-control SDK commands\n\nworkflow:\n- ask: Ask ChatGPT in a new or selected thread, optionally with files, wait/read, downloads, and reports.\n- askInThread: Open or claim an existing thread by URL, conversation id, title, or search query, then ask and read.\n- askWithFiles: Attach absolute local file paths, optionally set mode, ask, wait, and read.\n- askAndDownload: Ask ChatGPT to produce a visible downloadable output and save the latest exposed file.\n- runMessages: Run sequential prompts where later prompts can use earlier step data.\n- runner.run: Agents-style facade: run a visible ChatGPT browser-control agent against input, files, thread, existing-tab, mode, and response options.\n- responses.create: Narrow Responses-shaped adapter over the visible ChatGPT browser-control runner; rejects unsupported API-only fields before prompt submission.\n- copyLatest: Copy or DOM-read the latest assistant response with Markdown-first fidelity.\n- runPlan: Execute an inline SequencePlan or named macro through the existing sequence engine.\n- new-ask-read: Named macro: open a new thread, ask, wait, and read Markdown.\n- find-open-ask-read: Named macro: search history, open the first match, ask, wait, and read Markdown.\n- find-open-copy-latest: Named macro: search history, open the first match, and copy/read the latest response.\n- attach-ask-read: Named macro: open a new thread, attach files, ask, wait, and read Markdown.\n- ask-and-download: Named macro: ask in a new thread and download the latest file affordance.\n- two-turn: Named macro: run two sequential prompts in a new thread.\ndiagnostic:\n- doctor-upload: Named macro: preflight bridge, login, and upload permission remediation.\n- doctor: Preflight browser bridge, login, upload, local files, existing-tab, artifact, localization, report, and selector readiness.\nreport:\n- redacted-run-report: Named macro: create a redacted report for a supplied CommandResult.\n- createReport: Write a durable redacted run report for a command result.\nprimitive:\n- session.bootstrap: Attach to ChatGPT in Chrome and detect login/blocker state.\n- threads.new: Open a new ChatGPT thread.\n- threads.search: Search visible ChatGPT history by query.\n- threads.open: Open a thread by URL, conversation id, title, or search result.\n- messages.compose: Fill the composer without submitting.\n- messages.submit: Submit the current composer contents.\n- messages.ask: Compose, submit, optionally wait, and optionally read.\n- messages.wait: Wait for the latest assistant response to stabilize.\n- messages.readLatest: Read the latest message as Markdown, normalized text, blocks, or HTML.\n- messages.waitAndRead: Wait for completion and read the latest message.\n- artifacts.listLatest: Detect the latest visible generated ChatGPT artifact, such as an image-only result.\n- artifacts.wait: Wait for a visible generated ChatGPT artifact to appear and stabilize.\n- artifacts.downloadLatest: Download or save the latest visible generated ChatGPT artifact.\n- files.preflight: Validate local file paths, size limits, duplicates, zero-byte files, and extension-based MIME/category guesses without opening ChatGPT.\n- files.attach: Attach absolute local file paths through visible ChatGPT upload controls.\n- files.downloadLatest: Download the latest visible ChatGPT file affordance.\n- projects.sources.list: Open or claim a visible ChatGPT Project Sources tab and list source names/statuses without source contents.\n- projects.sources.planAdd: Dry-run an append-only Project Sources file add from explicit local files without opening ChatGPT.\n- projects.sources.add: Append explicit local files to a visible ChatGPT Project Sources list after confirmMutation: true.\n- response.copy: Click Copy response and return clipboard Markdown, with DOM fallback.\n- modes.set: Select a visible model, intelligence, effort, or nested model-version candidate when unambiguous.\n- tools.select: Select a visible ChatGPT tool when unambiguous.",
|
|
4
|
+
"result": "ChatGPT browser-control SDK commands\n\nworkflow:\n- ask: Ask ChatGPT in a new or selected thread, optionally with files, wait/read, downloads, and reports.\n- askInThread: Open or claim an existing thread by URL, conversation id, title, or search query, then ask and read.\n- askWithFiles: Attach absolute local file paths, optionally set mode, ask, wait, and read.\n- askAndDownload: Ask ChatGPT to produce a visible downloadable output and save the latest exposed file.\n- runMessages: Run sequential prompts where later prompts can use earlier step data.\n- runner.run: Agents-style facade: run a visible ChatGPT browser-control agent against input, files, thread, existing-tab, mode, and response options.\n- responses.create: Narrow Responses-shaped adapter over the visible ChatGPT browser-control runner; rejects unsupported API-only fields before prompt submission.\n- copyLatest: Copy or DOM-read the latest assistant response with Markdown-first fidelity.\n- runPlan: Execute an inline SequencePlan or named macro through the existing sequence engine.\n- new-ask-read: Named macro: open a new thread, ask, wait, and read Markdown.\n- find-open-ask-read: Named macro: search history, open the first match, ask, wait, and read Markdown.\n- find-open-copy-latest: Named macro: search history, open the first match, and copy/read the latest response.\n- attach-ask-read: Named macro: open a new thread, attach files, ask, wait, and read Markdown.\n- ask-and-download: Named macro: ask in a new thread and download the latest file affordance.\n- two-turn: Named macro: run two sequential prompts in a new thread.\ndiagnostic:\n- doctor-upload: Named macro: preflight bridge, login, and upload permission remediation.\n- doctor: Preflight browser bridge, login, upload, local files, existing-tab, artifact, localization, report, and selector readiness.\nreport:\n- redacted-run-report: Named macro: create a redacted report for a supplied CommandResult.\n- createReport: Write a durable redacted run report for a command result.\nprimitive:\n- session.bootstrap: Attach to ChatGPT in Chrome and detect login/blocker state.\n- threads.new: Open a new ChatGPT thread.\n- threads.search: Search visible ChatGPT history by query.\n- threads.open: Open a thread by URL, conversation id, title, or search result.\n- messages.compose: Fill the composer without submitting.\n- messages.submit: Submit the current composer contents.\n- messages.ask: Compose, submit, optionally wait, and optionally read.\n- messages.wait: Wait for the latest assistant response to stabilize.\n- messages.readLatest: Read the latest message as Markdown, normalized text, blocks, or HTML.\n- messages.waitAndRead: Wait for completion and read the latest message.\n- artifacts.listLatest: Detect the latest visible generated ChatGPT artifact, such as an image-only result.\n- artifacts.wait: Wait for a visible generated ChatGPT artifact to appear and stabilize.\n- artifacts.downloadLatest: Download or save the latest visible generated ChatGPT artifact.\n- files.preflight: Validate local file paths, size limits, duplicates, zero-byte files, and extension-based MIME/category guesses without opening ChatGPT.\n- files.attach: Attach absolute local file paths through visible ChatGPT upload controls.\n- files.downloadLatest: Download the latest visible ChatGPT file affordance.\n- projects.sources.list: Open or claim a visible ChatGPT Project Sources tab and list source names/statuses without source contents.\n- projects.sources.planAdd: Dry-run an append-only Project Sources file add from explicit local files without opening ChatGPT.\n- projects.sources.add: Append explicit local files to a visible ChatGPT Project Sources list after confirmMutation: true.\n- response.copy: Click Copy response and return clipboard Markdown, with DOM fallback.\n- modes.set: Select a visible model, intelligence, effort, or nested model-version candidate when unambiguous.\n- modes.get: Read the mode labels shown on the visible composer controls without changing them.\n- tools.select: Select a visible ChatGPT tool when unambiguous.",
|
|
5
5
|
"schemaVersion": "chatgpt.browser_control.backend_response.v1"
|
|
6
6
|
}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"target": {
|
|
18
18
|
"bytes": 335,
|
|
19
19
|
"path": "/tmp/codex-chatgpt-control/reports/contract-fixtures/fixed-contract-report.json",
|
|
20
|
-
"sha256": "
|
|
20
|
+
"sha256": "27edafba40f11bcbd8fbda81c36b7caae4f677e4311426086d8bcd3d26aed92a"
|
|
21
21
|
}
|
|
22
22
|
},
|
|
23
23
|
"metaPath": "/tmp/codex-chatgpt-control/reports/contract-fixtures/fixed-contract-report.json.meta.json",
|
|
@@ -576,7 +576,14 @@
|
|
|
576
576
|
"surface": "workflows-primitives-diagnostics",
|
|
577
577
|
"fixtures": ["command-descriptors.json"],
|
|
578
578
|
"nodeTests": ["tests/unit/modes.test.ts", "tests/unit/client.test.ts"],
|
|
579
|
-
"pythonTests": ["tests/test_primitives.py"],
|
|
579
|
+
"pythonTests": ["tests/test_primitives.py", "tests/test_async_client.py"],
|
|
580
|
+
"docs": ["references/backend-protocol.md", "references/troubleshooting.md"]
|
|
581
|
+
},
|
|
582
|
+
"modes.get": {
|
|
583
|
+
"surface": "workflows-primitives-diagnostics",
|
|
584
|
+
"fixtures": ["command-descriptors.json"],
|
|
585
|
+
"nodeTests": ["tests/unit/modes.test.ts", "tests/unit/client.test.ts"],
|
|
586
|
+
"pythonTests": ["tests/test_primitives.py", "tests/test_async_client.py"],
|
|
580
587
|
"docs": ["references/backend-protocol.md", "references/troubleshooting.md"]
|
|
581
588
|
},
|
|
582
589
|
"tools.select": {
|