codex-chatgpt-control 0.5.1-alpha.3 → 0.5.1-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/README.md +16 -0
  3. package/contracts/v1/fixtures/doctor-scenario-preflight.json +1 -1
  4. package/contracts/v1/fixtures/download-blocked-by-browser.json +22 -0
  5. package/contracts/v1/fixtures/download-receipt-failed.json +22 -0
  6. package/contracts/v1/fixtures/download-receipt-timeout.json +22 -0
  7. package/contracts/v1/fixtures/journal-rpc-indeterminate.json +32 -0
  8. package/contracts/v1/fixtures/journal-rpc-unsupported-platform.json +32 -0
  9. package/contracts/v1/fixtures/journal-runtime-unavailable.json +32 -0
  10. package/contracts/v1/manifest.json +30 -0
  11. package/contracts/v1/parity-suite.json +10 -7
  12. package/dist/codex-chatgpt-control-backend.mjs +5167 -3310
  13. package/dist/codex-chatgpt-control-journal.mjs +5547 -0
  14. package/dist/codex-chatgpt-control-live-smoke.bundle.mjs +51826 -0
  15. package/dist/codex-chatgpt-control-release-canary.bundle.mjs +52253 -0
  16. package/dist/codex-chatgpt-control.bundle.mjs +3755 -1582
  17. package/dist/src/browser/chatgpt-url.d.ts +2 -0
  18. package/dist/src/browser/chatgpt-url.js +9 -0
  19. package/dist/src/browser/downloads.d.ts +15 -1
  20. package/dist/src/browser/downloads.js +150 -28
  21. package/dist/src/browser/page-state.js +6 -0
  22. package/dist/src/client.d.ts +5 -0
  23. package/dist/src/client.js +69 -12
  24. package/dist/src/commands/artifacts.js +6 -4
  25. package/dist/src/commands/chat-popover.d.ts +37 -0
  26. package/dist/src/commands/chat-popover.js +559 -0
  27. package/dist/src/commands/configuration.d.ts +5 -0
  28. package/dist/src/commands/configuration.js +197 -23
  29. package/dist/src/commands/context.js +10 -3
  30. package/dist/src/commands/doctor.js +1 -1
  31. package/dist/src/commands/experience.d.ts +7 -0
  32. package/dist/src/commands/experience.js +78 -21
  33. package/dist/src/commands/files.js +10 -6
  34. package/dist/src/commands/messages.js +49 -3
  35. package/dist/src/commands/modes.js +36 -4
  36. package/dist/src/commands/power-discovery.js +52 -10
  37. package/dist/src/commands/session.js +12 -4
  38. package/dist/src/dom/composer-text.d.ts +6 -0
  39. package/dist/src/dom/composer-text.js +85 -0
  40. package/dist/src/dom/locale/am.d.ts +2 -0
  41. package/dist/src/dom/locale/am.js +7 -5
  42. package/dist/src/dom/locale/ar.d.ts +2 -0
  43. package/dist/src/dom/locale/ar.js +4 -2
  44. package/dist/src/dom/locale/bg.d.ts +2 -0
  45. package/dist/src/dom/locale/bg.js +4 -2
  46. package/dist/src/dom/locale/bn.d.ts +2 -0
  47. package/dist/src/dom/locale/bn.js +4 -2
  48. package/dist/src/dom/locale/bs.d.ts +3 -0
  49. package/dist/src/dom/locale/bs.js +10 -7
  50. package/dist/src/dom/locale/ca.d.ts +3 -0
  51. package/dist/src/dom/locale/ca.js +4 -1
  52. package/dist/src/dom/locale/cs.d.ts +3 -0
  53. package/dist/src/dom/locale/cs.js +7 -4
  54. package/dist/src/dom/locale/da.d.ts +3 -0
  55. package/dist/src/dom/locale/da.js +7 -4
  56. package/dist/src/dom/locale/de.d.ts +2 -0
  57. package/dist/src/dom/locale/de.js +4 -2
  58. package/dist/src/dom/locale/el.d.ts +2 -0
  59. package/dist/src/dom/locale/el.js +7 -5
  60. package/dist/src/dom/locale/en.d.ts +1 -0
  61. package/dist/src/dom/locale/en.js +1 -0
  62. package/dist/src/dom/locale/es-419.d.ts +2 -0
  63. package/dist/src/dom/locale/es-419.js +4 -2
  64. package/dist/src/dom/locale/es-ES.d.ts +2 -0
  65. package/dist/src/dom/locale/es-ES.js +4 -2
  66. package/dist/src/dom/locale/et.d.ts +2 -0
  67. package/dist/src/dom/locale/et.js +7 -5
  68. package/dist/src/dom/locale/fa.d.ts +2 -0
  69. package/dist/src/dom/locale/fa.js +4 -2
  70. package/dist/src/dom/locale/fi.d.ts +2 -0
  71. package/dist/src/dom/locale/fi.js +4 -2
  72. package/dist/src/dom/locale/fr-CA.d.ts +6 -0
  73. package/dist/src/dom/locale/fr-CA.js +7 -1
  74. package/dist/src/dom/locale/fr-FR.d.ts +2 -0
  75. package/dist/src/dom/locale/fr-FR.js +9 -7
  76. package/dist/src/dom/locale/gu.d.ts +2 -0
  77. package/dist/src/dom/locale/gu.js +7 -5
  78. package/dist/src/dom/locale/hi.d.ts +2 -0
  79. package/dist/src/dom/locale/hi.js +9 -7
  80. package/dist/src/dom/locale/hr.d.ts +3 -0
  81. package/dist/src/dom/locale/hr.js +4 -1
  82. package/dist/src/dom/locale/hu.d.ts +2 -0
  83. package/dist/src/dom/locale/hu.js +4 -2
  84. package/dist/src/dom/locale/hy.d.ts +2 -0
  85. package/dist/src/dom/locale/hy.js +4 -2
  86. package/dist/src/dom/locale/id.d.ts +3 -0
  87. package/dist/src/dom/locale/id.js +4 -1
  88. package/dist/src/dom/locale/index.d.ts +11 -0
  89. package/dist/src/dom/locale/index.js +19 -0
  90. package/dist/src/dom/locale/is.d.ts +2 -0
  91. package/dist/src/dom/locale/is.js +4 -2
  92. package/dist/src/dom/locale/it.d.ts +2 -0
  93. package/dist/src/dom/locale/it.js +7 -5
  94. package/dist/src/dom/locale/ja.d.ts +2 -0
  95. package/dist/src/dom/locale/ja.js +8 -6
  96. package/dist/src/dom/locale/ka.d.ts +2 -0
  97. package/dist/src/dom/locale/ka.js +4 -2
  98. package/dist/src/dom/locale/kk.d.ts +2 -0
  99. package/dist/src/dom/locale/kk.js +8 -6
  100. package/dist/src/dom/locale/kn.d.ts +3 -0
  101. package/dist/src/dom/locale/kn.js +8 -5
  102. package/dist/src/dom/locale/ko.d.ts +2 -0
  103. package/dist/src/dom/locale/ko.js +4 -2
  104. package/dist/src/dom/locale/lt.d.ts +2 -0
  105. package/dist/src/dom/locale/lt.js +5 -3
  106. package/dist/src/dom/locale/lv.d.ts +2 -0
  107. package/dist/src/dom/locale/lv.js +4 -2
  108. package/dist/src/dom/locale/mk.d.ts +2 -0
  109. package/dist/src/dom/locale/mk.js +4 -2
  110. package/dist/src/dom/locale/ml.d.ts +2 -0
  111. package/dist/src/dom/locale/ml.js +7 -5
  112. package/dist/src/dom/locale/mn.d.ts +2 -0
  113. package/dist/src/dom/locale/mn.js +4 -2
  114. package/dist/src/dom/locale/mr.d.ts +2 -0
  115. package/dist/src/dom/locale/mr.js +7 -5
  116. package/dist/src/dom/locale/ms.d.ts +3 -0
  117. package/dist/src/dom/locale/ms.js +4 -1
  118. package/dist/src/dom/locale/my.d.ts +2 -0
  119. package/dist/src/dom/locale/my.js +4 -2
  120. package/dist/src/dom/locale/nb.d.ts +2 -0
  121. package/dist/src/dom/locale/nb.js +4 -2
  122. package/dist/src/dom/locale/nl.d.ts +3 -0
  123. package/dist/src/dom/locale/nl.js +4 -1
  124. package/dist/src/dom/locale/pa.d.ts +2 -0
  125. package/dist/src/dom/locale/pa.js +4 -2
  126. package/dist/src/dom/locale/pl.d.ts +3 -0
  127. package/dist/src/dom/locale/pl.js +4 -1
  128. package/dist/src/dom/locale/pt-BR.d.ts +2 -0
  129. package/dist/src/dom/locale/pt-BR.js +11 -9
  130. package/dist/src/dom/locale/pt-PT.d.ts +2 -0
  131. package/dist/src/dom/locale/pt-PT.js +7 -5
  132. package/dist/src/dom/locale/ro.d.ts +3 -0
  133. package/dist/src/dom/locale/ro.js +4 -1
  134. package/dist/src/dom/locale/ru.d.ts +2 -0
  135. package/dist/src/dom/locale/ru.js +4 -2
  136. package/dist/src/dom/locale/sk.d.ts +3 -0
  137. package/dist/src/dom/locale/sk.js +4 -1
  138. package/dist/src/dom/locale/sl.d.ts +3 -0
  139. package/dist/src/dom/locale/sl.js +4 -1
  140. package/dist/src/dom/locale/so.d.ts +2 -0
  141. package/dist/src/dom/locale/so.js +4 -2
  142. package/dist/src/dom/locale/sq.d.ts +2 -0
  143. package/dist/src/dom/locale/sq.js +4 -2
  144. package/dist/src/dom/locale/sr.d.ts +2 -0
  145. package/dist/src/dom/locale/sr.js +4 -2
  146. package/dist/src/dom/locale/sv.d.ts +2 -0
  147. package/dist/src/dom/locale/sv.js +4 -2
  148. package/dist/src/dom/locale/sw.d.ts +2 -0
  149. package/dist/src/dom/locale/sw.js +5 -3
  150. package/dist/src/dom/locale/ta.d.ts +2 -0
  151. package/dist/src/dom/locale/ta.js +8 -6
  152. package/dist/src/dom/locale/te.d.ts +2 -0
  153. package/dist/src/dom/locale/te.js +7 -5
  154. package/dist/src/dom/locale/th.d.ts +2 -0
  155. package/dist/src/dom/locale/th.js +4 -2
  156. package/dist/src/dom/locale/tl.d.ts +3 -0
  157. package/dist/src/dom/locale/tl.js +4 -1
  158. package/dist/src/dom/locale/tr.d.ts +3 -0
  159. package/dist/src/dom/locale/tr.js +4 -1
  160. package/dist/src/dom/locale/types.d.ts +6 -0
  161. package/dist/src/dom/locale/uk.d.ts +2 -0
  162. package/dist/src/dom/locale/uk.js +7 -5
  163. package/dist/src/dom/locale/ur.d.ts +2 -0
  164. package/dist/src/dom/locale/ur.js +4 -2
  165. package/dist/src/dom/locale/vi.d.ts +2 -0
  166. package/dist/src/dom/locale/vi.js +4 -2
  167. package/dist/src/dom/locale/zh-HK.d.ts +2 -0
  168. package/dist/src/dom/locale/zh-HK.js +4 -2
  169. package/dist/src/dom/locale/zh-Hans.d.ts +2 -0
  170. package/dist/src/dom/locale/zh-Hans.js +7 -5
  171. package/dist/src/dom/locale/zh-TW.d.ts +2 -0
  172. package/dist/src/dom/locale/zh-TW.js +6 -4
  173. package/dist/src/dom/locale-labels.d.ts +1 -1
  174. package/dist/src/dom/locale-labels.js +1 -1
  175. package/dist/src/dom/selectors.js +2 -5
  176. package/dist/src/operations/artifact-transfer.d.ts +1 -1
  177. package/dist/src/operations/artifact-transfer.js +3 -3
  178. package/dist/src/operations/browser-adapter.d.ts +10 -4
  179. package/dist/src/operations/browser-adapter.js +95 -15
  180. package/dist/src/operations/browser-observation.d.ts +1 -1
  181. package/dist/src/operations/browser-observation.js +97 -49
  182. package/dist/src/operations/browser-target.d.ts +3 -1
  183. package/dist/src/operations/browser-target.js +49 -7
  184. package/dist/src/operations/chatgpt-runtime.js +85 -3
  185. package/dist/src/operations/client.js +2 -0
  186. package/dist/src/operations/configuration-routing.d.ts +4 -0
  187. package/dist/src/operations/configuration-routing.js +14 -0
  188. package/dist/src/operations/index.d.ts +3 -0
  189. package/dist/src/operations/index.js +3 -0
  190. package/dist/src/operations/journal-authority.d.ts +12 -0
  191. package/dist/src/operations/journal-authority.js +1 -0
  192. package/dist/src/operations/journal-rpc-client.d.ts +12 -0
  193. package/dist/src/operations/journal-rpc-client.js +225 -0
  194. package/dist/src/operations/journal-rpc-protocol.d.ts +32 -0
  195. package/dist/src/operations/journal-rpc-protocol.js +214 -0
  196. package/dist/src/operations/journal-rpc-server.d.ts +15 -0
  197. package/dist/src/operations/journal-rpc-server.js +272 -0
  198. package/dist/src/operations/journal.d.ts +1 -0
  199. package/dist/src/operations/journal.js +28 -2
  200. package/dist/src/operations/production-attachments.d.ts +3 -1
  201. package/dist/src/operations/production-attachments.js +25 -8
  202. package/dist/src/operations/production-chatgpt-artifacts.js +3 -3
  203. package/dist/src/operations/production-chatgpt-attachments.d.ts +10 -1
  204. package/dist/src/operations/production-chatgpt-attachments.js +133 -57
  205. package/dist/src/operations/production-configuration.d.ts +1 -1
  206. package/dist/src/operations/production-configuration.js +205 -24
  207. package/dist/src/operations/production-primitives.js +35 -252
  208. package/dist/src/operations/production-work-steer.js +35 -35
  209. package/dist/src/operations/runtime-adapter.d.ts +8 -0
  210. package/dist/src/operations/runtime-adapter.js +20 -4
  211. package/dist/src/operations/service.d.ts +7 -2
  212. package/dist/src/operations/service.js +80 -59
  213. package/dist/src/operations/transactional-chat-power.d.ts +17 -0
  214. package/dist/src/operations/transactional-chat-power.js +212 -0
  215. package/dist/src/runtime/coordinated-page.d.ts +2 -0
  216. package/dist/src/runtime/coordinated-page.js +23 -6
  217. package/dist/src/safety/blockers.js +9 -2
  218. package/dist/src/scripts/apply-intelligence-locale-captures.js +15 -6
  219. package/dist/src/scripts/capture-intelligence-locales.d.ts +5 -3
  220. package/dist/src/scripts/capture-intelligence-locales.js +185 -2
  221. package/dist/src/scripts/capture-surface-profile.js +7 -2
  222. package/dist/src/scripts/journal-server.d.ts +2 -0
  223. package/dist/src/scripts/journal-server.js +37 -0
  224. package/dist/src/scripts/live-smoke/scenarios.d.ts +17 -3
  225. package/dist/src/scripts/live-smoke/scenarios.js +69 -28
  226. package/dist/src/scripts/live-smoke/transactional.d.ts +17 -0
  227. package/dist/src/scripts/live-smoke/transactional.js +254 -0
  228. package/dist/src/scripts/locale-capture/slider-label.d.ts +1 -0
  229. package/dist/src/scripts/locale-capture/slider-label.js +14 -0
  230. package/dist/src/types.d.ts +2 -0
  231. package/package.json +8 -3
  232. package/references/2026-09-06-journal-service.md +140 -0
  233. package/references/backend-protocol.md +103 -0
  234. package/references/localization.md +15 -0
  235. package/references/python-parity.md +65 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,52 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.5.1-alpha.5
4
+
5
+ - Recognizes project-scoped composers whose accessible name begins with
6
+ `New chat in`, verifies that composer fills reconcile before submission, and
7
+ reads textarea values when content text is empty.
8
+ - Keeps reviewed Power/Advanced locale evidence replays idempotent while
9
+ preserving the Dutch stop-control safety exception and its provenance note;
10
+ the capture tool now handles slider-based simplified Chat/Work popovers,
11
+ restores probed Power values, and respects RTL keyboard direction.
12
+ - Refreshes all 64 advertised non-English locale registries from the visible
13
+ simplified Chat/Work surface and removes locale-specific ordinal metadata
14
+ from captured Power labels before reviewed application.
15
+ - Keeps strict configuration verification stable while Chat exposes a combined
16
+ generation-and-effort opener, Work task controls hydrate, and the independent
17
+ Fast toggle finishes its opening transition.
18
+ - Lets the release canary hand a confirmed submitted generation to its bounded
19
+ exact-filename download waiter instead of failing while the file still renders.
20
+ - Tightens visible 404 blocker matching and updates Vitest past the
21
+ `@vitest/mocker` path-traversal advisory.
22
+
23
+ ## 0.5.1-alpha.4
24
+
25
+ - Detects Chrome's explicit blocked-download error page, avoids alternate
26
+ download attempts, and keeps signed download URLs out of rejected-page results.
27
+ - Requires filename-scoped workbook previews when browser filtering is absent.
28
+ - Repairs Chat detection and configuration when current Power or Advanced
29
+ menus are open, preserving scoped Work evidence and verified effort changes.
30
+ - Recognizes current Work model/Power menus and the independent Fast-mode
31
+ checkbox, with verified selection/restoration and legacy Advanced support.
32
+ - Recovers an unconfirmed Send through a fresh client using the authenticated
33
+ saved tab, baseline, unique turn and matching prompt, without sending again.
34
+ - Adds an explicit authenticated journal service and packaged CLI for browser
35
+ hosts without process identity. Journal files and locks remain owned by real
36
+ Node; browser capabilities remain in the active browser host.
37
+ - Supports the new private-file journal transport on macOS/Linux; Windows
38
+ returns an explicit unsupported-platform error before filesystem access.
39
+ - Preserves multiline composer text, recognizes zero-file composer state,
40
+ and forwards the requested response format during exact-turn collection.
41
+ - Bounds native download completion receipt waits and reports unverified
42
+ completion without repeating the download or switching strategies.
43
+ - Uses one journal-call deadline across queued admission and dispatch and
44
+ bounds concurrent turn evidence requests while preserving digest identities.
45
+ - Adds transactional live qualification with durable Send inspection, guarded
46
+ same-ID recovery, owned receipts and duplicate-submission checks.
47
+ - Preserves journal-unavailable and indeterminate-write results across Node
48
+ and Python through shared fixtures, with bounded transport and private reports.
49
+
3
50
  ## 0.5.1-alpha.3
4
51
 
5
52
  - Adds the transactional `operations.submit`, `collect`, `inspect`, `control`,
package/README.md CHANGED
@@ -56,6 +56,22 @@ is unavailable. See
56
56
  for request schemas, concurrency, recovery, privacy, transport bounds, and the
57
57
  stricter transactional artifact-provider capability matrix.
58
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
+
59
75
  Inspect the visible surface and apply verified configuration:
60
76
 
61
77
  ```ts
@@ -91,7 +91,7 @@
91
91
  "fast"
92
92
  ],
93
93
  "englishCanonicalPresent": true,
94
- "labelCandidateCount": 2439,
94
+ "labelCandidateCount": 2624,
95
95
  "missingConfigurationAxisIds": [],
96
96
  "missingConfigurationOptionIds": [],
97
97
  "missingModeOptionIds": [],
@@ -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
+ }
@@ -56,6 +56,21 @@
56
56
  "file": "doctor-scenario-preflight.json",
57
57
  "schema": "commandResult"
58
58
  },
59
+ {
60
+ "case": "download_blocked_by_browser",
61
+ "file": "download-blocked-by-browser.json",
62
+ "schema": "commandResult"
63
+ },
64
+ {
65
+ "case": "download_receipt_failed",
66
+ "file": "download-receipt-failed.json",
67
+ "schema": "commandResult"
68
+ },
69
+ {
70
+ "case": "download_receipt_timeout",
71
+ "file": "download-receipt-timeout.json",
72
+ "schema": "commandResult"
73
+ },
59
74
  {
60
75
  "case": "existing_tab_diagnostics_blocker",
61
76
  "file": "existing-tab-diagnostics-blocker.json",
@@ -76,6 +91,21 @@
76
91
  "file": "help-root.json",
77
92
  "schema": "backendResponse"
78
93
  },
94
+ {
95
+ "case": "journal_rpc_indeterminate",
96
+ "file": "journal-rpc-indeterminate.json",
97
+ "schema": "commandResult"
98
+ },
99
+ {
100
+ "case": "journal_rpc_unsupported_platform",
101
+ "file": "journal-rpc-unsupported-platform.json",
102
+ "schema": "commandResult"
103
+ },
104
+ {
105
+ "case": "journal_runtime_unavailable",
106
+ "file": "journal-runtime-unavailable.json",
107
+ "schema": "commandResult"
108
+ },
79
109
  {
80
110
  "case": "messages_stop_indeterminate",
81
111
  "file": "messages-stop-indeterminate.json",
@@ -186,6 +186,9 @@
186
186
  "blocker-explanation-profiles.json",
187
187
  "doctor-bridge-upload.json",
188
188
  "doctor-scenario-preflight.json",
189
+ "download-receipt-timeout.json",
190
+ "download-blocked-by-browser.json",
191
+ "download-receipt-failed.json",
189
192
  "existing-tab-diagnostics-blocker.json",
190
193
  "files-preflight-success.json",
191
194
  "project-sources-plan-add.json",
@@ -430,7 +433,7 @@
430
433
  },
431
434
  "ask": {
432
435
  "surface": "workflows-primitives-diagnostics",
433
- "fixtures": ["workflow-ask-success.json", "command-descriptors.json"],
436
+ "fixtures": ["workflow-ask-success.json", "journal-runtime-unavailable.json", "journal-rpc-indeterminate.json", "journal-rpc-unsupported-platform.json", "command-descriptors.json"],
434
437
  "nodeTests": ["tests/unit/client.test.ts", "tests/unit/sequence.test.ts", "tests/unit/backend-conformance.test.ts"],
435
438
  "pythonTests": ["tests/test_workflows.py", "tests/test_async_client.py"],
436
439
  "docs": ["references/backend-protocol.md", "references/python-parity.md", "../../README.md"]
@@ -745,9 +748,9 @@
745
748
  },
746
749
  "artifacts.downloadLatest": {
747
750
  "surface": "workflows-primitives-diagnostics",
748
- "fixtures": ["command-descriptors.json"],
749
- "nodeTests": ["tests/unit/artifacts.test.ts", "tests/unit/files.test.ts"],
750
- "pythonTests": ["tests/test_primitives.py", "tests/test_async_client.py"],
751
+ "fixtures": ["command-descriptors.json", "download-receipt-timeout.json", "download-blocked-by-browser.json", "download-receipt-failed.json"],
752
+ "nodeTests": ["tests/unit/artifacts.test.ts", "tests/unit/files.test.ts", "tests/unit/browser-downloads.test.ts"],
753
+ "pythonTests": ["tests/test_primitives.py", "tests/test_async_client.py", "tests/test_parity_snapshots.py"],
751
754
  "docs": ["references/backend-protocol.md", "references/python-parity.md"]
752
755
  },
753
756
  "files.preflight": {
@@ -766,9 +769,9 @@
766
769
  },
767
770
  "files.downloadLatest": {
768
771
  "surface": "workflows-primitives-diagnostics",
769
- "fixtures": ["command-descriptors.json"],
770
- "nodeTests": ["tests/unit/files.test.ts", "tests/unit/client.test.ts"],
771
- "pythonTests": ["tests/test_primitives.py"],
772
+ "fixtures": ["command-descriptors.json", "download-receipt-timeout.json", "download-blocked-by-browser.json", "download-receipt-failed.json"],
773
+ "nodeTests": ["tests/unit/files.test.ts", "tests/unit/client.test.ts", "tests/unit/browser-downloads.test.ts"],
774
+ "pythonTests": ["tests/test_primitives.py", "tests/test_parity_snapshots.py"],
772
775
  "docs": ["references/backend-protocol.md", "references/troubleshooting.md", "references/python-parity.md"]
773
776
  },
774
777
  "projects.sources.list": {