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.
Files changed (231) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +43 -0
  3. package/contracts/v1/fixtures/backend-capabilities.json +40 -1
  4. package/contracts/v1/fixtures/backend-compatibility.json +21 -0
  5. package/contracts/v1/fixtures/backend-version.json +6 -1
  6. package/contracts/v1/fixtures/download-blocked-by-browser.json +22 -0
  7. package/contracts/v1/fixtures/download-receipt-failed.json +22 -0
  8. package/contracts/v1/fixtures/download-receipt-timeout.json +22 -0
  9. package/contracts/v1/fixtures/journal-rpc-indeterminate.json +32 -0
  10. package/contracts/v1/fixtures/journal-rpc-unsupported-platform.json +32 -0
  11. package/contracts/v1/fixtures/journal-runtime-unavailable.json +32 -0
  12. package/contracts/v1/fixtures/operation-action-prepared-event.json +42 -0
  13. package/contracts/v1/fixtures/operation-action.json +13 -0
  14. package/contracts/v1/fixtures/operation-artifact-receipt.json +14 -0
  15. package/contracts/v1/fixtures/operation-artifact-transfer-intent-event.json +24 -0
  16. package/contracts/v1/fixtures/operation-artifact-transfer-receipt-event.json +26 -0
  17. package/contracts/v1/fixtures/operation-artifact-transfer-state.json +178 -0
  18. package/contracts/v1/fixtures/operation-blocker.json +10 -0
  19. package/contracts/v1/fixtures/operation-collect-request.json +17 -0
  20. package/contracts/v1/fixtures/operation-collect-result.json +42 -0
  21. package/contracts/v1/fixtures/operation-control-receipt.json +13 -0
  22. package/contracts/v1/fixtures/operation-control-request.json +18 -0
  23. package/contracts/v1/fixtures/operation-control-result.json +31 -0
  24. package/contracts/v1/fixtures/operation-event.json +18 -0
  25. package/contracts/v1/fixtures/operation-handle.json +10 -0
  26. package/contracts/v1/fixtures/operation-inspect-request.json +13 -0
  27. package/contracts/v1/fixtures/operation-inspect-result.json +205 -0
  28. package/contracts/v1/fixtures/operation-ownership-baseline-event.json +34 -0
  29. package/contracts/v1/fixtures/operation-receipt.json +32 -0
  30. package/contracts/v1/fixtures/operation-recovery-decision.json +7 -0
  31. package/contracts/v1/fixtures/operation-recovery-observation.json +12 -0
  32. package/contracts/v1/fixtures/operation-request.json +33 -0
  33. package/contracts/v1/fixtures/operation-state.json +144 -0
  34. package/contracts/v1/fixtures/operation-submission-witness-event.json +20 -0
  35. package/contracts/v1/fixtures/operation-submission-witness.json +11 -0
  36. package/contracts/v1/fixtures/operation-submit-result.json +16 -0
  37. package/contracts/v1/fixtures/operation-target-established-event.json +21 -0
  38. package/contracts/v1/manifest.json +185 -1
  39. package/contracts/v1/parity-suite.json +106 -8
  40. package/contracts/v1/schemas/backend-compatibility.schema.json +65 -0
  41. package/contracts/v1/schemas/backend-request.schema.json +8 -2
  42. package/contracts/v1/schemas/capabilities.schema.json +81 -1
  43. package/contracts/v1/schemas/manifest.schema.json +57 -0
  44. package/contracts/v1/schemas/operation-action.schema.json +155 -0
  45. package/contracts/v1/schemas/operation-artifact-receipt.schema.json +89 -0
  46. package/contracts/v1/schemas/operation-blocker.schema.json +70 -0
  47. package/contracts/v1/schemas/operation-collect-request.schema.json +46 -0
  48. package/contracts/v1/schemas/operation-collect-result.schema.json +74 -0
  49. package/contracts/v1/schemas/operation-control-receipt.schema.json +108 -0
  50. package/contracts/v1/schemas/operation-control-request.schema.json +111 -0
  51. package/contracts/v1/schemas/operation-control-result.schema.json +112 -0
  52. package/contracts/v1/schemas/operation-event.schema.json +756 -0
  53. package/contracts/v1/schemas/operation-handle.schema.json +55 -0
  54. package/contracts/v1/schemas/operation-inspect-request.schema.json +42 -0
  55. package/contracts/v1/schemas/operation-inspect-result.schema.json +1662 -0
  56. package/contracts/v1/schemas/operation-receipt.schema.json +153 -0
  57. package/contracts/v1/schemas/operation-recovery.schema.json +314 -0
  58. package/contracts/v1/schemas/operation-request.schema.json +158 -0
  59. package/contracts/v1/schemas/operation-state.schema.json +691 -0
  60. package/contracts/v1/schemas/operation-submission-witness.schema.json +48 -0
  61. package/contracts/v1/schemas/operation-submit-result.schema.json +94 -0
  62. package/contracts/v1/surface-drift-policy.json +50 -0
  63. package/contracts/v1/vectors/operation-request-digest-v1.json +43 -0
  64. package/dist/codex-chatgpt-control-backend.mjs +45882 -9361
  65. package/dist/codex-chatgpt-control-journal.mjs +5547 -0
  66. package/dist/codex-chatgpt-control-live-smoke.bundle.mjs +51677 -0
  67. package/dist/codex-chatgpt-control-release-canary.bundle.mjs +52104 -0
  68. package/dist/codex-chatgpt-control.bundle.mjs +48392 -10260
  69. package/dist/src/backend/client.d.ts +103 -2
  70. package/dist/src/backend/client.js +1436 -97
  71. package/dist/src/backend/compatibility.d.ts +12 -0
  72. package/dist/src/backend/compatibility.js +208 -0
  73. package/dist/src/backend/protocol.d.ts +84 -1
  74. package/dist/src/backend/protocol.js +31 -5
  75. package/dist/src/backend/runtime-identity.d.ts +10 -0
  76. package/dist/src/backend/runtime-identity.js +141 -0
  77. package/dist/src/backend/session.d.ts +10 -2
  78. package/dist/src/backend/session.js +478 -7
  79. package/dist/src/backend/stdio-server.d.ts +4 -1
  80. package/dist/src/backend/stdio-server.js +240 -28
  81. package/dist/src/browser/active-composer-file-input.d.ts +9 -0
  82. package/dist/src/browser/active-composer-file-input.js +33 -0
  83. package/dist/src/browser/attach.d.ts +4 -1
  84. package/dist/src/browser/attach.js +136 -28
  85. package/dist/src/browser/chatgpt-url.d.ts +2 -0
  86. package/dist/src/browser/chatgpt-url.js +9 -0
  87. package/dist/src/browser/downloads.d.ts +17 -1
  88. package/dist/src/browser/downloads.js +150 -28
  89. package/dist/src/browser/page-state.js +6 -0
  90. package/dist/src/client.d.ts +43 -0
  91. package/dist/src/client.js +1279 -59
  92. package/dist/src/commands/artifacts.js +6 -4
  93. package/dist/src/commands/chat-popover.d.ts +37 -0
  94. package/dist/src/commands/chat-popover.js +537 -0
  95. package/dist/src/commands/configuration.d.ts +5 -0
  96. package/dist/src/commands/configuration.js +134 -21
  97. package/dist/src/commands/context.js +10 -3
  98. package/dist/src/commands/doctor.d.ts +1 -1
  99. package/dist/src/commands/doctor.js +27 -4
  100. package/dist/src/commands/experience.d.ts +5 -0
  101. package/dist/src/commands/experience.js +104 -21
  102. package/dist/src/commands/files.js +14 -33
  103. package/dist/src/commands/modes.js +85 -21
  104. package/dist/src/commands/power-discovery.d.ts +130 -0
  105. package/dist/src/commands/power-discovery.js +669 -0
  106. package/dist/src/commands/project-sources.js +325 -31
  107. package/dist/src/commands/sequence.js +59 -32
  108. package/dist/src/commands/session.js +19 -6
  109. package/dist/src/commands/work.js +31 -0
  110. package/dist/src/dom/composer-text.d.ts +6 -0
  111. package/dist/src/dom/composer-text.js +85 -0
  112. package/dist/src/errors.d.ts +9 -0
  113. package/dist/src/errors.js +22 -0
  114. package/dist/src/index.d.ts +6 -0
  115. package/dist/src/index.js +9 -0
  116. package/dist/src/operations/artifact-output.d.ts +69 -0
  117. package/dist/src/operations/artifact-output.js +1748 -0
  118. package/dist/src/operations/artifact-stream.d.ts +19 -0
  119. package/dist/src/operations/artifact-stream.js +35 -0
  120. package/dist/src/operations/artifact-transfer.d.ts +149 -0
  121. package/dist/src/operations/artifact-transfer.js +1312 -0
  122. package/dist/src/operations/browser-adapter.d.ts +167 -0
  123. package/dist/src/operations/browser-adapter.js +2103 -0
  124. package/dist/src/operations/browser-observation.d.ts +110 -0
  125. package/dist/src/operations/browser-observation.js +1256 -0
  126. package/dist/src/operations/browser-target.d.ts +105 -0
  127. package/dist/src/operations/browser-target.js +531 -0
  128. package/dist/src/operations/canonical.d.ts +4 -0
  129. package/dist/src/operations/canonical.js +412 -0
  130. package/dist/src/operations/chatgpt-runtime.d.ts +72 -0
  131. package/dist/src/operations/chatgpt-runtime.js +1232 -0
  132. package/dist/src/operations/client.d.ts +138 -0
  133. package/dist/src/operations/client.js +1145 -0
  134. package/dist/src/operations/collector.d.ts +195 -0
  135. package/dist/src/operations/collector.js +1039 -0
  136. package/dist/src/operations/configuration-routing.d.ts +4 -0
  137. package/dist/src/operations/configuration-routing.js +14 -0
  138. package/dist/src/operations/control.d.ts +372 -0
  139. package/dist/src/operations/control.js +1498 -0
  140. package/dist/src/operations/file-identity.d.ts +33 -0
  141. package/dist/src/operations/file-identity.js +153 -0
  142. package/dist/src/operations/handle.d.ts +19 -0
  143. package/dist/src/operations/handle.js +727 -0
  144. package/dist/src/operations/index.d.ts +25 -0
  145. package/dist/src/operations/index.js +25 -0
  146. package/dist/src/operations/journal-authority.d.ts +12 -0
  147. package/dist/src/operations/journal-authority.js +1 -0
  148. package/dist/src/operations/journal-rpc-client.d.ts +12 -0
  149. package/dist/src/operations/journal-rpc-client.js +225 -0
  150. package/dist/src/operations/journal-rpc-protocol.d.ts +32 -0
  151. package/dist/src/operations/journal-rpc-protocol.js +214 -0
  152. package/dist/src/operations/journal-rpc-server.d.ts +15 -0
  153. package/dist/src/operations/journal-rpc-server.js +272 -0
  154. package/dist/src/operations/journal.d.ts +143 -0
  155. package/dist/src/operations/journal.js +1957 -0
  156. package/dist/src/operations/production-attachments.d.ts +118 -0
  157. package/dist/src/operations/production-attachments.js +1035 -0
  158. package/dist/src/operations/production-chatgpt-artifacts.d.ts +74 -0
  159. package/dist/src/operations/production-chatgpt-artifacts.js +1146 -0
  160. package/dist/src/operations/production-chatgpt-attachments.d.ts +80 -0
  161. package/dist/src/operations/production-chatgpt-attachments.js +1639 -0
  162. package/dist/src/operations/production-configuration.d.ts +42 -0
  163. package/dist/src/operations/production-configuration.js +1544 -0
  164. package/dist/src/operations/production-primitives.d.ts +53 -0
  165. package/dist/src/operations/production-primitives.js +856 -0
  166. package/dist/src/operations/production-work-steer.d.ts +203 -0
  167. package/dist/src/operations/production-work-steer.js +1218 -0
  168. package/dist/src/operations/recovery.d.ts +80 -0
  169. package/dist/src/operations/recovery.js +174 -0
  170. package/dist/src/operations/runtime-adapter.d.ts +126 -0
  171. package/dist/src/operations/runtime-adapter.js +802 -0
  172. package/dist/src/operations/send-once.d.ts +224 -0
  173. package/dist/src/operations/send-once.js +1081 -0
  174. package/dist/src/operations/service.d.ts +286 -0
  175. package/dist/src/operations/service.js +2831 -0
  176. package/dist/src/operations/staging.d.ts +136 -0
  177. package/dist/src/operations/staging.js +630 -0
  178. package/dist/src/operations/state-machine.d.ts +29 -0
  179. package/dist/src/operations/state-machine.js +2047 -0
  180. package/dist/src/operations/submission.d.ts +423 -0
  181. package/dist/src/operations/submission.js +1676 -0
  182. package/dist/src/operations/transactional-chat-power.d.ts +17 -0
  183. package/dist/src/operations/transactional-chat-power.js +212 -0
  184. package/dist/src/operations/turn-ownership.d.ts +202 -0
  185. package/dist/src/operations/turn-ownership.js +700 -0
  186. package/dist/src/operations/types.d.ts +454 -0
  187. package/dist/src/operations/types.js +20 -0
  188. package/dist/src/operations/wire-requests.d.ts +21 -0
  189. package/dist/src/operations/wire-requests.js +396 -0
  190. package/dist/src/operations/wire-results.d.ts +97 -0
  191. package/dist/src/operations/wire-results.js +818 -0
  192. package/dist/src/runner/responses.d.ts +3 -1
  193. package/dist/src/runner/responses.js +19 -1
  194. package/dist/src/runner/result.js +227 -55
  195. package/dist/src/runner/types.d.ts +12 -0
  196. package/dist/src/runtime/command-routing.d.ts +149 -0
  197. package/dist/src/runtime/command-routing.js +431 -0
  198. package/dist/src/runtime/coordinated-browser.d.ts +24 -0
  199. package/dist/src/runtime/coordinated-browser.js +315 -0
  200. package/dist/src/runtime/coordinated-page.d.ts +41 -0
  201. package/dist/src/runtime/coordinated-page.js +651 -0
  202. package/dist/src/runtime/operation-context.d.ts +142 -0
  203. package/dist/src/runtime/operation-context.js +410 -0
  204. package/dist/src/runtime/runtime-session.d.ts +95 -0
  205. package/dist/src/runtime/runtime-session.js +314 -0
  206. package/dist/src/runtime/tab-coordinator.d.ts +200 -0
  207. package/dist/src/runtime/tab-coordinator.js +1200 -0
  208. package/dist/src/runtime/value-boundaries.d.ts +18 -0
  209. package/dist/src/runtime/value-boundaries.js +49 -0
  210. package/dist/src/safety/blockers.js +8 -1
  211. package/dist/src/safety/untrusted-output.js +2 -1
  212. package/dist/src/scripts/backend-server.js +4 -1
  213. package/dist/src/scripts/capture-surface-profile.js +7 -2
  214. package/dist/src/scripts/journal-server.d.ts +2 -0
  215. package/dist/src/scripts/journal-server.js +37 -0
  216. package/dist/src/scripts/live-smoke/harness.js +79 -7
  217. package/dist/src/scripts/live-smoke/scenarios.d.ts +42 -1
  218. package/dist/src/scripts/live-smoke/scenarios.js +147 -30
  219. package/dist/src/scripts/live-smoke/transactional.d.ts +17 -0
  220. package/dist/src/scripts/live-smoke/transactional.js +254 -0
  221. package/dist/src/scripts/live-smoke/types.d.ts +3 -0
  222. package/dist/src/scripts/release-canary-module.js +17 -4
  223. package/dist/src/types.d.ts +38 -1
  224. package/package.json +8 -3
  225. package/references/2026-08-16-transactional-operations.md +459 -0
  226. package/references/2026-09-06-journal-service.md +140 -0
  227. package/references/agents-runner.md +34 -0
  228. package/references/backend-protocol.md +176 -0
  229. package/references/python-parity.md +137 -0
  230. package/references/responses-adapter.md +19 -0
  231. package/references/streaming.md +6 -0
@@ -0,0 +1,138 @@
1
+ import { type OperationFileHashOptions, type OperationFileIdentity } from "./file-identity.js";
2
+ import type { CollectorOptions, CollectorResult } from "./collector.js";
3
+ import type { ControlOptions, ControlResult } from "./control.js";
4
+ import { OperationService, type OperationBrowserAdapter, type OperationInspectResult, type OperationRunResult, type OperationSubmitOptions, type OperationSubmitResult } from "./service.js";
5
+ import type { OperationControlRequestV1, OperationDurableCapturePolicyV1, OperationHandleV1, OperationStateV1, OperationTargetBindingV1, OperationSubmitRequestV1 } from "./types.js";
6
+ export type OperationFileFingerprinter = (sourcePath: string, displayName?: string, options?: OperationFileHashOptions) => Promise<OperationFileIdentity>;
7
+ export type OperationFileRevalidator = (identity: OperationFileIdentity, options?: OperationFileHashOptions) => Promise<void>;
8
+ export type OperationAdapterFactoryContext = Readonly<{
9
+ /** A frozen snapshot; mutating the caller's request cannot affect the closure. */
10
+ request: OperationSubmitRequestV1;
11
+ /** Frozen identities retain source paths only in the ephemeral adapter closure. */
12
+ files: readonly OperationFileIdentity[];
13
+ signal: AbortSignal;
14
+ }>;
15
+ export type OperationAdapterFactory = (context: OperationAdapterFactoryContext) => OperationBrowserAdapter | Promise<OperationBrowserAdapter>;
16
+ /**
17
+ * Authenticated, redacted state exposed to a post-restart adapter factory.
18
+ *
19
+ * This is intentionally a projection rather than `OperationStateV1`: action
20
+ * records, receipts, blockers, and any future fields are not needed to bind a
21
+ * browser target and therefore must not cross this boundary by accident.
22
+ */
23
+ export type OperationAdapterDurableState = Readonly<Pick<OperationStateV1, "schemaVersion" | "operationId" | "requestDigest" | "surface" | "phase" | "mutationBoundary" | "revision"> & {
24
+ target: OperationTargetBindingV1;
25
+ /** Path-free immutable capture contract; absent only on legacy records. */
26
+ capturePolicy?: OperationDurableCapturePolicyV1;
27
+ }>;
28
+ /**
29
+ * Restart-safe handle-factory context.
30
+ *
31
+ * The enumerable shape remains the legacy `OperationHandleV1` so existing
32
+ * one-argument factories continue to work. The nested `handle`, `state`,
33
+ * and `target` properties are non-enumerable and frozen; new factories should
34
+ * use those properties to bind the exact authenticated durable target.
35
+ */
36
+ export type OperationHandleAdapterFactoryContext = Readonly<OperationHandleV1 & {
37
+ handle: OperationHandleV1;
38
+ state: OperationAdapterDurableState;
39
+ target: OperationTargetBindingV1;
40
+ }>;
41
+ export type OperationHandleAdapterFactory = (
42
+ /** Frozen locator-compatible context; never contains prompt or local paths. */
43
+ context: OperationHandleAdapterFactoryContext) => OperationBrowserAdapter | Promise<OperationBrowserAdapter>;
44
+ /**
45
+ * Request-local control adapter context.
46
+ *
47
+ * `request` is the validated, frozen control request and may contain the raw
48
+ * Work-steer prompt for the duration of this one factory invocation. The
49
+ * authenticated `handle`, `state`, and `target` projections are frozen and
50
+ * deliberately non-enumerable so a factory cannot accidentally serialize
51
+ * durable reconstruction material alongside its ephemeral browser closure.
52
+ * `durable` is the same authenticated context supplied to a handle factory,
53
+ * also kept non-enumerable for the same privacy boundary. Nothing in this
54
+ * context is journaled or retained by the client after `control` returns.
55
+ */
56
+ export type OperationControlAdapterFactoryContext = Readonly<{
57
+ request: OperationControlRequestV1;
58
+ handle: OperationHandleV1;
59
+ state: OperationAdapterDurableState;
60
+ target: OperationTargetBindingV1;
61
+ durable: OperationHandleAdapterFactoryContext;
62
+ }>;
63
+ export type OperationControlAdapterFactory = (context: OperationControlAdapterFactoryContext) => OperationBrowserAdapter | Promise<OperationBrowserAdapter>;
64
+ export type OperationServicePort = Pick<OperationService, "submit" | "collect" | "inspect" | "control" | "run">;
65
+ export type OperationClientOptions = Readonly<{
66
+ /** Optional request-scoped adapter construction for raw prompt/path closure. */
67
+ adapterFactory?: OperationAdapterFactory;
68
+ /** Recreate a target-bound adapter after a process/backend restart. */
69
+ handleAdapterFactory?: OperationHandleAdapterFactory;
70
+ /**
71
+ * Create a fresh target-bound adapter for one Stop/Work control call. This
72
+ * is intentionally never cached: a steer prompt must not become a general
73
+ * operation adapter closure or survive the invocation that consumed it.
74
+ */
75
+ controlAdapterFactory?: OperationControlAdapterFactory;
76
+ /** Maximum number of ephemeral request/handle adapter closures retained. */
77
+ maxCachedAdapters?: number;
78
+ /** Injectable for deterministic file-boundary tests. */
79
+ fingerprint?: OperationFileFingerprinter;
80
+ /** Injectable for deterministic changed-file tests. */
81
+ revalidate?: OperationFileRevalidator;
82
+ }>;
83
+ export type OperationClientSubmitOptions = Readonly<Pick<OperationSubmitOptions, "signal" | "deadlineAt">>;
84
+ export type OperationClientCollectOptions = CollectorOptions;
85
+ export type OperationClientControlOptions = ControlOptions;
86
+ export type OperationClientRunOptions = Readonly<Omit<OperationSubmitOptions, "requestDigest"> & CollectorOptions>;
87
+ export declare class OperationClientError extends Error {
88
+ readonly code: string;
89
+ constructor(code: string, message: string);
90
+ }
91
+ /**
92
+ * Additive TypeScript operations API. The supplied adapter is also used for
93
+ * browser-free completion paths because the service requires a uniform port;
94
+ * `inspect` remains entirely browser-free. A request-scoped factory may
95
+ * replace the base adapter for submit/run and is cached in memory only for
96
+ * subsequent collect/control calls in the same process.
97
+ */
98
+ export declare class OperationClient {
99
+ private readonly service;
100
+ private readonly adapter;
101
+ private readonly fingerprint;
102
+ private readonly revalidate;
103
+ private readonly adapterFactory;
104
+ private readonly handleAdapterFactory;
105
+ private readonly controlAdapterFactory;
106
+ private readonly maxCachedAdapters;
107
+ private readonly requestAdapters;
108
+ constructor(service: OperationServicePort, adapter: OperationBrowserAdapter, options?: OperationClientOptions);
109
+ /** Fingerprint inputs, then execute the service's one-submit protocol. */
110
+ submit(request: OperationSubmitRequestV1, options?: OperationClientSubmitOptions): Promise<OperationSubmitResult>;
111
+ /** Collect only the exact operation-owned turn; never composes or submits. */
112
+ collect(handle: OperationHandleV1, options?: OperationClientCollectOptions): Promise<CollectorResult>;
113
+ /** Inspect durable state without touching the browser. */
114
+ inspect(handle: OperationHandleV1): Promise<OperationInspectResult>;
115
+ /** Apply one operation-bound Stop or Work steer. */
116
+ control(request: OperationControlRequestV1, options?: OperationClientControlOptions): Promise<ControlResult>;
117
+ /** SDK-only composition of one submit followed by one collect. */
118
+ run(request: OperationSubmitRequestV1, options?: OperationClientRunOptions): Promise<OperationRunResult>;
119
+ private prepareSubmit;
120
+ private adapterForSubmit;
121
+ private guardAdapter;
122
+ private adapterForHandle;
123
+ /**
124
+ * Authenticate a handle and project only the immutable target context
125
+ * needed by a request-local adapter. The inspect result is intentionally
126
+ * consumed once and passed to adapter selection; callers that need a
127
+ * prompt-bearing control closure must not repeat this read.
128
+ */
129
+ private reconstructionForHandle;
130
+ private adapterForAuthenticatedHandle;
131
+ private adapterForControl;
132
+ private rememberAdapter;
133
+ private cachedAdapterForOperation;
134
+ private forgetAdapter;
135
+ }
136
+ /** Alias kept for callers that prefer the plural namespace terminology. */
137
+ export declare const OperationsClient: typeof OperationClient;
138
+ export declare function createOperationClient(service: OperationServicePort, adapter: OperationBrowserAdapter, options?: OperationClientOptions): OperationClient;