codex-chatgpt-control 0.1.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 +5 -0
- package/LICENSE +21 -0
- package/README.md +54 -0
- package/contracts/v1/fixtures/backend-capabilities.json +54 -0
- package/contracts/v1/fixtures/backend-error-event-missing-stream-input.json +10 -0
- package/contracts/v1/fixtures/backend-error-missing-run-input.json +10 -0
- package/contracts/v1/fixtures/backend-runner-plan-request.json +12 -0
- package/contracts/v1/fixtures/backend-version.json +10 -0
- package/contracts/v1/fixtures/command-descriptors.json +803 -0
- package/contracts/v1/fixtures/describe-runner-run.json +31 -0
- package/contracts/v1/fixtures/doctor-bridge-upload.json +34 -0
- package/contracts/v1/fixtures/help-root.json +6 -0
- package/contracts/v1/fixtures/named-plan-two-turn.json +39 -0
- package/contracts/v1/fixtures/output-json-parse-success.json +115 -0
- package/contracts/v1/fixtures/primitive-bootstrap-blocker.json +43 -0
- package/contracts/v1/fixtures/report-redaction-default.json +16 -0
- package/contracts/v1/fixtures/reports-create-redacted.json +16 -0
- package/contracts/v1/fixtures/reports-summarize-redacted.json +26 -0
- package/contracts/v1/fixtures/responses-basic-success.json +27 -0
- package/contracts/v1/fixtures/responses-hidden-instructions-unsupported.json +22 -0
- package/contracts/v1/fixtures/responses-unknown-field-unsupported.json +22 -0
- package/contracts/v1/fixtures/responses-unsupported-previous-response-id.json +22 -0
- package/contracts/v1/fixtures/responses-unsupported-temperature.json +22 -0
- package/contracts/v1/fixtures/run-basic-success.json +36 -0
- package/contracts/v1/fixtures/run-browser-bridge-blocker.json +180 -0
- package/contracts/v1/fixtures/run-file-attach-success.json +63 -0
- package/contracts/v1/fixtures/run-report-redacted.json +52 -0
- package/contracts/v1/fixtures/run-selector-drift-blocker.json +60 -0
- package/contracts/v1/fixtures/run-timeout-partial.json +81 -0
- package/contracts/v1/fixtures/run-two-turn-success.json +83 -0
- package/contracts/v1/fixtures/run-upload-permission-blocker.json +56 -0
- package/contracts/v1/fixtures/runner-budget-blocker.json +106 -0
- package/contracts/v1/fixtures/runner-full-agent-config.json +50 -0
- package/contracts/v1/fixtures/runner-input-items-and-files-plan.json +53 -0
- package/contracts/v1/fixtures/runner-metadata-only-plan.json +31 -0
- package/contracts/v1/fixtures/runner-visible-prefix-plan.json +28 -0
- package/contracts/v1/fixtures/runner-visible-setup-plan.json +37 -0
- package/contracts/v1/fixtures/stream-basic.ndjson +3 -0
- package/contracts/v1/fixtures/stream-blocked.ndjson +2 -0
- package/contracts/v1/fixtures/stream-submitted-completed.ndjson +3 -0
- package/contracts/v1/fixtures/workflow-ask-success.json +67 -0
- package/contracts/v1/manifest.json +210 -0
- package/contracts/v1/parity-suite.json +635 -0
- package/contracts/v1/schemas/agent.schema.json +52 -0
- package/contracts/v1/schemas/backend-event.schema.json +74 -0
- package/contracts/v1/schemas/backend-request.schema.json +59 -0
- package/contracts/v1/schemas/backend-response.schema.json +42 -0
- package/contracts/v1/schemas/capabilities.schema.json +33 -0
- package/contracts/v1/schemas/command-descriptor.schema.json +31 -0
- package/contracts/v1/schemas/command-result.schema.json +99 -0
- package/contracts/v1/schemas/manifest.schema.json +69 -0
- package/contracts/v1/schemas/response.schema.json +51 -0
- package/contracts/v1/schemas/run-result.schema.json +138 -0
- package/contracts/v1/schemas/sequence-plan.schema.json +44 -0
- package/contracts/v1/schemas/stream-event.schema.json +25 -0
- package/dist/codex-chatgpt-control-backend.mjs +5284 -0
- package/dist/codex-chatgpt-control.bundle.mjs +6013 -0
- package/dist/src/backend/client.d.ts +129 -0
- package/dist/src/backend/client.js +415 -0
- package/dist/src/backend/protocol.d.ts +74 -0
- package/dist/src/backend/protocol.js +128 -0
- package/dist/src/backend/session.d.ts +11 -0
- package/dist/src/backend/session.js +223 -0
- package/dist/src/backend/stdio-server.d.ts +9 -0
- package/dist/src/backend/stdio-server.js +88 -0
- package/dist/src/browser/attach.d.ts +8 -0
- package/dist/src/browser/attach.js +456 -0
- package/dist/src/browser/clipboard.d.ts +2 -0
- package/dist/src/browser/clipboard.js +26 -0
- package/dist/src/browser/downloads.d.ts +7 -0
- package/dist/src/browser/downloads.js +29 -0
- package/dist/src/browser/page-state.d.ts +17 -0
- package/dist/src/browser/page-state.js +66 -0
- package/dist/src/client.d.ts +167 -0
- package/dist/src/client.js +666 -0
- package/dist/src/commands/confirmations.d.ts +9 -0
- package/dist/src/commands/confirmations.js +33 -0
- package/dist/src/commands/context.d.ts +2 -0
- package/dist/src/commands/context.js +32 -0
- package/dist/src/commands/doctor.d.ts +16 -0
- package/dist/src/commands/doctor.js +120 -0
- package/dist/src/commands/files.d.ts +4 -0
- package/dist/src/commands/files.js +314 -0
- package/dist/src/commands/helpers.d.ts +16 -0
- package/dist/src/commands/helpers.js +128 -0
- package/dist/src/commands/messages.d.ts +16 -0
- package/dist/src/commands/messages.js +538 -0
- package/dist/src/commands/modes.d.ts +9 -0
- package/dist/src/commands/modes.js +323 -0
- package/dist/src/commands/output.d.ts +5 -0
- package/dist/src/commands/output.js +31 -0
- package/dist/src/commands/registry.d.ts +17 -0
- package/dist/src/commands/registry.js +275 -0
- package/dist/src/commands/reports.d.ts +14 -0
- package/dist/src/commands/reports.js +47 -0
- package/dist/src/commands/response-actions.d.ts +2 -0
- package/dist/src/commands/response-actions.js +141 -0
- package/dist/src/commands/sequence.d.ts +9 -0
- package/dist/src/commands/sequence.js +228 -0
- package/dist/src/commands/session.d.ts +2 -0
- package/dist/src/commands/session.js +25 -0
- package/dist/src/commands/threads.d.ts +6 -0
- package/dist/src/commands/threads.js +300 -0
- package/dist/src/dom/fixtures.d.ts +1 -0
- package/dist/src/dom/fixtures.js +8 -0
- package/dist/src/dom/menus.d.ts +8 -0
- package/dist/src/dom/menus.js +40 -0
- package/dist/src/dom/message-format.d.ts +30 -0
- package/dist/src/dom/message-format.js +593 -0
- package/dist/src/dom/messages.d.ts +40 -0
- package/dist/src/dom/messages.js +127 -0
- package/dist/src/dom/selectors.d.ts +20 -0
- package/dist/src/dom/selectors.js +72 -0
- package/dist/src/dom/visible-text.d.ts +5 -0
- package/dist/src/dom/visible-text.js +27 -0
- package/dist/src/errors.d.ts +32 -0
- package/dist/src/errors.js +127 -0
- package/dist/src/index.d.ts +34 -0
- package/dist/src/index.js +34 -0
- package/dist/src/logger.d.ts +15 -0
- package/dist/src/logger.js +25 -0
- package/dist/src/runner/agent.d.ts +2 -0
- package/dist/src/runner/agent.js +17 -0
- package/dist/src/runner/index.d.ts +7 -0
- package/dist/src/runner/index.js +7 -0
- package/dist/src/runner/interruptions.d.ts +3 -0
- package/dist/src/runner/interruptions.js +65 -0
- package/dist/src/runner/responses.d.ts +30 -0
- package/dist/src/runner/responses.js +171 -0
- package/dist/src/runner/result.d.ts +3 -0
- package/dist/src/runner/result.js +128 -0
- package/dist/src/runner/resume.d.ts +11 -0
- package/dist/src/runner/resume.js +26 -0
- package/dist/src/runner/stream.d.ts +13 -0
- package/dist/src/runner/stream.js +66 -0
- package/dist/src/runner/types.d.ts +264 -0
- package/dist/src/runner/types.js +1 -0
- package/dist/src/safety/blockers.d.ts +7 -0
- package/dist/src/safety/blockers.js +60 -0
- package/dist/src/safety/redaction.d.ts +2 -0
- package/dist/src/safety/redaction.js +18 -0
- package/dist/src/safety/report-redaction.d.ts +8 -0
- package/dist/src/safety/report-redaction.js +74 -0
- package/dist/src/safety/risk.d.ts +26 -0
- package/dist/src/safety/risk.js +28 -0
- package/dist/src/scripts/backend-server.d.ts +2 -0
- package/dist/src/scripts/backend-server.js +7 -0
- package/dist/src/scripts/check-parity-suite.d.ts +1 -0
- package/dist/src/scripts/check-parity-suite.js +10 -0
- package/dist/src/scripts/continue-thread.d.ts +27 -0
- package/dist/src/scripts/continue-thread.js +388 -0
- package/dist/src/scripts/live-smoke/harness.d.ts +11 -0
- package/dist/src/scripts/live-smoke/harness.js +151 -0
- package/dist/src/scripts/live-smoke/scenarios.d.ts +3 -0
- package/dist/src/scripts/live-smoke/scenarios.js +648 -0
- package/dist/src/scripts/live-smoke/types.d.ts +53 -0
- package/dist/src/scripts/live-smoke/types.js +1 -0
- package/dist/src/scripts/live-smoke-module.d.ts +3 -0
- package/dist/src/scripts/live-smoke-module.js +2 -0
- package/dist/src/scripts/live-smoke.d.ts +1 -0
- package/dist/src/scripts/live-smoke.js +54 -0
- package/dist/src/scripts/smoke-attach-file.d.ts +1 -0
- package/dist/src/scripts/smoke-attach-file.js +39 -0
- package/dist/src/scripts/smoke-hi.d.ts +1 -0
- package/dist/src/scripts/smoke-hi.js +25 -0
- package/dist/src/scripts/smoke-search-open-read.d.ts +1 -0
- package/dist/src/scripts/smoke-search-open-read.js +41 -0
- package/dist/src/testing/parity-suite.d.ts +12 -0
- package/dist/src/testing/parity-suite.js +213 -0
- package/dist/src/types.d.ts +495 -0
- package/dist/src/types.js +1 -0
- package/package.json +81 -0
- package/references/agents-runner.md +32 -0
- package/references/backend-protocol.md +238 -0
- package/references/python-parity.md +168 -0
- package/references/responses-adapter.md +28 -0
- package/references/safety.md +14 -0
- package/references/streaming.md +15 -0
- package/references/troubleshooting.md +91 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
{
|
|
2
|
+
"result": {
|
|
3
|
+
"activeAgentName": "reviewer",
|
|
4
|
+
"blocker": {
|
|
5
|
+
"code": "codex_chrome_bridge_unavailable",
|
|
6
|
+
"kind": "browser_bridge_unavailable",
|
|
7
|
+
"message": "Codex cannot access the ChatGPT browser bridge from this backend process. In an ordinary shell this is expected; for a live Codex Chrome run, bootstrap the Chrome plugin runtime with setupBrowserRuntime({ globals: globalThis }) before using globalThis.agent.",
|
|
8
|
+
"remediation": [
|
|
9
|
+
{
|
|
10
|
+
"instruction": "Treat browser_bridge_unavailable from a plain shell as an expected protocol/blocker-path result, not proof that Chrome, ChatGPT, or the Codex extension is broken.",
|
|
11
|
+
"label": "Ordinary shell",
|
|
12
|
+
"userActionRequired": false
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"instruction": "For a live run, initialize the Chrome plugin runtime in node_repl with setupBrowserRuntime({ globals: globalThis }), then set globalThis.browser = await agent.browsers.get(\"extension\") before calling createChatGPT({ agent: globalThis.agent }).",
|
|
16
|
+
"label": "Codex Chrome bootstrap",
|
|
17
|
+
"userActionRequired": false
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"instruction": "For Python browser-bridge smokes, keep the bridge-hosted Node backend JS execution alive and run scripts/http_stdio_relay.mjs with CHATGPT_BROWSER_BACKEND_HTTP_URL; a plain Python-spawned Node subprocess cannot inherit globalThis.agent.",
|
|
21
|
+
"label": "Python live bridge",
|
|
22
|
+
"userActionRequired": false
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"instruction": "If this command was already running inside a bootstrapped bridge host, verify the Codex Chrome extension is installed and enabled, then restart Chrome or Codex before retrying.",
|
|
26
|
+
"label": "Extension availability",
|
|
27
|
+
"userActionRequired": true
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
"context": {
|
|
32
|
+
"timestamp": "2026-06-06T00:00:00.000Z"
|
|
33
|
+
},
|
|
34
|
+
"data": {
|
|
35
|
+
"outputText": ""
|
|
36
|
+
},
|
|
37
|
+
"error": {
|
|
38
|
+
"message": "Codex cannot access the ChatGPT browser bridge from this backend process. In an ordinary shell this is expected; for a live Codex Chrome run, bootstrap the Chrome plugin runtime with setupBrowserRuntime({ globals: globalThis }) before using globalThis.agent.",
|
|
39
|
+
"name": "BrowserBridgeUnavailableError",
|
|
40
|
+
"recoverable": true
|
|
41
|
+
},
|
|
42
|
+
"interruptions": [
|
|
43
|
+
{
|
|
44
|
+
"blocker": {
|
|
45
|
+
"code": "codex_chrome_bridge_unavailable",
|
|
46
|
+
"kind": "browser_bridge_unavailable",
|
|
47
|
+
"message": "Codex cannot access the ChatGPT browser bridge from this backend process. In an ordinary shell this is expected; for a live Codex Chrome run, bootstrap the Chrome plugin runtime with setupBrowserRuntime({ globals: globalThis }) before using globalThis.agent.",
|
|
48
|
+
"remediation": [
|
|
49
|
+
{
|
|
50
|
+
"instruction": "Treat browser_bridge_unavailable from a plain shell as an expected protocol/blocker-path result, not proof that Chrome, ChatGPT, or the Codex extension is broken.",
|
|
51
|
+
"label": "Ordinary shell",
|
|
52
|
+
"userActionRequired": false
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"instruction": "For a live run, initialize the Chrome plugin runtime in node_repl with setupBrowserRuntime({ globals: globalThis }), then set globalThis.browser = await agent.browsers.get(\"extension\") before calling createChatGPT({ agent: globalThis.agent }).",
|
|
56
|
+
"label": "Codex Chrome bootstrap",
|
|
57
|
+
"userActionRequired": false
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"instruction": "For Python browser-bridge smokes, keep the bridge-hosted Node backend JS execution alive and run scripts/http_stdio_relay.mjs with CHATGPT_BROWSER_BACKEND_HTTP_URL; a plain Python-spawned Node subprocess cannot inherit globalThis.agent.",
|
|
61
|
+
"label": "Python live bridge",
|
|
62
|
+
"userActionRequired": false
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"instruction": "If this command was already running inside a bootstrapped bridge host, verify the Codex Chrome extension is installed and enabled, then restart Chrome or Codex before retrying.",
|
|
66
|
+
"label": "Extension availability",
|
|
67
|
+
"userActionRequired": true
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"resumable": false
|
|
71
|
+
},
|
|
72
|
+
"command": "session.bootstrap",
|
|
73
|
+
"fix": {
|
|
74
|
+
"steps": [
|
|
75
|
+
"Treat browser_bridge_unavailable from a plain shell as an expected protocol/blocker-path result, not proof that Chrome, ChatGPT, or the Codex extension is broken.",
|
|
76
|
+
"For a live run, initialize the Chrome plugin runtime in node_repl with setupBrowserRuntime({ globals: globalThis }), then set globalThis.browser = await agent.browsers.get(\"extension\") before calling createChatGPT({ agent: globalThis.agent }).",
|
|
77
|
+
"For Python browser-bridge smokes, keep the bridge-hosted Node backend JS execution alive and run scripts/http_stdio_relay.mjs with CHATGPT_BROWSER_BACKEND_HTTP_URL; a plain Python-spawned Node subprocess cannot inherit globalThis.agent.",
|
|
78
|
+
"If this command was already running inside a bootstrapped bridge host, verify the Codex Chrome extension is installed and enabled, then restart Chrome or Codex before retrying."
|
|
79
|
+
],
|
|
80
|
+
"summary": "Resolve the reported blocker before resuming."
|
|
81
|
+
},
|
|
82
|
+
"id": "interruption_fixed",
|
|
83
|
+
"message": "Codex cannot access the ChatGPT browser bridge from this backend process. In an ordinary shell this is expected; for a live Codex Chrome run, bootstrap the Chrome plugin runtime with setupBrowserRuntime({ globals: globalThis }) before using globalThis.agent.",
|
|
84
|
+
"resume": {
|
|
85
|
+
"reason": "The underlying browser-control command did not mark this blocker as resumable.",
|
|
86
|
+
"supported": false
|
|
87
|
+
},
|
|
88
|
+
"status": "partial",
|
|
89
|
+
"type": "unsupported"
|
|
90
|
+
}
|
|
91
|
+
],
|
|
92
|
+
"lastAgentName": "reviewer",
|
|
93
|
+
"newItems": [
|
|
94
|
+
{
|
|
95
|
+
"blocker": {
|
|
96
|
+
"code": "codex_chrome_bridge_unavailable",
|
|
97
|
+
"kind": "browser_bridge_unavailable",
|
|
98
|
+
"message": "Codex cannot access the ChatGPT browser bridge from this backend process. In an ordinary shell this is expected; for a live Codex Chrome run, bootstrap the Chrome plugin runtime with setupBrowserRuntime({ globals: globalThis }) before using globalThis.agent.",
|
|
99
|
+
"remediation": [
|
|
100
|
+
{
|
|
101
|
+
"instruction": "Treat browser_bridge_unavailable from a plain shell as an expected protocol/blocker-path result, not proof that Chrome, ChatGPT, or the Codex extension is broken.",
|
|
102
|
+
"label": "Ordinary shell",
|
|
103
|
+
"userActionRequired": false
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"instruction": "For a live run, initialize the Chrome plugin runtime in node_repl with setupBrowserRuntime({ globals: globalThis }), then set globalThis.browser = await agent.browsers.get(\"extension\") before calling createChatGPT({ agent: globalThis.agent }).",
|
|
107
|
+
"label": "Codex Chrome bootstrap",
|
|
108
|
+
"userActionRequired": false
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"instruction": "For Python browser-bridge smokes, keep the bridge-hosted Node backend JS execution alive and run scripts/http_stdio_relay.mjs with CHATGPT_BROWSER_BACKEND_HTTP_URL; a plain Python-spawned Node subprocess cannot inherit globalThis.agent.",
|
|
112
|
+
"label": "Python live bridge",
|
|
113
|
+
"userActionRequired": false
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"instruction": "If this command was already running inside a bootstrapped bridge host, verify the Codex Chrome extension is installed and enabled, then restart Chrome or Codex before retrying.",
|
|
117
|
+
"label": "Extension availability",
|
|
118
|
+
"userActionRequired": true
|
|
119
|
+
}
|
|
120
|
+
],
|
|
121
|
+
"resumable": false
|
|
122
|
+
},
|
|
123
|
+
"type": "run.blocked"
|
|
124
|
+
}
|
|
125
|
+
],
|
|
126
|
+
"ok": false,
|
|
127
|
+
"output": [
|
|
128
|
+
{
|
|
129
|
+
"blocker": {
|
|
130
|
+
"code": "codex_chrome_bridge_unavailable",
|
|
131
|
+
"kind": "browser_bridge_unavailable",
|
|
132
|
+
"message": "Codex cannot access the ChatGPT browser bridge from this backend process. In an ordinary shell this is expected; for a live Codex Chrome run, bootstrap the Chrome plugin runtime with setupBrowserRuntime({ globals: globalThis }) before using globalThis.agent.",
|
|
133
|
+
"remediation": [
|
|
134
|
+
{
|
|
135
|
+
"instruction": "Treat browser_bridge_unavailable from a plain shell as an expected protocol/blocker-path result, not proof that Chrome, ChatGPT, or the Codex extension is broken.",
|
|
136
|
+
"label": "Ordinary shell",
|
|
137
|
+
"userActionRequired": false
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"instruction": "For a live run, initialize the Chrome plugin runtime in node_repl with setupBrowserRuntime({ globals: globalThis }), then set globalThis.browser = await agent.browsers.get(\"extension\") before calling createChatGPT({ agent: globalThis.agent }).",
|
|
141
|
+
"label": "Codex Chrome bootstrap",
|
|
142
|
+
"userActionRequired": false
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"instruction": "For Python browser-bridge smokes, keep the bridge-hosted Node backend JS execution alive and run scripts/http_stdio_relay.mjs with CHATGPT_BROWSER_BACKEND_HTTP_URL; a plain Python-spawned Node subprocess cannot inherit globalThis.agent.",
|
|
146
|
+
"label": "Python live bridge",
|
|
147
|
+
"userActionRequired": false
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"instruction": "If this command was already running inside a bootstrapped bridge host, verify the Codex Chrome extension is installed and enabled, then restart Chrome or Codex before retrying.",
|
|
151
|
+
"label": "Extension availability",
|
|
152
|
+
"userActionRequired": true
|
|
153
|
+
}
|
|
154
|
+
],
|
|
155
|
+
"resumable": false
|
|
156
|
+
},
|
|
157
|
+
"type": "run.blocked"
|
|
158
|
+
}
|
|
159
|
+
],
|
|
160
|
+
"output_text": "",
|
|
161
|
+
"state": {
|
|
162
|
+
"id": "run_fixed",
|
|
163
|
+
"resumable": false
|
|
164
|
+
},
|
|
165
|
+
"status": "partial",
|
|
166
|
+
"steps": [
|
|
167
|
+
{
|
|
168
|
+
"command": "session.bootstrap",
|
|
169
|
+
"endedAt": "2026-06-06T00:00:00.000Z",
|
|
170
|
+
"id": "bootstrap",
|
|
171
|
+
"ok": false,
|
|
172
|
+
"startedAt": "2026-06-06T00:00:00.000Z",
|
|
173
|
+
"status": "blocked",
|
|
174
|
+
"warnings": []
|
|
175
|
+
}
|
|
176
|
+
],
|
|
177
|
+
"warnings": []
|
|
178
|
+
},
|
|
179
|
+
"schemaVersion": "chatgpt.browser_control.run_result.v1"
|
|
180
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "chatgpt.browser_control.run_result.v1",
|
|
3
|
+
"result": {
|
|
4
|
+
"ok": true,
|
|
5
|
+
"status": "ok",
|
|
6
|
+
"output_text": "I reviewed brief.md.",
|
|
7
|
+
"finalOutput": "I reviewed brief.md.",
|
|
8
|
+
"output": [
|
|
9
|
+
{
|
|
10
|
+
"type": "thread.opened",
|
|
11
|
+
"thread": {
|
|
12
|
+
"url": "https://chatgpt.com/c/example-file",
|
|
13
|
+
"conversationId": "example-file"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"type": "file.attached",
|
|
18
|
+
"file": {
|
|
19
|
+
"path": "[redacted]/brief.md",
|
|
20
|
+
"name": "brief.md",
|
|
21
|
+
"bytes": 1842
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"type": "message.completed",
|
|
26
|
+
"role": "assistant",
|
|
27
|
+
"output_text": "I reviewed brief.md.",
|
|
28
|
+
"format": "markdown"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"newItems": [
|
|
32
|
+
{
|
|
33
|
+
"type": "file.attached",
|
|
34
|
+
"file": {
|
|
35
|
+
"path": "[redacted]/brief.md",
|
|
36
|
+
"name": "brief.md",
|
|
37
|
+
"bytes": 1842
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"type": "message.completed",
|
|
42
|
+
"role": "assistant",
|
|
43
|
+
"output_text": "I reviewed brief.md.",
|
|
44
|
+
"format": "markdown"
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"interruptions": [],
|
|
48
|
+
"state": {
|
|
49
|
+
"id": "state-file-success",
|
|
50
|
+
"resumable": false,
|
|
51
|
+
"thread": {
|
|
52
|
+
"url": "https://chatgpt.com/c/example-file",
|
|
53
|
+
"conversationId": "example-file"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"activeAgentName": "reviewer",
|
|
57
|
+
"lastAgentName": "reviewer",
|
|
58
|
+
"warnings": [],
|
|
59
|
+
"context": {
|
|
60
|
+
"timestamp": "2026-06-05T00:00:00.000Z"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "chatgpt.browser_control.run_result.v1",
|
|
3
|
+
"result": {
|
|
4
|
+
"ok": true,
|
|
5
|
+
"status": "ok",
|
|
6
|
+
"output_text": "Report written.",
|
|
7
|
+
"finalOutput": "Report written.",
|
|
8
|
+
"output": [
|
|
9
|
+
{
|
|
10
|
+
"type": "message.submitted",
|
|
11
|
+
"role": "user",
|
|
12
|
+
"preview": "[redacted]",
|
|
13
|
+
"redacted": true
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"type": "report.created",
|
|
17
|
+
"path": "reports/runs/redacted-run.json",
|
|
18
|
+
"contentPolicy": {
|
|
19
|
+
"includeContent": false,
|
|
20
|
+
"maxPreviewChars": 0,
|
|
21
|
+
"redacted": true
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"newItems": [
|
|
26
|
+
{
|
|
27
|
+
"type": "report.created",
|
|
28
|
+
"path": "reports/runs/redacted-run.json",
|
|
29
|
+
"contentPolicy": {
|
|
30
|
+
"includeContent": false,
|
|
31
|
+
"maxPreviewChars": 0,
|
|
32
|
+
"redacted": true
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"interruptions": [],
|
|
37
|
+
"state": {
|
|
38
|
+
"id": "state-report-redacted",
|
|
39
|
+
"resumable": false
|
|
40
|
+
},
|
|
41
|
+
"activeAgentName": "reporter",
|
|
42
|
+
"lastAgentName": "reporter",
|
|
43
|
+
"warnings": [],
|
|
44
|
+
"reportPath": "reports/runs/redacted-run.json",
|
|
45
|
+
"data": {
|
|
46
|
+
"reportPath": "reports/runs/redacted-run.json"
|
|
47
|
+
},
|
|
48
|
+
"context": {
|
|
49
|
+
"timestamp": "2026-06-05T00:00:00.000Z"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "chatgpt.browser_control.run_result.v1",
|
|
3
|
+
"result": {
|
|
4
|
+
"ok": false,
|
|
5
|
+
"status": "unsupported",
|
|
6
|
+
"output_text": "",
|
|
7
|
+
"output": [
|
|
8
|
+
{
|
|
9
|
+
"type": "run.blocked",
|
|
10
|
+
"blocker": {
|
|
11
|
+
"kind": "selector_drift",
|
|
12
|
+
"message": "No unique visible ChatGPT mode matched the requested label.",
|
|
13
|
+
"candidates": [
|
|
14
|
+
{
|
|
15
|
+
"label": "Auto"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"label": "Extended"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"newItems": [],
|
|
25
|
+
"interruptions": [
|
|
26
|
+
{
|
|
27
|
+
"id": "interrupt-selector-drift",
|
|
28
|
+
"type": "selector_drift",
|
|
29
|
+
"status": "unsupported",
|
|
30
|
+
"message": "No unique visible ChatGPT mode matched the requested label.",
|
|
31
|
+
"resume": {
|
|
32
|
+
"supported": false,
|
|
33
|
+
"reason": "Visible candidate selection must be resolved by the caller."
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"state": {
|
|
38
|
+
"id": "state-selector-drift",
|
|
39
|
+
"resumable": false
|
|
40
|
+
},
|
|
41
|
+
"activeAgentName": "reviewer",
|
|
42
|
+
"lastAgentName": "reviewer",
|
|
43
|
+
"warnings": [],
|
|
44
|
+
"blocker": {
|
|
45
|
+
"kind": "selector_drift",
|
|
46
|
+
"message": "No unique visible ChatGPT mode matched the requested label.",
|
|
47
|
+
"candidates": [
|
|
48
|
+
{
|
|
49
|
+
"label": "Auto"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"label": "Extended"
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
"context": {
|
|
57
|
+
"timestamp": "2026-06-05T00:00:00.000Z"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "chatgpt.browser_control.run_result.v1",
|
|
3
|
+
"result": {
|
|
4
|
+
"ok": false,
|
|
5
|
+
"status": "partial",
|
|
6
|
+
"output_text": "Partial assistant text captured before timeout.",
|
|
7
|
+
"finalOutput": "Partial assistant text captured before timeout.",
|
|
8
|
+
"output": [
|
|
9
|
+
{
|
|
10
|
+
"type": "thread.opened",
|
|
11
|
+
"thread": {
|
|
12
|
+
"url": "https://chatgpt.com/c/example-timeout",
|
|
13
|
+
"conversationId": "example-timeout"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"type": "message.submitted",
|
|
18
|
+
"role": "user",
|
|
19
|
+
"preview": "[redacted]",
|
|
20
|
+
"redacted": true
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"type": "message.completed",
|
|
24
|
+
"role": "assistant",
|
|
25
|
+
"output_text": "Partial assistant text captured before timeout.",
|
|
26
|
+
"format": "markdown"
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"newItems": [
|
|
30
|
+
{
|
|
31
|
+
"type": "message.completed",
|
|
32
|
+
"role": "assistant",
|
|
33
|
+
"output_text": "Partial assistant text captured before timeout.",
|
|
34
|
+
"format": "markdown"
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"interruptions": [
|
|
38
|
+
{
|
|
39
|
+
"id": "interrupt-timeout",
|
|
40
|
+
"type": "timeout",
|
|
41
|
+
"status": "timeout",
|
|
42
|
+
"message": "The assistant response did not stabilize before the configured timeout.",
|
|
43
|
+
"resume": {
|
|
44
|
+
"supported": true,
|
|
45
|
+
"stateId": "state-timeout-partial"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"state": {
|
|
50
|
+
"id": "state-timeout-partial",
|
|
51
|
+
"resumable": true,
|
|
52
|
+
"thread": {
|
|
53
|
+
"url": "https://chatgpt.com/c/example-timeout",
|
|
54
|
+
"conversationId": "example-timeout"
|
|
55
|
+
},
|
|
56
|
+
"nextStepId": "read-latest"
|
|
57
|
+
},
|
|
58
|
+
"activeAgentName": "reviewer",
|
|
59
|
+
"lastAgentName": "reviewer",
|
|
60
|
+
"warnings": [
|
|
61
|
+
"Response may still be generating in the visible ChatGPT thread."
|
|
62
|
+
],
|
|
63
|
+
"steps": [
|
|
64
|
+
{
|
|
65
|
+
"id": "open",
|
|
66
|
+
"command": "threads.open",
|
|
67
|
+
"status": "ok",
|
|
68
|
+
"ok": true
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"id": "ask",
|
|
72
|
+
"command": "messages.ask",
|
|
73
|
+
"status": "timeout",
|
|
74
|
+
"ok": false
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
"context": {
|
|
78
|
+
"timestamp": "2026-06-05T00:00:00.000Z"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "chatgpt.browser_control.run_result.v1",
|
|
3
|
+
"result": {
|
|
4
|
+
"ok": true,
|
|
5
|
+
"status": "ok",
|
|
6
|
+
"output_text": "second answer",
|
|
7
|
+
"finalOutput": "second answer",
|
|
8
|
+
"output": [
|
|
9
|
+
{
|
|
10
|
+
"type": "thread.opened",
|
|
11
|
+
"thread": {
|
|
12
|
+
"url": "https://chatgpt.com/c/example-two-turn",
|
|
13
|
+
"conversationId": "example-two-turn"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"type": "message.submitted",
|
|
18
|
+
"role": "user",
|
|
19
|
+
"preview": "first",
|
|
20
|
+
"redacted": false
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"type": "message.completed",
|
|
24
|
+
"role": "assistant",
|
|
25
|
+
"output_text": "first answer",
|
|
26
|
+
"format": "markdown"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"type": "message.submitted",
|
|
30
|
+
"role": "user",
|
|
31
|
+
"preview": "second",
|
|
32
|
+
"redacted": false
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"type": "message.completed",
|
|
36
|
+
"role": "assistant",
|
|
37
|
+
"output_text": "second answer",
|
|
38
|
+
"format": "markdown"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"newItems": [
|
|
42
|
+
{
|
|
43
|
+
"type": "message.submitted",
|
|
44
|
+
"role": "user",
|
|
45
|
+
"preview": "first",
|
|
46
|
+
"redacted": false
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"type": "message.completed",
|
|
50
|
+
"role": "assistant",
|
|
51
|
+
"output_text": "first answer",
|
|
52
|
+
"format": "markdown"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"type": "message.submitted",
|
|
56
|
+
"role": "user",
|
|
57
|
+
"preview": "second",
|
|
58
|
+
"redacted": false
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"type": "message.completed",
|
|
62
|
+
"role": "assistant",
|
|
63
|
+
"output_text": "second answer",
|
|
64
|
+
"format": "markdown"
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"interruptions": [],
|
|
68
|
+
"state": {
|
|
69
|
+
"id": "state-two-turn-success",
|
|
70
|
+
"resumable": false,
|
|
71
|
+
"thread": {
|
|
72
|
+
"url": "https://chatgpt.com/c/example-two-turn",
|
|
73
|
+
"conversationId": "example-two-turn"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"activeAgentName": "reviewer",
|
|
77
|
+
"lastAgentName": "reviewer",
|
|
78
|
+
"warnings": [],
|
|
79
|
+
"context": {
|
|
80
|
+
"timestamp": "2026-06-05T00:00:00.000Z"
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "chatgpt.browser_control.run_result.v1",
|
|
3
|
+
"result": {
|
|
4
|
+
"ok": false,
|
|
5
|
+
"status": "blocked",
|
|
6
|
+
"output_text": "",
|
|
7
|
+
"output": [
|
|
8
|
+
{
|
|
9
|
+
"type": "run.blocked",
|
|
10
|
+
"blocker": {
|
|
11
|
+
"kind": "permission",
|
|
12
|
+
"message": "A browser or ChatGPT permission is required before continuing."
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"newItems": [],
|
|
17
|
+
"interruptions": [
|
|
18
|
+
{
|
|
19
|
+
"id": "interrupt-upload-permission",
|
|
20
|
+
"type": "permission_required",
|
|
21
|
+
"status": "blocked",
|
|
22
|
+
"message": "A browser or ChatGPT permission is required before continuing.",
|
|
23
|
+
"resume": {
|
|
24
|
+
"supported": false,
|
|
25
|
+
"reason": "The user must update local browser or Codex permission settings."
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"state": {
|
|
30
|
+
"id": "state-upload-permission",
|
|
31
|
+
"resumable": false
|
|
32
|
+
},
|
|
33
|
+
"activeAgentName": "reviewer",
|
|
34
|
+
"lastAgentName": "reviewer",
|
|
35
|
+
"warnings": [],
|
|
36
|
+
"blocker": {
|
|
37
|
+
"kind": "permission",
|
|
38
|
+
"message": "A browser or ChatGPT permission is required before continuing.",
|
|
39
|
+
"remediation": [
|
|
40
|
+
{
|
|
41
|
+
"label": "Enable Codex upload permission",
|
|
42
|
+
"instruction": "Open Codex Settings > Computer Use > Chrome > Permissions and set Uploads to Always allow.",
|
|
43
|
+
"userActionRequired": true
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"label": "Allow Chrome extension file URLs",
|
|
47
|
+
"instruction": "Open chrome://extensions, select the Codex extension, and enable Allow access to file URLs.",
|
|
48
|
+
"userActionRequired": true
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
"context": {
|
|
53
|
+
"timestamp": "2026-06-05T00:00:00.000Z"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|