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

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 (191) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +27 -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/operation-action-prepared-event.json +42 -0
  7. package/contracts/v1/fixtures/operation-action.json +13 -0
  8. package/contracts/v1/fixtures/operation-artifact-receipt.json +14 -0
  9. package/contracts/v1/fixtures/operation-artifact-transfer-intent-event.json +24 -0
  10. package/contracts/v1/fixtures/operation-artifact-transfer-receipt-event.json +26 -0
  11. package/contracts/v1/fixtures/operation-artifact-transfer-state.json +178 -0
  12. package/contracts/v1/fixtures/operation-blocker.json +10 -0
  13. package/contracts/v1/fixtures/operation-collect-request.json +17 -0
  14. package/contracts/v1/fixtures/operation-collect-result.json +42 -0
  15. package/contracts/v1/fixtures/operation-control-receipt.json +13 -0
  16. package/contracts/v1/fixtures/operation-control-request.json +18 -0
  17. package/contracts/v1/fixtures/operation-control-result.json +31 -0
  18. package/contracts/v1/fixtures/operation-event.json +18 -0
  19. package/contracts/v1/fixtures/operation-handle.json +10 -0
  20. package/contracts/v1/fixtures/operation-inspect-request.json +13 -0
  21. package/contracts/v1/fixtures/operation-inspect-result.json +205 -0
  22. package/contracts/v1/fixtures/operation-ownership-baseline-event.json +34 -0
  23. package/contracts/v1/fixtures/operation-receipt.json +32 -0
  24. package/contracts/v1/fixtures/operation-recovery-decision.json +7 -0
  25. package/contracts/v1/fixtures/operation-recovery-observation.json +12 -0
  26. package/contracts/v1/fixtures/operation-request.json +33 -0
  27. package/contracts/v1/fixtures/operation-state.json +144 -0
  28. package/contracts/v1/fixtures/operation-submission-witness-event.json +20 -0
  29. package/contracts/v1/fixtures/operation-submission-witness.json +11 -0
  30. package/contracts/v1/fixtures/operation-submit-result.json +16 -0
  31. package/contracts/v1/fixtures/operation-target-established-event.json +21 -0
  32. package/contracts/v1/manifest.json +155 -1
  33. package/contracts/v1/parity-suite.json +96 -1
  34. package/contracts/v1/schemas/backend-compatibility.schema.json +65 -0
  35. package/contracts/v1/schemas/backend-request.schema.json +8 -2
  36. package/contracts/v1/schemas/capabilities.schema.json +81 -1
  37. package/contracts/v1/schemas/manifest.schema.json +57 -0
  38. package/contracts/v1/schemas/operation-action.schema.json +155 -0
  39. package/contracts/v1/schemas/operation-artifact-receipt.schema.json +89 -0
  40. package/contracts/v1/schemas/operation-blocker.schema.json +70 -0
  41. package/contracts/v1/schemas/operation-collect-request.schema.json +46 -0
  42. package/contracts/v1/schemas/operation-collect-result.schema.json +74 -0
  43. package/contracts/v1/schemas/operation-control-receipt.schema.json +108 -0
  44. package/contracts/v1/schemas/operation-control-request.schema.json +111 -0
  45. package/contracts/v1/schemas/operation-control-result.schema.json +112 -0
  46. package/contracts/v1/schemas/operation-event.schema.json +756 -0
  47. package/contracts/v1/schemas/operation-handle.schema.json +55 -0
  48. package/contracts/v1/schemas/operation-inspect-request.schema.json +42 -0
  49. package/contracts/v1/schemas/operation-inspect-result.schema.json +1662 -0
  50. package/contracts/v1/schemas/operation-receipt.schema.json +153 -0
  51. package/contracts/v1/schemas/operation-recovery.schema.json +314 -0
  52. package/contracts/v1/schemas/operation-request.schema.json +158 -0
  53. package/contracts/v1/schemas/operation-state.schema.json +691 -0
  54. package/contracts/v1/schemas/operation-submission-witness.schema.json +48 -0
  55. package/contracts/v1/schemas/operation-submit-result.schema.json +94 -0
  56. package/contracts/v1/surface-drift-policy.json +50 -0
  57. package/contracts/v1/vectors/operation-request-digest-v1.json +43 -0
  58. package/dist/codex-chatgpt-control-backend.mjs +43897 -9094
  59. package/dist/codex-chatgpt-control.bundle.mjs +46360 -10262
  60. package/dist/src/backend/client.d.ts +103 -2
  61. package/dist/src/backend/client.js +1436 -97
  62. package/dist/src/backend/compatibility.d.ts +12 -0
  63. package/dist/src/backend/compatibility.js +208 -0
  64. package/dist/src/backend/protocol.d.ts +84 -1
  65. package/dist/src/backend/protocol.js +31 -5
  66. package/dist/src/backend/runtime-identity.d.ts +10 -0
  67. package/dist/src/backend/runtime-identity.js +141 -0
  68. package/dist/src/backend/session.d.ts +10 -2
  69. package/dist/src/backend/session.js +478 -7
  70. package/dist/src/backend/stdio-server.d.ts +4 -1
  71. package/dist/src/backend/stdio-server.js +240 -28
  72. package/dist/src/browser/active-composer-file-input.d.ts +9 -0
  73. package/dist/src/browser/active-composer-file-input.js +33 -0
  74. package/dist/src/browser/attach.d.ts +4 -1
  75. package/dist/src/browser/attach.js +136 -28
  76. package/dist/src/browser/downloads.d.ts +2 -0
  77. package/dist/src/client.d.ts +38 -0
  78. package/dist/src/client.js +1222 -59
  79. package/dist/src/commands/configuration.js +13 -7
  80. package/dist/src/commands/doctor.d.ts +1 -1
  81. package/dist/src/commands/doctor.js +26 -3
  82. package/dist/src/commands/experience.js +35 -0
  83. package/dist/src/commands/files.js +4 -27
  84. package/dist/src/commands/modes.js +49 -17
  85. package/dist/src/commands/power-discovery.d.ts +130 -0
  86. package/dist/src/commands/power-discovery.js +627 -0
  87. package/dist/src/commands/project-sources.js +325 -31
  88. package/dist/src/commands/sequence.js +59 -32
  89. package/dist/src/commands/session.js +7 -2
  90. package/dist/src/commands/work.js +31 -0
  91. package/dist/src/errors.d.ts +9 -0
  92. package/dist/src/errors.js +22 -0
  93. package/dist/src/index.d.ts +6 -0
  94. package/dist/src/index.js +9 -0
  95. package/dist/src/operations/artifact-output.d.ts +69 -0
  96. package/dist/src/operations/artifact-output.js +1748 -0
  97. package/dist/src/operations/artifact-stream.d.ts +19 -0
  98. package/dist/src/operations/artifact-stream.js +35 -0
  99. package/dist/src/operations/artifact-transfer.d.ts +149 -0
  100. package/dist/src/operations/artifact-transfer.js +1312 -0
  101. package/dist/src/operations/browser-adapter.d.ts +161 -0
  102. package/dist/src/operations/browser-adapter.js +2023 -0
  103. package/dist/src/operations/browser-observation.d.ts +110 -0
  104. package/dist/src/operations/browser-observation.js +1208 -0
  105. package/dist/src/operations/browser-target.d.ts +103 -0
  106. package/dist/src/operations/browser-target.js +489 -0
  107. package/dist/src/operations/canonical.d.ts +4 -0
  108. package/dist/src/operations/canonical.js +412 -0
  109. package/dist/src/operations/chatgpt-runtime.d.ts +72 -0
  110. package/dist/src/operations/chatgpt-runtime.js +1150 -0
  111. package/dist/src/operations/client.d.ts +138 -0
  112. package/dist/src/operations/client.js +1143 -0
  113. package/dist/src/operations/collector.d.ts +195 -0
  114. package/dist/src/operations/collector.js +1039 -0
  115. package/dist/src/operations/control.d.ts +372 -0
  116. package/dist/src/operations/control.js +1498 -0
  117. package/dist/src/operations/file-identity.d.ts +33 -0
  118. package/dist/src/operations/file-identity.js +153 -0
  119. package/dist/src/operations/handle.d.ts +19 -0
  120. package/dist/src/operations/handle.js +727 -0
  121. package/dist/src/operations/index.d.ts +22 -0
  122. package/dist/src/operations/index.js +22 -0
  123. package/dist/src/operations/journal.d.ts +142 -0
  124. package/dist/src/operations/journal.js +1931 -0
  125. package/dist/src/operations/production-attachments.d.ts +116 -0
  126. package/dist/src/operations/production-attachments.js +1018 -0
  127. package/dist/src/operations/production-chatgpt-artifacts.d.ts +74 -0
  128. package/dist/src/operations/production-chatgpt-artifacts.js +1146 -0
  129. package/dist/src/operations/production-chatgpt-attachments.d.ts +71 -0
  130. package/dist/src/operations/production-chatgpt-attachments.js +1563 -0
  131. package/dist/src/operations/production-configuration.d.ts +42 -0
  132. package/dist/src/operations/production-configuration.js +1363 -0
  133. package/dist/src/operations/production-primitives.d.ts +53 -0
  134. package/dist/src/operations/production-primitives.js +1073 -0
  135. package/dist/src/operations/production-work-steer.d.ts +203 -0
  136. package/dist/src/operations/production-work-steer.js +1218 -0
  137. package/dist/src/operations/recovery.d.ts +80 -0
  138. package/dist/src/operations/recovery.js +174 -0
  139. package/dist/src/operations/runtime-adapter.d.ts +118 -0
  140. package/dist/src/operations/runtime-adapter.js +786 -0
  141. package/dist/src/operations/send-once.d.ts +224 -0
  142. package/dist/src/operations/send-once.js +1081 -0
  143. package/dist/src/operations/service.d.ts +281 -0
  144. package/dist/src/operations/service.js +2810 -0
  145. package/dist/src/operations/staging.d.ts +136 -0
  146. package/dist/src/operations/staging.js +630 -0
  147. package/dist/src/operations/state-machine.d.ts +29 -0
  148. package/dist/src/operations/state-machine.js +2047 -0
  149. package/dist/src/operations/submission.d.ts +423 -0
  150. package/dist/src/operations/submission.js +1676 -0
  151. package/dist/src/operations/turn-ownership.d.ts +202 -0
  152. package/dist/src/operations/turn-ownership.js +700 -0
  153. package/dist/src/operations/types.d.ts +454 -0
  154. package/dist/src/operations/types.js +20 -0
  155. package/dist/src/operations/wire-requests.d.ts +21 -0
  156. package/dist/src/operations/wire-requests.js +396 -0
  157. package/dist/src/operations/wire-results.d.ts +97 -0
  158. package/dist/src/operations/wire-results.js +818 -0
  159. package/dist/src/runner/responses.d.ts +3 -1
  160. package/dist/src/runner/responses.js +19 -1
  161. package/dist/src/runner/result.js +227 -55
  162. package/dist/src/runner/types.d.ts +12 -0
  163. package/dist/src/runtime/command-routing.d.ts +149 -0
  164. package/dist/src/runtime/command-routing.js +431 -0
  165. package/dist/src/runtime/coordinated-browser.d.ts +24 -0
  166. package/dist/src/runtime/coordinated-browser.js +315 -0
  167. package/dist/src/runtime/coordinated-page.d.ts +39 -0
  168. package/dist/src/runtime/coordinated-page.js +634 -0
  169. package/dist/src/runtime/operation-context.d.ts +142 -0
  170. package/dist/src/runtime/operation-context.js +410 -0
  171. package/dist/src/runtime/runtime-session.d.ts +95 -0
  172. package/dist/src/runtime/runtime-session.js +314 -0
  173. package/dist/src/runtime/tab-coordinator.d.ts +200 -0
  174. package/dist/src/runtime/tab-coordinator.js +1200 -0
  175. package/dist/src/runtime/value-boundaries.d.ts +18 -0
  176. package/dist/src/runtime/value-boundaries.js +49 -0
  177. package/dist/src/safety/untrusted-output.js +2 -1
  178. package/dist/src/scripts/backend-server.js +4 -1
  179. package/dist/src/scripts/live-smoke/harness.js +79 -7
  180. package/dist/src/scripts/live-smoke/scenarios.d.ts +28 -0
  181. package/dist/src/scripts/live-smoke/scenarios.js +110 -18
  182. package/dist/src/scripts/live-smoke/types.d.ts +3 -0
  183. package/dist/src/scripts/release-canary-module.js +17 -4
  184. package/dist/src/types.d.ts +38 -1
  185. package/package.json +1 -1
  186. package/references/2026-08-16-transactional-operations.md +459 -0
  187. package/references/agents-runner.md +34 -0
  188. package/references/backend-protocol.md +73 -0
  189. package/references/python-parity.md +72 -0
  190. package/references/responses-adapter.md +19 -0
  191. package/references/streaming.md +6 -0
@@ -0,0 +1,195 @@
1
+ import { type OperationHandleV1, type MutationBoundary, type OperationPhase, type OperationResponseFormatV1, type OperationReceiptV1, type OperationStateV1 } from "./types.js";
2
+ import { type OwnershipBaseline, type OwnershipBinding, type OwnershipCursor, type OwnershipSnapshot, type OwnershipSubmissionWitness } from "./turn-ownership.js";
3
+ /**
4
+ * The collector is intentionally a read-only orchestration boundary. There
5
+ * is no composer, file-transfer, click, send, stop, or steer port here. A
6
+ * browser adapter implements one bounded observation transaction; timers and
7
+ * journal reads are separate operations and never run inside that transaction.
8
+ *
9
+ * The adapter contract is deliberately normalized: it supplies ownership
10
+ * digests and bounded metadata, never DOM nodes, prompts, file paths, URLs, or
11
+ * artifact bytes. It may supply raw response text only for the exact terminal
12
+ * turn in the current collect call; the persistence port never receives it.
13
+ */
14
+ export declare const COLLECTOR_SCHEMA_VERSION: "chatgpt.browser_control.collector.v1";
15
+ export declare const COLLECTOR_TERMINAL_SCHEMA_VERSION: "chatgpt.browser_control.collector_terminal.v1";
16
+ export type CollectorBlockerCode = "operation_not_found" | "operation_request_mismatch" | "operation_not_collectable" | "operation_state_corrupt" | "target_binding_mismatch" | "target_evidence_unavailable" | "turn_ownership_ambiguous" | "concurrent_user_turn" | "regeneration_ambiguous" | "incomplete_snapshot" | "capture_ownership_lost" | "operation_cancelled" | "operation_timeout" | "port_protocol_violation" | "operation_progress_persistence_failed" | "operation_receipt_persistence_failed" | "operation_receipt_indeterminate" | "operation_receipt_expired";
17
+ export type CollectorBlocker = Readonly<{
18
+ code: CollectorBlockerCode;
19
+ operationId: string;
20
+ requestDigest: string;
21
+ phase: OperationPhase;
22
+ mutationBoundary: MutationBoundary;
23
+ attempts: number;
24
+ /** A bounded, fixed diagnostic. It never includes adapter/error text. */
25
+ message: string;
26
+ evidenceDigest?: string;
27
+ }>;
28
+ export type CollectorTextDigest = Readonly<{
29
+ /** This is metadata, not response text. */
30
+ digest: string;
31
+ bytes?: number;
32
+ chars?: number;
33
+ }>;
34
+ export type CollectorArtifactStatus = "available" | "transferred" | "partial" | "blocked";
35
+ export type CollectorArtifact = Readonly<{
36
+ /** Collection observes the browser artifact; transfer fields are added only from a durable receipt. */
37
+ kind: "file" | "image" | "other";
38
+ ordinal: number;
39
+ sourceIdentityDigest: string;
40
+ contentDigest?: string;
41
+ /** Raw SHA-256 when a transfer receipt has established one. */
42
+ sha256?: string;
43
+ bytes?: number;
44
+ mimeType?: string;
45
+ /** Present on completed projections; absent on a live browser observation. */
46
+ status?: CollectorArtifactStatus;
47
+ /** Opaque operation-relative destination key, never an absolute path. */
48
+ outputKey?: string;
49
+ /** Bounded transfer blocker when the requested local effect was incomplete. */
50
+ blockerCode?: string;
51
+ }>;
52
+ export type CollectorTerminalObservation = Readonly<{
53
+ schemaVersion: typeof COLLECTOR_TERMINAL_SCHEMA_VERSION;
54
+ userTurnId: string;
55
+ assistantTurnId: string;
56
+ userTurnEvidenceDigest: string;
57
+ assistantTurnEvidenceDigest: string;
58
+ userOrdinal: number;
59
+ assistantOrdinal: number;
60
+ /** Stable branch identity is required to exclude regeneration siblings. */
61
+ branchStableId: string;
62
+ /** Redacted response metadata. It is the only response information allowed into the journal. */
63
+ text?: CollectorTextDigest;
64
+ /** Format used for the exact terminal response text, when requested. */
65
+ responseFormat?: OperationResponseFormatV1;
66
+ /**
67
+ * Ephemeral response content for this exact live observation only. This is
68
+ * intentionally absent from the persistence request and is never accepted
69
+ * from a durable read.
70
+ */
71
+ rawText?: string;
72
+ artifacts: readonly CollectorArtifact[];
73
+ finishReason: string;
74
+ }>;
75
+ export type CollectorObservation = Readonly<{
76
+ schemaVersion: typeof COLLECTOR_SCHEMA_VERSION;
77
+ snapshot: OwnershipSnapshot;
78
+ terminal?: CollectorTerminalObservation;
79
+ }>;
80
+ export type CollectorDurableSnapshot = Readonly<{
81
+ state: OperationStateV1;
82
+ binding: OwnershipBinding;
83
+ baseline: OwnershipBaseline;
84
+ submissionWitness?: OwnershipSubmissionWitness;
85
+ prior?: OwnershipCursor;
86
+ }>;
87
+ export type CollectorDurableReadRequest = Readonly<{
88
+ handle: OperationHandleV1;
89
+ }>;
90
+ export type CollectorObservationRequest = Readonly<{
91
+ operationId: string;
92
+ requestDigest: string;
93
+ targetBindingDigest: string;
94
+ responseContent: "include" | "metadata";
95
+ responseFormat?: OperationResponseFormatV1;
96
+ signal: AbortSignal;
97
+ deadlineAt: number;
98
+ }>;
99
+ /**
100
+ * The only write available to the collect-only core is a redacted terminal
101
+ * receipt commit. The port implementation may append the required capturing
102
+ * transition and receipt event as one serialized journal transaction, but it
103
+ * receives no DOM, prompt, response text, file path, or mutation callback.
104
+ */
105
+ export type CollectorTerminalPersistenceRequest = Readonly<{
106
+ durable: CollectorDurableSnapshot;
107
+ receipt: OperationReceiptV1;
108
+ signal: AbortSignal;
109
+ deadlineAt: number;
110
+ }>;
111
+ /**
112
+ * Persist only progress that an exact ownership classification has already
113
+ * proven. This is a journal write, never a browser mutation: it makes the
114
+ * generating phase durable so a later Stop/steer request can be causally
115
+ * bound to the observed assistant turn.
116
+ */
117
+ export type CollectorProgressPersistenceRequest = Readonly<{
118
+ durable: CollectorDurableSnapshot;
119
+ phase: "submitted" | "generating";
120
+ evidenceDigest: string;
121
+ signal: AbortSignal;
122
+ deadlineAt: number;
123
+ }>;
124
+ /**
125
+ * Only browser-free durable reads and one read-only observation are exposed.
126
+ * Deliberately do not add a generic `call`, `execute`, or mutation callback:
127
+ * doing so would make the collect-only guarantee unenforceable by review.
128
+ */
129
+ export type CollectorPorts = Readonly<{
130
+ readDurable(request: CollectorDurableReadRequest): Promise<CollectorDurableSnapshot>;
131
+ observe(request: CollectorObservationRequest): Promise<CollectorObservation>;
132
+ persistProgress(request: CollectorProgressPersistenceRequest): Promise<CollectorDurableSnapshot>;
133
+ persistTerminal(request: CollectorTerminalPersistenceRequest): Promise<CollectorDurableSnapshot>;
134
+ sleep(milliseconds: number, signal: AbortSignal): Promise<void>;
135
+ }>;
136
+ export type CollectorOptions = Readonly<{
137
+ signal?: AbortSignal;
138
+ wait?: boolean;
139
+ timeoutMs?: number;
140
+ maxAttempts?: number;
141
+ pollIntervalMs?: number;
142
+ responseContent?: "include" | "metadata";
143
+ responseFormat?: OperationResponseFormatV1;
144
+ now?: () => number;
145
+ }>;
146
+ export type CollectorTurnDescriptor = Readonly<{
147
+ userTurnId: string;
148
+ assistantTurnId: string;
149
+ userOrdinal?: number;
150
+ assistantOrdinal?: number;
151
+ userTurnEvidenceDigest: string;
152
+ ownershipEvidenceDigest: string;
153
+ assistantEvidenceDigest?: string;
154
+ branchStableId?: string;
155
+ }>;
156
+ export type CollectorResponse = Readonly<{
157
+ /** Historical receipt metadata: true means the terminal had response metadata. */
158
+ contentAvailable: boolean;
159
+ /** Whether raw response text is present in this return value. */
160
+ rawContentAvailable: boolean;
161
+ text?: CollectorTextDigest;
162
+ responseFormat?: OperationResponseFormatV1;
163
+ rawText?: string;
164
+ artifacts: readonly CollectorArtifact[];
165
+ finishReason: string;
166
+ }>;
167
+ export type CollectorResult = Readonly<{
168
+ kind: "completed";
169
+ operationId: string;
170
+ requestDigest: string;
171
+ targetBindingDigest: string;
172
+ attempts: number;
173
+ turn: CollectorTurnDescriptor;
174
+ response: CollectorResponse;
175
+ }> | Readonly<{
176
+ kind: "pending";
177
+ operationId: string;
178
+ requestDigest: string;
179
+ targetBindingDigest: string;
180
+ phase: OperationPhase;
181
+ mutationBoundary: MutationBoundary;
182
+ attempts: number;
183
+ }> | Readonly<{
184
+ kind: "blocked";
185
+ operationId: string;
186
+ requestDigest: string;
187
+ targetBindingDigest?: string;
188
+ blocker: CollectorBlocker;
189
+ }>;
190
+ /**
191
+ * Collect an exact operation-owned assistant turn. Polling is optional and
192
+ * bounded. Each loop performs a browser-free journal read followed by one
193
+ * short observation transaction, then sleeps outside that transaction.
194
+ */
195
+ export declare function collectOperation(handle: OperationHandleV1, ports: CollectorPorts, options?: CollectorOptions): Promise<CollectorResult>;