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,202 @@
1
+ /**
2
+ * The turn ownership classifier deliberately accepts normalized, already
3
+ * redacted observations. It must never be handed DOM nodes or prompt text.
4
+ * Adapters are responsible for producing the bounded digests in these types.
5
+ */
6
+ export declare const TURN_OWNERSHIP_SCHEMA_VERSION: "chatgpt.browser_control.turn_ownership.v1";
7
+ export type OwnershipDigest = string;
8
+ export type OwnershipIdentityEvidence = {
9
+ readonly status: "available";
10
+ /** Stable provider/browser/tab/thread identity, never user content. */
11
+ readonly value: string;
12
+ } | {
13
+ readonly status: "unavailable";
14
+ readonly reason: "not_exposed" | "not_observed" | "redacted";
15
+ };
16
+ export type OwnershipTargetEvidence = {
17
+ readonly provider: OwnershipIdentityEvidence;
18
+ readonly browser: OwnershipIdentityEvidence;
19
+ readonly tab: OwnershipIdentityEvidence;
20
+ readonly thread: OwnershipIdentityEvidence;
21
+ readonly conversation: OwnershipIdentityEvidence;
22
+ readonly canonicalThreadUrl: OwnershipIdentityEvidence;
23
+ readonly authoritativeTabClaim: OwnershipIdentityEvidence;
24
+ readonly coordinationScope: "process" | "provider";
25
+ };
26
+ export type OwnershipEvidenceProfile = {
27
+ readonly stableConversationId: "required" | "unavailable";
28
+ readonly stableUserTurnId: "required" | "unavailable";
29
+ readonly stableAssistantTurnId: "required" | "unavailable";
30
+ readonly stableBranchId: "required" | "unavailable";
31
+ readonly authoritativeTabClaim: "required" | "unavailable";
32
+ };
33
+ export type OwnershipBinding = {
34
+ readonly schemaVersion: typeof TURN_OWNERSHIP_SCHEMA_VERSION;
35
+ readonly operationId: string;
36
+ readonly targetBindingDigest: OwnershipDigest;
37
+ readonly target: OwnershipTargetEvidence;
38
+ readonly evidenceProfile: OwnershipEvidenceProfile;
39
+ readonly replacementTabRecovery: boolean;
40
+ readonly actionId: string;
41
+ readonly actionKind: "send" | "work_steer";
42
+ };
43
+ export type OwnershipTurn = {
44
+ /** Stable turn ID, when the provider exposes one. Never raw turn text. */
45
+ readonly stableId?: string;
46
+ /** HMAC/cryptographic evidence digest for the normalized turn. */
47
+ readonly evidenceDigest: OwnershipDigest;
48
+ /** Deterministic structure digest; text is never accepted by this module. */
49
+ readonly structureDigest: OwnershipDigest;
50
+ /** Ordered position in the normalized provider snapshot. */
51
+ readonly ordinal: number;
52
+ /** Stable parent identity for assistant turns. */
53
+ readonly parentStableId?: string;
54
+ /** Stable branch identity for assistant turns. */
55
+ readonly branchStableId?: string;
56
+ readonly state?: "generating" | "terminal";
57
+ readonly artifactEvidenceDigests?: readonly OwnershipDigest[];
58
+ };
59
+ export type OwnershipSnapshotCompleteness = "complete" | "truncated" | "incomplete" | "out_of_order";
60
+ export type OwnershipSnapshot = {
61
+ readonly schemaVersion: typeof TURN_OWNERSHIP_SCHEMA_VERSION;
62
+ readonly snapshotDigest: OwnershipDigest;
63
+ readonly target: OwnershipTargetEvidence;
64
+ readonly userTurns: readonly OwnershipTurn[];
65
+ readonly assistantTurns: readonly OwnershipTurn[];
66
+ readonly completeness: OwnershipSnapshotCompleteness;
67
+ readonly terminalState: "idle" | "generating" | "terminal" | "unknown";
68
+ /** Captured by the adapter after Send using the exact before/after delta. */
69
+ readonly postSendDelta?: OwnershipDeltaEvidence;
70
+ };
71
+ export type OwnershipBaseline = {
72
+ readonly schemaVersion: typeof TURN_OWNERSHIP_SCHEMA_VERSION;
73
+ /** Digest of the complete pre-Send normalized snapshot. */
74
+ readonly snapshotDigest: OwnershipDigest;
75
+ readonly target: OwnershipTargetEvidence;
76
+ readonly userTurns: readonly OwnershipTurn[];
77
+ readonly assistantTurns: readonly OwnershipTurn[];
78
+ readonly completeness: "complete";
79
+ };
80
+ export type OwnershipDeltaEvidence = {
81
+ readonly baselineSnapshotDigest: OwnershipDigest;
82
+ /** Exact new-user evidence digests from the normalized before/after delta. */
83
+ readonly addedUserEvidenceDigests: readonly OwnershipDigest[];
84
+ /** Digest over the canonical delta object, generated by the adapter. */
85
+ readonly deltaDigest: OwnershipDigest;
86
+ };
87
+ export type OwnershipSubmissionWitness = {
88
+ readonly actionId: string;
89
+ readonly actionKind: "send" | "work_steer";
90
+ /** Digest of the complete authenticated pre-Send ownership snapshot. */
91
+ readonly baselineSnapshotDigest: OwnershipDigest;
92
+ /** Durable action evidence for the exact post-Send user-turn delta. */
93
+ readonly postSendDeltaDigest: OwnershipDigest;
94
+ /** Durable evidence for the operation's submitted user turn. */
95
+ readonly operationUserEvidenceDigest: OwnershipDigest;
96
+ /** Optional immediate stable ID returned by the provider. */
97
+ readonly userTurnStableId?: string;
98
+ };
99
+ export type OwnershipCursorPhase = "owned_user_turn" | "owned_assistant_generating" | "owned_assistant_terminal";
100
+ export type OwnershipCursor = Readonly<{
101
+ readonly schemaVersion: typeof TURN_OWNERSHIP_SCHEMA_VERSION;
102
+ readonly operationId: string;
103
+ readonly targetBindingDigest: OwnershipDigest;
104
+ readonly phase: OwnershipCursorPhase;
105
+ readonly userTurnId: string;
106
+ readonly userTurnEvidenceDigest: OwnershipDigest;
107
+ readonly assistantTurnId?: string;
108
+ readonly assistantBranchId?: string;
109
+ /** Digest of the normalized snapshot from which this cursor was issued. */
110
+ readonly snapshotDigest: OwnershipDigest;
111
+ /** Frozen assistant evidence used to detect mutation after terminal capture. */
112
+ readonly assistantEvidenceDigest?: OwnershipDigest;
113
+ readonly assistantStructureDigest?: OwnershipDigest;
114
+ }>;
115
+ export type OwnershipResultStatus = "no_operation_turn" | "owned_user_turn" | "owned_assistant_generating" | "owned_assistant_terminal" | "target_mismatch" | "target_evidence_unavailable" | "concurrent_user_turn" | "regeneration_ambiguous" | "ownership_ambiguous";
116
+ export type OwnershipReason = "none" | "target_binding_mismatch" | "target_evidence_unavailable" | "replacement_tab_requires_owned_user" | "incomplete_snapshot" | "out_of_order_snapshot" | "baseline_turn_missing" | "baseline_turn_changed" | "intervening_user_turn" | "multiple_new_user_turns" | "operation_user_evidence_mismatch" | "post_send_delta_missing" | "post_send_delta_mismatch" | "stable_user_turn_id_unavailable" | "stable_assistant_turn_id_unavailable" | "stable_parent_identity_unavailable" | "stable_branch_identity_unavailable" | "assistant_parent_mismatch" | "assistant_state_unknown" | "terminal_state_mismatch" | "regeneration_siblings" | "prior_owned_turn_missing" | "prior_owned_turn_changed" | "prior_cursor_mismatch" | "unexpected_new_assistant_turn" | "baseline_target_mismatch";
117
+ export type OwnershipRecoveryObservation = {
118
+ readonly status: "not_observed";
119
+ } | {
120
+ readonly status: "owned_user_turn";
121
+ readonly userTurnId: string;
122
+ readonly evidenceDigest: OwnershipDigest;
123
+ } | {
124
+ readonly status: "owned_assistant_generating";
125
+ readonly userTurnId: string;
126
+ readonly assistantTurnId: string;
127
+ readonly evidenceDigest: OwnershipDigest;
128
+ } | {
129
+ readonly status: "owned_assistant_terminal";
130
+ readonly userTurnId: string;
131
+ readonly assistantTurnId: string;
132
+ readonly evidenceDigest: OwnershipDigest;
133
+ } | {
134
+ readonly status: "ambiguous";
135
+ readonly evidenceDigest?: OwnershipDigest;
136
+ };
137
+ export type OwnershipEvidenceMaterial = Readonly<{
138
+ readonly schemaVersion: typeof TURN_OWNERSHIP_SCHEMA_VERSION;
139
+ readonly operationId: string;
140
+ readonly status: OwnershipResultStatus;
141
+ readonly reason: OwnershipReason;
142
+ readonly target: Readonly<{
143
+ readonly provider: "available" | "unavailable";
144
+ readonly browser: "available" | "unavailable";
145
+ readonly tab: "available" | "unavailable";
146
+ readonly thread: "available" | "unavailable";
147
+ readonly conversation: "available" | "unavailable";
148
+ readonly canonicalThreadUrl: "available" | "unavailable";
149
+ readonly authoritativeTabClaim: "available" | "unavailable";
150
+ readonly replacedTab: boolean;
151
+ }>;
152
+ readonly baselineSnapshotDigest: OwnershipDigest;
153
+ readonly snapshotDigest: OwnershipDigest;
154
+ readonly postSendDeltaDigest?: OwnershipDigest;
155
+ readonly addedUserCount: number;
156
+ readonly addedAssistantCount: number;
157
+ readonly terminalState: OwnershipSnapshot["terminalState"];
158
+ readonly userTurn?: Readonly<{
159
+ readonly evidenceDigest: OwnershipDigest;
160
+ readonly structureDigest: OwnershipDigest;
161
+ readonly ordinal: number;
162
+ readonly stableIdAvailable: boolean;
163
+ readonly parentStableIdAvailable: boolean;
164
+ readonly branchStableIdAvailable: boolean;
165
+ readonly artifactEvidenceDigests: readonly OwnershipDigest[];
166
+ readonly state?: OwnershipTurn["state"];
167
+ }>;
168
+ readonly assistantTurn?: Readonly<{
169
+ readonly evidenceDigest: OwnershipDigest;
170
+ readonly structureDigest: OwnershipDigest;
171
+ readonly ordinal: number;
172
+ readonly stableIdAvailable: boolean;
173
+ readonly parentStableIdAvailable: boolean;
174
+ readonly branchStableIdAvailable: boolean;
175
+ readonly artifactEvidenceDigests: readonly OwnershipDigest[];
176
+ readonly state?: OwnershipTurn["state"];
177
+ }>;
178
+ }>;
179
+ export type OwnershipClassification = Readonly<{
180
+ readonly status: OwnershipResultStatus;
181
+ readonly reason: OwnershipReason;
182
+ readonly evidence: OwnershipEvidenceMaterial;
183
+ readonly recoveryObservation: OwnershipRecoveryObservation;
184
+ readonly cursor?: OwnershipCursor;
185
+ }>;
186
+ export type TurnOwnershipInput = {
187
+ readonly binding: OwnershipBinding;
188
+ readonly baseline: OwnershipBaseline;
189
+ readonly snapshot: OwnershipSnapshot;
190
+ readonly submissionWitness?: OwnershipSubmissionWitness;
191
+ readonly prior?: OwnershipCursor;
192
+ };
193
+ /**
194
+ * Classify one normalized snapshot. This function has no browser, DOM, or
195
+ * I/O dependency. It only permits an owned user turn when the adapter has
196
+ * supplied the exact post-Send delta digest and operation-specific evidence.
197
+ */
198
+ export declare function classifyTurnOwnership(input: TurnOwnershipInput): OwnershipClassification;
199
+ /** Return the deterministic, redacted JSON input a caller may HMAC. */
200
+ export declare function ownershipEvidenceJson(material: OwnershipEvidenceMaterial): string;
201
+ /** Validate a cursor before persisting or supplying it to a later snapshot. */
202
+ export declare function validateOwnershipCursor(cursor: OwnershipCursor): void;