@claudexor/schema 2.1.2 → 3.0.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 (174) hide show
  1. package/dist/agent-capabilities.d.ts +32 -24
  2. package/dist/agent-capabilities.d.ts.map +1 -1
  3. package/dist/agent-capabilities.js +20 -11
  4. package/dist/agent-capabilities.js.map +1 -1
  5. package/dist/apply-eligibility.d.ts +166 -0
  6. package/dist/apply-eligibility.d.ts.map +1 -1
  7. package/dist/apply-eligibility.js +63 -2
  8. package/dist/apply-eligibility.js.map +1 -1
  9. package/dist/attachment.d.ts +5 -5
  10. package/dist/budget.d.ts +4 -4
  11. package/dist/config.d.ts +59 -41
  12. package/dist/config.d.ts.map +1 -1
  13. package/dist/config.js +16 -6
  14. package/dist/config.js.map +1 -1
  15. package/dist/context.d.ts +6 -6
  16. package/dist/control-operation-responses.d.ts +190 -97
  17. package/dist/control-operation-responses.d.ts.map +1 -1
  18. package/dist/control-operation-responses.js +14 -1
  19. package/dist/control-operation-responses.js.map +1 -1
  20. package/dist/control-run-detail.d.ts +380 -215
  21. package/dist/control-run-detail.d.ts.map +1 -1
  22. package/dist/control-run-detail.js +54 -8
  23. package/dist/control-run-detail.js.map +1 -1
  24. package/dist/control-thread-apply.d.ts +5 -5
  25. package/dist/control-trust.d.ts +6 -6
  26. package/dist/control.d.ts +769 -323
  27. package/dist/control.d.ts.map +1 -1
  28. package/dist/control.js +164 -71
  29. package/dist/control.js.map +1 -1
  30. package/dist/credential-profile.d.ts +400 -1
  31. package/dist/credential-profile.d.ts.map +1 -1
  32. package/dist/credential-profile.js +109 -4
  33. package/dist/credential-profile.js.map +1 -1
  34. package/dist/decision.d.ts +78 -14
  35. package/dist/decision.d.ts.map +1 -1
  36. package/dist/decision.js +53 -20
  37. package/dist/decision.js.map +1 -1
  38. package/dist/delivery.d.ts +3 -3
  39. package/dist/delivery.js +1 -1
  40. package/dist/delivery.js.map +1 -1
  41. package/dist/events.d.ts +32 -6
  42. package/dist/events.d.ts.map +1 -1
  43. package/dist/events.js +46 -11
  44. package/dist/events.js.map +1 -1
  45. package/dist/gate.d.ts +4 -4
  46. package/dist/gate.d.ts.map +1 -1
  47. package/dist/gate.js +2 -2
  48. package/dist/gate.js.map +1 -1
  49. package/dist/harness.d.ts +137 -47
  50. package/dist/harness.d.ts.map +1 -1
  51. package/dist/harness.js +65 -16
  52. package/dist/harness.js.map +1 -1
  53. package/dist/index.d.ts +4 -3
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +4 -3
  56. package/dist/index.js.map +1 -1
  57. package/dist/operation.d.ts +66 -7
  58. package/dist/operation.d.ts.map +1 -1
  59. package/dist/operation.js +29 -2
  60. package/dist/operation.js.map +1 -1
  61. package/dist/output-schema.d.ts +40 -0
  62. package/dist/output-schema.d.ts.map +1 -0
  63. package/dist/output-schema.js +109 -0
  64. package/dist/output-schema.js.map +1 -0
  65. package/dist/plan.d.ts +206 -0
  66. package/dist/plan.d.ts.map +1 -0
  67. package/dist/plan.js +107 -0
  68. package/dist/plan.js.map +1 -0
  69. package/dist/primitives.d.ts +14 -10
  70. package/dist/primitives.d.ts.map +1 -1
  71. package/dist/primitives.js +14 -11
  72. package/dist/primitives.js.map +1 -1
  73. package/dist/project.d.ts +75 -0
  74. package/dist/project.d.ts.map +1 -1
  75. package/dist/project.js +17 -0
  76. package/dist/project.js.map +1 -1
  77. package/dist/quota.d.ts +119 -0
  78. package/dist/quota.d.ts.map +1 -1
  79. package/dist/quota.js +22 -0
  80. package/dist/quota.js.map +1 -1
  81. package/dist/raw.d.ts +4 -4
  82. package/dist/readiness.d.ts +14 -7
  83. package/dist/readiness.d.ts.map +1 -1
  84. package/dist/run-strategy.d.ts +17 -0
  85. package/dist/run-strategy.d.ts.map +1 -0
  86. package/dist/run-strategy.js +47 -0
  87. package/dist/run-strategy.js.map +1 -0
  88. package/dist/setup.d.ts +160 -160
  89. package/dist/status-projection.d.ts +78 -0
  90. package/dist/status-projection.d.ts.map +1 -0
  91. package/dist/status-projection.js +171 -0
  92. package/dist/status-projection.js.map +1 -0
  93. package/dist/task.d.ts +48 -316
  94. package/dist/task.d.ts.map +1 -1
  95. package/dist/task.js +3 -60
  96. package/dist/task.js.map +1 -1
  97. package/dist/telemetry.d.ts +89 -89
  98. package/dist/thread.d.ts +167 -32
  99. package/dist/thread.d.ts.map +1 -1
  100. package/dist/thread.js +92 -28
  101. package/dist/thread.js.map +1 -1
  102. package/dist/tool-ref.d.ts +1 -1
  103. package/generated/AgentCapabilityCatalog.schema.json +4 -6
  104. package/generated/ApplyEligibility.schema.json +1 -1
  105. package/generated/BudgetLease.schema.json +1 -2
  106. package/generated/ConformanceReport.schema.json +1 -2
  107. package/generated/ContinuityDisclosure.schema.json +74 -0
  108. package/generated/ControlApplyRequest.schema.json +1 -2
  109. package/generated/ControlCredentialProfileUpdateRequest.schema.json +20 -0
  110. package/generated/ControlCredentialProfileUpdateResponse.schema.json +142 -0
  111. package/generated/ControlCredentialProfilesResponse.schema.json +126 -2
  112. package/generated/ControlDeliveryResponse.schema.json +0 -1
  113. package/generated/ControlHandshakeResponse.schema.json +31 -3
  114. package/generated/ControlHarnessListResponse.schema.json +11 -6
  115. package/generated/ControlHarnessSettingsPatch.schema.json +4 -0
  116. package/generated/ControlOperationCatalog.schema.json +16 -1
  117. package/generated/ControlOperationDescriptor.schema.json +15 -0
  118. package/generated/ControlProject.schema.json +35 -0
  119. package/generated/ControlProjectListResponse.schema.json +35 -0
  120. package/generated/ControlProjectOutputsResponse.schema.json +57 -0
  121. package/generated/ControlQueuedRunInfo.schema.json +2 -11
  122. package/generated/ControlQuotaResponse.schema.json +42 -0
  123. package/generated/ControlRunAgainDraft.schema.json +37 -35
  124. package/generated/ControlRunDecisionRequest.schema.json +0 -1
  125. package/generated/ControlRunDetail.schema.json +305 -213
  126. package/generated/ControlRunListResponse.schema.json +88 -27
  127. package/generated/ControlRunStartRequest.schema.json +37 -35
  128. package/generated/ControlRunStartResponse.schema.json +2 -11
  129. package/generated/ControlRunSummary.schema.json +88 -27
  130. package/generated/ControlSettingsSnapshot.schema.json +6 -11
  131. package/generated/ControlSettingsUpdateRequest.schema.json +5 -10
  132. package/generated/ControlThread.schema.json +21 -3
  133. package/generated/ControlThreadApplyResponse.schema.json +0 -1
  134. package/generated/ControlThreadCreateRequest.schema.json +12 -3
  135. package/generated/ControlThreadDetail.schema.json +174 -16
  136. package/generated/ControlThreadListResponse.schema.json +60 -3
  137. package/generated/ControlThreadTurnRequest.schema.json +40 -34
  138. package/generated/ControlThreadUpdateRequest.schema.json +19 -0
  139. package/generated/DecisionRecord.schema.json +73 -33
  140. package/generated/GateResult.schema.json +1 -2
  141. package/generated/GlobalConfig.schema.json +7 -12
  142. package/generated/HarnessManifest.schema.json +11 -6
  143. package/generated/HarnessStatusDto.schema.json +11 -6
  144. package/generated/LaneCheckpoint.schema.json +59 -0
  145. package/generated/McpRunHandleResult.schema.json +234 -0
  146. package/generated/McpRunToolResult.schema.json +124 -2
  147. package/generated/RoutePrimaryDivergedPayload.schema.json +56 -0
  148. package/generated/RunEvent.schema.json +10 -5
  149. package/generated/RunTelemetry.schema.json +2 -4
  150. package/generated/TaskContract.schema.json +3 -135
  151. package/generated/Thread.schema.json +21 -3
  152. package/generated/ThreadTurn.schema.json +88 -0
  153. package/package.json +2 -2
  154. package/dist/control-spec.d.ts +0 -592
  155. package/dist/control-spec.d.ts.map +0 -1
  156. package/dist/control-spec.js +0 -85
  157. package/dist/control-spec.js.map +0 -1
  158. package/dist/orchestrate.d.ts +0 -556
  159. package/dist/orchestrate.d.ts.map +0 -1
  160. package/dist/orchestrate.js +0 -356
  161. package/dist/orchestrate.js.map +0 -1
  162. package/dist/spec.d.ts +0 -678
  163. package/dist/spec.d.ts.map +0 -1
  164. package/dist/spec.js +0 -186
  165. package/dist/spec.js.map +0 -1
  166. package/generated/ControlSpecAnswersRequest.schema.json +0 -74
  167. package/generated/ControlSpecQuestionsRequest.schema.json +0 -206
  168. package/generated/ControlSpecSession.schema.json +0 -249
  169. package/generated/ControlSpecSessionListResponse.schema.json +0 -261
  170. package/generated/OrchestrateContract.schema.json +0 -119
  171. package/generated/OrchestratePlan.schema.json +0 -264
  172. package/generated/OrchestratePlanProgress.schema.json +0 -164
  173. package/generated/SessionReboundLineage.schema.json +0 -73
  174. package/generated/SpecPack.schema.json +0 -483
@@ -0,0 +1,74 @@
1
+ {
2
+ "$ref": "#/definitions/ContinuityDisclosure",
3
+ "definitions": {
4
+ "ContinuityDisclosure": {
5
+ "type": "object",
6
+ "properties": {
7
+ "kind": {
8
+ "type": "string",
9
+ "enum": [
10
+ "native_resume",
11
+ "packet",
12
+ "fresh"
13
+ ],
14
+ "description": "How a turn's lane was continued: native_resume (the lane's own vendor session already held the delta), packet (a continuation packet hydrated a lane switch/gap), or fresh (nothing to carry — the thread's first turn on any lane)."
15
+ },
16
+ "packet_turns": {
17
+ "type": "integer",
18
+ "minimum": 0,
19
+ "default": 0,
20
+ "description": "Number of delta turns carried in the continuation packet (0 for native_resume/fresh)."
21
+ },
22
+ "summarized": {
23
+ "type": "boolean",
24
+ "default": false,
25
+ "description": "True when the packet collapsed an older prefix to one-line entries (mechanical fallback)."
26
+ },
27
+ "lane_switched_from": {
28
+ "anyOf": [
29
+ {
30
+ "type": "object",
31
+ "properties": {
32
+ "harness_id": {
33
+ "type": "string",
34
+ "minLength": 1,
35
+ "description": "Harness of the prior lane."
36
+ },
37
+ "profile_id": {
38
+ "anyOf": [
39
+ {
40
+ "type": "string",
41
+ "minLength": 1,
42
+ "description": "Non-empty identifier string."
43
+ },
44
+ {
45
+ "type": "null"
46
+ }
47
+ ],
48
+ "description": "Credential profile of the prior lane (null = engine default).",
49
+ "default": null
50
+ }
51
+ },
52
+ "required": [
53
+ "harness_id"
54
+ ],
55
+ "additionalProperties": false,
56
+ "description": "A (harness, profile) lane reference; the null profile is the engine default."
57
+ },
58
+ {
59
+ "type": "null"
60
+ }
61
+ ],
62
+ "description": "The lane this turn switched away from, when the continuation crossed lanes; null otherwise.",
63
+ "default": null
64
+ }
65
+ },
66
+ "required": [
67
+ "kind"
68
+ ],
69
+ "additionalProperties": false,
70
+ "description": "How a turn's lane was continued from the conversation (native resume / continuation packet / fresh), disclosed visibly per INV-137."
71
+ }
72
+ },
73
+ "$schema": "http://json-schema.org/draft-07/schema#"
74
+ }
@@ -48,14 +48,13 @@
48
48
  "mode": {
49
49
  "type": "string",
50
50
  "enum": [
51
- "artifact_only",
52
51
  "apply",
53
52
  "branch",
54
53
  "commit",
55
54
  "pr"
56
55
  ],
57
56
  "default": "apply",
58
- "description": "Delivery mode: artifact_only (export only), apply to the tree, or as a branch, commit, or PR."
57
+ "description": "Delivery mode: apply to the tree, or as a branch, commit, or PR."
59
58
  },
60
59
  "branch": {
61
60
  "type": "string",
@@ -0,0 +1,20 @@
1
+ {
2
+ "$ref": "#/definitions/ControlCredentialProfileUpdateRequest",
3
+ "definitions": {
4
+ "ControlCredentialProfileUpdateRequest": {
5
+ "type": "object",
6
+ "properties": {
7
+ "enabled": {
8
+ "type": "boolean",
9
+ "description": "Whether this credential profile is routable (the Enabled toggle)."
10
+ }
11
+ },
12
+ "required": [
13
+ "enabled"
14
+ ],
15
+ "additionalProperties": false,
16
+ "description": "Request body for PATCH /credential-profiles/:harness/:id."
17
+ }
18
+ },
19
+ "$schema": "http://json-schema.org/draft-07/schema#"
20
+ }
@@ -0,0 +1,142 @@
1
+ {
2
+ "$ref": "#/definitions/ControlCredentialProfileUpdateResponse",
3
+ "definitions": {
4
+ "ControlCredentialProfileUpdateResponse": {
5
+ "type": "object",
6
+ "properties": {
7
+ "profile": {
8
+ "type": "object",
9
+ "properties": {
10
+ "profile_id": {
11
+ "type": "string",
12
+ "minLength": 1,
13
+ "description": "Stable user-chosen profile identifier (unique per harness)."
14
+ },
15
+ "harness_id": {
16
+ "type": "string",
17
+ "minLength": 1,
18
+ "description": "Harness family this profile belongs to."
19
+ },
20
+ "display_name": {
21
+ "type": "string",
22
+ "minLength": 1,
23
+ "description": "Human label shown wherever the profile appears."
24
+ },
25
+ "credential_kind": {
26
+ "type": "string",
27
+ "enum": [
28
+ "config_dir_login",
29
+ "oauth_token",
30
+ "api_key"
31
+ ],
32
+ "description": "Credential transport a profile isolates: a scoped vendor config-dir login, a stored OAuth token, or a stored API key."
33
+ },
34
+ "isolation_locator": {
35
+ "type": [
36
+ "string",
37
+ "null"
38
+ ],
39
+ "default": null,
40
+ "description": "Canonical absolute config-dir path for config_dir_login profiles; null for secret-ref kinds."
41
+ },
42
+ "secret_ref": {
43
+ "type": [
44
+ "string",
45
+ "null"
46
+ ],
47
+ "default": null,
48
+ "description": "Namespaced secret-store name (e.g. claude_oauth:work) for oauth_token/api_key profiles; null for config_dir_login."
49
+ },
50
+ "enabled": {
51
+ "type": "boolean",
52
+ "default": true,
53
+ "description": "Disabled profiles are never routable."
54
+ },
55
+ "created_at": {
56
+ "anyOf": [
57
+ {
58
+ "type": "string",
59
+ "minLength": 1,
60
+ "description": "ISO-8601 timestamp string."
61
+ },
62
+ {
63
+ "type": "null"
64
+ }
65
+ ],
66
+ "description": "When the profile was registered; null for hand-written config entries.",
67
+ "default": null
68
+ }
69
+ },
70
+ "required": [
71
+ "profile_id",
72
+ "harness_id",
73
+ "display_name",
74
+ "credential_kind"
75
+ ],
76
+ "additionalProperties": false,
77
+ "description": "Durable non-secret registry entry for one credential identity of one harness; secret material lives in the vendor dir or the secret store, never here."
78
+ },
79
+ "status": {
80
+ "type": "object",
81
+ "properties": {
82
+ "profile_id": {
83
+ "type": "string",
84
+ "minLength": 1,
85
+ "description": "Non-empty identifier string."
86
+ },
87
+ "harness_id": {
88
+ "$ref": "#/definitions/ControlCredentialProfileUpdateResponse/properties/status/properties/profile_id"
89
+ },
90
+ "availability": {
91
+ "type": "string",
92
+ "enum": [
93
+ "available",
94
+ "unavailable",
95
+ "unknown"
96
+ ]
97
+ },
98
+ "verification": {
99
+ "type": "string",
100
+ "enum": [
101
+ "passed",
102
+ "failed",
103
+ "not_run"
104
+ ]
105
+ },
106
+ "detail": {
107
+ "type": "string",
108
+ "description": "Redacted human-readable probe evidence."
109
+ },
110
+ "last_verified_at": {
111
+ "anyOf": [
112
+ {
113
+ "$ref": "#/definitions/ControlCredentialProfileUpdateResponse/properties/profile/properties/created_at/anyOf/0"
114
+ },
115
+ {
116
+ "type": "null"
117
+ }
118
+ ],
119
+ "description": "When a probe last verified this profile; null = never verified.",
120
+ "default": null
121
+ }
122
+ },
123
+ "required": [
124
+ "profile_id",
125
+ "harness_id",
126
+ "availability",
127
+ "verification"
128
+ ],
129
+ "additionalProperties": false,
130
+ "description": "Doctor-owned readiness projection for one credential profile; never durable config."
131
+ }
132
+ },
133
+ "required": [
134
+ "profile",
135
+ "status"
136
+ ],
137
+ "additionalProperties": false,
138
+ "description": "The updated credential profile with its doctor readiness projection."
139
+ }
140
+ },
141
+ "$schema": "http://json-schema.org/draft-07/schema#"
142
+ }
@@ -133,6 +133,32 @@
133
133
  ],
134
134
  "additionalProperties": false,
135
135
  "description": "Doctor-owned readiness projection for one credential profile; never durable config."
136
+ },
137
+ "identity": {
138
+ "anyOf": [
139
+ {
140
+ "type": "object",
141
+ "properties": {
142
+ "email": {
143
+ "type": "string",
144
+ "minLength": 1,
145
+ "description": "Login email of the account (codex id_token `email` / claude oauthAccount `emailAddress`)."
146
+ },
147
+ "plan": {
148
+ "type": "string",
149
+ "minLength": 1,
150
+ "description": "Subscription/plan label (codex `chatgpt_plan_type` / claude oauthAccount `organizationType`)."
151
+ }
152
+ },
153
+ "additionalProperties": false,
154
+ "description": "Non-secret {email, plan} identity of one account, derived daemon-side from its OWN Claudexor-owned store; never carries token material."
155
+ },
156
+ {
157
+ "type": "null"
158
+ }
159
+ ],
160
+ "description": "Non-secret {email, plan} of this profile, derived daemon-side from its OWN isolation-locator store; null when absent/undisclosed.",
161
+ "default": null
136
162
  }
137
163
  },
138
164
  "required": [
@@ -141,14 +167,112 @@
141
167
  ],
142
168
  "additionalProperties": false
143
169
  },
144
- "description": "Every registered credential profile paired with its doctor readiness projection."
170
+ "description": "Every registered credential profile paired with its doctor readiness projection and non-secret identity."
171
+ },
172
+ "harnessAccounts": {
173
+ "type": "array",
174
+ "items": {
175
+ "type": "object",
176
+ "properties": {
177
+ "harness_id": {
178
+ "type": "string",
179
+ "minLength": 1,
180
+ "description": "Harness family these accounts belong to."
181
+ },
182
+ "native_credentials_enabled": {
183
+ "type": "boolean",
184
+ "description": "Whether the native/CLI login participates in this harness's credential ladder."
185
+ },
186
+ "native_login_detected": {
187
+ "type": "boolean",
188
+ "description": "Whether a native/default vendor login is currently detected available (the CLI login pseudo-row state)."
189
+ },
190
+ "identity": {
191
+ "anyOf": [
192
+ {
193
+ "$ref": "#/definitions/ControlCredentialProfilesResponse/properties/profiles/items/properties/identity/anyOf/0"
194
+ },
195
+ {
196
+ "type": "null"
197
+ }
198
+ ],
199
+ "description": "Non-secret {email, plan} of the native/CLI login, derived daemon-side from the Claudexor-owned native store; null when absent/undisclosed.",
200
+ "default": null
201
+ },
202
+ "next_up": {
203
+ "anyOf": [
204
+ {
205
+ "type": "object",
206
+ "properties": {
207
+ "kind": {
208
+ "type": "string",
209
+ "const": "profile"
210
+ },
211
+ "profileId": {
212
+ "$ref": "#/definitions/ControlCredentialProfilesResponse/properties/profiles/items/properties/status/properties/profile_id"
213
+ }
214
+ },
215
+ "required": [
216
+ "kind",
217
+ "profileId"
218
+ ],
219
+ "additionalProperties": false,
220
+ "description": "An enabled credential profile is who an unpinned run routes to next."
221
+ },
222
+ {
223
+ "type": "object",
224
+ "properties": {
225
+ "kind": {
226
+ "type": "string",
227
+ "const": "native"
228
+ }
229
+ },
230
+ "required": [
231
+ "kind"
232
+ ],
233
+ "additionalProperties": false,
234
+ "description": "The native/CLI login is the default subject of an unpinned run."
235
+ },
236
+ {
237
+ "type": "object",
238
+ "properties": {
239
+ "kind": {
240
+ "type": "string",
241
+ "const": "none"
242
+ },
243
+ "reason": {
244
+ "type": "string"
245
+ }
246
+ },
247
+ "required": [
248
+ "kind",
249
+ "reason"
250
+ ],
251
+ "additionalProperties": false,
252
+ "description": "An unpinned run has nothing routable (the CLI login is disabled and no account is pinned)."
253
+ }
254
+ ],
255
+ "description": "Server-computed identity an unpinned run of this harness would route to next."
256
+ }
257
+ },
258
+ "required": [
259
+ "harness_id",
260
+ "native_credentials_enabled",
261
+ "native_login_detected",
262
+ "next_up"
263
+ ],
264
+ "additionalProperties": false,
265
+ "description": "Per-harness accounts authority: native CLI-login state + the informational next-up identity."
266
+ },
267
+ "default": [],
268
+ "description": "Per-harness accounts authority (INV-135): the native CLI-login pseudo-row state and the server-computed Active identity, so no surface re-derives the accounts symmetry."
145
269
  }
146
270
  },
147
271
  "required": [
148
272
  "profiles"
149
273
  ],
150
274
  "additionalProperties": false,
151
- "description": "Credential-profile registry listing with per-profile doctor readiness."
275
+ "description": "Credential-profile registry listing with per-profile doctor readiness and per-harness accounts authority."
152
276
  }
153
277
  },
154
278
  "$schema": "http://json-schema.org/draft-07/schema#"
@@ -7,7 +7,6 @@
7
7
  "mode": {
8
8
  "type": "string",
9
9
  "enum": [
10
- "artifact_only",
11
10
  "apply",
12
11
  "branch",
13
12
  "commit",
@@ -6,7 +6,7 @@
6
6
  "properties": {
7
7
  "protocolMajor": {
8
8
  "type": "number",
9
- "const": 2
9
+ "const": 3
10
10
  },
11
11
  "compatible": {
12
12
  "type": "boolean",
@@ -15,15 +15,43 @@
15
15
  "operationsPath": {
16
16
  "type": "string",
17
17
  "const": "/v2/operations"
18
+ },
19
+ "engine": {
20
+ "type": "object",
21
+ "properties": {
22
+ "version": {
23
+ "type": "string",
24
+ "minLength": 1,
25
+ "description": "Lockstep workspace version."
26
+ },
27
+ "sha": {
28
+ "type": "string",
29
+ "minLength": 1,
30
+ "description": "Git commit SHA of the build; 'unknown' outside a stamped package or git checkout."
31
+ },
32
+ "entry": {
33
+ "type": "string",
34
+ "minLength": 1,
35
+ "description": "Resolved entry path of the serving process."
36
+ }
37
+ },
38
+ "required": [
39
+ "version",
40
+ "sha",
41
+ "entry"
42
+ ],
43
+ "additionalProperties": false,
44
+ "description": "Build identity of the serving engine."
18
45
  }
19
46
  },
20
47
  "required": [
21
48
  "protocolMajor",
22
49
  "compatible",
23
- "operationsPath"
50
+ "operationsPath",
51
+ "engine"
24
52
  ],
25
53
  "additionalProperties": false,
26
- "description": "Successful v2 control-plane negotiation."
54
+ "description": "Successful control-plane negotiation."
27
55
  }
28
56
  },
29
57
  "$schema": "http://json-schema.org/draft-07/schema#"
@@ -250,11 +250,21 @@
250
250
  "description": "Finite MIME, size, count and transport limits declared by one adapter."
251
251
  },
252
252
  "default": []
253
+ },
254
+ "mcp_injection": {
255
+ "type": "boolean",
256
+ "default": false,
257
+ "description": "The adapter can inject engine-owned MCP servers into the harness sandbox (browser tool, delegation belt); false = extra_mcp_servers and the delegate toggle are refused."
258
+ },
259
+ "mcp_injection_requires_full_access": {
260
+ "type": "boolean",
261
+ "default": false,
262
+ "description": "An injected MCP server can only reach the daemon (belt) at full access; below it the harness sandbox cancels the call. true => --delegate below full access is refused for this harness."
253
263
  }
254
264
  },
255
265
  "additionalProperties": false,
256
266
  "default": {},
257
- "description": "Structured per-harness facts the engine consumes: auth routing, isolation containment, readonly mechanism, and finite attachment inputs."
267
+ "description": "Structured per-harness facts the engine consumes: auth routing, isolation containment, readonly mechanism, finite attachment inputs, and MCP injection."
258
268
  },
259
269
  "capabilities": {
260
270
  "type": "object",
@@ -334,11 +344,6 @@
334
344
  "default": false,
335
345
  "description": "The adapter can surface interactive user questions (interaction_requested events) and deliver typed answers back into the live session."
336
346
  },
337
- "orchestrate": {
338
- "type": "boolean",
339
- "default": false,
340
- "description": "The harness can play the autonomous orchestrate planner intent, planning multi-harness work over the typed tool belt; not a privileged role."
341
- },
342
347
  "json_schema_output": {
343
348
  "type": "boolean",
344
349
  "default": false,
@@ -8,6 +8,10 @@
8
8
  "type": "boolean",
9
9
  "description": "Enable/disable the harness for routing."
10
10
  },
11
+ "nativeCredentialsEnabled": {
12
+ "type": "boolean",
13
+ "description": "Whether the native/CLI login participates in this harness's credential ladder."
14
+ },
11
15
  "defaultModel": {
12
16
  "anyOf": [
13
17
  {
@@ -6,7 +6,7 @@
6
6
  "properties": {
7
7
  "protocolMajor": {
8
8
  "type": "number",
9
- "const": 2
9
+ "const": 3
10
10
  },
11
11
  "operations": {
12
12
  "type": "array",
@@ -31,6 +31,19 @@
31
31
  "type": "string",
32
32
  "pattern": "^\\/v2\\/"
33
33
  },
34
+ "summary": {
35
+ "type": "string",
36
+ "minLength": 1,
37
+ "description": "One-line human summary of the operation."
38
+ },
39
+ "auth": {
40
+ "type": "string",
41
+ "enum": [
42
+ "loopback_bearer",
43
+ "loopback_only"
44
+ ],
45
+ "description": "Auth boundary: loopback + bearer token, or loopback-only."
46
+ },
34
47
  "requestSchema": {
35
48
  "anyOf": [
36
49
  {
@@ -102,6 +115,8 @@
102
115
  "id",
103
116
  "method",
104
117
  "path",
118
+ "summary",
119
+ "auth",
105
120
  "requestSchema",
106
121
  "responseSchema",
107
122
  "errorSchema",
@@ -22,6 +22,19 @@
22
22
  "type": "string",
23
23
  "pattern": "^\\/v2\\/"
24
24
  },
25
+ "summary": {
26
+ "type": "string",
27
+ "minLength": 1,
28
+ "description": "One-line human summary of the operation."
29
+ },
30
+ "auth": {
31
+ "type": "string",
32
+ "enum": [
33
+ "loopback_bearer",
34
+ "loopback_only"
35
+ ],
36
+ "description": "Auth boundary: loopback + bearer token, or loopback-only."
37
+ },
25
38
  "requestSchema": {
26
39
  "anyOf": [
27
40
  {
@@ -93,6 +106,8 @@
93
106
  "id",
94
107
  "method",
95
108
  "path",
109
+ "summary",
110
+ "auth",
96
111
  "requestSchema",
97
112
  "responseSchema",
98
113
  "errorSchema",
@@ -25,6 +25,41 @@
25
25
  },
26
26
  "updatedAt": {
27
27
  "$ref": "#/definitions/ControlProject/properties/createdAt"
28
+ },
29
+ "nesting": {
30
+ "type": "array",
31
+ "items": {
32
+ "type": "object",
33
+ "properties": {
34
+ "relation": {
35
+ "type": "string",
36
+ "enum": [
37
+ "inside",
38
+ "contains"
39
+ ],
40
+ "description": "How this project overlaps the other."
41
+ },
42
+ "root": {
43
+ "type": "string",
44
+ "minLength": 1,
45
+ "description": "The other registered project's root."
46
+ },
47
+ "projectId": {
48
+ "type": "string",
49
+ "minLength": 1,
50
+ "description": "The other registered project's id."
51
+ }
52
+ },
53
+ "required": [
54
+ "relation",
55
+ "root",
56
+ "projectId"
57
+ ],
58
+ "additionalProperties": false,
59
+ "description": "A disclosed (never refused) nesting relation with another registered project."
60
+ },
61
+ "default": [],
62
+ "description": "Disclosed nesting relations with other registered projects (F3) — informational, never a refusal."
28
63
  }
29
64
  },
30
65
  "required": [
@@ -30,6 +30,41 @@
30
30
  },
31
31
  "updatedAt": {
32
32
  "$ref": "#/definitions/ControlProjectListResponse/properties/projects/items/properties/createdAt"
33
+ },
34
+ "nesting": {
35
+ "type": "array",
36
+ "items": {
37
+ "type": "object",
38
+ "properties": {
39
+ "relation": {
40
+ "type": "string",
41
+ "enum": [
42
+ "inside",
43
+ "contains"
44
+ ],
45
+ "description": "How this project overlaps the other."
46
+ },
47
+ "root": {
48
+ "type": "string",
49
+ "minLength": 1,
50
+ "description": "The other registered project's root."
51
+ },
52
+ "projectId": {
53
+ "type": "string",
54
+ "minLength": 1,
55
+ "description": "The other registered project's id."
56
+ }
57
+ },
58
+ "required": [
59
+ "relation",
60
+ "root",
61
+ "projectId"
62
+ ],
63
+ "additionalProperties": false,
64
+ "description": "A disclosed (never refused) nesting relation with another registered project."
65
+ },
66
+ "default": [],
67
+ "description": "Disclosed nesting relations with other registered projects (F3) — informational, never a refusal."
33
68
  }
34
69
  },
35
70
  "required": [