codex-chatgpt-control 0.1.0-alpha.1 → 0.2.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.
Files changed (242) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +55 -0
  3. package/contracts/v1/fixtures/backend-capabilities.json +7 -0
  4. package/contracts/v1/fixtures/blocker-explanation-profiles.json +114 -0
  5. package/contracts/v1/fixtures/command-descriptors.json +192 -15
  6. package/contracts/v1/fixtures/doctor-bridge-upload.json +8 -0
  7. package/contracts/v1/fixtures/doctor-scenario-preflight.json +108 -0
  8. package/contracts/v1/fixtures/existing-tab-diagnostics-blocker.json +57 -0
  9. package/contracts/v1/fixtures/files-preflight-success.json +32 -0
  10. package/contracts/v1/fixtures/help-root.json +1 -1
  11. package/contracts/v1/fixtures/output-json-parse-success.json +17 -2
  12. package/contracts/v1/fixtures/project-sources-plan-add.json +71 -0
  13. package/contracts/v1/fixtures/read-latest-clipped.json +31 -0
  14. package/contracts/v1/fixtures/reports-create-redacted.json +15 -0
  15. package/contracts/v1/fixtures/responses-basic-success.json +11 -0
  16. package/contracts/v1/fixtures/run-basic-success.json +15 -0
  17. package/contracts/v1/fixtures/run-browser-bridge-blocker.json +2 -2
  18. package/contracts/v1/fixtures/run-timeout-partial.json +2 -2
  19. package/contracts/v1/fixtures/runner-budget-blocker.json +1 -1
  20. package/contracts/v1/fixtures/stream-blocked.ndjson +1 -1
  21. package/contracts/v1/fixtures/stream-submitted-completed.ndjson +1 -1
  22. package/contracts/v1/manifest.json +30 -0
  23. package/contracts/v1/parity-suite.json +72 -6
  24. package/contracts/v1/schemas/backend-request.schema.json +3 -0
  25. package/contracts/v1/schemas/command-result.schema.json +48 -0
  26. package/contracts/v1/schemas/response.schema.json +28 -0
  27. package/contracts/v1/schemas/run-result.schema.json +84 -0
  28. package/contracts/v1/surface-drift-policy.json +210 -0
  29. package/dist/codex-chatgpt-control-backend.mjs +5137 -488
  30. package/dist/codex-chatgpt-control.bundle.mjs +5001 -286
  31. package/dist/src/backend/client.d.ts +6 -1
  32. package/dist/src/backend/client.js +5 -0
  33. package/dist/src/backend/protocol.d.ts +1 -1
  34. package/dist/src/backend/protocol.js +7 -0
  35. package/dist/src/backend/session.js +14 -0
  36. package/dist/src/browser/attach.js +128 -20
  37. package/dist/src/browser/downloads.js +2 -1
  38. package/dist/src/browser/page-state.js +6 -3
  39. package/dist/src/client.d.ts +16 -1
  40. package/dist/src/client.js +86 -7
  41. package/dist/src/commands/artifacts.d.ts +5 -0
  42. package/dist/src/commands/artifacts.js +432 -0
  43. package/dist/src/commands/context.js +5 -2
  44. package/dist/src/commands/doctor.d.ts +10 -2
  45. package/dist/src/commands/doctor.js +242 -14
  46. package/dist/src/commands/files.d.ts +2 -1
  47. package/dist/src/commands/files.js +352 -18
  48. package/dist/src/commands/messages.d.ts +2 -1
  49. package/dist/src/commands/messages.js +232 -40
  50. package/dist/src/commands/modes.js +202 -20
  51. package/dist/src/commands/project-sources.d.ts +10 -0
  52. package/dist/src/commands/project-sources.js +643 -0
  53. package/dist/src/commands/registry.js +76 -14
  54. package/dist/src/commands/reports.d.ts +9 -0
  55. package/dist/src/commands/reports.js +83 -6
  56. package/dist/src/commands/response-actions.js +33 -0
  57. package/dist/src/commands/sequence.js +14 -0
  58. package/dist/src/commands/threads.js +2 -1
  59. package/dist/src/commands/timeouts.d.ts +2 -0
  60. package/dist/src/commands/timeouts.js +18 -0
  61. package/dist/src/diagnostics/blockers.d.ts +54 -0
  62. package/dist/src/diagnostics/blockers.js +299 -0
  63. package/dist/src/dom/artifacts.d.ts +7 -0
  64. package/dist/src/dom/artifacts.js +198 -0
  65. package/dist/src/dom/generation-state.d.ts +8 -0
  66. package/dist/src/dom/generation-state.js +103 -0
  67. package/dist/src/dom/locale/am.d.ts +28 -0
  68. package/dist/src/dom/locale/am.js +28 -0
  69. package/dist/src/dom/locale/ar.d.ts +28 -0
  70. package/dist/src/dom/locale/ar.js +28 -0
  71. package/dist/src/dom/locale/bg.d.ts +28 -0
  72. package/dist/src/dom/locale/bg.js +28 -0
  73. package/dist/src/dom/locale/bn.d.ts +28 -0
  74. package/dist/src/dom/locale/bn.js +28 -0
  75. package/dist/src/dom/locale/bs.d.ts +28 -0
  76. package/dist/src/dom/locale/bs.js +28 -0
  77. package/dist/src/dom/locale/ca.d.ts +28 -0
  78. package/dist/src/dom/locale/ca.js +28 -0
  79. package/dist/src/dom/locale/cs.d.ts +28 -0
  80. package/dist/src/dom/locale/cs.js +28 -0
  81. package/dist/src/dom/locale/da.d.ts +28 -0
  82. package/dist/src/dom/locale/da.js +28 -0
  83. package/dist/src/dom/locale/de.d.ts +30 -0
  84. package/dist/src/dom/locale/de.js +30 -0
  85. package/dist/src/dom/locale/el.d.ts +28 -0
  86. package/dist/src/dom/locale/el.js +28 -0
  87. package/dist/src/dom/locale/en.d.ts +50 -0
  88. package/dist/src/dom/locale/en.js +56 -0
  89. package/dist/src/dom/locale/es-419.d.ts +28 -0
  90. package/dist/src/dom/locale/es-419.js +28 -0
  91. package/dist/src/dom/locale/es-ES.d.ts +28 -0
  92. package/dist/src/dom/locale/es-ES.js +28 -0
  93. package/dist/src/dom/locale/et.d.ts +28 -0
  94. package/dist/src/dom/locale/et.js +28 -0
  95. package/dist/src/dom/locale/fa.d.ts +28 -0
  96. package/dist/src/dom/locale/fa.js +28 -0
  97. package/dist/src/dom/locale/fi.d.ts +28 -0
  98. package/dist/src/dom/locale/fi.js +28 -0
  99. package/dist/src/dom/locale/fr-CA.d.ts +29 -0
  100. package/dist/src/dom/locale/fr-CA.js +29 -0
  101. package/dist/src/dom/locale/fr-FR.d.ts +30 -0
  102. package/dist/src/dom/locale/fr-FR.js +30 -0
  103. package/dist/src/dom/locale/gu.d.ts +28 -0
  104. package/dist/src/dom/locale/gu.js +28 -0
  105. package/dist/src/dom/locale/hi.d.ts +28 -0
  106. package/dist/src/dom/locale/hi.js +28 -0
  107. package/dist/src/dom/locale/hr.d.ts +28 -0
  108. package/dist/src/dom/locale/hr.js +28 -0
  109. package/dist/src/dom/locale/hu.d.ts +28 -0
  110. package/dist/src/dom/locale/hu.js +28 -0
  111. package/dist/src/dom/locale/hy.d.ts +28 -0
  112. package/dist/src/dom/locale/hy.js +28 -0
  113. package/dist/src/dom/locale/id.d.ts +28 -0
  114. package/dist/src/dom/locale/id.js +28 -0
  115. package/dist/src/dom/locale/index.d.ts +79 -0
  116. package/dist/src/dom/locale/index.js +202 -0
  117. package/dist/src/dom/locale/is.d.ts +28 -0
  118. package/dist/src/dom/locale/is.js +28 -0
  119. package/dist/src/dom/locale/it.d.ts +27 -0
  120. package/dist/src/dom/locale/it.js +27 -0
  121. package/dist/src/dom/locale/ja.d.ts +27 -0
  122. package/dist/src/dom/locale/ja.js +27 -0
  123. package/dist/src/dom/locale/ka.d.ts +28 -0
  124. package/dist/src/dom/locale/ka.js +28 -0
  125. package/dist/src/dom/locale/kk.d.ts +28 -0
  126. package/dist/src/dom/locale/kk.js +28 -0
  127. package/dist/src/dom/locale/kn.d.ts +28 -0
  128. package/dist/src/dom/locale/kn.js +28 -0
  129. package/dist/src/dom/locale/ko.d.ts +28 -0
  130. package/dist/src/dom/locale/ko.js +28 -0
  131. package/dist/src/dom/locale/lt.d.ts +28 -0
  132. package/dist/src/dom/locale/lt.js +28 -0
  133. package/dist/src/dom/locale/lv.d.ts +28 -0
  134. package/dist/src/dom/locale/lv.js +28 -0
  135. package/dist/src/dom/locale/mk.d.ts +28 -0
  136. package/dist/src/dom/locale/mk.js +28 -0
  137. package/dist/src/dom/locale/ml.d.ts +28 -0
  138. package/dist/src/dom/locale/ml.js +28 -0
  139. package/dist/src/dom/locale/mn.d.ts +28 -0
  140. package/dist/src/dom/locale/mn.js +28 -0
  141. package/dist/src/dom/locale/mr.d.ts +28 -0
  142. package/dist/src/dom/locale/mr.js +28 -0
  143. package/dist/src/dom/locale/ms.d.ts +28 -0
  144. package/dist/src/dom/locale/ms.js +28 -0
  145. package/dist/src/dom/locale/my.d.ts +28 -0
  146. package/dist/src/dom/locale/my.js +28 -0
  147. package/dist/src/dom/locale/nb.d.ts +28 -0
  148. package/dist/src/dom/locale/nb.js +28 -0
  149. package/dist/src/dom/locale/nl.d.ts +28 -0
  150. package/dist/src/dom/locale/nl.js +28 -0
  151. package/dist/src/dom/locale/pa.d.ts +28 -0
  152. package/dist/src/dom/locale/pa.js +28 -0
  153. package/dist/src/dom/locale/pl.d.ts +28 -0
  154. package/dist/src/dom/locale/pl.js +28 -0
  155. package/dist/src/dom/locale/pt-BR.d.ts +28 -0
  156. package/dist/src/dom/locale/pt-BR.js +28 -0
  157. package/dist/src/dom/locale/pt-PT.d.ts +28 -0
  158. package/dist/src/dom/locale/pt-PT.js +28 -0
  159. package/dist/src/dom/locale/ro.d.ts +28 -0
  160. package/dist/src/dom/locale/ro.js +28 -0
  161. package/dist/src/dom/locale/ru.d.ts +28 -0
  162. package/dist/src/dom/locale/ru.js +28 -0
  163. package/dist/src/dom/locale/sk.d.ts +28 -0
  164. package/dist/src/dom/locale/sk.js +28 -0
  165. package/dist/src/dom/locale/sl.d.ts +28 -0
  166. package/dist/src/dom/locale/sl.js +28 -0
  167. package/dist/src/dom/locale/so.d.ts +28 -0
  168. package/dist/src/dom/locale/so.js +28 -0
  169. package/dist/src/dom/locale/sq.d.ts +28 -0
  170. package/dist/src/dom/locale/sq.js +28 -0
  171. package/dist/src/dom/locale/sr.d.ts +28 -0
  172. package/dist/src/dom/locale/sr.js +28 -0
  173. package/dist/src/dom/locale/sv.d.ts +28 -0
  174. package/dist/src/dom/locale/sv.js +28 -0
  175. package/dist/src/dom/locale/sw.d.ts +28 -0
  176. package/dist/src/dom/locale/sw.js +28 -0
  177. package/dist/src/dom/locale/ta.d.ts +28 -0
  178. package/dist/src/dom/locale/ta.js +28 -0
  179. package/dist/src/dom/locale/te.d.ts +28 -0
  180. package/dist/src/dom/locale/te.js +28 -0
  181. package/dist/src/dom/locale/th.d.ts +28 -0
  182. package/dist/src/dom/locale/th.js +28 -0
  183. package/dist/src/dom/locale/tl.d.ts +28 -0
  184. package/dist/src/dom/locale/tl.js +28 -0
  185. package/dist/src/dom/locale/tr.d.ts +28 -0
  186. package/dist/src/dom/locale/tr.js +28 -0
  187. package/dist/src/dom/locale/types.d.ts +45 -0
  188. package/dist/src/dom/locale/types.js +1 -0
  189. package/dist/src/dom/locale/uk.d.ts +28 -0
  190. package/dist/src/dom/locale/uk.js +28 -0
  191. package/dist/src/dom/locale/ur.d.ts +28 -0
  192. package/dist/src/dom/locale/ur.js +28 -0
  193. package/dist/src/dom/locale/vi.d.ts +28 -0
  194. package/dist/src/dom/locale/vi.js +28 -0
  195. package/dist/src/dom/locale/zh-HK.d.ts +28 -0
  196. package/dist/src/dom/locale/zh-HK.js +28 -0
  197. package/dist/src/dom/locale/zh-Hans.d.ts +28 -0
  198. package/dist/src/dom/locale/zh-Hans.js +28 -0
  199. package/dist/src/dom/locale/zh-TW.d.ts +29 -0
  200. package/dist/src/dom/locale/zh-TW.js +29 -0
  201. package/dist/src/dom/locale-labels.d.ts +26 -0
  202. package/dist/src/dom/locale-labels.js +26 -0
  203. package/dist/src/dom/menus.d.ts +6 -0
  204. package/dist/src/dom/menus.js +34 -8
  205. package/dist/src/dom/message-format.d.ts +2 -1
  206. package/dist/src/dom/message-format.js +67 -10
  207. package/dist/src/dom/messages.d.ts +2 -1
  208. package/dist/src/dom/messages.js +2 -4
  209. package/dist/src/dom/selectors.d.ts +1 -0
  210. package/dist/src/dom/selectors.js +42 -15
  211. package/dist/src/index.d.ts +5 -0
  212. package/dist/src/index.js +5 -0
  213. package/dist/src/platform/local-paths.d.ts +4 -0
  214. package/dist/src/platform/local-paths.js +20 -0
  215. package/dist/src/runner/interruptions.js +15 -4
  216. package/dist/src/runner/responses.js +18 -1
  217. package/dist/src/runner/result.js +15 -0
  218. package/dist/src/runner/resume.js +1 -0
  219. package/dist/src/runner/types.d.ts +3 -0
  220. package/dist/src/safety/risk.d.ts +7 -0
  221. package/dist/src/safety/risk.js +7 -0
  222. package/dist/src/safety/untrusted-output.d.ts +73 -0
  223. package/dist/src/safety/untrusted-output.js +199 -0
  224. package/dist/src/scripts/apply-intelligence-locale-captures.d.ts +1 -0
  225. package/dist/src/scripts/apply-intelligence-locale-captures.js +184 -0
  226. package/dist/src/scripts/capture-intelligence-locales.d.ts +25 -0
  227. package/dist/src/scripts/capture-intelligence-locales.js +669 -0
  228. package/dist/src/scripts/check-surface-drift.d.ts +1 -0
  229. package/dist/src/scripts/check-surface-drift.js +11 -0
  230. package/dist/src/scripts/live-smoke/scenarios.js +84 -0
  231. package/dist/src/scripts/locale-capture/language-coverage.d.ts +10 -0
  232. package/dist/src/scripts/locale-capture/language-coverage.js +39 -0
  233. package/dist/src/testing/surface-drift.d.ts +66 -0
  234. package/dist/src/testing/surface-drift.js +363 -0
  235. package/dist/src/types.d.ts +201 -2
  236. package/package.json +2 -1
  237. package/references/backend-protocol.md +93 -1
  238. package/references/language-coverage.md +142 -0
  239. package/references/localization.md +247 -0
  240. package/references/python-parity.md +63 -1
  241. package/references/safety.md +2 -0
  242. package/references/troubleshooting.md +58 -0
@@ -182,8 +182,14 @@
182
182
  "id": "workflows-primitives-diagnostics",
183
183
  "summary": "High-level workflows, browser primitives, named macros, and doctor diagnostics.",
184
184
  "fixtures": [
185
+ "blocker-explanation-profiles.json",
185
186
  "doctor-bridge-upload.json",
187
+ "doctor-scenario-preflight.json",
188
+ "existing-tab-diagnostics-blocker.json",
189
+ "files-preflight-success.json",
190
+ "project-sources-plan-add.json",
186
191
  "primitive-bootstrap-blocker.json",
192
+ "read-latest-clipped.json",
187
193
  "workflow-ask-success.json"
188
194
  ],
189
195
  "sourceFiles": [
@@ -192,7 +198,10 @@
192
198
  "src/commands/session.ts",
193
199
  "src/commands/threads.ts",
194
200
  "src/commands/messages.ts",
201
+ "src/commands/artifacts.ts",
202
+ "src/dom/artifacts.ts",
195
203
  "src/commands/files.ts",
204
+ "src/commands/project-sources.ts",
196
205
  "src/commands/modes.ts",
197
206
  "src/commands/response-actions.ts",
198
207
  "src/commands/doctor.ts"
@@ -201,7 +210,9 @@
201
210
  "tests/unit/client.test.ts",
202
211
  "tests/unit/sequence.test.ts",
203
212
  "tests/unit/messages.test.ts",
213
+ "tests/unit/artifacts.test.ts",
204
214
  "tests/unit/files.test.ts",
215
+ "tests/unit/project-sources.test.ts",
205
216
  "tests/unit/modes.test.ts",
206
217
  "tests/unit/backend-conformance.test.ts"
207
218
  ],
@@ -374,9 +385,9 @@
374
385
  },
375
386
  "doctor": {
376
387
  "surface": "workflows-primitives-diagnostics",
377
- "fixtures": ["doctor-bridge-upload.json", "command-descriptors.json"],
388
+ "fixtures": ["doctor-bridge-upload.json", "doctor-scenario-preflight.json", "command-descriptors.json"],
378
389
  "nodeTests": ["tests/unit/client.test.ts", "tests/unit/backend-dispatch.test.ts", "tests/unit/backend-conformance.test.ts"],
379
- "pythonTests": ["tests/test_workflows.py", "tests/test_cross_language_conformance.py"],
390
+ "pythonTests": ["tests/test_workflows.py", "tests/test_cross_language_conformance.py", "tests/test_models_complete.py"],
380
391
  "docs": ["references/troubleshooting.md", "references/backend-protocol.md", "references/python-parity.md"]
381
392
  },
382
393
  "createReport": {
@@ -486,10 +497,10 @@
486
497
  },
487
498
  "messages.readLatest": {
488
499
  "surface": "workflows-primitives-diagnostics",
489
- "fixtures": ["command-descriptors.json", "run-basic-success.json"],
500
+ "fixtures": ["command-descriptors.json", "run-basic-success.json", "read-latest-clipped.json"],
490
501
  "nodeTests": ["tests/unit/messages.test.ts", "tests/unit/client.test.ts"],
491
- "pythonTests": ["tests/test_primitives.py"],
492
- "docs": ["references/backend-protocol.md", "references/python-parity.md"]
502
+ "pythonTests": ["tests/test_primitives.py", "tests/test_models_complete.py"],
503
+ "docs": ["references/backend-protocol.md", "references/troubleshooting.md", "references/python-parity.md"]
493
504
  },
494
505
  "messages.waitAndRead": {
495
506
  "surface": "workflows-primitives-diagnostics",
@@ -498,6 +509,34 @@
498
509
  "pythonTests": ["tests/test_primitives.py"],
499
510
  "docs": ["references/backend-protocol.md", "references/python-parity.md"]
500
511
  },
512
+ "artifacts.listLatest": {
513
+ "surface": "workflows-primitives-diagnostics",
514
+ "fixtures": ["command-descriptors.json"],
515
+ "nodeTests": ["tests/unit/artifacts.test.ts", "tests/unit/client.test.ts"],
516
+ "pythonTests": ["tests/test_primitives.py", "tests/test_async_client.py"],
517
+ "docs": ["references/backend-protocol.md", "references/python-parity.md"]
518
+ },
519
+ "artifacts.wait": {
520
+ "surface": "workflows-primitives-diagnostics",
521
+ "fixtures": ["command-descriptors.json"],
522
+ "nodeTests": ["tests/unit/artifacts.test.ts", "tests/unit/sequence.test.ts"],
523
+ "pythonTests": ["tests/test_primitives.py", "tests/test_async_client.py"],
524
+ "docs": ["references/backend-protocol.md", "references/python-parity.md"]
525
+ },
526
+ "artifacts.downloadLatest": {
527
+ "surface": "workflows-primitives-diagnostics",
528
+ "fixtures": ["command-descriptors.json"],
529
+ "nodeTests": ["tests/unit/artifacts.test.ts", "tests/unit/files.test.ts"],
530
+ "pythonTests": ["tests/test_primitives.py", "tests/test_async_client.py"],
531
+ "docs": ["references/backend-protocol.md", "references/python-parity.md"]
532
+ },
533
+ "files.preflight": {
534
+ "surface": "workflows-primitives-diagnostics",
535
+ "fixtures": ["files-preflight-success.json", "doctor-scenario-preflight.json", "command-descriptors.json"],
536
+ "nodeTests": ["tests/unit/files.test.ts", "tests/unit/client.test.ts", "tests/unit/backend-dispatch.test.ts"],
537
+ "pythonTests": ["tests/test_primitives.py", "tests/test_models_complete.py"],
538
+ "docs": ["references/backend-protocol.md", "references/troubleshooting.md", "references/python-parity.md"]
539
+ },
501
540
  "files.attach": {
502
541
  "surface": "workflows-primitives-diagnostics",
503
542
  "fixtures": ["run-file-attach-success.json", "command-descriptors.json"],
@@ -512,6 +551,27 @@
512
551
  "pythonTests": ["tests/test_primitives.py"],
513
552
  "docs": ["references/backend-protocol.md", "references/troubleshooting.md", "references/python-parity.md"]
514
553
  },
554
+ "projects.sources.list": {
555
+ "surface": "workflows-primitives-diagnostics",
556
+ "fixtures": ["command-descriptors.json"],
557
+ "nodeTests": ["tests/unit/project-sources.test.ts", "tests/unit/backend-dispatch.test.ts"],
558
+ "pythonTests": ["tests/test_primitives.py", "tests/test_async_client.py"],
559
+ "docs": ["references/backend-protocol.md", "references/localization.md", "references/python-parity.md"]
560
+ },
561
+ "projects.sources.planAdd": {
562
+ "surface": "workflows-primitives-diagnostics",
563
+ "fixtures": ["project-sources-plan-add.json", "command-descriptors.json"],
564
+ "nodeTests": ["tests/unit/project-sources.test.ts", "tests/unit/backend-dispatch.test.ts"],
565
+ "pythonTests": ["tests/test_primitives.py", "tests/test_async_client.py"],
566
+ "docs": ["references/backend-protocol.md", "references/python-parity.md"]
567
+ },
568
+ "projects.sources.add": {
569
+ "surface": "workflows-primitives-diagnostics",
570
+ "fixtures": ["project-sources-plan-add.json", "command-descriptors.json"],
571
+ "nodeTests": ["tests/unit/project-sources.test.ts", "tests/unit/backend-dispatch.test.ts"],
572
+ "pythonTests": ["tests/test_primitives.py", "tests/test_async_client.py"],
573
+ "docs": ["references/backend-protocol.md", "references/localization.md", "references/python-parity.md"]
574
+ },
515
575
  "modes.set": {
516
576
  "surface": "workflows-primitives-diagnostics",
517
577
  "fixtures": ["command-descriptors.json"],
@@ -571,6 +631,12 @@
571
631
  "command": "npm run contract:validate",
572
632
  "ciRequired": true
573
633
  },
634
+ {
635
+ "id": "node.docs-drift",
636
+ "cwd": "packages/node",
637
+ "command": "npm run docs:drift",
638
+ "ciRequired": true
639
+ },
574
640
  {
575
641
  "id": "node.parity-fixtures",
576
642
  "cwd": "packages/node",
@@ -616,7 +682,7 @@
616
682
  {
617
683
  "id": "python.pyright",
618
684
  "cwd": "packages/python",
619
- "command": "python -m pyright --pythonpath \"$(which python)\" src tests",
685
+ "command": "python -m pyright src tests",
620
686
  "ciRequired": true
621
687
  },
622
688
  {
@@ -44,6 +44,9 @@
44
44
  "messages.wait",
45
45
  "messages.readLatest",
46
46
  "messages.waitAndRead",
47
+ "artifacts.listLatest",
48
+ "artifacts.wait",
49
+ "artifacts.downloadLatest",
47
50
  "files.attach",
48
51
  "files.downloadLatest",
49
52
  "modes.set",
@@ -59,6 +59,13 @@
59
59
  }
60
60
  }
61
61
  },
62
+ "diagnostics": {
63
+ "type": "object",
64
+ "additionalProperties": true,
65
+ "properties": {
66
+ "existingTab": { "$ref": "#/$defs/existingTabDiagnostics" }
67
+ }
68
+ },
62
69
  "resumable": { "type": "boolean" }
63
70
  }
64
71
  },
@@ -94,6 +101,47 @@
94
101
  "$defs": {
95
102
  "commandStatus": {
96
103
  "enum": ["ok", "partial", "timeout", "blocked", "needs_confirmation", "not_found", "unsupported", "error"]
104
+ },
105
+ "existingTabDiagnostics": {
106
+ "type": "object",
107
+ "required": ["requestedTarget", "userOpenTabsAvailable", "chatgptTabCount", "mismatchReason", "candidateTabs"],
108
+ "additionalProperties": true,
109
+ "properties": {
110
+ "requestedTarget": {
111
+ "type": "object",
112
+ "required": ["type"],
113
+ "additionalProperties": true,
114
+ "properties": {
115
+ "type": { "type": "string", "minLength": 1 },
116
+ "host": { "type": "string" },
117
+ "tabId": { "type": "string" },
118
+ "conversationId": { "type": "string" },
119
+ "url": { "type": "string" },
120
+ "title": { "type": "string" },
121
+ "exact": { "type": "boolean" }
122
+ }
123
+ },
124
+ "userOpenTabsAvailable": { "type": "boolean" },
125
+ "chatgptTabCount": { "type": "integer", "minimum": 0 },
126
+ "mismatchReason": { "type": "string", "minLength": 1 },
127
+ "omittedCandidateCount": { "type": "integer", "minimum": 0 },
128
+ "candidateTabs": {
129
+ "type": "array",
130
+ "items": {
131
+ "type": "object",
132
+ "required": ["id"],
133
+ "additionalProperties": true,
134
+ "properties": {
135
+ "id": { "type": "string", "minLength": 1 },
136
+ "url": { "type": "string" },
137
+ "title": { "type": "string" },
138
+ "conversationId": { "type": "string" },
139
+ "lastOpened": { "type": "string" },
140
+ "tabGroup": { "type": "string" }
141
+ }
142
+ }
143
+ }
144
+ }
97
145
  }
98
146
  }
99
147
  }
@@ -26,6 +26,7 @@
26
26
  "additionalProperties": true
27
27
  },
28
28
  "reportPath": { "type": "string" },
29
+ "untrustedOutput": { "$ref": "#/$defs/untrustedOutputReturnEnvelope" },
29
30
  "unsupported": {
30
31
  "type": "array",
31
32
  "items": { "$ref": "#/$defs/unsupportedField" }
@@ -46,6 +47,33 @@
46
47
  "reason": { "type": "string", "minLength": 1 },
47
48
  "alternative": { "type": "string" }
48
49
  }
50
+ },
51
+ "untrustedOutputReturnEnvelope": {
52
+ "type": "object",
53
+ "required": [
54
+ "schemaVersion",
55
+ "trusted",
56
+ "source",
57
+ "capturedAt",
58
+ "contentSha256",
59
+ "contentBytes",
60
+ "inline",
61
+ "maxInlineBytes",
62
+ "rendered"
63
+ ],
64
+ "additionalProperties": true,
65
+ "properties": {
66
+ "schemaVersion": { "const": "chatgpt.browser_control.untrusted_output_return.v1" },
67
+ "trusted": { "const": false },
68
+ "source": { "type": "string", "minLength": 1 },
69
+ "capturedAt": { "type": "string", "minLength": 1 },
70
+ "contentSha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
71
+ "contentBytes": { "type": "integer", "minimum": 0 },
72
+ "inline": { "type": "boolean" },
73
+ "maxInlineBytes": { "type": "integer", "minimum": 1 },
74
+ "outputPath": { "type": "string" },
75
+ "rendered": { "type": "string", "minLength": 1 }
76
+ }
49
77
  }
50
78
  }
51
79
  }
@@ -19,6 +19,15 @@
19
19
  "status": { "$ref": "#/$defs/commandStatus" },
20
20
  "output_text": { "type": "string" },
21
21
  "finalOutput": {},
22
+ "data": {
23
+ "type": "object",
24
+ "additionalProperties": true,
25
+ "properties": {
26
+ "outputText": { "type": "string" },
27
+ "untrustedOutput": { "$ref": "#/$defs/untrustedOutputReturnEnvelope" },
28
+ "reportPath": { "type": "string" }
29
+ }
30
+ },
22
31
  "output": {
23
32
  "type": "array",
24
33
  "items": { "$ref": "#/$defs/runItem" }
@@ -102,9 +111,57 @@
102
111
  }
103
112
  }
104
113
  },
114
+ "diagnostics": {
115
+ "type": "object",
116
+ "additionalProperties": true,
117
+ "properties": {
118
+ "existingTab": { "$ref": "#/$defs/existingTabDiagnostics" }
119
+ }
120
+ },
105
121
  "resumable": { "type": "boolean" }
106
122
  }
107
123
  },
124
+ "existingTabDiagnostics": {
125
+ "type": "object",
126
+ "required": ["requestedTarget", "userOpenTabsAvailable", "chatgptTabCount", "mismatchReason", "candidateTabs"],
127
+ "additionalProperties": true,
128
+ "properties": {
129
+ "requestedTarget": {
130
+ "type": "object",
131
+ "required": ["type"],
132
+ "additionalProperties": true,
133
+ "properties": {
134
+ "type": { "type": "string", "minLength": 1 },
135
+ "host": { "type": "string" },
136
+ "tabId": { "type": "string" },
137
+ "conversationId": { "type": "string" },
138
+ "url": { "type": "string" },
139
+ "title": { "type": "string" },
140
+ "exact": { "type": "boolean" }
141
+ }
142
+ },
143
+ "userOpenTabsAvailable": { "type": "boolean" },
144
+ "chatgptTabCount": { "type": "integer", "minimum": 0 },
145
+ "mismatchReason": { "type": "string", "minLength": 1 },
146
+ "omittedCandidateCount": { "type": "integer", "minimum": 0 },
147
+ "candidateTabs": {
148
+ "type": "array",
149
+ "items": {
150
+ "type": "object",
151
+ "required": ["id"],
152
+ "additionalProperties": true,
153
+ "properties": {
154
+ "id": { "type": "string", "minLength": 1 },
155
+ "url": { "type": "string" },
156
+ "title": { "type": "string" },
157
+ "conversationId": { "type": "string" },
158
+ "lastOpened": { "type": "string" },
159
+ "tabGroup": { "type": "string" }
160
+ }
161
+ }
162
+ }
163
+ }
164
+ },
108
165
  "interruption": {
109
166
  "type": "object",
110
167
  "required": ["id", "type", "status", "message", "resume"],
@@ -133,6 +190,33 @@
133
190
  "properties": {
134
191
  "type": { "type": "string", "minLength": 1 }
135
192
  }
193
+ },
194
+ "untrustedOutputReturnEnvelope": {
195
+ "type": "object",
196
+ "required": [
197
+ "schemaVersion",
198
+ "trusted",
199
+ "source",
200
+ "capturedAt",
201
+ "contentSha256",
202
+ "contentBytes",
203
+ "inline",
204
+ "maxInlineBytes",
205
+ "rendered"
206
+ ],
207
+ "additionalProperties": true,
208
+ "properties": {
209
+ "schemaVersion": { "const": "chatgpt.browser_control.untrusted_output_return.v1" },
210
+ "trusted": { "const": false },
211
+ "source": { "type": "string", "minLength": 1 },
212
+ "capturedAt": { "type": "string", "minLength": 1 },
213
+ "contentSha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
214
+ "contentBytes": { "type": "integer", "minimum": 0 },
215
+ "inline": { "type": "boolean" },
216
+ "maxInlineBytes": { "type": "integer", "minimum": 1 },
217
+ "outputPath": { "type": "string" },
218
+ "rendered": { "type": "string", "minLength": 1 }
219
+ }
136
220
  }
137
221
  }
138
222
  }
@@ -0,0 +1,210 @@
1
+ {
2
+ "schemaVersion": "chatgpt.browser_control.surface_drift_policy.v1",
3
+ "backendCommandDescriptorExemptions": [
4
+ {
5
+ "command": "backend.version",
6
+ "date": "2026-06-10",
7
+ "reason": "Backend metadata command used by protocol clients, not a user-facing SDK command descriptor."
8
+ },
9
+ {
10
+ "command": "backend.health",
11
+ "date": "2026-06-10",
12
+ "reason": "Backend metadata command used by protocol clients, not a user-facing SDK command descriptor."
13
+ },
14
+ {
15
+ "command": "backend.capabilities",
16
+ "date": "2026-06-10",
17
+ "reason": "Backend metadata command used by protocol clients, not a user-facing SDK command descriptor."
18
+ },
19
+ {
20
+ "command": "runner.plan",
21
+ "date": "2026-06-10",
22
+ "reason": "Lower-level planning command covered by the runner facade and parity suite rather than a separate public descriptor."
23
+ },
24
+ {
25
+ "command": "runner.stream",
26
+ "date": "2026-06-10",
27
+ "reason": "Milestone streaming transport command covered by runner docs and tests rather than a separate descriptor."
28
+ },
29
+ {
30
+ "command": "openThread",
31
+ "date": "2026-06-10",
32
+ "reason": "Legacy workflow alias documented through threads.open and top-level workflow facade coverage."
33
+ },
34
+ {
35
+ "command": "readLatest",
36
+ "date": "2026-06-10",
37
+ "reason": "Legacy workflow alias documented through messages.readLatest and response capture coverage."
38
+ },
39
+ {
40
+ "command": "downloadLatest",
41
+ "date": "2026-06-10",
42
+ "reason": "Legacy workflow alias documented through files.downloadLatest and download coverage."
43
+ },
44
+ {
45
+ "command": "reports.create",
46
+ "date": "2026-06-10",
47
+ "reason": "Report helper command is represented by createReport/redacted report descriptor and report docs."
48
+ },
49
+ {
50
+ "command": "reports.redact",
51
+ "date": "2026-06-10",
52
+ "reason": "Report helper command is represented by createReport/redacted report descriptor and report docs."
53
+ },
54
+ {
55
+ "command": "reports.summarize",
56
+ "date": "2026-06-10",
57
+ "reason": "Report helper command is represented by createReport/redacted report descriptor and report docs."
58
+ },
59
+ {
60
+ "command": "commands",
61
+ "date": "2026-06-10",
62
+ "reason": "Command-discovery metadata command that returns descriptors; it is not itself a public descriptor."
63
+ },
64
+ {
65
+ "command": "describe",
66
+ "date": "2026-06-10",
67
+ "reason": "Command-discovery metadata command that returns descriptors; it is not itself a public descriptor."
68
+ },
69
+ {
70
+ "command": "help",
71
+ "date": "2026-06-10",
72
+ "reason": "Command-discovery metadata command that returns help text; it is not itself a public descriptor."
73
+ }
74
+ ],
75
+ "descriptorBackendCommandExemptions": [
76
+ {
77
+ "descriptor": "new-ask-read",
78
+ "date": "2026-06-10",
79
+ "reason": "Named sequence macro executed through runPlan, not a backend command."
80
+ },
81
+ {
82
+ "descriptor": "find-open-ask-read",
83
+ "date": "2026-06-10",
84
+ "reason": "Named sequence macro executed through runPlan, not a backend command."
85
+ },
86
+ {
87
+ "descriptor": "find-open-copy-latest",
88
+ "date": "2026-06-10",
89
+ "reason": "Named sequence macro executed through runPlan, not a backend command."
90
+ },
91
+ {
92
+ "descriptor": "attach-ask-read",
93
+ "date": "2026-06-10",
94
+ "reason": "Named sequence macro executed through runPlan, not a backend command."
95
+ },
96
+ {
97
+ "descriptor": "ask-and-download",
98
+ "date": "2026-06-10",
99
+ "reason": "Named sequence macro executed through runPlan, not a backend command."
100
+ },
101
+ {
102
+ "descriptor": "two-turn",
103
+ "date": "2026-06-10",
104
+ "reason": "Named sequence macro executed through runPlan, not a backend command."
105
+ },
106
+ {
107
+ "descriptor": "doctor-upload",
108
+ "date": "2026-06-10",
109
+ "reason": "Named sequence macro executed through runPlan, not a backend command."
110
+ },
111
+ {
112
+ "descriptor": "redacted-run-report",
113
+ "date": "2026-06-10",
114
+ "reason": "Named sequence macro executed through runPlan, not a backend command."
115
+ }
116
+ ],
117
+ "backendDispatchExemptions": [
118
+ {
119
+ "command": "runner.stream",
120
+ "date": "2026-06-10",
121
+ "reason": "Handled by BackendSession.stream instead of dispatchBackendCommand."
122
+ }
123
+ ],
124
+ "pythonFacadeExemptions": [
125
+ {
126
+ "command": "backend.version",
127
+ "date": "2026-06-10",
128
+ "reason": "Python exposes the generic BackendClient.request path for backend.version; health and capabilities have dedicated facades."
129
+ }
130
+ ],
131
+ "generatedBlockerDocs": [
132
+ "references/troubleshooting.md",
133
+ "../../tools/public-export/root/docs/troubleshooting.md",
134
+ "../../docs/troubleshooting.md"
135
+ ],
136
+ "docAnchors": [
137
+ {
138
+ "id": "backend-protocol-file-preflight",
139
+ "paths": ["references/backend-protocol.md"],
140
+ "terms": ["files.preflight", "does not open ChatGPT"]
141
+ },
142
+ {
143
+ "id": "backend-protocol-project-sources",
144
+ "paths": ["references/backend-protocol.md"],
145
+ "terms": ["projects.sources.planAdd", "confirmMutation"]
146
+ },
147
+ {
148
+ "id": "python-parity-file-preflight",
149
+ "paths": ["references/python-parity.md"],
150
+ "terms": ["chatgpt.files.preflight", "FilePreflightData"]
151
+ },
152
+ {
153
+ "id": "python-parity-project-sources",
154
+ "paths": ["references/python-parity.md"],
155
+ "terms": ["chatgpt.projects.sources", "plan_add"]
156
+ },
157
+ {
158
+ "id": "node-readme-blocker-explainability",
159
+ "paths": ["../../tools/public-export/root/packages/node/README.md", "README.md"],
160
+ "terms": ["explainBlocker", "structured blockers"]
161
+ },
162
+ {
163
+ "id": "node-readme-file-preflight",
164
+ "paths": ["../../tools/public-export/root/packages/node/README.md", "README.md"],
165
+ "terms": ["chatgpt.files.preflight", "opening ChatGPT"]
166
+ },
167
+ {
168
+ "id": "node-readme-project-sources",
169
+ "paths": ["../../tools/public-export/root/packages/node/README.md", "README.md"],
170
+ "terms": ["chatgpt.projects.sources.planAdd", "confirmMutation"]
171
+ },
172
+ {
173
+ "id": "python-readme-blocker-explainability",
174
+ "paths": [
175
+ "$pythonRoot/README.md",
176
+ "../../tools/public-export/root/packages/python/README.md",
177
+ "../python/README.md"
178
+ ],
179
+ "terms": ["explain_blocker", "structured fields"]
180
+ },
181
+ {
182
+ "id": "python-readme-file-preflight",
183
+ "paths": [
184
+ "$pythonRoot/README.md",
185
+ "../../tools/public-export/root/packages/python/README.md",
186
+ "../python/README.md"
187
+ ],
188
+ "terms": ["chatgpt.files.preflight", "preflight"]
189
+ },
190
+ {
191
+ "id": "python-readme-project-sources",
192
+ "paths": [
193
+ "$pythonRoot/README.md",
194
+ "../../tools/public-export/root/packages/python/README.md",
195
+ "../python/README.md"
196
+ ],
197
+ "terms": ["chatgpt.projects.sources.plan_add", "confirm_mutation"]
198
+ },
199
+ {
200
+ "id": "skill-file-preflight",
201
+ "paths": ["../../tools/public-export/root/skills/codex-chatgpt-control/SKILL.md", "../../skills/codex-chatgpt-control/SKILL.md"],
202
+ "terms": ["chatgpt.files.preflight", "does not open ChatGPT"]
203
+ },
204
+ {
205
+ "id": "skill-project-sources",
206
+ "paths": ["../../tools/public-export/root/skills/codex-chatgpt-control/SKILL.md", "../../skills/codex-chatgpt-control/SKILL.md"],
207
+ "terms": ["chatgpt.projects.sources.planAdd", "confirmMutation"]
208
+ }
209
+ ]
210
+ }