@claudexor/schema 3.1.2 → 3.3.7-rc.0

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 (291) hide show
  1. package/dist/agent-capabilities.d.ts +157 -129
  2. package/dist/agent-capabilities.d.ts.map +1 -1
  3. package/dist/agent-capabilities.js +3 -1
  4. package/dist/agent-capabilities.js.map +1 -1
  5. package/dist/apply-eligibility.d.ts +472 -273
  6. package/dist/apply-eligibility.d.ts.map +1 -1
  7. package/dist/apply-eligibility.js +25 -1
  8. package/dist/apply-eligibility.js.map +1 -1
  9. package/dist/attachment.d.ts +17 -17
  10. package/dist/attachment.d.ts.map +1 -1
  11. package/dist/attachment.js +1 -1
  12. package/dist/attachment.js.map +1 -1
  13. package/dist/auth.d.ts +475 -475
  14. package/dist/auth.d.ts.map +1 -1
  15. package/dist/auth.js +1 -1
  16. package/dist/auth.js.map +1 -1
  17. package/dist/budget.d.ts +59 -59
  18. package/dist/budget.d.ts.map +1 -1
  19. package/dist/budget.js +1 -1
  20. package/dist/budget.js.map +1 -1
  21. package/dist/config.d.ts +320 -316
  22. package/dist/config.d.ts.map +1 -1
  23. package/dist/config.js +26 -19
  24. package/dist/config.js.map +1 -1
  25. package/dist/context.d.ts +38 -38
  26. package/dist/context.d.ts.map +1 -1
  27. package/dist/context.js +1 -1
  28. package/dist/context.js.map +1 -1
  29. package/dist/control-auth-route.d.ts +46 -0
  30. package/dist/control-auth-route.d.ts.map +1 -0
  31. package/dist/control-auth-route.js +24 -0
  32. package/dist/control-auth-route.js.map +1 -0
  33. package/dist/control-gc.d.ts +15 -15
  34. package/dist/control-gc.d.ts.map +1 -1
  35. package/dist/control-gc.js +1 -1
  36. package/dist/control-gc.js.map +1 -1
  37. package/dist/control-harness-list.d.ts +896 -0
  38. package/dist/control-harness-list.d.ts.map +1 -0
  39. package/dist/control-harness-list.js +13 -0
  40. package/dist/control-harness-list.js.map +1 -0
  41. package/dist/control-operation-responses.d.ts +644 -629
  42. package/dist/control-operation-responses.d.ts.map +1 -1
  43. package/dist/control-operation-responses.js +5 -1
  44. package/dist/control-operation-responses.js.map +1 -1
  45. package/dist/control-run-detail.d.ts +2229 -1569
  46. package/dist/control-run-detail.d.ts.map +1 -1
  47. package/dist/control-run-detail.js +46 -2
  48. package/dist/control-run-detail.js.map +1 -1
  49. package/dist/control-run-failure.d.ts +57 -0
  50. package/dist/control-run-failure.d.ts.map +1 -0
  51. package/dist/control-run-failure.js +89 -0
  52. package/dist/control-run-failure.js.map +1 -0
  53. package/dist/control-run-retry.d.ts +16 -16
  54. package/dist/control-run-retry.d.ts.map +1 -1
  55. package/dist/control-run-retry.js +1 -1
  56. package/dist/control-run-retry.js.map +1 -1
  57. package/dist/control-run-scope.d.ts +19 -2
  58. package/dist/control-run-scope.d.ts.map +1 -1
  59. package/dist/control-run-scope.js +22 -1
  60. package/dist/control-run-scope.js.map +1 -1
  61. package/dist/control-secret.d.ts +7 -7
  62. package/dist/control-secret.d.ts.map +1 -1
  63. package/dist/control-secret.js +1 -1
  64. package/dist/control-secret.js.map +1 -1
  65. package/dist/control-thread-apply.d.ts +65 -65
  66. package/dist/control-thread-apply.d.ts.map +1 -1
  67. package/dist/control-thread-apply.js +1 -1
  68. package/dist/control-thread-apply.js.map +1 -1
  69. package/dist/control-trust.d.ts +23 -23
  70. package/dist/control-trust.d.ts.map +1 -1
  71. package/dist/control-trust.js +1 -1
  72. package/dist/control-trust.js.map +1 -1
  73. package/dist/control.d.ts +1551 -2385
  74. package/dist/control.d.ts.map +1 -1
  75. package/dist/control.js +29 -107
  76. package/dist/control.js.map +1 -1
  77. package/dist/credential-profile-snapshot.d.ts +3206 -0
  78. package/dist/credential-profile-snapshot.d.ts.map +1 -0
  79. package/dist/credential-profile-snapshot.js +28 -0
  80. package/dist/credential-profile-snapshot.js.map +1 -0
  81. package/dist/credential-profile.d.ts +170 -107
  82. package/dist/credential-profile.d.ts.map +1 -1
  83. package/dist/credential-profile.js +24 -7
  84. package/dist/credential-profile.js.map +1 -1
  85. package/dist/decision.d.ts +121 -121
  86. package/dist/decision.d.ts.map +1 -1
  87. package/dist/decision.js +2 -1
  88. package/dist/decision.js.map +1 -1
  89. package/dist/deep-scan.d.ts +5 -5
  90. package/dist/deep-scan.d.ts.map +1 -1
  91. package/dist/deep-scan.js +1 -1
  92. package/dist/deep-scan.js.map +1 -1
  93. package/dist/delegation.d.ts +13 -13
  94. package/dist/delegation.d.ts.map +1 -1
  95. package/dist/delegation.js +1 -1
  96. package/dist/delegation.js.map +1 -1
  97. package/dist/delivery.d.ts +32 -32
  98. package/dist/delivery.d.ts.map +1 -1
  99. package/dist/delivery.js +1 -1
  100. package/dist/delivery.js.map +1 -1
  101. package/dist/effort.d.ts +1 -1
  102. package/dist/effort.d.ts.map +1 -1
  103. package/dist/effort.js +1 -1
  104. package/dist/effort.js.map +1 -1
  105. package/dist/events.d.ts +55 -35
  106. package/dist/events.d.ts.map +1 -1
  107. package/dist/events.js +20 -1
  108. package/dist/events.js.map +1 -1
  109. package/dist/gate.d.ts +7 -7
  110. package/dist/gate.d.ts.map +1 -1
  111. package/dist/gate.js +1 -1
  112. package/dist/gate.js.map +1 -1
  113. package/dist/git-capability.d.ts +23 -0
  114. package/dist/git-capability.d.ts.map +1 -0
  115. package/dist/git-capability.js +15 -0
  116. package/dist/git-capability.js.map +1 -0
  117. package/dist/harness-confinement.d.ts +64 -0
  118. package/dist/harness-confinement.d.ts.map +1 -0
  119. package/dist/harness-confinement.js +64 -0
  120. package/dist/harness-confinement.js.map +1 -0
  121. package/dist/harness.d.ts +428 -408
  122. package/dist/harness.d.ts.map +1 -1
  123. package/dist/harness.js +15 -26
  124. package/dist/harness.js.map +1 -1
  125. package/dist/index.d.ts +8 -0
  126. package/dist/index.d.ts.map +1 -1
  127. package/dist/index.js +8 -0
  128. package/dist/index.js.map +1 -1
  129. package/dist/interaction.d.ts +10 -0
  130. package/dist/interaction.d.ts.map +1 -0
  131. package/dist/interaction.js +2 -0
  132. package/dist/interaction.js.map +1 -0
  133. package/dist/operation.d.ts +113 -113
  134. package/dist/operation.d.ts.map +1 -1
  135. package/dist/operation.js +1 -1
  136. package/dist/operation.js.map +1 -1
  137. package/dist/output-schema-dialect.d.ts +1 -1
  138. package/dist/output-schema-dialect.d.ts.map +1 -1
  139. package/dist/output-schema-dialect.js +1 -1
  140. package/dist/output-schema-dialect.js.map +1 -1
  141. package/dist/output-schema.d.ts +2 -2
  142. package/dist/output-schema.js +2 -2
  143. package/dist/plan.d.ts +29 -29
  144. package/dist/plan.d.ts.map +1 -1
  145. package/dist/plan.js +2 -2
  146. package/dist/plan.js.map +1 -1
  147. package/dist/primitives.d.ts +1 -1
  148. package/dist/primitives.d.ts.map +1 -1
  149. package/dist/primitives.js +1 -1
  150. package/dist/primitives.js.map +1 -1
  151. package/dist/problem.d.ts +6 -6
  152. package/dist/problem.d.ts.map +1 -1
  153. package/dist/problem.js +1 -1
  154. package/dist/problem.js.map +1 -1
  155. package/dist/project.d.ts +87 -25
  156. package/dist/project.d.ts.map +1 -1
  157. package/dist/project.js +21 -1
  158. package/dist/project.js.map +1 -1
  159. package/dist/quota.d.ts +51 -51
  160. package/dist/quota.d.ts.map +1 -1
  161. package/dist/quota.js +6 -1
  162. package/dist/quota.js.map +1 -1
  163. package/dist/raw.d.ts +16 -16
  164. package/dist/raw.d.ts.map +1 -1
  165. package/dist/raw.js +1 -1
  166. package/dist/raw.js.map +1 -1
  167. package/dist/readiness.d.ts +242 -242
  168. package/dist/readiness.d.ts.map +1 -1
  169. package/dist/readiness.js +1 -1
  170. package/dist/readiness.js.map +1 -1
  171. package/dist/recovery.d.ts +106 -106
  172. package/dist/recovery.d.ts.map +1 -1
  173. package/dist/recovery.js +1 -1
  174. package/dist/recovery.js.map +1 -1
  175. package/dist/request-requirements.d.ts +9 -9
  176. package/dist/request-requirements.d.ts.map +1 -1
  177. package/dist/request-requirements.js +1 -1
  178. package/dist/request-requirements.js.map +1 -1
  179. package/dist/review.d.ts +29 -29
  180. package/dist/review.d.ts.map +1 -1
  181. package/dist/review.js +1 -1
  182. package/dist/review.js.map +1 -1
  183. package/dist/route.d.ts +11 -11
  184. package/dist/route.d.ts.map +1 -1
  185. package/dist/route.js +1 -1
  186. package/dist/route.js.map +1 -1
  187. package/dist/run-applicability.d.ts +764 -0
  188. package/dist/run-applicability.d.ts.map +1 -0
  189. package/dist/run-applicability.js +56 -0
  190. package/dist/run-applicability.js.map +1 -0
  191. package/dist/run-facts.d.ts +628 -0
  192. package/dist/run-facts.d.ts.map +1 -0
  193. package/dist/run-facts.js +429 -0
  194. package/dist/run-facts.js.map +1 -0
  195. package/dist/run-strategy.d.ts +40 -0
  196. package/dist/run-strategy.d.ts.map +1 -1
  197. package/dist/run-strategy.js +68 -1
  198. package/dist/run-strategy.js.map +1 -1
  199. package/dist/setup-device-code-envelope.d.ts +67 -0
  200. package/dist/setup-device-code-envelope.d.ts.map +1 -0
  201. package/dist/setup-device-code-envelope.js +25 -0
  202. package/dist/setup-device-code-envelope.js.map +1 -0
  203. package/dist/setup-login-protocol.d.ts +6 -0
  204. package/dist/setup-login-protocol.d.ts.map +1 -0
  205. package/dist/setup-login-protocol.js +12 -0
  206. package/dist/setup-login-protocol.js.map +1 -0
  207. package/dist/setup-transport.d.ts +12 -0
  208. package/dist/setup-transport.d.ts.map +1 -0
  209. package/dist/setup-transport.js +22 -0
  210. package/dist/setup-transport.js.map +1 -0
  211. package/dist/setup.d.ts +12572 -3749
  212. package/dist/setup.d.ts.map +1 -1
  213. package/dist/setup.js +34 -38
  214. package/dist/setup.js.map +1 -1
  215. package/dist/status-projection.d.ts +7 -5
  216. package/dist/status-projection.d.ts.map +1 -1
  217. package/dist/status-projection.js +11 -6
  218. package/dist/status-projection.js.map +1 -1
  219. package/dist/surface-run-controls.d.ts.map +1 -1
  220. package/dist/surface-run-controls.js +10 -1
  221. package/dist/surface-run-controls.js.map +1 -1
  222. package/dist/task.d.ts +303 -303
  223. package/dist/task.d.ts.map +1 -1
  224. package/dist/task.js +1 -1
  225. package/dist/task.js.map +1 -1
  226. package/dist/telemetry.d.ts +1157 -633
  227. package/dist/telemetry.d.ts.map +1 -1
  228. package/dist/telemetry.js +7 -4
  229. package/dist/telemetry.js.map +1 -1
  230. package/dist/thread.d.ts +133 -84
  231. package/dist/thread.d.ts.map +1 -1
  232. package/dist/thread.js +21 -2
  233. package/dist/thread.js.map +1 -1
  234. package/dist/tool-ref.d.ts +7 -7
  235. package/dist/tool-ref.d.ts.map +1 -1
  236. package/dist/tool-ref.js +1 -1
  237. package/dist/tool-ref.js.map +1 -1
  238. package/dist/work-report.d.ts +28 -28
  239. package/dist/work-report.d.ts.map +1 -1
  240. package/dist/work-report.js +3 -3
  241. package/dist/work-report.js.map +1 -1
  242. package/dist/workproduct.d.ts +6 -9
  243. package/dist/workproduct.d.ts.map +1 -1
  244. package/dist/workproduct.js +1 -2
  245. package/dist/workproduct.js.map +1 -1
  246. package/dist/workspace.d.ts +13 -13
  247. package/dist/workspace.d.ts.map +1 -1
  248. package/dist/workspace.js +1 -1
  249. package/dist/workspace.js.map +1 -1
  250. package/generated/AgentCapabilityCatalog.schema.json +41 -0
  251. package/generated/ControlCredentialProfileCreateResponse.schema.json +10 -1
  252. package/generated/ControlCredentialProfileUpdateResponse.schema.json +10 -1
  253. package/generated/ControlCredentialProfilesQueryResponse.schema.json +1343 -0
  254. package/generated/ControlCredentialProfilesResponse.schema.json +20 -3
  255. package/generated/ControlCredentialProfilesSnapshotResponse.schema.json +1322 -0
  256. package/generated/ControlDirectoryEntry.schema.json +36 -0
  257. package/generated/ControlDirectoryListing.schema.json +77 -0
  258. package/generated/ControlHarnessListResponse.schema.json +41 -1
  259. package/generated/ControlQuotaResponse.schema.json +2 -1
  260. package/generated/ControlRunAgainDraft.schema.json +12 -2
  261. package/generated/ControlRunApplicabilityResponse.schema.json +217 -0
  262. package/generated/ControlRunDetail.schema.json +494 -69
  263. package/generated/ControlRunListResponse.schema.json +30 -4
  264. package/generated/ControlRunStartRequest.schema.json +12 -2
  265. package/generated/ControlRunSummary.schema.json +30 -4
  266. package/generated/ControlSettingsSnapshot.schema.json +12 -3
  267. package/generated/ControlSettingsUpdateRequest.schema.json +12 -3
  268. package/generated/ControlSetupJob.schema.json +9 -0
  269. package/generated/ControlSetupJobCreateRequest.schema.json +9 -0
  270. package/generated/ControlSetupJobEvent.schema.json +858 -758
  271. package/generated/ControlSetupJobListResponse.schema.json +9 -0
  272. package/generated/ControlSetupJobSnapshot.schema.json +811 -736
  273. package/generated/ControlThreadCreateRequest.schema.json +5 -0
  274. package/generated/ControlThreadDetail.schema.json +31 -1
  275. package/generated/ControlThreadTurnRequest.schema.json +5 -24
  276. package/generated/CredentialProfileStatus.schema.json +10 -1
  277. package/generated/DecisionRecord.schema.json +2 -1
  278. package/generated/GitCapability.schema.json +46 -0
  279. package/generated/GlobalConfig.schema.json +13 -4
  280. package/generated/HarnessEvent.schema.json +2 -1
  281. package/generated/HarnessManifest.schema.json +1 -1
  282. package/generated/HarnessStatusDto.schema.json +1 -1
  283. package/generated/McpRunHandleResult.schema.json +182 -1
  284. package/generated/McpRunToolResult.schema.json +182 -1
  285. package/generated/OutputReadyPayload.schema.json +44 -0
  286. package/generated/RunFacts.schema.json +569 -0
  287. package/generated/RunFailure.schema.json +19 -2
  288. package/generated/RunTelemetry.schema.json +492 -2
  289. package/generated/ThreadTurn.schema.json +29 -0
  290. package/generated/WorkProduct.schema.json +0 -4
  291. package/package.json +3 -3
@@ -2,948 +2,1048 @@
2
2
  "$ref": "#/definitions/ControlSetupJobEvent",
3
3
  "definitions": {
4
4
  "ControlSetupJobEvent": {
5
- "type": "object",
6
- "properties": {
7
- "jobId": {
8
- "type": "string",
9
- "minLength": 1,
10
- "description": "Setup job the event belongs to."
11
- },
12
- "cursor": {
13
- "type": "string",
14
- "minLength": 1,
15
- "maxLength": 4096,
16
- "description": "Opaque durable global-journal cursor for exact SSE resume."
17
- },
18
- "previousCursor": {
19
- "anyOf": [
20
- {
21
- "type": "string",
22
- "minLength": 1,
23
- "maxLength": 4096
24
- },
25
- {
26
- "type": "null"
27
- }
28
- ],
29
- "description": "Exact client-relative predecessor cursor; null only at the beginning of the global journal."
30
- },
31
- "sequence": {
32
- "type": "integer",
33
- "exclusiveMinimum": 0,
34
- "minimum": -9007199254740991,
35
- "maximum": 9007199254740991,
36
- "description": "Global partition sequence used to reject duplicate or regressive frames; gaps are valid."
37
- },
38
- "time": {
39
- "type": "string",
40
- "format": "date-time",
41
- "description": "Event timestamp."
42
- },
43
- "kind": {
44
- "type": "string",
45
- "enum": [
46
- "status"
47
- ],
48
- "description": "Event kind; only status is ever produced."
49
- },
50
- "state": {
51
- "type": "string",
52
- "enum": [
53
- "queued",
54
- "running",
55
- "waiting_for_input",
56
- "succeeded",
57
- "failed",
58
- "cancelled",
59
- "timed_out",
60
- "interrupted_unknown",
61
- "not_supported"
62
- ],
63
- "description": "Lifecycle state of a setup job, including waiting_for_input (needs user confirmation/input) and not_supported."
64
- },
65
- "message": {
66
- "type": "string",
67
- "description": "Human-readable status message."
68
- },
69
- "job": {
5
+ "anyOf": [
6
+ {
70
7
  "type": "object",
71
8
  "properties": {
72
9
  "jobId": {
73
10
  "type": "string",
74
11
  "minLength": 1,
75
- "description": "Setup job id."
12
+ "description": "Setup job the event belongs to."
76
13
  },
77
- "harness": {
14
+ "cursor": {
78
15
  "type": "string",
79
- "enum": [
80
- "codex",
81
- "claude",
82
- "cursor"
16
+ "minLength": 1,
17
+ "maxLength": 4096,
18
+ "description": "Opaque durable global-journal cursor for exact SSE resume."
19
+ },
20
+ "previousCursor": {
21
+ "anyOf": [
22
+ {
23
+ "type": "string",
24
+ "minLength": 1,
25
+ "maxLength": 4096
26
+ },
27
+ {
28
+ "type": "null"
29
+ }
83
30
  ],
84
- "description": "Harness ids with a managed native-login flow."
31
+ "description": "Exact client-relative predecessor cursor; null only at the beginning of the global journal."
32
+ },
33
+ "sequence": {
34
+ "type": "integer",
35
+ "exclusiveMinimum": 0,
36
+ "minimum": -9007199254740991,
37
+ "maximum": 9007199254740991,
38
+ "description": "Global partition sequence used to reject duplicate or regressive frames; gaps are valid."
85
39
  },
86
- "action": {
40
+ "time": {
87
41
  "type": "string",
88
- "const": "login",
89
- "description": "The daemon-managed native-login action."
42
+ "format": "date-time",
43
+ "description": "Event timestamp."
90
44
  },
91
- "profileId": {
92
- "type": [
93
- "string",
94
- "null"
45
+ "kind": {
46
+ "type": "string",
47
+ "enum": [
48
+ "status"
95
49
  ],
96
- "default": null,
97
- "description": "Registered profile this login targets; null = the default session."
50
+ "description": "Event kind; only status is ever produced."
98
51
  },
99
52
  "state": {
100
- "$ref": "#/definitions/ControlSetupJobEvent/properties/state"
101
- },
102
- "phase": {
103
53
  "type": "string",
104
54
  "enum": [
105
- "preparing",
106
- "launching",
107
- "awaiting_user",
108
- "verifying",
109
- "cancelling",
110
- "completed"
55
+ "queued",
56
+ "running",
57
+ "waiting_for_input",
58
+ "succeeded",
59
+ "failed",
60
+ "cancelled",
61
+ "timed_out",
62
+ "interrupted_unknown",
63
+ "not_supported"
111
64
  ],
112
- "description": "Fine-grained setup phase; cancellation remains a phase until the underlying process has actually stopped."
65
+ "description": "Lifecycle state of a setup job, including waiting_for_input (needs user confirmation/input) and not_supported."
113
66
  },
114
- "deadlineAt": {
67
+ "message": {
115
68
  "type": "string",
116
- "format": "date-time",
117
- "description": "Current native-login deadline when the job has one."
69
+ "description": "Human-readable status message."
118
70
  },
119
- "outcome": {
71
+ "job": {
120
72
  "type": "object",
121
73
  "properties": {
122
- "reason": {
74
+ "jobId": {
75
+ "type": "string",
76
+ "minLength": 1,
77
+ "description": "Setup job id."
78
+ },
79
+ "harness": {
123
80
  "type": "string",
124
81
  "enum": [
125
- "completed",
126
- "not_supported",
127
- "launch_failed",
128
- "command_failed",
129
- "auth_not_ready",
130
- "capability_verification_failed",
131
- "credential_route_mismatch",
132
- "timed_out",
133
- "cancelled_by_user",
134
- "cancelled_on_restart",
135
- "interrupted",
136
- "interrupted_unknown",
137
- "termination_unconfirmed"
138
- ]
82
+ "codex",
83
+ "claude",
84
+ "cursor"
85
+ ],
86
+ "description": "Harness ids with a managed native-login flow."
139
87
  },
140
- "exitCode": {
141
- "anyOf": [
142
- {
143
- "type": "integer"
144
- },
145
- {
146
- "type": "null"
147
- }
148
- ]
88
+ "action": {
89
+ "type": "string",
90
+ "const": "login",
91
+ "description": "The daemon-managed native-login action."
92
+ },
93
+ "transport": {
94
+ "type": "string",
95
+ "enum": [
96
+ "daemon",
97
+ "client_pty"
98
+ ],
99
+ "description": "Who owns the interactive terminal: daemon opens a local Terminal, or the client attaches its PTY.",
100
+ "default": "daemon"
149
101
  },
150
- "signal": {
102
+ "profileId": {
151
103
  "type": [
152
104
  "string",
153
105
  "null"
154
- ]
155
- }
156
- },
157
- "required": [
158
- "reason"
159
- ],
160
- "additionalProperties": false,
161
- "description": "Typed terminal setup outcome with native command evidence when available."
162
- },
163
- "command": {
164
- "type": [
165
- "string",
166
- "null"
167
- ],
168
- "description": "Display-only native-login command description, when available."
169
- },
170
- "guideUrl": {
171
- "anyOf": [
172
- {
173
- "type": "string",
174
- "format": "uri"
106
+ ],
107
+ "default": null,
108
+ "description": "Registered profile this login targets; null = the default session."
175
109
  },
176
- {
177
- "type": "null"
178
- }
179
- ],
180
- "description": "Official vendor login guide URL."
181
- },
182
- "message": {
183
- "type": "string",
184
- "description": "Human-readable status message."
185
- },
186
- "createdAt": {
187
- "type": "string",
188
- "format": "date-time",
189
- "description": "When the job was created."
190
- },
191
- "startedAt": {
192
- "anyOf": [
193
- {
194
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/deadlineAt"
110
+ "state": {
111
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/state"
195
112
  },
196
- {
197
- "type": "null"
198
- }
199
- ],
200
- "description": "When the job started running."
201
- },
202
- "finishedAt": {
203
- "anyOf": [
204
- {
205
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/deadlineAt"
113
+ "phase": {
114
+ "type": "string",
115
+ "enum": [
116
+ "preparing",
117
+ "launching",
118
+ "awaiting_user",
119
+ "verifying",
120
+ "cancelling",
121
+ "completed"
122
+ ],
123
+ "description": "Fine-grained setup phase; cancellation remains a phase until the underlying process has actually stopped."
206
124
  },
207
- {
208
- "type": "null"
209
- }
210
- ],
211
- "description": "When the job finished."
212
- },
213
- "authCapability": {
214
- "anyOf": [
215
- {
125
+ "deadlineAt": {
126
+ "type": "string",
127
+ "format": "date-time",
128
+ "description": "Current native-login deadline when the job has one."
129
+ },
130
+ "outcome": {
216
131
  "type": "object",
217
132
  "properties": {
218
- "attemptId": {
133
+ "reason": {
219
134
  "type": "string",
220
- "minLength": 1,
221
- "description": "Non-empty identifier string."
222
- },
223
- "challengeDigest": {
224
- "type": "string",
225
- "pattern": "^[a-f0-9]{64}$"
226
- },
227
- "requestDigest": {
228
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
135
+ "enum": [
136
+ "completed",
137
+ "not_supported",
138
+ "launch_failed",
139
+ "command_failed",
140
+ "auth_not_ready",
141
+ "capability_verification_failed",
142
+ "credential_route_mismatch",
143
+ "timed_out",
144
+ "cancelled_by_user",
145
+ "cancelled_on_restart",
146
+ "interrupted",
147
+ "interrupted_unknown",
148
+ "termination_unconfirmed"
149
+ ]
229
150
  },
230
- "disclosure": {
231
- "type": "object",
232
- "properties": {
233
- "schemaVersion": {
234
- "type": "number",
235
- "const": 1
236
- },
237
- "protocolVersion": {
238
- "type": "number",
239
- "const": 1
240
- },
241
- "harness": {
242
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/attemptId"
243
- },
244
- "requested": {
245
- "type": "string",
246
- "enum": [
247
- "subscription",
248
- "api_key",
249
- "auto"
250
- ],
251
- "description": "Requested credential behavior: exact subscription, exact managed API key, or policy-governed auto selection."
252
- },
253
- "requiredRoute": {
254
- "type": "string",
255
- "enum": [
256
- "vendor_native",
257
- "managed_api_key",
258
- "local"
259
- ],
260
- "description": "Effective credential route: vendor-owned native session, Claudexor-managed API key, or credential-free local execution."
261
- },
262
- "requiredSource": {
263
- "type": "string",
264
- "enum": [
265
- "native_session",
266
- "oauth_token_env",
267
- "api_key_env",
268
- "api_key_flag",
269
- "provider_auth_file",
270
- "none"
271
- ],
272
- "description": "Concrete credential source used or probed by a harness."
273
- },
274
- "networkScope": {
275
- "type": "string",
276
- "const": "selected_harness_only"
277
- },
278
- "billingKnowledge": {
279
- "type": "string",
280
- "enum": [
281
- "proven_zero",
282
- "subscription_entitlement",
283
- "metered",
284
- "unknown"
285
- ],
286
- "description": "What is actually known about incremental billing; a native credential route alone never proves entitlement or zero cost."
287
- },
288
- "incrementalCostKnowledge": {
289
- "type": "string",
290
- "enum": [
291
- "exact",
292
- "estimated",
293
- "unknown"
294
- ],
295
- "description": "Quality of incremental-cash cost evidence for an operation."
151
+ "exitCode": {
152
+ "anyOf": [
153
+ {
154
+ "type": "integer"
296
155
  },
297
- "mayConsumeQuota": {
298
- "type": "boolean"
299
- },
300
- "generatedAt": {
301
- "type": "string",
302
- "format": "date-time"
156
+ {
157
+ "type": "null"
303
158
  }
304
- },
305
- "required": [
306
- "schemaVersion",
307
- "protocolVersion",
308
- "harness",
309
- "requested",
310
- "requiredRoute",
311
- "requiredSource",
312
- "networkScope",
313
- "billingKnowledge",
314
- "incrementalCostKnowledge",
315
- "mayConsumeQuota",
316
- "generatedAt"
317
- ],
318
- "additionalProperties": false,
319
- "description": "Pre-execution disclosure for the exact same-harness capability smoke required by auth setup."
159
+ ]
320
160
  },
321
- "state": {
322
- "type": "string",
323
- "const": "disclosed"
161
+ "signal": {
162
+ "type": [
163
+ "string",
164
+ "null"
165
+ ]
324
166
  }
325
167
  },
326
168
  "required": [
327
- "attemptId",
328
- "challengeDigest",
329
- "requestDigest",
330
- "disclosure",
331
- "state"
169
+ "reason"
332
170
  ],
333
- "additionalProperties": false
171
+ "additionalProperties": false,
172
+ "description": "Typed terminal setup outcome with native command evidence when available."
334
173
  },
335
- {
336
- "type": "object",
337
- "properties": {
338
- "attemptId": {
339
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/attemptId"
340
- },
341
- "challengeDigest": {
342
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
343
- },
344
- "requestDigest": {
345
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
346
- },
347
- "disclosure": {
348
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/disclosure"
349
- },
350
- "state": {
174
+ "command": {
175
+ "type": [
176
+ "string",
177
+ "null"
178
+ ],
179
+ "description": "Display-only native-login command description, when available."
180
+ },
181
+ "guideUrl": {
182
+ "anyOf": [
183
+ {
351
184
  "type": "string",
352
- "const": "running"
185
+ "format": "uri"
353
186
  },
354
- "startedAt": {
355
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/generatedAt"
187
+ {
188
+ "type": "null"
356
189
  }
357
- },
358
- "required": [
359
- "attemptId",
360
- "challengeDigest",
361
- "requestDigest",
362
- "disclosure",
363
- "state",
364
- "startedAt"
365
190
  ],
366
- "additionalProperties": false
191
+ "description": "Official vendor login guide URL."
367
192
  },
368
- {
369
- "type": "object",
370
- "properties": {
371
- "attemptId": {
372
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/attemptId"
373
- },
374
- "challengeDigest": {
375
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
376
- },
377
- "requestDigest": {
378
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
379
- },
380
- "disclosure": {
381
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/disclosure"
382
- },
383
- "state": {
384
- "type": "string",
385
- "const": "completed"
386
- },
387
- "startedAt": {
388
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/generatedAt"
193
+ "message": {
194
+ "type": "string",
195
+ "description": "Human-readable status message."
196
+ },
197
+ "createdAt": {
198
+ "type": "string",
199
+ "format": "date-time",
200
+ "description": "When the job was created."
201
+ },
202
+ "startedAt": {
203
+ "anyOf": [
204
+ {
205
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/deadlineAt"
389
206
  },
390
- "completedAt": {
391
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/generatedAt"
207
+ {
208
+ "type": "null"
209
+ }
210
+ ],
211
+ "description": "When the job started running."
212
+ },
213
+ "finishedAt": {
214
+ "anyOf": [
215
+ {
216
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/deadlineAt"
392
217
  },
393
- "receipt": {
218
+ {
219
+ "type": "null"
220
+ }
221
+ ],
222
+ "description": "When the job finished."
223
+ },
224
+ "authCapability": {
225
+ "anyOf": [
226
+ {
394
227
  "type": "object",
395
228
  "properties": {
396
- "receiptId": {
397
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/attemptId"
398
- },
399
229
  "attemptId": {
400
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/attemptId"
401
- },
402
- "harness": {
403
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/attemptId"
404
- },
405
- "requested": {
406
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/requested"
230
+ "type": "string",
231
+ "minLength": 1,
232
+ "description": "Non-empty identifier string."
407
233
  },
408
- "requiredRoute": {
409
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/requiredRoute"
234
+ "challengeDigest": {
235
+ "type": "string",
236
+ "pattern": "^[a-f0-9]{64}$"
410
237
  },
411
- "requiredSource": {
412
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/requiredSource"
238
+ "requestDigest": {
239
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
413
240
  },
414
- "effective": {
415
- "anyOf": [
416
- {
417
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/requiredRoute"
241
+ "disclosure": {
242
+ "type": "object",
243
+ "properties": {
244
+ "schemaVersion": {
245
+ "type": "number",
246
+ "const": 1
418
247
  },
419
- {
420
- "type": "null"
421
- }
422
- ],
423
- "description": "Effective credential route: vendor-owned native session, Claudexor-managed API key, or credential-free local execution."
424
- },
425
- "effectiveSource": {
426
- "anyOf": [
427
- {
428
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/requiredSource"
248
+ "protocolVersion": {
249
+ "type": "number",
250
+ "const": 1
251
+ },
252
+ "harness": {
253
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/attemptId"
429
254
  },
430
- {
431
- "type": "null"
255
+ "requested": {
256
+ "type": "string",
257
+ "enum": [
258
+ "subscription",
259
+ "api_key",
260
+ "auto"
261
+ ],
262
+ "description": "Requested credential behavior: exact subscription, exact managed API key, or policy-governed auto selection."
263
+ },
264
+ "requiredRoute": {
265
+ "type": "string",
266
+ "enum": [
267
+ "vendor_native",
268
+ "managed_api_key",
269
+ "local"
270
+ ],
271
+ "description": "Effective credential route: vendor-owned native session, Claudexor-managed API key, or credential-free local execution."
272
+ },
273
+ "requiredSource": {
274
+ "type": "string",
275
+ "enum": [
276
+ "native_session",
277
+ "oauth_token_env",
278
+ "api_key_env",
279
+ "api_key_flag",
280
+ "provider_auth_file",
281
+ "none"
282
+ ],
283
+ "description": "Concrete credential source used or probed by a harness."
284
+ },
285
+ "networkScope": {
286
+ "type": "string",
287
+ "const": "selected_harness_only"
288
+ },
289
+ "billingKnowledge": {
290
+ "type": "string",
291
+ "enum": [
292
+ "proven_zero",
293
+ "subscription_entitlement",
294
+ "metered",
295
+ "unknown"
296
+ ],
297
+ "description": "What is actually known about incremental billing; a native credential route alone never proves entitlement or zero cost."
298
+ },
299
+ "incrementalCostKnowledge": {
300
+ "type": "string",
301
+ "enum": [
302
+ "exact",
303
+ "estimated",
304
+ "unknown"
305
+ ],
306
+ "description": "Quality of incremental-cash cost evidence for an operation."
307
+ },
308
+ "mayConsumeQuota": {
309
+ "type": "boolean"
310
+ },
311
+ "generatedAt": {
312
+ "type": "string",
313
+ "format": "date-time"
432
314
  }
315
+ },
316
+ "required": [
317
+ "schemaVersion",
318
+ "protocolVersion",
319
+ "harness",
320
+ "requested",
321
+ "requiredRoute",
322
+ "requiredSource",
323
+ "networkScope",
324
+ "billingKnowledge",
325
+ "incrementalCostKnowledge",
326
+ "mayConsumeQuota",
327
+ "generatedAt"
433
328
  ],
434
- "description": "Concrete credential source used or probed by a harness."
329
+ "additionalProperties": false,
330
+ "description": "Pre-execution disclosure for the exact same-harness capability smoke required by auth setup."
435
331
  },
436
- "selectionReason": {
332
+ "state": {
437
333
  "type": "string",
438
- "enum": [
439
- "exact_requested_route",
440
- "adapter_unavailable",
441
- "request_mismatch",
442
- "route_missing",
443
- "route_mismatch",
444
- "source_missing",
445
- "source_mismatch",
446
- "harness_error",
447
- "adapter_error",
448
- "missing_completion",
449
- "response_mismatch",
450
- "scratch_mutated",
451
- "protocol_violation",
452
- "adapter_identity_mismatch",
453
- "cancelled"
454
- ]
455
- },
456
- "availability": {
457
- "type": "string",
458
- "enum": [
459
- "available",
460
- "unavailable",
461
- "unknown"
462
- ]
334
+ "const": "disclosed"
335
+ }
336
+ },
337
+ "required": [
338
+ "attemptId",
339
+ "challengeDigest",
340
+ "requestDigest",
341
+ "disclosure",
342
+ "state"
343
+ ],
344
+ "additionalProperties": false
345
+ },
346
+ {
347
+ "type": "object",
348
+ "properties": {
349
+ "attemptId": {
350
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/attemptId"
463
351
  },
464
- "verification": {
465
- "type": "string",
466
- "enum": [
467
- "passed",
468
- "failed",
469
- "not_run"
470
- ]
352
+ "challengeDigest": {
353
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
471
354
  },
472
- "billingKnowledge": {
473
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/billingKnowledge"
355
+ "requestDigest": {
356
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
474
357
  },
475
- "costKnowledge": {
476
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/incrementalCostKnowledge"
358
+ "disclosure": {
359
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/disclosure"
477
360
  },
478
- "costUsd": {
479
- "type": "number",
480
- "minimum": 0
361
+ "state": {
362
+ "type": "string",
363
+ "const": "running"
481
364
  },
482
365
  "startedAt": {
483
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/generatedAt"
484
- },
485
- "completedAt": {
486
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/generatedAt"
366
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/generatedAt"
367
+ }
368
+ },
369
+ "required": [
370
+ "attemptId",
371
+ "challengeDigest",
372
+ "requestDigest",
373
+ "disclosure",
374
+ "state",
375
+ "startedAt"
376
+ ],
377
+ "additionalProperties": false
378
+ },
379
+ {
380
+ "type": "object",
381
+ "properties": {
382
+ "attemptId": {
383
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/attemptId"
487
384
  },
488
385
  "challengeDigest": {
489
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
386
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
490
387
  },
491
388
  "requestDigest": {
492
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
389
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
493
390
  },
494
- "responseDigest": {
495
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
391
+ "disclosure": {
392
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/disclosure"
496
393
  },
497
- "streamDigest": {
498
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
394
+ "state": {
395
+ "type": "string",
396
+ "const": "completed"
499
397
  },
500
- "scratchBeforeDigest": {
501
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
398
+ "startedAt": {
399
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/generatedAt"
502
400
  },
503
- "scratchAfterDigest": {
504
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
401
+ "completedAt": {
402
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/generatedAt"
505
403
  },
506
- "stream": {
404
+ "receipt": {
507
405
  "type": "object",
508
406
  "properties": {
509
- "startedEvents": {
510
- "type": "integer",
511
- "minimum": 0
407
+ "receiptId": {
408
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/attemptId"
512
409
  },
513
- "completedEvents": {
514
- "type": "integer",
515
- "minimum": 0
410
+ "attemptId": {
411
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/attemptId"
516
412
  },
517
- "errorEvents": {
518
- "type": "integer",
519
- "minimum": 0
413
+ "harness": {
414
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/attemptId"
520
415
  },
521
- "unexpectedToolEvents": {
522
- "type": "integer",
523
- "minimum": 0
416
+ "requested": {
417
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/requested"
524
418
  },
525
- "interactionEvents": {
526
- "type": "integer",
527
- "minimum": 0
419
+ "requiredRoute": {
420
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/requiredRoute"
528
421
  },
529
- "sessionMismatchEvents": {
530
- "type": "integer",
531
- "minimum": 0
422
+ "requiredSource": {
423
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/requiredSource"
532
424
  },
533
- "eventsAfterCompleted": {
534
- "type": "integer",
425
+ "effective": {
426
+ "anyOf": [
427
+ {
428
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/requiredRoute"
429
+ },
430
+ {
431
+ "type": "null"
432
+ }
433
+ ],
434
+ "description": "Effective credential route: vendor-owned native session, Claudexor-managed API key, or credential-free local execution."
435
+ },
436
+ "effectiveSource": {
437
+ "anyOf": [
438
+ {
439
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/requiredSource"
440
+ },
441
+ {
442
+ "type": "null"
443
+ }
444
+ ],
445
+ "description": "Concrete credential source used or probed by a harness."
446
+ },
447
+ "selectionReason": {
448
+ "type": "string",
449
+ "enum": [
450
+ "exact_requested_route",
451
+ "adapter_unavailable",
452
+ "request_mismatch",
453
+ "route_missing",
454
+ "route_mismatch",
455
+ "source_missing",
456
+ "source_mismatch",
457
+ "harness_error",
458
+ "adapter_error",
459
+ "missing_completion",
460
+ "response_mismatch",
461
+ "scratch_mutated",
462
+ "protocol_violation",
463
+ "adapter_identity_mismatch",
464
+ "cancelled"
465
+ ]
466
+ },
467
+ "availability": {
468
+ "type": "string",
469
+ "enum": [
470
+ "available",
471
+ "unavailable",
472
+ "unknown"
473
+ ]
474
+ },
475
+ "verification": {
476
+ "type": "string",
477
+ "enum": [
478
+ "passed",
479
+ "failed",
480
+ "not_run"
481
+ ]
482
+ },
483
+ "billingKnowledge": {
484
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/billingKnowledge"
485
+ },
486
+ "costKnowledge": {
487
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/incrementalCostKnowledge"
488
+ },
489
+ "costUsd": {
490
+ "type": "number",
535
491
  "minimum": 0
536
492
  },
537
- "aborted": {
538
- "type": "boolean"
493
+ "startedAt": {
494
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/generatedAt"
495
+ },
496
+ "completedAt": {
497
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/generatedAt"
498
+ },
499
+ "challengeDigest": {
500
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
501
+ },
502
+ "requestDigest": {
503
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
504
+ },
505
+ "responseDigest": {
506
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
507
+ },
508
+ "streamDigest": {
509
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
510
+ },
511
+ "scratchBeforeDigest": {
512
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
513
+ },
514
+ "scratchAfterDigest": {
515
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
516
+ },
517
+ "stream": {
518
+ "type": "object",
519
+ "properties": {
520
+ "startedEvents": {
521
+ "type": "integer",
522
+ "minimum": 0
523
+ },
524
+ "completedEvents": {
525
+ "type": "integer",
526
+ "minimum": 0
527
+ },
528
+ "errorEvents": {
529
+ "type": "integer",
530
+ "minimum": 0
531
+ },
532
+ "unexpectedToolEvents": {
533
+ "type": "integer",
534
+ "minimum": 0
535
+ },
536
+ "interactionEvents": {
537
+ "type": "integer",
538
+ "minimum": 0
539
+ },
540
+ "sessionMismatchEvents": {
541
+ "type": "integer",
542
+ "minimum": 0
543
+ },
544
+ "eventsAfterCompleted": {
545
+ "type": "integer",
546
+ "minimum": 0
547
+ },
548
+ "aborted": {
549
+ "type": "boolean"
550
+ }
551
+ },
552
+ "required": [
553
+ "startedEvents",
554
+ "completedEvents",
555
+ "errorEvents",
556
+ "unexpectedToolEvents",
557
+ "interactionEvents",
558
+ "sessionMismatchEvents",
559
+ "eventsAfterCompleted",
560
+ "aborted"
561
+ ],
562
+ "additionalProperties": false
563
+ },
564
+ "evidenceRefs": {
565
+ "type": "array",
566
+ "items": {
567
+ "type": "string",
568
+ "minLength": 1
569
+ }
539
570
  }
540
571
  },
541
572
  "required": [
542
- "startedEvents",
543
- "completedEvents",
544
- "errorEvents",
545
- "unexpectedToolEvents",
546
- "interactionEvents",
547
- "sessionMismatchEvents",
548
- "eventsAfterCompleted",
549
- "aborted"
573
+ "receiptId",
574
+ "attemptId",
575
+ "harness",
576
+ "requested",
577
+ "requiredRoute",
578
+ "requiredSource",
579
+ "effective",
580
+ "effectiveSource",
581
+ "selectionReason",
582
+ "availability",
583
+ "verification",
584
+ "billingKnowledge",
585
+ "costKnowledge",
586
+ "startedAt",
587
+ "completedAt",
588
+ "challengeDigest",
589
+ "requestDigest",
590
+ "responseDigest",
591
+ "streamDigest",
592
+ "scratchBeforeDigest",
593
+ "scratchAfterDigest",
594
+ "stream",
595
+ "evidenceRefs"
550
596
  ],
551
- "additionalProperties": false
552
- },
553
- "evidenceRefs": {
554
- "type": "array",
555
- "items": {
556
- "type": "string",
557
- "minLength": 1
558
- }
597
+ "additionalProperties": false,
598
+ "description": "Immutable result of one exact-route same-harness capability smoke."
559
599
  }
560
600
  },
561
601
  "required": [
562
- "receiptId",
563
602
  "attemptId",
564
- "harness",
565
- "requested",
566
- "requiredRoute",
567
- "requiredSource",
568
- "effective",
569
- "effectiveSource",
570
- "selectionReason",
571
- "availability",
572
- "verification",
573
- "billingKnowledge",
574
- "costKnowledge",
603
+ "challengeDigest",
604
+ "requestDigest",
605
+ "disclosure",
606
+ "state",
575
607
  "startedAt",
576
608
  "completedAt",
609
+ "receipt"
610
+ ],
611
+ "additionalProperties": false
612
+ },
613
+ {
614
+ "type": "object",
615
+ "properties": {
616
+ "attemptId": {
617
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/attemptId"
618
+ },
619
+ "challengeDigest": {
620
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
621
+ },
622
+ "requestDigest": {
623
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
624
+ },
625
+ "disclosure": {
626
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/disclosure"
627
+ },
628
+ "state": {
629
+ "type": "string",
630
+ "const": "interrupted_unknown"
631
+ },
632
+ "startedAt": {
633
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/generatedAt"
634
+ },
635
+ "interruptedAt": {
636
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/generatedAt"
637
+ }
638
+ },
639
+ "required": [
640
+ "attemptId",
577
641
  "challengeDigest",
578
642
  "requestDigest",
579
- "responseDigest",
580
- "streamDigest",
581
- "scratchBeforeDigest",
582
- "scratchAfterDigest",
583
- "stream",
584
- "evidenceRefs"
643
+ "disclosure",
644
+ "state",
645
+ "startedAt",
646
+ "interruptedAt"
585
647
  ],
586
- "additionalProperties": false,
587
- "description": "Immutable result of one exact-route same-harness capability smoke."
648
+ "additionalProperties": false
588
649
  }
589
- },
590
- "required": [
591
- "attemptId",
592
- "challengeDigest",
593
- "requestDigest",
594
- "disclosure",
595
- "state",
596
- "startedAt",
597
- "completedAt",
598
- "receipt"
599
650
  ],
600
- "additionalProperties": false
651
+ "description": "Single durable lifecycle for the exact-route same-harness capability proof."
601
652
  },
602
- {
653
+ "execution": {
603
654
  "type": "object",
604
655
  "properties": {
605
- "attemptId": {
606
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/attemptId"
607
- },
608
- "challengeDigest": {
609
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
656
+ "executionId": {
657
+ "type": "string",
658
+ "pattern": "^[A-Za-z0-9-]+$"
610
659
  },
611
- "requestDigest": {
612
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/challengeDigest"
660
+ "commandDigest": {
661
+ "type": "string",
662
+ "pattern": "^[a-f0-9]{64}$"
613
663
  },
614
- "disclosure": {
615
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/disclosure"
664
+ "manifestDigest": {
665
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/execution/properties/commandDigest"
616
666
  },
617
- "state": {
618
- "type": "string",
619
- "const": "interrupted_unknown"
667
+ "processGroup": {
668
+ "type": "object",
669
+ "properties": {
670
+ "schemaVersion": {
671
+ "type": "number",
672
+ "const": 1
673
+ },
674
+ "pgid": {
675
+ "type": "integer",
676
+ "exclusiveMinimum": 0
677
+ },
678
+ "leader": {
679
+ "type": "object",
680
+ "properties": {
681
+ "status": {
682
+ "type": "string",
683
+ "const": "known"
684
+ },
685
+ "pid": {
686
+ "type": "integer",
687
+ "exclusiveMinimum": 0
688
+ },
689
+ "platform": {
690
+ "type": "string",
691
+ "enum": [
692
+ "linux",
693
+ "darwin"
694
+ ]
695
+ },
696
+ "source": {
697
+ "type": "string",
698
+ "enum": [
699
+ "procfs_stat",
700
+ "proc_pidinfo"
701
+ ]
702
+ },
703
+ "startToken": {
704
+ "type": "string",
705
+ "minLength": 1
706
+ },
707
+ "processGroupId": {
708
+ "type": "integer",
709
+ "exclusiveMinimum": 0
710
+ }
711
+ },
712
+ "required": [
713
+ "status",
714
+ "pid",
715
+ "platform",
716
+ "source",
717
+ "startToken",
718
+ "processGroupId"
719
+ ],
720
+ "additionalProperties": false
721
+ }
722
+ },
723
+ "required": [
724
+ "schemaVersion",
725
+ "pgid",
726
+ "leader"
727
+ ],
728
+ "additionalProperties": false
620
729
  },
621
- "startedAt": {
622
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/generatedAt"
730
+ "observedAt": {
731
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/deadlineAt"
623
732
  },
624
- "interruptedAt": {
625
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/authCapability/anyOf/0/properties/disclosure/properties/generatedAt"
733
+ "permitIssuedAt": {
734
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/deadlineAt"
626
735
  }
627
736
  },
628
737
  "required": [
629
- "attemptId",
630
- "challengeDigest",
631
- "requestDigest",
632
- "disclosure",
633
- "state",
634
- "startedAt",
635
- "interruptedAt"
738
+ "executionId",
739
+ "commandDigest",
740
+ "manifestDigest",
741
+ "processGroup",
742
+ "observedAt"
636
743
  ],
637
- "additionalProperties": false
638
- }
639
- ],
640
- "description": "Single durable lifecycle for the exact-route same-harness capability proof."
641
- },
642
- "execution": {
643
- "type": "object",
644
- "properties": {
645
- "executionId": {
646
- "type": "string",
647
- "pattern": "^[A-Za-z0-9-]+$"
744
+ "additionalProperties": false,
745
+ "description": "Durable process-group and pre-execution permit evidence."
648
746
  },
649
- "commandDigest": {
650
- "type": "string",
651
- "pattern": "^[a-f0-9]{64}$"
652
- },
653
- "manifestDigest": {
654
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/execution/properties/commandDigest"
655
- },
656
- "processGroup": {
747
+ "authorization": {
657
748
  "type": "object",
658
749
  "properties": {
659
- "schemaVersion": {
660
- "type": "number",
661
- "const": 1
662
- },
663
- "pgid": {
664
- "type": "integer",
665
- "exclusiveMinimum": 0
750
+ "executionId": {
751
+ "type": "string",
752
+ "pattern": "^[A-Za-z0-9-]+$"
666
753
  },
667
- "leader": {
754
+ "executable": {
668
755
  "type": "object",
669
756
  "properties": {
670
- "status": {
757
+ "realpath": {
671
758
  "type": "string",
672
- "const": "known"
759
+ "pattern": "^\\/"
760
+ },
761
+ "sha256": {
762
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/execution/properties/commandDigest"
673
763
  },
674
- "pid": {
764
+ "size": {
675
765
  "type": "integer",
676
- "exclusiveMinimum": 0
766
+ "minimum": 0
677
767
  },
678
- "platform": {
679
- "type": "string",
680
- "enum": [
681
- "linux",
682
- "darwin"
683
- ]
768
+ "mode": {
769
+ "type": "integer",
770
+ "minimum": 0
684
771
  },
685
- "source": {
772
+ "device": {
686
773
  "type": "string",
687
- "enum": [
688
- "procfs_stat",
689
- "proc_pidinfo"
690
- ]
774
+ "pattern": "^[0-9]+$"
691
775
  },
692
- "startToken": {
776
+ "inode": {
693
777
  "type": "string",
694
- "minLength": 1
695
- },
696
- "processGroupId": {
697
- "type": "integer",
698
- "exclusiveMinimum": 0
778
+ "pattern": "^[0-9]+$"
699
779
  }
700
780
  },
701
781
  "required": [
702
- "status",
703
- "pid",
704
- "platform",
705
- "source",
706
- "startToken",
707
- "processGroupId"
782
+ "realpath",
783
+ "sha256",
784
+ "size",
785
+ "mode",
786
+ "device",
787
+ "inode"
708
788
  ],
709
789
  "additionalProperties": false
790
+ },
791
+ "args": {
792
+ "type": "array",
793
+ "items": {
794
+ "type": "string"
795
+ }
796
+ },
797
+ "commandDigest": {
798
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/execution/properties/commandDigest"
799
+ },
800
+ "manifestDigest": {
801
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/execution/properties/commandDigest"
710
802
  }
711
803
  },
712
804
  "required": [
713
- "schemaVersion",
714
- "pgid",
715
- "leader"
805
+ "executionId",
806
+ "executable",
807
+ "args",
808
+ "commandDigest",
809
+ "manifestDigest"
716
810
  ],
717
- "additionalProperties": false
718
- },
719
- "observedAt": {
720
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/deadlineAt"
721
- },
722
- "permitIssuedAt": {
723
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/deadlineAt"
724
- }
725
- },
726
- "required": [
727
- "executionId",
728
- "commandDigest",
729
- "manifestDigest",
730
- "processGroup",
731
- "observedAt"
732
- ],
733
- "additionalProperties": false,
734
- "description": "Durable process-group and pre-execution permit evidence."
735
- },
736
- "authorization": {
737
- "type": "object",
738
- "properties": {
739
- "executionId": {
740
- "type": "string",
741
- "pattern": "^[A-Za-z0-9-]+$"
811
+ "additionalProperties": false,
812
+ "description": "Immutable hash-bound command authorized before external handoff."
742
813
  },
743
- "executable": {
814
+ "nativeCommand": {
744
815
  "type": "object",
745
816
  "properties": {
746
- "realpath": {
817
+ "executionId": {
747
818
  "type": "string",
748
- "pattern": "^\\/"
819
+ "pattern": "^[A-Za-z0-9-]+$"
749
820
  },
750
- "sha256": {
751
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/execution/properties/commandDigest"
821
+ "commandDigest": {
822
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/execution/properties/commandDigest"
752
823
  },
753
- "size": {
754
- "type": "integer",
755
- "minimum": 0
824
+ "manifestDigest": {
825
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/execution/properties/commandDigest"
756
826
  },
757
- "mode": {
758
- "type": "integer",
759
- "minimum": 0
827
+ "permitIssuedAt": {
828
+ "anyOf": [
829
+ {
830
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/deadlineAt"
831
+ },
832
+ {
833
+ "type": "null"
834
+ }
835
+ ]
760
836
  },
761
- "device": {
762
- "type": "string",
763
- "pattern": "^[0-9]+$"
837
+ "commandStarted": {
838
+ "type": "boolean"
764
839
  },
765
- "inode": {
840
+ "exitCode": {
841
+ "anyOf": [
842
+ {
843
+ "type": "integer",
844
+ "minimum": 0
845
+ },
846
+ {
847
+ "type": "null"
848
+ }
849
+ ]
850
+ },
851
+ "signal": {
852
+ "type": [
853
+ "string",
854
+ "null"
855
+ ]
856
+ },
857
+ "errorCode": {
766
858
  "type": "string",
767
- "pattern": "^[0-9]+$"
859
+ "enum": [
860
+ "permit_timeout",
861
+ "spawn_failed",
862
+ "device_auth_unsupported"
863
+ ]
864
+ },
865
+ "finishedAt": {
866
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/deadlineAt"
768
867
  }
769
868
  },
770
869
  "required": [
771
- "realpath",
772
- "sha256",
773
- "size",
774
- "mode",
775
- "device",
776
- "inode"
870
+ "executionId",
871
+ "commandDigest",
872
+ "manifestDigest",
873
+ "permitIssuedAt",
874
+ "commandStarted",
875
+ "exitCode",
876
+ "signal",
877
+ "finishedAt"
777
878
  ],
778
- "additionalProperties": false
779
- },
780
- "args": {
781
- "type": "array",
782
- "items": {
783
- "type": "string"
784
- }
879
+ "additionalProperties": false,
880
+ "description": "Durable result of the hash-bound native login command, persisted before capability verification."
785
881
  },
786
- "commandDigest": {
787
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/execution/properties/commandDigest"
788
- },
789
- "manifestDigest": {
790
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/execution/properties/commandDigest"
882
+ "terminationReconciliation": {
883
+ "type": "object",
884
+ "properties": {
885
+ "status": {
886
+ "type": "string",
887
+ "const": "empty"
888
+ },
889
+ "observedAt": {
890
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job/properties/deadlineAt"
891
+ }
892
+ },
893
+ "required": [
894
+ "status",
895
+ "observedAt"
896
+ ],
897
+ "additionalProperties": false,
898
+ "description": "Server-owned proof that a previously unconfirmed setup process group is empty."
791
899
  }
792
900
  },
793
901
  "required": [
794
- "executionId",
795
- "executable",
796
- "args",
797
- "commandDigest",
798
- "manifestDigest"
902
+ "jobId",
903
+ "harness",
904
+ "action",
905
+ "state",
906
+ "phase",
907
+ "command",
908
+ "guideUrl",
909
+ "message",
910
+ "createdAt",
911
+ "startedAt",
912
+ "finishedAt"
799
913
  ],
800
914
  "additionalProperties": false,
801
- "description": "Immutable hash-bound command authorized before external handoff."
915
+ "description": "Full authoritative setup-job snapshot at this cursor."
802
916
  },
803
- "nativeCommand": {
804
- "type": "object",
805
- "properties": {
806
- "executionId": {
807
- "type": "string",
808
- "pattern": "^[A-Za-z0-9-]+$"
809
- },
810
- "commandDigest": {
811
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/execution/properties/commandDigest"
812
- },
813
- "manifestDigest": {
814
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/execution/properties/commandDigest"
917
+ "deviceCode": {
918
+ "not": {}
919
+ }
920
+ },
921
+ "required": [
922
+ "jobId",
923
+ "cursor",
924
+ "previousCursor",
925
+ "sequence",
926
+ "time",
927
+ "kind",
928
+ "state",
929
+ "message",
930
+ "job"
931
+ ],
932
+ "additionalProperties": false
933
+ },
934
+ {
935
+ "type": "object",
936
+ "properties": {
937
+ "jobId": {
938
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/jobId"
939
+ },
940
+ "cursor": {
941
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/cursor"
942
+ },
943
+ "previousCursor": {
944
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/previousCursor"
945
+ },
946
+ "sequence": {
947
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/sequence"
948
+ },
949
+ "time": {
950
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/time"
951
+ },
952
+ "kind": {
953
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/kind"
954
+ },
955
+ "state": {
956
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/state"
957
+ },
958
+ "message": {
959
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/message"
960
+ },
961
+ "job": {
962
+ "allOf": [
963
+ {
964
+ "$ref": "#/definitions/ControlSetupJobEvent/anyOf/0/properties/job",
965
+ "description": "One daemon-managed exact-subscription native-login job."
815
966
  },
816
- "permitIssuedAt": {
817
- "anyOf": [
818
- {
819
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/deadlineAt"
967
+ {
968
+ "type": "object",
969
+ "properties": {
970
+ "harness": {
971
+ "type": "string",
972
+ "const": "codex"
820
973
  },
821
- {
822
- "type": "null"
823
- }
824
- ]
825
- },
826
- "commandStarted": {
827
- "type": "boolean"
828
- },
829
- "exitCode": {
830
- "anyOf": [
831
- {
832
- "type": "integer",
833
- "minimum": 0
974
+ "action": {
975
+ "type": "string",
976
+ "const": "login"
834
977
  },
835
- {
836
- "type": "null"
978
+ "state": {
979
+ "type": "string",
980
+ "enum": [
981
+ "queued",
982
+ "running",
983
+ "waiting_for_input"
984
+ ],
985
+ "description": "Lifecycle state of a setup job, including waiting_for_input (needs user confirmation/input) and not_supported."
986
+ },
987
+ "phase": {
988
+ "type": "string",
989
+ "const": "awaiting_user"
837
990
  }
838
- ]
839
- },
840
- "signal": {
841
- "type": [
842
- "string",
843
- "null"
844
- ]
845
- },
846
- "errorCode": {
847
- "type": "string",
848
- "enum": [
849
- "permit_timeout",
850
- "spawn_failed",
851
- "device_auth_unsupported"
852
- ]
853
- },
854
- "finishedAt": {
855
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/deadlineAt"
991
+ },
992
+ "required": [
993
+ "harness",
994
+ "action",
995
+ "state",
996
+ "phase"
997
+ ],
998
+ "additionalProperties": true
856
999
  }
857
- },
858
- "required": [
859
- "executionId",
860
- "commandDigest",
861
- "manifestDigest",
862
- "permitIssuedAt",
863
- "commandStarted",
864
- "exitCode",
865
- "signal",
866
- "finishedAt"
867
1000
  ],
868
- "additionalProperties": false,
869
- "description": "Durable result of the hash-bound native login command, persisted before capability verification."
1001
+ "description": "One daemon-managed exact-subscription native-login job."
870
1002
  },
871
- "terminationReconciliation": {
1003
+ "deviceCode": {
872
1004
  "type": "object",
873
1005
  "properties": {
874
- "status": {
1006
+ "flow": {
1007
+ "type": "string",
1008
+ "enum": [
1009
+ "chatgptDeviceCode",
1010
+ "chatgpt"
1011
+ ]
1012
+ },
1013
+ "verificationUrl": {
875
1014
  "type": "string",
876
- "const": "empty"
1015
+ "format": "uri",
1016
+ "description": "Where the operator completes the sign-in."
877
1017
  },
878
- "observedAt": {
879
- "$ref": "#/definitions/ControlSetupJobEvent/properties/job/properties/deadlineAt"
1018
+ "userCode": {
1019
+ "type": "string",
1020
+ "description": "Transient one-time code (empty for the browser-callback flow); never journaled."
880
1021
  }
881
1022
  },
882
1023
  "required": [
883
- "status",
884
- "observedAt"
1024
+ "flow",
1025
+ "verificationUrl",
1026
+ "userCode"
885
1027
  ],
886
1028
  "additionalProperties": false,
887
- "description": "Server-owned proof that a previously unconfirmed setup process group is empty."
1029
+ "description": "Transient device-code disclosure overlaid at read time from the runner sidecar; never part of the journaled job."
888
1030
  }
889
1031
  },
890
1032
  "required": [
891
1033
  "jobId",
892
- "harness",
893
- "action",
1034
+ "cursor",
1035
+ "previousCursor",
1036
+ "sequence",
1037
+ "time",
1038
+ "kind",
894
1039
  "state",
895
- "phase",
896
- "command",
897
- "guideUrl",
898
1040
  "message",
899
- "createdAt",
900
- "startedAt",
901
- "finishedAt"
902
- ],
903
- "additionalProperties": false,
904
- "description": "Full authoritative setup-job snapshot at this cursor."
905
- },
906
- "deviceCode": {
907
- "type": "object",
908
- "properties": {
909
- "flow": {
910
- "type": "string",
911
- "enum": [
912
- "chatgptDeviceCode",
913
- "chatgpt"
914
- ]
915
- },
916
- "verificationUrl": {
917
- "type": "string",
918
- "format": "uri",
919
- "description": "Where the operator completes the sign-in."
920
- },
921
- "userCode": {
922
- "type": "string",
923
- "description": "Transient one-time code (empty for the browser-callback flow); never journaled."
924
- }
925
- },
926
- "required": [
927
- "flow",
928
- "verificationUrl",
929
- "userCode"
1041
+ "job",
1042
+ "deviceCode"
930
1043
  ],
931
- "additionalProperties": false,
932
- "description": "Transient device-code disclosure overlaid at read time from the runner sidecar; never part of the journaled job."
1044
+ "additionalProperties": false
933
1045
  }
934
- },
935
- "required": [
936
- "jobId",
937
- "cursor",
938
- "previousCursor",
939
- "sequence",
940
- "time",
941
- "kind",
942
- "state",
943
- "message",
944
- "job"
945
1046
  ],
946
- "additionalProperties": false,
947
1047
  "description": "Status event on a setup job's event stream."
948
1048
  }
949
1049
  },