codex-chatgpt-control 0.5.1-alpha.2 → 0.5.1-alpha.4
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 +42 -0
- package/README.md +43 -0
- package/contracts/v1/fixtures/backend-capabilities.json +40 -1
- package/contracts/v1/fixtures/backend-compatibility.json +21 -0
- package/contracts/v1/fixtures/backend-version.json +6 -1
- package/contracts/v1/fixtures/download-blocked-by-browser.json +22 -0
- package/contracts/v1/fixtures/download-receipt-failed.json +22 -0
- package/contracts/v1/fixtures/download-receipt-timeout.json +22 -0
- package/contracts/v1/fixtures/journal-rpc-indeterminate.json +32 -0
- package/contracts/v1/fixtures/journal-rpc-unsupported-platform.json +32 -0
- package/contracts/v1/fixtures/journal-runtime-unavailable.json +32 -0
- package/contracts/v1/fixtures/operation-action-prepared-event.json +42 -0
- package/contracts/v1/fixtures/operation-action.json +13 -0
- package/contracts/v1/fixtures/operation-artifact-receipt.json +14 -0
- package/contracts/v1/fixtures/operation-artifact-transfer-intent-event.json +24 -0
- package/contracts/v1/fixtures/operation-artifact-transfer-receipt-event.json +26 -0
- package/contracts/v1/fixtures/operation-artifact-transfer-state.json +178 -0
- package/contracts/v1/fixtures/operation-blocker.json +10 -0
- package/contracts/v1/fixtures/operation-collect-request.json +17 -0
- package/contracts/v1/fixtures/operation-collect-result.json +42 -0
- package/contracts/v1/fixtures/operation-control-receipt.json +13 -0
- package/contracts/v1/fixtures/operation-control-request.json +18 -0
- package/contracts/v1/fixtures/operation-control-result.json +31 -0
- package/contracts/v1/fixtures/operation-event.json +18 -0
- package/contracts/v1/fixtures/operation-handle.json +10 -0
- package/contracts/v1/fixtures/operation-inspect-request.json +13 -0
- package/contracts/v1/fixtures/operation-inspect-result.json +205 -0
- package/contracts/v1/fixtures/operation-ownership-baseline-event.json +34 -0
- package/contracts/v1/fixtures/operation-receipt.json +32 -0
- package/contracts/v1/fixtures/operation-recovery-decision.json +7 -0
- package/contracts/v1/fixtures/operation-recovery-observation.json +12 -0
- package/contracts/v1/fixtures/operation-request.json +33 -0
- package/contracts/v1/fixtures/operation-state.json +144 -0
- package/contracts/v1/fixtures/operation-submission-witness-event.json +20 -0
- package/contracts/v1/fixtures/operation-submission-witness.json +11 -0
- package/contracts/v1/fixtures/operation-submit-result.json +16 -0
- package/contracts/v1/fixtures/operation-target-established-event.json +21 -0
- package/contracts/v1/manifest.json +185 -1
- package/contracts/v1/parity-suite.json +106 -8
- package/contracts/v1/schemas/backend-compatibility.schema.json +65 -0
- package/contracts/v1/schemas/backend-request.schema.json +8 -2
- package/contracts/v1/schemas/capabilities.schema.json +81 -1
- package/contracts/v1/schemas/manifest.schema.json +57 -0
- package/contracts/v1/schemas/operation-action.schema.json +155 -0
- package/contracts/v1/schemas/operation-artifact-receipt.schema.json +89 -0
- package/contracts/v1/schemas/operation-blocker.schema.json +70 -0
- package/contracts/v1/schemas/operation-collect-request.schema.json +46 -0
- package/contracts/v1/schemas/operation-collect-result.schema.json +74 -0
- package/contracts/v1/schemas/operation-control-receipt.schema.json +108 -0
- package/contracts/v1/schemas/operation-control-request.schema.json +111 -0
- package/contracts/v1/schemas/operation-control-result.schema.json +112 -0
- package/contracts/v1/schemas/operation-event.schema.json +756 -0
- package/contracts/v1/schemas/operation-handle.schema.json +55 -0
- package/contracts/v1/schemas/operation-inspect-request.schema.json +42 -0
- package/contracts/v1/schemas/operation-inspect-result.schema.json +1662 -0
- package/contracts/v1/schemas/operation-receipt.schema.json +153 -0
- package/contracts/v1/schemas/operation-recovery.schema.json +314 -0
- package/contracts/v1/schemas/operation-request.schema.json +158 -0
- package/contracts/v1/schemas/operation-state.schema.json +691 -0
- package/contracts/v1/schemas/operation-submission-witness.schema.json +48 -0
- package/contracts/v1/schemas/operation-submit-result.schema.json +94 -0
- package/contracts/v1/surface-drift-policy.json +50 -0
- package/contracts/v1/vectors/operation-request-digest-v1.json +43 -0
- package/dist/codex-chatgpt-control-backend.mjs +45882 -9361
- package/dist/codex-chatgpt-control-journal.mjs +5547 -0
- package/dist/codex-chatgpt-control-live-smoke.bundle.mjs +51677 -0
- package/dist/codex-chatgpt-control-release-canary.bundle.mjs +52104 -0
- package/dist/codex-chatgpt-control.bundle.mjs +48392 -10260
- package/dist/src/backend/client.d.ts +103 -2
- package/dist/src/backend/client.js +1436 -97
- package/dist/src/backend/compatibility.d.ts +12 -0
- package/dist/src/backend/compatibility.js +208 -0
- package/dist/src/backend/protocol.d.ts +84 -1
- package/dist/src/backend/protocol.js +31 -5
- package/dist/src/backend/runtime-identity.d.ts +10 -0
- package/dist/src/backend/runtime-identity.js +141 -0
- package/dist/src/backend/session.d.ts +10 -2
- package/dist/src/backend/session.js +478 -7
- package/dist/src/backend/stdio-server.d.ts +4 -1
- package/dist/src/backend/stdio-server.js +240 -28
- package/dist/src/browser/active-composer-file-input.d.ts +9 -0
- package/dist/src/browser/active-composer-file-input.js +33 -0
- package/dist/src/browser/attach.d.ts +4 -1
- package/dist/src/browser/attach.js +136 -28
- package/dist/src/browser/chatgpt-url.d.ts +2 -0
- package/dist/src/browser/chatgpt-url.js +9 -0
- package/dist/src/browser/downloads.d.ts +17 -1
- package/dist/src/browser/downloads.js +150 -28
- package/dist/src/browser/page-state.js +6 -0
- package/dist/src/client.d.ts +43 -0
- package/dist/src/client.js +1279 -59
- package/dist/src/commands/artifacts.js +6 -4
- package/dist/src/commands/chat-popover.d.ts +37 -0
- package/dist/src/commands/chat-popover.js +537 -0
- package/dist/src/commands/configuration.d.ts +5 -0
- package/dist/src/commands/configuration.js +134 -21
- package/dist/src/commands/context.js +10 -3
- package/dist/src/commands/doctor.d.ts +1 -1
- package/dist/src/commands/doctor.js +27 -4
- package/dist/src/commands/experience.d.ts +5 -0
- package/dist/src/commands/experience.js +104 -21
- package/dist/src/commands/files.js +14 -33
- package/dist/src/commands/modes.js +85 -21
- package/dist/src/commands/power-discovery.d.ts +130 -0
- package/dist/src/commands/power-discovery.js +669 -0
- package/dist/src/commands/project-sources.js +325 -31
- package/dist/src/commands/sequence.js +59 -32
- package/dist/src/commands/session.js +19 -6
- package/dist/src/commands/work.js +31 -0
- package/dist/src/dom/composer-text.d.ts +6 -0
- package/dist/src/dom/composer-text.js +85 -0
- package/dist/src/errors.d.ts +9 -0
- package/dist/src/errors.js +22 -0
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.js +9 -0
- package/dist/src/operations/artifact-output.d.ts +69 -0
- package/dist/src/operations/artifact-output.js +1748 -0
- package/dist/src/operations/artifact-stream.d.ts +19 -0
- package/dist/src/operations/artifact-stream.js +35 -0
- package/dist/src/operations/artifact-transfer.d.ts +149 -0
- package/dist/src/operations/artifact-transfer.js +1312 -0
- package/dist/src/operations/browser-adapter.d.ts +167 -0
- package/dist/src/operations/browser-adapter.js +2103 -0
- package/dist/src/operations/browser-observation.d.ts +110 -0
- package/dist/src/operations/browser-observation.js +1256 -0
- package/dist/src/operations/browser-target.d.ts +105 -0
- package/dist/src/operations/browser-target.js +531 -0
- package/dist/src/operations/canonical.d.ts +4 -0
- package/dist/src/operations/canonical.js +412 -0
- package/dist/src/operations/chatgpt-runtime.d.ts +72 -0
- package/dist/src/operations/chatgpt-runtime.js +1232 -0
- package/dist/src/operations/client.d.ts +138 -0
- package/dist/src/operations/client.js +1145 -0
- package/dist/src/operations/collector.d.ts +195 -0
- package/dist/src/operations/collector.js +1039 -0
- package/dist/src/operations/configuration-routing.d.ts +4 -0
- package/dist/src/operations/configuration-routing.js +14 -0
- package/dist/src/operations/control.d.ts +372 -0
- package/dist/src/operations/control.js +1498 -0
- package/dist/src/operations/file-identity.d.ts +33 -0
- package/dist/src/operations/file-identity.js +153 -0
- package/dist/src/operations/handle.d.ts +19 -0
- package/dist/src/operations/handle.js +727 -0
- package/dist/src/operations/index.d.ts +25 -0
- package/dist/src/operations/index.js +25 -0
- package/dist/src/operations/journal-authority.d.ts +12 -0
- package/dist/src/operations/journal-authority.js +1 -0
- package/dist/src/operations/journal-rpc-client.d.ts +12 -0
- package/dist/src/operations/journal-rpc-client.js +225 -0
- package/dist/src/operations/journal-rpc-protocol.d.ts +32 -0
- package/dist/src/operations/journal-rpc-protocol.js +214 -0
- package/dist/src/operations/journal-rpc-server.d.ts +15 -0
- package/dist/src/operations/journal-rpc-server.js +272 -0
- package/dist/src/operations/journal.d.ts +143 -0
- package/dist/src/operations/journal.js +1957 -0
- package/dist/src/operations/production-attachments.d.ts +118 -0
- package/dist/src/operations/production-attachments.js +1035 -0
- package/dist/src/operations/production-chatgpt-artifacts.d.ts +74 -0
- package/dist/src/operations/production-chatgpt-artifacts.js +1146 -0
- package/dist/src/operations/production-chatgpt-attachments.d.ts +80 -0
- package/dist/src/operations/production-chatgpt-attachments.js +1639 -0
- package/dist/src/operations/production-configuration.d.ts +42 -0
- package/dist/src/operations/production-configuration.js +1544 -0
- package/dist/src/operations/production-primitives.d.ts +53 -0
- package/dist/src/operations/production-primitives.js +856 -0
- package/dist/src/operations/production-work-steer.d.ts +203 -0
- package/dist/src/operations/production-work-steer.js +1218 -0
- package/dist/src/operations/recovery.d.ts +80 -0
- package/dist/src/operations/recovery.js +174 -0
- package/dist/src/operations/runtime-adapter.d.ts +126 -0
- package/dist/src/operations/runtime-adapter.js +802 -0
- package/dist/src/operations/send-once.d.ts +224 -0
- package/dist/src/operations/send-once.js +1081 -0
- package/dist/src/operations/service.d.ts +286 -0
- package/dist/src/operations/service.js +2831 -0
- package/dist/src/operations/staging.d.ts +136 -0
- package/dist/src/operations/staging.js +630 -0
- package/dist/src/operations/state-machine.d.ts +29 -0
- package/dist/src/operations/state-machine.js +2047 -0
- package/dist/src/operations/submission.d.ts +423 -0
- package/dist/src/operations/submission.js +1676 -0
- package/dist/src/operations/transactional-chat-power.d.ts +17 -0
- package/dist/src/operations/transactional-chat-power.js +212 -0
- package/dist/src/operations/turn-ownership.d.ts +202 -0
- package/dist/src/operations/turn-ownership.js +700 -0
- package/dist/src/operations/types.d.ts +454 -0
- package/dist/src/operations/types.js +20 -0
- package/dist/src/operations/wire-requests.d.ts +21 -0
- package/dist/src/operations/wire-requests.js +396 -0
- package/dist/src/operations/wire-results.d.ts +97 -0
- package/dist/src/operations/wire-results.js +818 -0
- package/dist/src/runner/responses.d.ts +3 -1
- package/dist/src/runner/responses.js +19 -1
- package/dist/src/runner/result.js +227 -55
- package/dist/src/runner/types.d.ts +12 -0
- package/dist/src/runtime/command-routing.d.ts +149 -0
- package/dist/src/runtime/command-routing.js +431 -0
- package/dist/src/runtime/coordinated-browser.d.ts +24 -0
- package/dist/src/runtime/coordinated-browser.js +315 -0
- package/dist/src/runtime/coordinated-page.d.ts +41 -0
- package/dist/src/runtime/coordinated-page.js +651 -0
- package/dist/src/runtime/operation-context.d.ts +142 -0
- package/dist/src/runtime/operation-context.js +410 -0
- package/dist/src/runtime/runtime-session.d.ts +95 -0
- package/dist/src/runtime/runtime-session.js +314 -0
- package/dist/src/runtime/tab-coordinator.d.ts +200 -0
- package/dist/src/runtime/tab-coordinator.js +1200 -0
- package/dist/src/runtime/value-boundaries.d.ts +18 -0
- package/dist/src/runtime/value-boundaries.js +49 -0
- package/dist/src/safety/blockers.js +8 -1
- package/dist/src/safety/untrusted-output.js +2 -1
- package/dist/src/scripts/backend-server.js +4 -1
- package/dist/src/scripts/capture-surface-profile.js +7 -2
- package/dist/src/scripts/journal-server.d.ts +2 -0
- package/dist/src/scripts/journal-server.js +37 -0
- package/dist/src/scripts/live-smoke/harness.js +79 -7
- package/dist/src/scripts/live-smoke/scenarios.d.ts +42 -1
- package/dist/src/scripts/live-smoke/scenarios.js +147 -30
- package/dist/src/scripts/live-smoke/transactional.d.ts +17 -0
- package/dist/src/scripts/live-smoke/transactional.js +254 -0
- package/dist/src/scripts/live-smoke/types.d.ts +3 -0
- package/dist/src/scripts/release-canary-module.js +17 -4
- package/dist/src/types.d.ts +38 -1
- package/package.json +8 -3
- package/references/2026-08-16-transactional-operations.md +459 -0
- package/references/2026-09-06-journal-service.md +140 -0
- package/references/agents-runner.md +34 -0
- package/references/backend-protocol.md +176 -0
- package/references/python-parity.md +137 -0
- package/references/responses-adapter.md +19 -0
- package/references/streaming.md +6 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,47 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.5.1-alpha.4
|
|
4
|
+
|
|
5
|
+
- Detects Chrome's explicit blocked-download error page, avoids alternate
|
|
6
|
+
download attempts, and keeps signed download URLs out of rejected-page results.
|
|
7
|
+
- Requires filename-scoped workbook previews when browser filtering is absent.
|
|
8
|
+
- Repairs Chat detection and configuration when current Power or Advanced
|
|
9
|
+
menus are open, preserving scoped Work evidence and verified effort changes.
|
|
10
|
+
- Recognizes current Work model/Power menus and the independent Fast-mode
|
|
11
|
+
checkbox, with verified selection/restoration and legacy Advanced support.
|
|
12
|
+
- Recovers an unconfirmed Send through a fresh client using the authenticated
|
|
13
|
+
saved tab, baseline, unique turn and matching prompt, without sending again.
|
|
14
|
+
- Adds an explicit authenticated journal service and packaged CLI for browser
|
|
15
|
+
hosts without process identity. Journal files and locks remain owned by real
|
|
16
|
+
Node; browser capabilities remain in the active browser host.
|
|
17
|
+
- Supports the new private-file journal transport on macOS/Linux; Windows
|
|
18
|
+
returns an explicit unsupported-platform error before filesystem access.
|
|
19
|
+
- Preserves multiline composer text, recognizes zero-file composer state,
|
|
20
|
+
and forwards the requested response format during exact-turn collection.
|
|
21
|
+
- Bounds native download completion receipt waits and reports unverified
|
|
22
|
+
completion without repeating the download or switching strategies.
|
|
23
|
+
- Uses one journal-call deadline across queued admission and dispatch and
|
|
24
|
+
bounds concurrent turn evidence requests while preserving digest identities.
|
|
25
|
+
- Adds transactional live qualification with durable Send inspection, guarded
|
|
26
|
+
same-ID recovery, owned receipts and duplicate-submission checks.
|
|
27
|
+
- Preserves journal-unavailable and indeterminate-write results across Node
|
|
28
|
+
and Python through shared fixtures, with bounded transport and private reports.
|
|
29
|
+
|
|
30
|
+
## 0.5.1-alpha.3
|
|
31
|
+
|
|
32
|
+
- Adds the transactional `operations.submit`, `collect`, `inspect`, `control`,
|
|
33
|
+
and `run` surface with durable request identity, monotonic mutation
|
|
34
|
+
boundaries, exact ownership, non-repetition, and redacted recovery receipts.
|
|
35
|
+
- Adds capability-aware runtime identity, correlated multiplexed backend
|
|
36
|
+
traffic, process-scoped tab coordination, bounded DOM/file/artifact
|
|
37
|
+
observation, and deterministic configuration restoration.
|
|
38
|
+
- Hardens browser acquisition and attachment input scoping, acts-then-throws
|
|
39
|
+
settlement, late deadline behavior, output path validation, journal quotas,
|
|
40
|
+
lifecycle controls, and visible blocker classification.
|
|
41
|
+
- Extends release-canary coverage with exact per-scenario tab cleanup and
|
|
42
|
+
independent Chat/Work/configuration postconditions; refreshes all four plugin
|
|
43
|
+
runtime bundles from the qualified source.
|
|
44
|
+
|
|
3
45
|
## 0.5.1-alpha.2
|
|
4
46
|
|
|
5
47
|
- Adds confirmation-gated, fail-closed `messages.stop` lifecycle control with
|
package/README.md
CHANGED
|
@@ -29,6 +29,49 @@ const result = await chatgpt.runner.run(reviewer, {
|
|
|
29
29
|
});
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
+
## Transactional operation preview
|
|
33
|
+
|
|
34
|
+
Supported Chat, Work, Runner, and Responses workflows accept an optional
|
|
35
|
+
caller-owned canonical UUID `operationId`. Supplying it opts that invocation
|
|
36
|
+
into durable submit-once recovery and exact-turn collection; omitting it keeps
|
|
37
|
+
the compatibility path.
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
const result = await chatgpt.ask({
|
|
41
|
+
operationId: "123e4567-e89b-42d3-a456-426614174000",
|
|
42
|
+
prompt: "Summarize the visible thread.",
|
|
43
|
+
thread: { type: "conversationId", conversationId: "caller-owned-conversation-id" },
|
|
44
|
+
wait: false,
|
|
45
|
+
read: false
|
|
46
|
+
});
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
The direct `chatgpt.operations` surface exposes `submit`, `collect`, `inspect`,
|
|
50
|
+
`control`, and SDK-composed `run`. Persist and reuse the fresh returned handle
|
|
51
|
+
after partial or uncertain results; never retry the same logical Send under a
|
|
52
|
+
new ID. `operations.inspect` is browser-free. Browser-touching calls fail
|
|
53
|
+
closed when bridge access, target evidence, or a required provider primitive
|
|
54
|
+
is unavailable. See
|
|
55
|
+
[Transactional browser operations](references/2026-08-16-transactional-operations.md)
|
|
56
|
+
for request schemas, concurrency, recovery, privacy, transport bounds, and the
|
|
57
|
+
stricter transactional artifact-provider capability matrix.
|
|
58
|
+
|
|
59
|
+
If the browser host lacks process identity, start `codex-chatgpt-control-journal`
|
|
60
|
+
in an ordinary Node terminal with `--state-root /absolute/private/state` and
|
|
61
|
+
`--directory /absolute/private/new-session`. Then configure
|
|
62
|
+
`operations: { journalService: { descriptorPath: "/absolute/private/new-session/connection.json" } }`
|
|
63
|
+
on the browser client. The explicit private-file connection keeps browser
|
|
64
|
+
control in the active host and durable journal authority in the Node process.
|
|
65
|
+
Keep the descriptor secret and reuse the same operation identity after any
|
|
66
|
+
uncertain write. See [the journal service runbook](references/2026-09-06-journal-service.md)
|
|
67
|
+
for startup, recovery and qualification. Without a configured service, an
|
|
68
|
+
unsupported local journal returns `journal_runtime_unavailable` before browser
|
|
69
|
+
work.
|
|
70
|
+
|
|
71
|
+
The private-file journal service supports macOS/Linux. On Windows it returns
|
|
72
|
+
`journal_rpc_unsupported_platform` before filesystem access; the existing local
|
|
73
|
+
Node journal path is unchanged.
|
|
74
|
+
|
|
32
75
|
Inspect the visible surface and apply verified configuration:
|
|
33
76
|
|
|
34
77
|
```ts
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
{
|
|
2
|
+
"backendSessionId": "fixture-backend-session",
|
|
3
|
+
"buildDigest": "unknown",
|
|
4
|
+
"cancellation": {
|
|
5
|
+
"requests": false,
|
|
6
|
+
"streams": false,
|
|
7
|
+
"supported": false
|
|
8
|
+
},
|
|
2
9
|
"commands": [
|
|
3
10
|
"backend.version",
|
|
4
11
|
"backend.health",
|
|
5
12
|
"backend.capabilities",
|
|
13
|
+
"backend.hello",
|
|
6
14
|
"runner.run",
|
|
7
15
|
"runner.plan",
|
|
8
16
|
"runner.stream",
|
|
@@ -58,15 +66,46 @@
|
|
|
58
66
|
"modes.set",
|
|
59
67
|
"modes.get",
|
|
60
68
|
"tools.select",
|
|
61
|
-
"response.copy"
|
|
69
|
+
"response.copy",
|
|
70
|
+
"operations.submit",
|
|
71
|
+
"operations.collect",
|
|
72
|
+
"operations.inspect",
|
|
73
|
+
"operations.control"
|
|
62
74
|
],
|
|
75
|
+
"multiplexing": {
|
|
76
|
+
"streams": true,
|
|
77
|
+
"unary": true
|
|
78
|
+
},
|
|
79
|
+
"packageName": "codex-chatgpt-control",
|
|
80
|
+
"packageVersion": "unknown",
|
|
63
81
|
"protocolVersion": "chatgpt.browser_control.backend_request.v1",
|
|
82
|
+
"requestIds": {
|
|
83
|
+
"required": true,
|
|
84
|
+
"scope": "connection"
|
|
85
|
+
},
|
|
86
|
+
"runtime": "node",
|
|
87
|
+
"runtimeVersion": "fixture-runtime",
|
|
64
88
|
"streaming": {
|
|
65
89
|
"modes": [
|
|
66
90
|
"ndjson"
|
|
67
91
|
],
|
|
68
92
|
"tokenDeltas": false
|
|
69
93
|
},
|
|
94
|
+
"supportedProtocolVersions": [
|
|
95
|
+
"chatgpt.browser_control.backend_request.v1"
|
|
96
|
+
],
|
|
97
|
+
"tabs": {
|
|
98
|
+
"authoritativeClaim": false,
|
|
99
|
+
"concurrent": false,
|
|
100
|
+
"concurrentTabs": false,
|
|
101
|
+
"coordination": false,
|
|
102
|
+
"coordinationScope": "none",
|
|
103
|
+
"fencing": false,
|
|
104
|
+
"stableBrowserIdentity": false,
|
|
105
|
+
"stableIdentity": false,
|
|
106
|
+
"stableProviderIdentity": false,
|
|
107
|
+
"stableTabIdentity": false
|
|
108
|
+
},
|
|
70
109
|
"transports": [
|
|
71
110
|
"stdio"
|
|
72
111
|
]
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "chatgpt.browser_control.backend_compatibility.v1",
|
|
3
|
+
"status": "warning",
|
|
4
|
+
"mode": "multiplexed",
|
|
5
|
+
"protocolVersion": "chatgpt.browser_control.backend_request.v1",
|
|
6
|
+
"backendSessionId": "fixture-backend-session",
|
|
7
|
+
"packageName": "codex-chatgpt-control",
|
|
8
|
+
"packageVersion": "0.5.1-alpha.2",
|
|
9
|
+
"runtime": "node",
|
|
10
|
+
"runtimeVersion": "v22.14.0",
|
|
11
|
+
"buildDigest": "sha256:backend-build",
|
|
12
|
+
"warnings": [
|
|
13
|
+
{
|
|
14
|
+
"code": "build_digest_mismatch",
|
|
15
|
+
"field": "buildDigest",
|
|
16
|
+
"expected": "sha256:expected-build",
|
|
17
|
+
"received": "sha256:backend-build",
|
|
18
|
+
"message": "Backend build digest differs from the expected runtime (sha256:expected-build versus sha256:backend-build)."
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|
|
@@ -2,9 +2,14 @@
|
|
|
2
2
|
"ok": true,
|
|
3
3
|
"requestId": "req_backend_version",
|
|
4
4
|
"result": {
|
|
5
|
+
"backendSessionId": "fixture-backend-session",
|
|
6
|
+
"buildDigest": "unknown",
|
|
5
7
|
"name": "codex-chatgpt-control-backend",
|
|
8
|
+
"packageName": "codex-chatgpt-control",
|
|
9
|
+
"packageVersion": "unknown",
|
|
6
10
|
"protocolVersion": "chatgpt.browser_control.backend_request.v1",
|
|
7
|
-
"runtime": "node"
|
|
11
|
+
"runtime": "node",
|
|
12
|
+
"runtimeVersion": "fixture-runtime"
|
|
8
13
|
},
|
|
9
14
|
"schemaVersion": "chatgpt.browser_control.backend_response.v1"
|
|
10
15
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"result": {
|
|
3
|
+
"blocker": {
|
|
4
|
+
"code": "download_blocked_by_browser",
|
|
5
|
+
"kind": "download_unavailable",
|
|
6
|
+
"message": "Chrome displayed ERR_BLOCKED_BY_CLIENT during the download. Inspect the existing download and Chrome restrictions before retrying; completion is unverified.",
|
|
7
|
+
"resumable": false
|
|
8
|
+
},
|
|
9
|
+
"context": {
|
|
10
|
+
"timestamp": "2026-06-06T00:00:00.000Z"
|
|
11
|
+
},
|
|
12
|
+
"error": {
|
|
13
|
+
"message": "Chrome displayed ERR_BLOCKED_BY_CLIENT during the download. Inspect the existing download and Chrome restrictions before retrying; completion is unverified.",
|
|
14
|
+
"name": "DownloadBrowserBlockedError",
|
|
15
|
+
"recoverable": false
|
|
16
|
+
},
|
|
17
|
+
"ok": false,
|
|
18
|
+
"status": "blocked",
|
|
19
|
+
"warnings": []
|
|
20
|
+
},
|
|
21
|
+
"schemaVersion": "chatgpt.browser_control.command_result.v1"
|
|
22
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"result": {
|
|
3
|
+
"blocker": {
|
|
4
|
+
"code": "download_receipt_failed",
|
|
5
|
+
"kind": "download_unavailable",
|
|
6
|
+
"message": "The browser did not provide a verified download receipt. Inspect the existing download before retrying; completion is unverified.",
|
|
7
|
+
"resumable": false
|
|
8
|
+
},
|
|
9
|
+
"context": {
|
|
10
|
+
"timestamp": "2026-06-06T00:00:00.000Z"
|
|
11
|
+
},
|
|
12
|
+
"error": {
|
|
13
|
+
"message": "The browser did not provide a verified download receipt. Inspect the existing download before retrying; completion is unverified.",
|
|
14
|
+
"name": "DownloadReceiptFailedError",
|
|
15
|
+
"recoverable": false
|
|
16
|
+
},
|
|
17
|
+
"ok": false,
|
|
18
|
+
"status": "blocked",
|
|
19
|
+
"warnings": []
|
|
20
|
+
},
|
|
21
|
+
"schemaVersion": "chatgpt.browser_control.command_result.v1"
|
|
22
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"result": {
|
|
3
|
+
"blocker": {
|
|
4
|
+
"code": "download_receipt_timeout",
|
|
5
|
+
"kind": "download_unavailable",
|
|
6
|
+
"message": "Download event receipt did not complete before the deadline. Completion is unverified; inspect the existing download before retrying.",
|
|
7
|
+
"resumable": false
|
|
8
|
+
},
|
|
9
|
+
"context": {
|
|
10
|
+
"timestamp": "2026-06-06T00:00:00.000Z"
|
|
11
|
+
},
|
|
12
|
+
"error": {
|
|
13
|
+
"message": "Download event receipt did not complete before the deadline. Completion is unverified; inspect the existing download before retrying.",
|
|
14
|
+
"name": "DownloadReceiptTimeoutError",
|
|
15
|
+
"recoverable": false
|
|
16
|
+
},
|
|
17
|
+
"ok": false,
|
|
18
|
+
"status": "blocked",
|
|
19
|
+
"warnings": []
|
|
20
|
+
},
|
|
21
|
+
"schemaVersion": "chatgpt.browser_control.command_result.v1"
|
|
22
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"result": {
|
|
3
|
+
"blocker": {
|
|
4
|
+
"code": "journal_rpc_outcome_indeterminate",
|
|
5
|
+
"kind": "unknown",
|
|
6
|
+
"message": "The journal service connection ended without confirming a durable write. Preserve the operation identity and reconcile its state before any further browser action.",
|
|
7
|
+
"remediation": [
|
|
8
|
+
{
|
|
9
|
+
"instruction": "Restore the private journal-service connection, then inspect or reconcile the same operation identity. Never create a new operation ID to retry an uncertain Send.",
|
|
10
|
+
"label": "Reconnect the same journal",
|
|
11
|
+
"userActionRequired": false
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"resumable": false
|
|
15
|
+
},
|
|
16
|
+
"context": {
|
|
17
|
+
"timestamp": "2026-06-06T00:00:00.000Z"
|
|
18
|
+
},
|
|
19
|
+
"data": {
|
|
20
|
+
"operationId": "123e4567-e89b-42d3-a456-426614174000"
|
|
21
|
+
},
|
|
22
|
+
"error": {
|
|
23
|
+
"message": "The journal service connection ended without confirming a durable write. Preserve the operation identity and reconcile its state before any further browser action.",
|
|
24
|
+
"name": "OperationError",
|
|
25
|
+
"recoverable": false
|
|
26
|
+
},
|
|
27
|
+
"ok": false,
|
|
28
|
+
"status": "partial",
|
|
29
|
+
"warnings": []
|
|
30
|
+
},
|
|
31
|
+
"schemaVersion": "chatgpt.browser_control.command_result.v1"
|
|
32
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"result": {
|
|
3
|
+
"blocker": {
|
|
4
|
+
"code": "journal_rpc_unsupported_platform",
|
|
5
|
+
"kind": "unknown",
|
|
6
|
+
"message": "The private-file journal service requires POSIX file ownership and permissions and is unavailable on Windows.",
|
|
7
|
+
"remediation": [
|
|
8
|
+
{
|
|
9
|
+
"instruction": "On Windows, use the local journal in an ordinary Node browser host without operations.journalService. The private-file journal service requires a POSIX host. Preserve any existing operation identity.",
|
|
10
|
+
"label": "Use a supported journal host",
|
|
11
|
+
"userActionRequired": false
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"resumable": false
|
|
15
|
+
},
|
|
16
|
+
"context": {
|
|
17
|
+
"timestamp": "2026-06-06T00:00:00.000Z"
|
|
18
|
+
},
|
|
19
|
+
"data": {
|
|
20
|
+
"operationId": "123e4567-e89b-42d3-a456-426614174000"
|
|
21
|
+
},
|
|
22
|
+
"error": {
|
|
23
|
+
"message": "The private-file journal service requires POSIX file ownership and permissions and is unavailable on Windows.",
|
|
24
|
+
"name": "OperationError",
|
|
25
|
+
"recoverable": false
|
|
26
|
+
},
|
|
27
|
+
"ok": false,
|
|
28
|
+
"status": "blocked",
|
|
29
|
+
"warnings": []
|
|
30
|
+
},
|
|
31
|
+
"schemaVersion": "chatgpt.browser_control.command_result.v1"
|
|
32
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"result": {
|
|
3
|
+
"blocker": {
|
|
4
|
+
"code": "journal_runtime_unavailable",
|
|
5
|
+
"kind": "unknown",
|
|
6
|
+
"message": "Transactional operations require a Node host with process identity, file ownership, and process liveness APIs. This host cannot safely open the operation journal.",
|
|
7
|
+
"remediation": [
|
|
8
|
+
{
|
|
9
|
+
"instruction": "Start the packaged journal service in a supported Node host and configure operations.journalService.descriptorPath in the browser client.",
|
|
10
|
+
"label": "Use a supported transactional host",
|
|
11
|
+
"userActionRequired": false
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"resumable": false
|
|
15
|
+
},
|
|
16
|
+
"context": {
|
|
17
|
+
"timestamp": "2026-06-06T00:00:00.000Z"
|
|
18
|
+
},
|
|
19
|
+
"data": {
|
|
20
|
+
"operationId": "123e4567-e89b-42d3-a456-426614174000"
|
|
21
|
+
},
|
|
22
|
+
"error": {
|
|
23
|
+
"message": "Transactional operations require a Node host with process identity, file ownership, and process liveness APIs. This host cannot safely open the operation journal.",
|
|
24
|
+
"name": "OperationError",
|
|
25
|
+
"recoverable": false
|
|
26
|
+
},
|
|
27
|
+
"ok": false,
|
|
28
|
+
"status": "blocked",
|
|
29
|
+
"warnings": []
|
|
30
|
+
},
|
|
31
|
+
"schemaVersion": "chatgpt.browser_control.command_result.v1"
|
|
32
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "chatgpt.browser_control.operation_event.v1",
|
|
3
|
+
"revision": 5,
|
|
4
|
+
"previousEventDigest": "hmac-sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
|
5
|
+
"eventDigest": "hmac-sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
|
6
|
+
"event": {
|
|
7
|
+
"type": "action_prepared",
|
|
8
|
+
"action": {
|
|
9
|
+
"actionId": "33333333-3333-4333-8333-333333333333",
|
|
10
|
+
"kind": "send",
|
|
11
|
+
"repeatPolicy": "observe_only_after_intent",
|
|
12
|
+
"requestDigest": "hmac-sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
13
|
+
"targetDigest": "hmac-sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
|
14
|
+
},
|
|
15
|
+
"intentAt": "2026-08-16T00:00:01.000Z",
|
|
16
|
+
"baseline": {
|
|
17
|
+
"schemaVersion": "chatgpt.browser_control.operation_ownership_baseline.v1",
|
|
18
|
+
"operationId": "11111111-1111-4111-8111-111111111111",
|
|
19
|
+
"requestDigest": "hmac-sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
20
|
+
"targetBindingDigest": "hmac-sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
|
21
|
+
"actionId": "33333333-3333-4333-8333-333333333333",
|
|
22
|
+
"baseline": {
|
|
23
|
+
"schemaVersion": "chatgpt.browser_control.turn_ownership.v1",
|
|
24
|
+
"snapshotDigest": "hmac-sha256:1212121212121212121212121212121212121212121212121212121212121212",
|
|
25
|
+
"target": {
|
|
26
|
+
"provider": { "status": "available", "value": "chrome" },
|
|
27
|
+
"browser": { "status": "available", "value": "browser-1" },
|
|
28
|
+
"tab": { "status": "available", "value": "tab-1" },
|
|
29
|
+
"thread": { "status": "available", "value": "conversation-1" },
|
|
30
|
+
"conversation": { "status": "available", "value": "conversation-1" },
|
|
31
|
+
"canonicalThreadUrl": { "status": "available", "value": "https://chatgpt.com/c/sanitized" },
|
|
32
|
+
"authoritativeTabClaim": { "status": "unavailable", "reason": "not_exposed" },
|
|
33
|
+
"coordinationScope": "process"
|
|
34
|
+
},
|
|
35
|
+
"userTurns": [],
|
|
36
|
+
"assistantTurns": [],
|
|
37
|
+
"completeness": "complete"
|
|
38
|
+
},
|
|
39
|
+
"observedAt": "2026-08-16T00:00:01.000Z"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"actionId": "33333333-3333-4333-8333-333333333333",
|
|
3
|
+
"kind": "file_handoff",
|
|
4
|
+
"repeatPolicy": "observe_only_after_intent",
|
|
5
|
+
"requestDigest": "hmac-sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
6
|
+
"targetDigest": "hmac-sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
|
7
|
+
"intentRevision": 4,
|
|
8
|
+
"intentAt": "2026-08-16T00:00:01.000Z",
|
|
9
|
+
"outcome": "satisfied",
|
|
10
|
+
"receiptRevision": 5,
|
|
11
|
+
"receiptAt": "2026-08-16T00:00:02.000Z",
|
|
12
|
+
"evidenceDigest": "hmac-sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
|
13
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "chatgpt.browser_control.operation_artifact_receipt.v1",
|
|
3
|
+
"operationId": "11111111-1111-4111-8111-111111111111",
|
|
4
|
+
"artifactKey": "artifact-0",
|
|
5
|
+
"assistantTurnId": "assistant-turn-1",
|
|
6
|
+
"sourceIdentityDigest": "hmac-sha256:abababababababababababababababababababababababababababababababab",
|
|
7
|
+
"kind": "file",
|
|
8
|
+
"ordinal": 0,
|
|
9
|
+
"outputKey": "operation-11111111-result.bin",
|
|
10
|
+
"mimeType": "application/octet-stream",
|
|
11
|
+
"bytes": 32,
|
|
12
|
+
"sha256": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
13
|
+
"status": "transferred"
|
|
14
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "chatgpt.browser_control.operation_event.v1",
|
|
3
|
+
"revision": 5,
|
|
4
|
+
"previousEventDigest": "hmac-sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
|
5
|
+
"eventDigest": "hmac-sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
|
6
|
+
"event": {
|
|
7
|
+
"type": "artifact_transfer_intent",
|
|
8
|
+
"intent": {
|
|
9
|
+
"schemaVersion": "chatgpt.browser_control.artifact_transfer_intent.v1",
|
|
10
|
+
"operationId": "11111111-1111-4111-8111-111111111111",
|
|
11
|
+
"requestDigest": "hmac-sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
12
|
+
"targetBindingDigest": "hmac-sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
|
13
|
+
"assistantTurnId": "assistant-turn-1",
|
|
14
|
+
"sourceIdentityDigest": "hmac-sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
|
|
15
|
+
"kind": "file",
|
|
16
|
+
"ordinal": 0,
|
|
17
|
+
"transferActionId": "66666666-6666-4666-8666-666666666666",
|
|
18
|
+
"destinationIdentityDigest": "hmac-sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
19
|
+
"actionKind": "local_output_commit",
|
|
20
|
+
"repeatPolicy": "reconcile_local_effect",
|
|
21
|
+
"intentAt": "2026-08-16T00:00:03.000Z"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "chatgpt.browser_control.operation_event.v1",
|
|
3
|
+
"revision": 6,
|
|
4
|
+
"previousEventDigest": "hmac-sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
|
5
|
+
"eventDigest": "hmac-sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
|
6
|
+
"event": {
|
|
7
|
+
"type": "artifact_transfer_receipt",
|
|
8
|
+
"receipt": {
|
|
9
|
+
"schemaVersion": "chatgpt.browser_control.artifact_transfer_receipt.v1",
|
|
10
|
+
"operationId": "11111111-1111-4111-8111-111111111111",
|
|
11
|
+
"requestDigest": "hmac-sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
12
|
+
"targetBindingDigest": "hmac-sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
|
13
|
+
"assistantTurnId": "assistant-turn-1",
|
|
14
|
+
"sourceIdentityDigest": "hmac-sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
|
|
15
|
+
"kind": "file",
|
|
16
|
+
"ordinal": 0,
|
|
17
|
+
"transferActionId": "66666666-6666-4666-8666-666666666666",
|
|
18
|
+
"destinationIdentityDigest": "hmac-sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
19
|
+
"outputKey": "artifact-transfer-1",
|
|
20
|
+
"bytes": 12,
|
|
21
|
+
"sha256": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
|
22
|
+
"status": "transferred",
|
|
23
|
+
"observedAt": "2026-08-16T00:00:04.000Z"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|