@claudexor/schema 3.1.1 → 3.2.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.
- package/dist/agent-capabilities.d.ts +232 -116
- package/dist/agent-capabilities.d.ts.map +1 -1
- package/dist/agent-capabilities.js +8 -1
- package/dist/agent-capabilities.js.map +1 -1
- package/dist/apply-eligibility.d.ts +513 -222
- package/dist/apply-eligibility.d.ts.map +1 -1
- package/dist/apply-eligibility.js +42 -2
- package/dist/apply-eligibility.js.map +1 -1
- package/dist/attachment.d.ts +17 -17
- package/dist/attachment.d.ts.map +1 -1
- package/dist/attachment.js +1 -1
- package/dist/attachment.js.map +1 -1
- package/dist/auth.d.ts +475 -475
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +1 -1
- package/dist/auth.js.map +1 -1
- package/dist/budget.d.ts +61 -61
- package/dist/budget.d.ts.map +1 -1
- package/dist/budget.js +3 -1
- package/dist/budget.js.map +1 -1
- package/dist/config.d.ts +320 -316
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +26 -19
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +38 -38
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +1 -1
- package/dist/context.js.map +1 -1
- package/dist/control-auth-route.d.ts +46 -0
- package/dist/control-auth-route.d.ts.map +1 -0
- package/dist/control-auth-route.js +24 -0
- package/dist/control-auth-route.js.map +1 -0
- package/dist/control-gc.d.ts +15 -15
- package/dist/control-gc.d.ts.map +1 -1
- package/dist/control-gc.js +1 -1
- package/dist/control-gc.js.map +1 -1
- package/dist/control-harness-list.d.ts +896 -0
- package/dist/control-harness-list.d.ts.map +1 -0
- package/dist/control-harness-list.js +13 -0
- package/dist/control-harness-list.js.map +1 -0
- package/dist/control-operation-responses.d.ts +691 -590
- package/dist/control-operation-responses.d.ts.map +1 -1
- package/dist/control-operation-responses.js +27 -1
- package/dist/control-operation-responses.js.map +1 -1
- package/dist/control-run-detail.d.ts +2663 -920
- package/dist/control-run-detail.d.ts.map +1 -1
- package/dist/control-run-detail.js +13 -1
- package/dist/control-run-detail.js.map +1 -1
- package/dist/control-run-retry.d.ts +18 -18
- package/dist/control-run-retry.d.ts.map +1 -1
- package/dist/control-run-retry.js +1 -1
- package/dist/control-run-retry.js.map +1 -1
- package/dist/control-run-scope.d.ts +2 -2
- package/dist/control-run-scope.d.ts.map +1 -1
- package/dist/control-run-scope.js +1 -1
- package/dist/control-run-scope.js.map +1 -1
- package/dist/control-secret.d.ts +7 -7
- package/dist/control-secret.d.ts.map +1 -1
- package/dist/control-secret.js +1 -1
- package/dist/control-secret.js.map +1 -1
- package/dist/control-thread-apply.d.ts +65 -65
- package/dist/control-thread-apply.d.ts.map +1 -1
- package/dist/control-thread-apply.js +1 -1
- package/dist/control-thread-apply.js.map +1 -1
- package/dist/control-trust.d.ts +23 -23
- package/dist/control-trust.d.ts.map +1 -1
- package/dist/control-trust.js +1 -1
- package/dist/control-trust.js.map +1 -1
- package/dist/control.d.ts +1658 -2225
- package/dist/control.d.ts.map +1 -1
- package/dist/control.js +43 -73
- package/dist/control.js.map +1 -1
- package/dist/credential-profile-snapshot.d.ts +3185 -0
- package/dist/credential-profile-snapshot.d.ts.map +1 -0
- package/dist/credential-profile-snapshot.js +28 -0
- package/dist/credential-profile-snapshot.js.map +1 -0
- package/dist/credential-profile.d.ts +122 -107
- package/dist/credential-profile.d.ts.map +1 -1
- package/dist/credential-profile.js +12 -6
- package/dist/credential-profile.js.map +1 -1
- package/dist/decision.d.ts +122 -117
- package/dist/decision.d.ts.map +1 -1
- package/dist/decision.js +9 -4
- package/dist/decision.js.map +1 -1
- package/dist/deep-scan.d.ts +5 -5
- package/dist/deep-scan.d.ts.map +1 -1
- package/dist/deep-scan.js +1 -1
- package/dist/deep-scan.js.map +1 -1
- package/dist/delegation.d.ts +73 -0
- package/dist/delegation.d.ts.map +1 -0
- package/dist/delegation.js +120 -0
- package/dist/delegation.js.map +1 -0
- package/dist/delivery.d.ts +32 -32
- package/dist/delivery.d.ts.map +1 -1
- package/dist/delivery.js +1 -1
- package/dist/delivery.js.map +1 -1
- package/dist/effort.d.ts +1 -1
- package/dist/effort.d.ts.map +1 -1
- package/dist/effort.js +1 -1
- package/dist/effort.js.map +1 -1
- package/dist/events.d.ts +57 -37
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +23 -1
- package/dist/events.js.map +1 -1
- package/dist/gate.d.ts +7 -7
- package/dist/gate.d.ts.map +1 -1
- package/dist/gate.js +1 -1
- package/dist/gate.js.map +1 -1
- package/dist/git-capability.d.ts +23 -0
- package/dist/git-capability.d.ts.map +1 -0
- package/dist/git-capability.js +15 -0
- package/dist/git-capability.js.map +1 -0
- package/dist/harness.d.ts +409 -409
- package/dist/harness.d.ts.map +1 -1
- package/dist/harness.js +19 -22
- package/dist/harness.js.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/interaction.d.ts +10 -0
- package/dist/interaction.d.ts.map +1 -0
- package/dist/interaction.js +2 -0
- package/dist/interaction.js.map +1 -0
- package/dist/operation.d.ts +113 -113
- package/dist/operation.d.ts.map +1 -1
- package/dist/operation.js +1 -1
- package/dist/operation.js.map +1 -1
- package/dist/output-schema-dialect.d.ts +1 -1
- package/dist/output-schema-dialect.d.ts.map +1 -1
- package/dist/output-schema-dialect.js +1 -1
- package/dist/output-schema-dialect.js.map +1 -1
- package/dist/output-schema.d.ts +2 -2
- package/dist/output-schema.js +2 -2
- package/dist/plan.d.ts +29 -29
- package/dist/plan.d.ts.map +1 -1
- package/dist/plan.js +1 -1
- package/dist/plan.js.map +1 -1
- package/dist/primitives.d.ts +1 -1
- package/dist/primitives.d.ts.map +1 -1
- package/dist/primitives.js +1 -1
- package/dist/primitives.js.map +1 -1
- package/dist/problem.d.ts +6 -6
- package/dist/problem.d.ts.map +1 -1
- package/dist/problem.js +1 -1
- package/dist/problem.js.map +1 -1
- package/dist/project.d.ts +87 -25
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js +21 -1
- package/dist/project.js.map +1 -1
- package/dist/quota.d.ts +48 -48
- package/dist/quota.d.ts.map +1 -1
- package/dist/quota.js +1 -1
- package/dist/quota.js.map +1 -1
- package/dist/raw.d.ts +16 -16
- package/dist/raw.d.ts.map +1 -1
- package/dist/raw.js +1 -1
- package/dist/raw.js.map +1 -1
- package/dist/readiness.d.ts +264 -226
- package/dist/readiness.d.ts.map +1 -1
- package/dist/readiness.js +5 -1
- package/dist/readiness.js.map +1 -1
- package/dist/recovery.d.ts +106 -106
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +1 -1
- package/dist/recovery.js.map +1 -1
- package/dist/request-requirements.d.ts +12 -12
- package/dist/request-requirements.d.ts.map +1 -1
- package/dist/request-requirements.js +3 -2
- package/dist/request-requirements.js.map +1 -1
- package/dist/review.d.ts +29 -29
- package/dist/review.d.ts.map +1 -1
- package/dist/review.js +1 -1
- package/dist/review.js.map +1 -1
- package/dist/route.d.ts +11 -11
- package/dist/route.d.ts.map +1 -1
- package/dist/route.js +1 -1
- package/dist/route.js.map +1 -1
- package/dist/run-applicability.d.ts +764 -0
- package/dist/run-applicability.d.ts.map +1 -0
- package/dist/run-applicability.js +56 -0
- package/dist/run-applicability.js.map +1 -0
- package/dist/run-facts.d.ts +628 -0
- package/dist/run-facts.d.ts.map +1 -0
- package/dist/run-facts.js +429 -0
- package/dist/run-facts.js.map +1 -0
- package/dist/run-strategy.d.ts +40 -0
- package/dist/run-strategy.d.ts.map +1 -1
- package/dist/run-strategy.js +68 -1
- package/dist/run-strategy.js.map +1 -1
- package/dist/setup-device-code-envelope.d.ts +67 -0
- package/dist/setup-device-code-envelope.d.ts.map +1 -0
- package/dist/setup-device-code-envelope.js +25 -0
- package/dist/setup-device-code-envelope.js.map +1 -0
- package/dist/setup-login-protocol.d.ts +6 -0
- package/dist/setup-login-protocol.d.ts.map +1 -0
- package/dist/setup-login-protocol.js +12 -0
- package/dist/setup-login-protocol.js.map +1 -0
- package/dist/setup-transport.d.ts +12 -0
- package/dist/setup-transport.d.ts.map +1 -0
- package/dist/setup-transport.js +22 -0
- package/dist/setup-transport.js.map +1 -0
- package/dist/setup.d.ts +12572 -3749
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +34 -38
- package/dist/setup.js.map +1 -1
- package/dist/status-projection.d.ts +7 -5
- package/dist/status-projection.d.ts.map +1 -1
- package/dist/status-projection.js +11 -6
- package/dist/status-projection.js.map +1 -1
- package/dist/surface-run-controls.d.ts.map +1 -1
- package/dist/surface-run-controls.js +10 -1
- package/dist/surface-run-controls.js.map +1 -1
- package/dist/task.d.ts +331 -289
- package/dist/task.d.ts.map +1 -1
- package/dist/task.js +12 -1
- package/dist/task.js.map +1 -1
- package/dist/telemetry.d.ts +1189 -627
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +13 -13
- package/dist/telemetry.js.map +1 -1
- package/dist/thread.d.ts +128 -84
- package/dist/thread.d.ts.map +1 -1
- package/dist/thread.js +16 -2
- package/dist/thread.js.map +1 -1
- package/dist/tool-ref.d.ts +7 -7
- package/dist/tool-ref.d.ts.map +1 -1
- package/dist/tool-ref.js +1 -1
- package/dist/tool-ref.js.map +1 -1
- package/dist/work-report.d.ts +28 -28
- package/dist/work-report.d.ts.map +1 -1
- package/dist/work-report.js +3 -3
- package/dist/work-report.js.map +1 -1
- package/dist/workproduct.d.ts +6 -9
- package/dist/workproduct.d.ts.map +1 -1
- package/dist/workproduct.js +1 -2
- package/dist/workproduct.js.map +1 -1
- package/dist/workspace.d.ts +14 -14
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +8 -8
- package/dist/workspace.js.map +1 -1
- package/generated/AgentCapabilityCatalog.schema.json +80 -1
- package/generated/ControlCredentialProfilesQueryResponse.schema.json +1333 -0
- package/generated/ControlCredentialProfilesResponse.schema.json +10 -2
- package/generated/ControlCredentialProfilesSnapshotResponse.schema.json +1312 -0
- package/generated/ControlDirectoryEntry.schema.json +36 -0
- package/generated/ControlDirectoryListing.schema.json +77 -0
- package/generated/ControlHarnessListResponse.schema.json +89 -3
- package/generated/ControlRunAgainDraft.schema.json +7 -3
- package/generated/ControlRunApplicabilityResponse.schema.json +217 -0
- package/generated/ControlRunControlResponse.schema.json +8 -0
- package/generated/ControlRunDetail.schema.json +543 -80
- package/generated/ControlRunListResponse.schema.json +104 -11
- package/generated/ControlRunStartRequest.schema.json +7 -3
- package/generated/ControlRunSummary.schema.json +104 -11
- package/generated/ControlSettingsSnapshot.schema.json +12 -3
- package/generated/ControlSettingsUpdateRequest.schema.json +12 -3
- package/generated/ControlSetupJob.schema.json +9 -0
- package/generated/ControlSetupJobCreateRequest.schema.json +9 -0
- package/generated/ControlSetupJobEvent.schema.json +858 -758
- package/generated/ControlSetupJobListResponse.schema.json +9 -0
- package/generated/ControlSetupJobSnapshot.schema.json +811 -736
- package/generated/ControlThreadDetail.schema.json +83 -1
- package/generated/ControlThreadTurnRequest.schema.json +2 -25
- package/generated/DecisionRecord.schema.json +12 -2
- package/generated/GitCapability.schema.json +46 -0
- package/generated/GlobalConfig.schema.json +13 -4
- package/generated/HarnessEvent.schema.json +2 -1
- package/generated/HarnessManifest.schema.json +3 -3
- package/generated/HarnessStatusDto.schema.json +49 -3
- package/generated/McpRunHandleResult.schema.json +237 -2
- package/generated/McpRunToolResult.schema.json +234 -1
- package/generated/OutputReadyPayload.schema.json +44 -0
- package/generated/RunEvent.schema.json +1 -0
- package/generated/RunFacts.schema.json +569 -0
- package/generated/RunFailure.schema.json +4 -3
- package/generated/RunTelemetry.schema.json +553 -4
- package/generated/TaskContract.schema.json +43 -3
- package/generated/ThreadTurn.schema.json +17 -0
- package/generated/WorkProduct.schema.json +0 -4
- package/generated/WorkspaceEnvelope.schema.json +6 -6
- package/package.json +3 -3
|
@@ -0,0 +1,1333 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$ref": "#/definitions/ControlCredentialProfilesQueryResponse",
|
|
3
|
+
"definitions": {
|
|
4
|
+
"ControlCredentialProfilesQueryResponse": {
|
|
5
|
+
"anyOf": [
|
|
6
|
+
{
|
|
7
|
+
"type": "object",
|
|
8
|
+
"properties": {
|
|
9
|
+
"profiles": {
|
|
10
|
+
"type": "array",
|
|
11
|
+
"items": {
|
|
12
|
+
"type": "object",
|
|
13
|
+
"properties": {
|
|
14
|
+
"profile": {
|
|
15
|
+
"type": "object",
|
|
16
|
+
"properties": {
|
|
17
|
+
"profile_id": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"minLength": 1,
|
|
20
|
+
"description": "Stable user-chosen profile identifier (unique per harness)."
|
|
21
|
+
},
|
|
22
|
+
"harness_id": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"minLength": 1,
|
|
25
|
+
"description": "Harness family this profile belongs to."
|
|
26
|
+
},
|
|
27
|
+
"display_name": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"minLength": 1,
|
|
30
|
+
"description": "Human label shown wherever the profile appears."
|
|
31
|
+
},
|
|
32
|
+
"credential_kind": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"enum": [
|
|
35
|
+
"config_dir_login",
|
|
36
|
+
"oauth_token",
|
|
37
|
+
"api_key"
|
|
38
|
+
],
|
|
39
|
+
"description": "Credential transport a profile isolates: a scoped vendor config-dir login, a stored OAuth token, or a stored API key."
|
|
40
|
+
},
|
|
41
|
+
"isolation_locator": {
|
|
42
|
+
"type": [
|
|
43
|
+
"string",
|
|
44
|
+
"null"
|
|
45
|
+
],
|
|
46
|
+
"default": null,
|
|
47
|
+
"description": "Canonical absolute config-dir path for config_dir_login profiles; null for secret-ref kinds."
|
|
48
|
+
},
|
|
49
|
+
"secret_ref": {
|
|
50
|
+
"type": [
|
|
51
|
+
"string",
|
|
52
|
+
"null"
|
|
53
|
+
],
|
|
54
|
+
"default": null,
|
|
55
|
+
"description": "Namespaced secret-store name (e.g. claude_oauth:work) for oauth_token/api_key profiles; null for config_dir_login."
|
|
56
|
+
},
|
|
57
|
+
"enabled": {
|
|
58
|
+
"type": "boolean",
|
|
59
|
+
"default": true,
|
|
60
|
+
"description": "Disabled profiles are never routable."
|
|
61
|
+
},
|
|
62
|
+
"created_at": {
|
|
63
|
+
"anyOf": [
|
|
64
|
+
{
|
|
65
|
+
"type": "string",
|
|
66
|
+
"minLength": 1,
|
|
67
|
+
"description": "ISO-8601 timestamp string."
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"type": "null"
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"description": "When the profile was registered; null for hand-written config entries.",
|
|
74
|
+
"default": null
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"required": [
|
|
78
|
+
"profile_id",
|
|
79
|
+
"harness_id",
|
|
80
|
+
"display_name",
|
|
81
|
+
"credential_kind"
|
|
82
|
+
],
|
|
83
|
+
"additionalProperties": false,
|
|
84
|
+
"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."
|
|
85
|
+
},
|
|
86
|
+
"status": {
|
|
87
|
+
"type": "object",
|
|
88
|
+
"properties": {
|
|
89
|
+
"profile_id": {
|
|
90
|
+
"type": "string",
|
|
91
|
+
"minLength": 1,
|
|
92
|
+
"description": "Non-empty identifier string."
|
|
93
|
+
},
|
|
94
|
+
"harness_id": {
|
|
95
|
+
"$ref": "#/definitions/ControlCredentialProfilesQueryResponse/anyOf/0/properties/profiles/items/properties/status/properties/profile_id"
|
|
96
|
+
},
|
|
97
|
+
"availability": {
|
|
98
|
+
"type": "string",
|
|
99
|
+
"enum": [
|
|
100
|
+
"available",
|
|
101
|
+
"unavailable",
|
|
102
|
+
"unknown"
|
|
103
|
+
]
|
|
104
|
+
},
|
|
105
|
+
"verification": {
|
|
106
|
+
"type": "string",
|
|
107
|
+
"enum": [
|
|
108
|
+
"passed",
|
|
109
|
+
"failed",
|
|
110
|
+
"not_run"
|
|
111
|
+
]
|
|
112
|
+
},
|
|
113
|
+
"detail": {
|
|
114
|
+
"type": "string",
|
|
115
|
+
"description": "Redacted human-readable probe evidence."
|
|
116
|
+
},
|
|
117
|
+
"last_verified_at": {
|
|
118
|
+
"anyOf": [
|
|
119
|
+
{
|
|
120
|
+
"$ref": "#/definitions/ControlCredentialProfilesQueryResponse/anyOf/0/properties/profiles/items/properties/profile/properties/created_at/anyOf/0"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"type": "null"
|
|
124
|
+
}
|
|
125
|
+
],
|
|
126
|
+
"description": "When a probe last verified this profile; null = never verified.",
|
|
127
|
+
"default": null
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
"required": [
|
|
131
|
+
"profile_id",
|
|
132
|
+
"harness_id",
|
|
133
|
+
"availability",
|
|
134
|
+
"verification"
|
|
135
|
+
],
|
|
136
|
+
"additionalProperties": false,
|
|
137
|
+
"description": "Doctor-owned readiness projection for one credential profile; never durable config."
|
|
138
|
+
},
|
|
139
|
+
"identity": {
|
|
140
|
+
"anyOf": [
|
|
141
|
+
{
|
|
142
|
+
"type": "object",
|
|
143
|
+
"properties": {
|
|
144
|
+
"email": {
|
|
145
|
+
"type": "string",
|
|
146
|
+
"minLength": 1,
|
|
147
|
+
"description": "Login email of the account (codex id_token `email` / claude oauthAccount `emailAddress`)."
|
|
148
|
+
},
|
|
149
|
+
"plan": {
|
|
150
|
+
"type": "string",
|
|
151
|
+
"minLength": 1,
|
|
152
|
+
"description": "Subscription/plan label (codex `chatgpt_plan_type` / claude oauthAccount `organizationType`)."
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
"additionalProperties": false,
|
|
156
|
+
"description": "Non-secret {email, plan} identity of one account, derived daemon-side from its OWN Claudexor-owned store; never carries token material."
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"type": "null"
|
|
160
|
+
}
|
|
161
|
+
],
|
|
162
|
+
"description": "Non-secret {email, plan} of this profile, derived daemon-side from its OWN isolation-locator store; null when absent/undisclosed.",
|
|
163
|
+
"default": null
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
"required": [
|
|
167
|
+
"profile",
|
|
168
|
+
"status"
|
|
169
|
+
],
|
|
170
|
+
"additionalProperties": false
|
|
171
|
+
},
|
|
172
|
+
"description": "Every registered credential profile paired with its doctor readiness projection and non-secret identity."
|
|
173
|
+
},
|
|
174
|
+
"harnessAccounts": {
|
|
175
|
+
"type": "array",
|
|
176
|
+
"items": {
|
|
177
|
+
"type": "object",
|
|
178
|
+
"properties": {
|
|
179
|
+
"harness_id": {
|
|
180
|
+
"type": "string",
|
|
181
|
+
"minLength": 1,
|
|
182
|
+
"description": "Harness family these accounts belong to."
|
|
183
|
+
},
|
|
184
|
+
"native_credentials_enabled": {
|
|
185
|
+
"type": "boolean",
|
|
186
|
+
"description": "Whether the native/CLI login participates in this harness's credential ladder."
|
|
187
|
+
},
|
|
188
|
+
"native_login_detected": {
|
|
189
|
+
"type": "boolean",
|
|
190
|
+
"description": "Whether a native/default vendor login is currently detected available (the CLI login pseudo-row state)."
|
|
191
|
+
},
|
|
192
|
+
"identity": {
|
|
193
|
+
"anyOf": [
|
|
194
|
+
{
|
|
195
|
+
"$ref": "#/definitions/ControlCredentialProfilesQueryResponse/anyOf/0/properties/profiles/items/properties/identity/anyOf/0"
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"type": "null"
|
|
199
|
+
}
|
|
200
|
+
],
|
|
201
|
+
"description": "Non-secret {email, plan} of the native/CLI login, derived daemon-side from the Claudexor-owned native store; null when absent/undisclosed.",
|
|
202
|
+
"default": null
|
|
203
|
+
},
|
|
204
|
+
"next_up": {
|
|
205
|
+
"anyOf": [
|
|
206
|
+
{
|
|
207
|
+
"type": "object",
|
|
208
|
+
"properties": {
|
|
209
|
+
"kind": {
|
|
210
|
+
"type": "string",
|
|
211
|
+
"const": "profile"
|
|
212
|
+
},
|
|
213
|
+
"profileId": {
|
|
214
|
+
"$ref": "#/definitions/ControlCredentialProfilesQueryResponse/anyOf/0/properties/profiles/items/properties/status/properties/profile_id"
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
"required": [
|
|
218
|
+
"kind",
|
|
219
|
+
"profileId"
|
|
220
|
+
],
|
|
221
|
+
"additionalProperties": false,
|
|
222
|
+
"description": "An enabled credential profile is who an unpinned run routes to next."
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"type": "object",
|
|
226
|
+
"properties": {
|
|
227
|
+
"kind": {
|
|
228
|
+
"type": "string",
|
|
229
|
+
"const": "native"
|
|
230
|
+
},
|
|
231
|
+
"route": {
|
|
232
|
+
"type": "string",
|
|
233
|
+
"enum": [
|
|
234
|
+
"local_session",
|
|
235
|
+
"api_key"
|
|
236
|
+
],
|
|
237
|
+
"description": "Effective route of the unprofiled/default subject; omitted by older daemons."
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
"required": [
|
|
241
|
+
"kind"
|
|
242
|
+
],
|
|
243
|
+
"additionalProperties": false,
|
|
244
|
+
"description": "The unprofiled/default credential is the subject of an unpinned run."
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"type": "object",
|
|
248
|
+
"properties": {
|
|
249
|
+
"kind": {
|
|
250
|
+
"type": "string",
|
|
251
|
+
"const": "none"
|
|
252
|
+
},
|
|
253
|
+
"reason": {
|
|
254
|
+
"type": "string"
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
"required": [
|
|
258
|
+
"kind",
|
|
259
|
+
"reason"
|
|
260
|
+
],
|
|
261
|
+
"additionalProperties": false,
|
|
262
|
+
"description": "An unpinned run has nothing routable (the default credential is disabled and no account is pinned)."
|
|
263
|
+
}
|
|
264
|
+
],
|
|
265
|
+
"description": "Server-computed identity an unpinned run of this harness would route to next."
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
"required": [
|
|
269
|
+
"harness_id",
|
|
270
|
+
"native_credentials_enabled",
|
|
271
|
+
"native_login_detected",
|
|
272
|
+
"next_up"
|
|
273
|
+
],
|
|
274
|
+
"additionalProperties": false,
|
|
275
|
+
"description": "Per-harness accounts authority: native CLI-login state + the informational next-up identity."
|
|
276
|
+
},
|
|
277
|
+
"default": [],
|
|
278
|
+
"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."
|
|
279
|
+
}
|
|
280
|
+
},
|
|
281
|
+
"required": [
|
|
282
|
+
"profiles"
|
|
283
|
+
],
|
|
284
|
+
"additionalProperties": false,
|
|
285
|
+
"description": "Credential-profile registry listing with per-profile doctor readiness and per-harness accounts authority."
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
"type": "object",
|
|
289
|
+
"properties": {
|
|
290
|
+
"profiles": {
|
|
291
|
+
"$ref": "#/definitions/ControlCredentialProfilesQueryResponse/anyOf/0/properties/profiles"
|
|
292
|
+
},
|
|
293
|
+
"harnessAccounts": {
|
|
294
|
+
"$ref": "#/definitions/ControlCredentialProfilesQueryResponse/anyOf/0/properties/harnessAccounts"
|
|
295
|
+
},
|
|
296
|
+
"harnesses": {
|
|
297
|
+
"type": "array",
|
|
298
|
+
"items": {
|
|
299
|
+
"type": "object",
|
|
300
|
+
"properties": {
|
|
301
|
+
"id": {
|
|
302
|
+
"type": "string",
|
|
303
|
+
"description": "Harness id."
|
|
304
|
+
},
|
|
305
|
+
"status": {
|
|
306
|
+
"type": "string",
|
|
307
|
+
"enum": [
|
|
308
|
+
"ok",
|
|
309
|
+
"degraded",
|
|
310
|
+
"unavailable"
|
|
311
|
+
],
|
|
312
|
+
"description": "Doctor verdict for a harness: ok (usable), degraded (usable with limitations), or unavailable."
|
|
313
|
+
},
|
|
314
|
+
"manifest": {
|
|
315
|
+
"anyOf": [
|
|
316
|
+
{
|
|
317
|
+
"type": "object",
|
|
318
|
+
"properties": {
|
|
319
|
+
"id": {
|
|
320
|
+
"type": "string",
|
|
321
|
+
"minLength": 1,
|
|
322
|
+
"description": "Harness id (codex, claude, cursor, opencode, raw-api, ...)."
|
|
323
|
+
},
|
|
324
|
+
"display_name": {
|
|
325
|
+
"type": "string",
|
|
326
|
+
"description": "Human display name of the harness."
|
|
327
|
+
},
|
|
328
|
+
"kind": {
|
|
329
|
+
"type": "string",
|
|
330
|
+
"enum": [
|
|
331
|
+
"local_cli",
|
|
332
|
+
"remote_api",
|
|
333
|
+
"fake"
|
|
334
|
+
],
|
|
335
|
+
"description": "Kind of harness adapter: a local vendor CLI, a remote API, or a fake used for tests."
|
|
336
|
+
},
|
|
337
|
+
"version": {
|
|
338
|
+
"type": "string",
|
|
339
|
+
"description": "Vendor CLI/API version, when discovered."
|
|
340
|
+
},
|
|
341
|
+
"adapter_version": {
|
|
342
|
+
"type": "string",
|
|
343
|
+
"description": "Version of the Claudexor adapter itself."
|
|
344
|
+
},
|
|
345
|
+
"provider_family": {
|
|
346
|
+
"type": "string",
|
|
347
|
+
"enum": [
|
|
348
|
+
"openai",
|
|
349
|
+
"anthropic",
|
|
350
|
+
"google",
|
|
351
|
+
"cursor",
|
|
352
|
+
"opencode",
|
|
353
|
+
"xai",
|
|
354
|
+
"local",
|
|
355
|
+
"unknown"
|
|
356
|
+
],
|
|
357
|
+
"description": "Vendor/provider family a harness routes to, used for route-diversity reasoning; open-ended via \"unknown\".",
|
|
358
|
+
"default": "unknown"
|
|
359
|
+
},
|
|
360
|
+
"capability_profile": {
|
|
361
|
+
"type": "object",
|
|
362
|
+
"properties": {
|
|
363
|
+
"auth": {
|
|
364
|
+
"type": "object",
|
|
365
|
+
"properties": {
|
|
366
|
+
"supported_sources": {
|
|
367
|
+
"type": "array",
|
|
368
|
+
"items": {
|
|
369
|
+
"type": "string",
|
|
370
|
+
"enum": [
|
|
371
|
+
"native_session",
|
|
372
|
+
"oauth_token_env",
|
|
373
|
+
"api_key_env",
|
|
374
|
+
"api_key_flag",
|
|
375
|
+
"provider_auth_file",
|
|
376
|
+
"none"
|
|
377
|
+
],
|
|
378
|
+
"description": "Concrete credential source used or probed by a harness."
|
|
379
|
+
},
|
|
380
|
+
"default": [],
|
|
381
|
+
"description": "Auth sources this harness supports."
|
|
382
|
+
},
|
|
383
|
+
"preferred_source": {
|
|
384
|
+
"anyOf": [
|
|
385
|
+
{
|
|
386
|
+
"$ref": "#/definitions/ControlCredentialProfilesQueryResponse/anyOf/1/properties/harnesses/items/properties/manifest/anyOf/0/properties/capability_profile/properties/auth/properties/supported_sources/items"
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
"type": "null"
|
|
390
|
+
}
|
|
391
|
+
],
|
|
392
|
+
"description": "Auth source the adapter prefers; null when it has no preference.",
|
|
393
|
+
"default": null
|
|
394
|
+
},
|
|
395
|
+
"credential_transports": {
|
|
396
|
+
"type": "array",
|
|
397
|
+
"items": {
|
|
398
|
+
"type": "object",
|
|
399
|
+
"properties": {
|
|
400
|
+
"source": {
|
|
401
|
+
"$ref": "#/definitions/ControlCredentialProfilesQueryResponse/anyOf/1/properties/harnesses/items/properties/manifest/anyOf/0/properties/capability_profile/properties/auth/properties/supported_sources/items"
|
|
402
|
+
},
|
|
403
|
+
"kind": {
|
|
404
|
+
"type": "string",
|
|
405
|
+
"enum": [
|
|
406
|
+
"config_file",
|
|
407
|
+
"env_var",
|
|
408
|
+
"oauth_token_env",
|
|
409
|
+
"os_keychain",
|
|
410
|
+
"http_header",
|
|
411
|
+
"none"
|
|
412
|
+
],
|
|
413
|
+
"description": "Mechanism that carries a credential to the harness process (config file, env var, OAuth token env, OS keychain, HTTP header, or none)."
|
|
414
|
+
},
|
|
415
|
+
"relocatable_by": {
|
|
416
|
+
"type": "array",
|
|
417
|
+
"items": {
|
|
418
|
+
"type": "string",
|
|
419
|
+
"enum": [
|
|
420
|
+
"HOME",
|
|
421
|
+
"CONFIG_DIR",
|
|
422
|
+
"ENV",
|
|
423
|
+
"none"
|
|
424
|
+
],
|
|
425
|
+
"description": "Which relocation lever moves the credential into a scoped environment (HOME, a config dir override, env injection, or none)."
|
|
426
|
+
},
|
|
427
|
+
"default": [],
|
|
428
|
+
"description": "Relocation levers that can move this transport into a scoped environment."
|
|
429
|
+
}
|
|
430
|
+
},
|
|
431
|
+
"required": [
|
|
432
|
+
"source",
|
|
433
|
+
"kind"
|
|
434
|
+
],
|
|
435
|
+
"additionalProperties": false,
|
|
436
|
+
"description": "How a credential from one auth source physically reaches the harness process."
|
|
437
|
+
},
|
|
438
|
+
"default": [],
|
|
439
|
+
"description": "Declared credential transports per auth source."
|
|
440
|
+
}
|
|
441
|
+
},
|
|
442
|
+
"additionalProperties": false,
|
|
443
|
+
"default": {},
|
|
444
|
+
"description": "Declared auth routing facts for a harness."
|
|
445
|
+
},
|
|
446
|
+
"access_control": {
|
|
447
|
+
"type": "object",
|
|
448
|
+
"properties": {
|
|
449
|
+
"readonly_mechanism": {
|
|
450
|
+
"type": "string",
|
|
451
|
+
"enum": [
|
|
452
|
+
"fs_sandbox",
|
|
453
|
+
"permission_deny",
|
|
454
|
+
"tool_allowlist",
|
|
455
|
+
"none"
|
|
456
|
+
],
|
|
457
|
+
"description": "How read-only access is enforced for a harness: a filesystem sandbox, permission denial, a tool allowlist, or none (read-only intent is advisory).",
|
|
458
|
+
"default": "none"
|
|
459
|
+
}
|
|
460
|
+
},
|
|
461
|
+
"additionalProperties": false,
|
|
462
|
+
"default": {},
|
|
463
|
+
"description": "Declared access-control facts for a harness."
|
|
464
|
+
},
|
|
465
|
+
"isolation": {
|
|
466
|
+
"type": "object",
|
|
467
|
+
"properties": {
|
|
468
|
+
"supported_containment": {
|
|
469
|
+
"type": "array",
|
|
470
|
+
"items": {
|
|
471
|
+
"type": "string",
|
|
472
|
+
"enum": [
|
|
473
|
+
"env_or_file_injection",
|
|
474
|
+
"scoped_home_keychain_bridge",
|
|
475
|
+
"host_user_context",
|
|
476
|
+
"process_sandbox",
|
|
477
|
+
"container"
|
|
478
|
+
],
|
|
479
|
+
"description": "Isolation containment level an adapter supports for run environments, from env/file injection through scoped-HOME keychain bridging to process sandboxes and containers."
|
|
480
|
+
},
|
|
481
|
+
"default": [
|
|
482
|
+
"env_or_file_injection"
|
|
483
|
+
],
|
|
484
|
+
"description": "Containment mechanisms the adapter can run under."
|
|
485
|
+
}
|
|
486
|
+
},
|
|
487
|
+
"additionalProperties": false,
|
|
488
|
+
"default": {},
|
|
489
|
+
"description": "Declared isolation containment facts for a harness."
|
|
490
|
+
},
|
|
491
|
+
"attachment_inputs": {
|
|
492
|
+
"type": "array",
|
|
493
|
+
"items": {
|
|
494
|
+
"type": "object",
|
|
495
|
+
"properties": {
|
|
496
|
+
"kind": {
|
|
497
|
+
"type": "string",
|
|
498
|
+
"enum": [
|
|
499
|
+
"image",
|
|
500
|
+
"file"
|
|
501
|
+
],
|
|
502
|
+
"description": "Kind of attached resource: image input or generic file bytes."
|
|
503
|
+
},
|
|
504
|
+
"mime_types": {
|
|
505
|
+
"type": "array",
|
|
506
|
+
"items": {
|
|
507
|
+
"type": "string",
|
|
508
|
+
"minLength": 1
|
|
509
|
+
},
|
|
510
|
+
"minItems": 1
|
|
511
|
+
},
|
|
512
|
+
"max_bytes": {
|
|
513
|
+
"type": "integer",
|
|
514
|
+
"exclusiveMinimum": 0
|
|
515
|
+
},
|
|
516
|
+
"max_count": {
|
|
517
|
+
"type": "integer",
|
|
518
|
+
"exclusiveMinimum": 0
|
|
519
|
+
},
|
|
520
|
+
"transport": {
|
|
521
|
+
"type": "string",
|
|
522
|
+
"enum": [
|
|
523
|
+
"file_path",
|
|
524
|
+
"base64_stream",
|
|
525
|
+
"base64_inline",
|
|
526
|
+
"text_inline"
|
|
527
|
+
],
|
|
528
|
+
"description": "Native adapter transport used for one supported attachment class."
|
|
529
|
+
}
|
|
530
|
+
},
|
|
531
|
+
"required": [
|
|
532
|
+
"kind",
|
|
533
|
+
"mime_types",
|
|
534
|
+
"max_bytes",
|
|
535
|
+
"max_count",
|
|
536
|
+
"transport"
|
|
537
|
+
],
|
|
538
|
+
"additionalProperties": false,
|
|
539
|
+
"description": "Finite MIME, size, count and transport limits declared by one adapter."
|
|
540
|
+
},
|
|
541
|
+
"default": []
|
|
542
|
+
},
|
|
543
|
+
"mcp_injection": {
|
|
544
|
+
"type": "boolean",
|
|
545
|
+
"default": false,
|
|
546
|
+
"description": "The adapter can inject engine-owned MCP servers into the harness sandbox (browser tool, delegation belt); false = browser MCP is refused and Delegate degrades to ordinary Agent with a durable typed receipt."
|
|
547
|
+
},
|
|
548
|
+
"mcp_injection_requires_full_access": {
|
|
549
|
+
"type": "boolean",
|
|
550
|
+
"default": false,
|
|
551
|
+
"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 degrades to ordinary Agent with a durable typed receipt."
|
|
552
|
+
}
|
|
553
|
+
},
|
|
554
|
+
"additionalProperties": false,
|
|
555
|
+
"default": {},
|
|
556
|
+
"description": "Structured per-harness facts the engine consumes: auth routing, isolation containment, readonly mechanism, finite attachment inputs, and MCP injection."
|
|
557
|
+
},
|
|
558
|
+
"capabilities": {
|
|
559
|
+
"type": "object",
|
|
560
|
+
"properties": {
|
|
561
|
+
"plan": {
|
|
562
|
+
"type": "boolean",
|
|
563
|
+
"default": false,
|
|
564
|
+
"description": "The harness can produce plans (plan intent)."
|
|
565
|
+
},
|
|
566
|
+
"implement": {
|
|
567
|
+
"type": "boolean",
|
|
568
|
+
"default": false,
|
|
569
|
+
"description": "The harness can implement code changes (implement intent)."
|
|
570
|
+
},
|
|
571
|
+
"implementation_transport": {
|
|
572
|
+
"type": "string",
|
|
573
|
+
"enum": [
|
|
574
|
+
"workspace",
|
|
575
|
+
"git_patch_envelope"
|
|
576
|
+
],
|
|
577
|
+
"description": "Typed producer/consumer transport used when implement=true.",
|
|
578
|
+
"default": "workspace"
|
|
579
|
+
},
|
|
580
|
+
"create_from_scratch": {
|
|
581
|
+
"type": "boolean",
|
|
582
|
+
"default": false,
|
|
583
|
+
"description": "The harness can scaffold new projects (create_from_scratch intent)."
|
|
584
|
+
},
|
|
585
|
+
"review": {
|
|
586
|
+
"type": "boolean",
|
|
587
|
+
"default": false,
|
|
588
|
+
"description": "The harness can act as a reviewer (review intent)."
|
|
589
|
+
},
|
|
590
|
+
"verify": {
|
|
591
|
+
"type": "boolean",
|
|
592
|
+
"default": false,
|
|
593
|
+
"description": "The harness can act as the FinalVerifier (verify intent)."
|
|
594
|
+
},
|
|
595
|
+
"synthesize": {
|
|
596
|
+
"type": "boolean",
|
|
597
|
+
"default": false,
|
|
598
|
+
"description": "The harness can synthesize across candidate outputs (synthesize intent)."
|
|
599
|
+
},
|
|
600
|
+
"read_files": {
|
|
601
|
+
"type": "boolean",
|
|
602
|
+
"default": false,
|
|
603
|
+
"description": "The harness can read project files."
|
|
604
|
+
},
|
|
605
|
+
"browser_tool": {
|
|
606
|
+
"type": "boolean",
|
|
607
|
+
"default": false,
|
|
608
|
+
"description": "The adapter can inject a browser-automation MCP server (Playwright MCP) the harness drives as browser_* tools; never injected when web policy is off."
|
|
609
|
+
},
|
|
610
|
+
"web_policy": {
|
|
611
|
+
"type": "string",
|
|
612
|
+
"enum": [
|
|
613
|
+
"native",
|
|
614
|
+
"tools",
|
|
615
|
+
"uncontrolled",
|
|
616
|
+
"none"
|
|
617
|
+
],
|
|
618
|
+
"description": "How a harness can honor the external web policy: native (a native config surface), tools (permissioned tools the adapter can allow/deny), uncontrolled (can reach the web but exposes no enforceable switch), or none (no web access at all).",
|
|
619
|
+
"default": "none"
|
|
620
|
+
},
|
|
621
|
+
"max_turns": {
|
|
622
|
+
"type": "boolean",
|
|
623
|
+
"default": false,
|
|
624
|
+
"description": "Honors HarnessRunSpec.max_turns (e.g. a native --max-turns flag)."
|
|
625
|
+
},
|
|
626
|
+
"tool_lists": {
|
|
627
|
+
"type": "boolean",
|
|
628
|
+
"default": false,
|
|
629
|
+
"description": "Honors tool_permission_policy allow/deny lists (e.g. a native --allowedTools flag)."
|
|
630
|
+
},
|
|
631
|
+
"interactive": {
|
|
632
|
+
"type": "boolean",
|
|
633
|
+
"default": false,
|
|
634
|
+
"description": "The adapter can surface interactive user questions (interaction_requested events) and deliver typed answers back into the live session."
|
|
635
|
+
},
|
|
636
|
+
"json_schema_output": {
|
|
637
|
+
"type": "boolean",
|
|
638
|
+
"default": false,
|
|
639
|
+
"description": "The harness can constrain its final message to a caller-supplied JSON Schema (native structured-output flag)."
|
|
640
|
+
},
|
|
641
|
+
"work_report_transport": {
|
|
642
|
+
"type": "string",
|
|
643
|
+
"enum": [
|
|
644
|
+
"constrained",
|
|
645
|
+
"validated",
|
|
646
|
+
"unsupported"
|
|
647
|
+
],
|
|
648
|
+
"default": "unsupported",
|
|
649
|
+
"description": "How the harness carries the D-16 WorkReport envelope: constrained (native schema transport), validated (instructed terminal metadata), or unsupported (work_state stays unverified)."
|
|
650
|
+
},
|
|
651
|
+
"structured_output_channel": {
|
|
652
|
+
"type": "string",
|
|
653
|
+
"enum": [
|
|
654
|
+
"side_tool",
|
|
655
|
+
"final_message"
|
|
656
|
+
],
|
|
657
|
+
"default": "final_message",
|
|
658
|
+
"description": "Where a schema-constrained answer surfaces: side_tool (rides a tool; final message stays markdown) or final_message (constrains the final message itself)."
|
|
659
|
+
},
|
|
660
|
+
"effort_levels": {
|
|
661
|
+
"type": "array",
|
|
662
|
+
"items": {
|
|
663
|
+
"type": "string",
|
|
664
|
+
"minLength": 1,
|
|
665
|
+
"maxLength": 32,
|
|
666
|
+
"pattern": "^[a-z0-9]+(?:[_-][a-z0-9]+)*$",
|
|
667
|
+
"description": "Cross-harness reasoning-effort level as a lowercase slug (open vocabulary, mirroring the vendor contract); adapters advertise the levels they accept per model, ordered weakest to strongest by the vendor itself, and a shared normalizer passes advertised levels through, clamps inside the vendor order, and refuses levels the advertised ladder has never seen."
|
|
668
|
+
},
|
|
669
|
+
"default": [],
|
|
670
|
+
"description": "Ordered (weakest to strongest) reasoning-effort levels this harness accepts across all its models; empty means effort is not a tunable surface."
|
|
671
|
+
},
|
|
672
|
+
"model_effort_levels": {
|
|
673
|
+
"type": "object",
|
|
674
|
+
"additionalProperties": {
|
|
675
|
+
"type": "object",
|
|
676
|
+
"properties": {
|
|
677
|
+
"levels": {
|
|
678
|
+
"type": "array",
|
|
679
|
+
"items": {
|
|
680
|
+
"$ref": "#/definitions/ControlCredentialProfilesQueryResponse/anyOf/1/properties/harnesses/items/properties/manifest/anyOf/0/properties/capabilities/properties/effort_levels/items"
|
|
681
|
+
},
|
|
682
|
+
"default": [],
|
|
683
|
+
"description": "Ordered (weakest to strongest) reasoning-effort levels this model advertises, in the vendor's own order."
|
|
684
|
+
},
|
|
685
|
+
"default": {
|
|
686
|
+
"anyOf": [
|
|
687
|
+
{
|
|
688
|
+
"$ref": "#/definitions/ControlCredentialProfilesQueryResponse/anyOf/1/properties/harnesses/items/properties/manifest/anyOf/0/properties/capabilities/properties/effort_levels/items"
|
|
689
|
+
},
|
|
690
|
+
{
|
|
691
|
+
"type": "null"
|
|
692
|
+
}
|
|
693
|
+
],
|
|
694
|
+
"description": "The effort level the vendor uses for this model when none is requested.",
|
|
695
|
+
"default": null
|
|
696
|
+
}
|
|
697
|
+
},
|
|
698
|
+
"additionalProperties": false,
|
|
699
|
+
"description": "Reasoning-effort vocabulary a single model advertises."
|
|
700
|
+
},
|
|
701
|
+
"default": {},
|
|
702
|
+
"description": "Per-model advertised reasoning-effort vocabulary keyed by model id; a model absent here falls back to the harness-wide effort_levels union."
|
|
703
|
+
},
|
|
704
|
+
"effort_levels_verified_against": {
|
|
705
|
+
"type": [
|
|
706
|
+
"string",
|
|
707
|
+
"null"
|
|
708
|
+
],
|
|
709
|
+
"default": null,
|
|
710
|
+
"description": "Vendor CLI version the effort ladders were last verified against; null = never verified / not applicable."
|
|
711
|
+
},
|
|
712
|
+
"known_models": {
|
|
713
|
+
"type": "array",
|
|
714
|
+
"items": {
|
|
715
|
+
"anyOf": [
|
|
716
|
+
{
|
|
717
|
+
"type": "string"
|
|
718
|
+
},
|
|
719
|
+
{
|
|
720
|
+
"type": "object",
|
|
721
|
+
"properties": {
|
|
722
|
+
"id": {
|
|
723
|
+
"type": "string",
|
|
724
|
+
"minLength": 1,
|
|
725
|
+
"description": "Model id/alias."
|
|
726
|
+
},
|
|
727
|
+
"routes": {
|
|
728
|
+
"type": "array",
|
|
729
|
+
"items": {
|
|
730
|
+
"type": "string",
|
|
731
|
+
"enum": [
|
|
732
|
+
"local_session",
|
|
733
|
+
"api_key"
|
|
734
|
+
]
|
|
735
|
+
},
|
|
736
|
+
"minItems": 1,
|
|
737
|
+
"description": "Credential routes this model is available on."
|
|
738
|
+
}
|
|
739
|
+
},
|
|
740
|
+
"required": [
|
|
741
|
+
"id",
|
|
742
|
+
"routes"
|
|
743
|
+
],
|
|
744
|
+
"additionalProperties": false
|
|
745
|
+
}
|
|
746
|
+
]
|
|
747
|
+
},
|
|
748
|
+
"default": [],
|
|
749
|
+
"description": "Manifest-declared model ids/aliases this harness accepts (bare string = every credential route; object form scopes a model to specific routes), used as the model truth source when the adapter has no live inventory; explicit models outside the truth source are refused."
|
|
750
|
+
},
|
|
751
|
+
"known_models_verified_against": {
|
|
752
|
+
"type": [
|
|
753
|
+
"string",
|
|
754
|
+
"null"
|
|
755
|
+
],
|
|
756
|
+
"default": null,
|
|
757
|
+
"description": "Vendor CLI version the known_models hints were last verified against; null = never verified / not applicable."
|
|
758
|
+
}
|
|
759
|
+
},
|
|
760
|
+
"additionalProperties": false,
|
|
761
|
+
"description": "Declared harness capabilities the engine actually consumes for intent gating, routing, knob support, and disclosure."
|
|
762
|
+
},
|
|
763
|
+
"auth_modes": {
|
|
764
|
+
"type": "array",
|
|
765
|
+
"items": {
|
|
766
|
+
"type": "string",
|
|
767
|
+
"enum": [
|
|
768
|
+
"local_session",
|
|
769
|
+
"api_key",
|
|
770
|
+
"none"
|
|
771
|
+
]
|
|
772
|
+
},
|
|
773
|
+
"default": [],
|
|
774
|
+
"description": "Auth modes the harness supports (availability only, not readiness)."
|
|
775
|
+
},
|
|
776
|
+
"access_profiles_supported": {
|
|
777
|
+
"type": "array",
|
|
778
|
+
"items": {
|
|
779
|
+
"type": "string",
|
|
780
|
+
"enum": [
|
|
781
|
+
"readonly",
|
|
782
|
+
"workspace_write",
|
|
783
|
+
"full",
|
|
784
|
+
"external_sandbox_full",
|
|
785
|
+
"inherit_native"
|
|
786
|
+
],
|
|
787
|
+
"description": "Filesystem/command access profile for a run: readonly (no writes), workspace_write (writes inside the workspace only), full (unrestricted; requires the per-repo trust allow), external_sandbox_full (full access inside an external sandbox), inherit_native (defer to the harness's own native sandbox settings)."
|
|
788
|
+
},
|
|
789
|
+
"default": [],
|
|
790
|
+
"description": "Access profiles the adapter can enforce."
|
|
791
|
+
}
|
|
792
|
+
},
|
|
793
|
+
"required": [
|
|
794
|
+
"id",
|
|
795
|
+
"display_name",
|
|
796
|
+
"kind",
|
|
797
|
+
"capabilities"
|
|
798
|
+
],
|
|
799
|
+
"additionalProperties": false,
|
|
800
|
+
"description": "Static manifest an adapter declares for its harness: identity, kind, capabilities, auth modes, and access profiles."
|
|
801
|
+
},
|
|
802
|
+
{
|
|
803
|
+
"type": "null"
|
|
804
|
+
}
|
|
805
|
+
],
|
|
806
|
+
"description": "The harness's declared manifest, when available."
|
|
807
|
+
},
|
|
808
|
+
"enabledIntents": {
|
|
809
|
+
"type": "array",
|
|
810
|
+
"items": {
|
|
811
|
+
"type": "string"
|
|
812
|
+
},
|
|
813
|
+
"default": [],
|
|
814
|
+
"description": "Intents the gateway will route to this harness."
|
|
815
|
+
},
|
|
816
|
+
"routableIntents": {
|
|
817
|
+
"type": "array",
|
|
818
|
+
"items": {
|
|
819
|
+
"type": "string"
|
|
820
|
+
},
|
|
821
|
+
"default": [],
|
|
822
|
+
"description": "Intents the harness is actually routable for right now (doctor-gated); the server-side availability truth surfaces must read instead of re-deriving."
|
|
823
|
+
},
|
|
824
|
+
"disabledIntents": {
|
|
825
|
+
"type": "array",
|
|
826
|
+
"items": {
|
|
827
|
+
"type": "string"
|
|
828
|
+
},
|
|
829
|
+
"default": [],
|
|
830
|
+
"description": "Intents the doctor disabled."
|
|
831
|
+
},
|
|
832
|
+
"checks": {
|
|
833
|
+
"type": "array",
|
|
834
|
+
"items": {
|
|
835
|
+
"type": "object",
|
|
836
|
+
"properties": {
|
|
837
|
+
"id": {
|
|
838
|
+
"type": "string",
|
|
839
|
+
"description": "Check id."
|
|
840
|
+
},
|
|
841
|
+
"status": {
|
|
842
|
+
"type": "string",
|
|
843
|
+
"enum": [
|
|
844
|
+
"pass",
|
|
845
|
+
"fail",
|
|
846
|
+
"skip"
|
|
847
|
+
],
|
|
848
|
+
"description": "Outcome of the check: pass, fail, or skip."
|
|
849
|
+
},
|
|
850
|
+
"detail": {
|
|
851
|
+
"type": "string",
|
|
852
|
+
"description": "Human-readable detail for the outcome."
|
|
853
|
+
},
|
|
854
|
+
"duration_ms": {
|
|
855
|
+
"type": "integer",
|
|
856
|
+
"minimum": 0,
|
|
857
|
+
"description": "How long the check took, in milliseconds."
|
|
858
|
+
}
|
|
859
|
+
},
|
|
860
|
+
"required": [
|
|
861
|
+
"id",
|
|
862
|
+
"status"
|
|
863
|
+
],
|
|
864
|
+
"additionalProperties": false,
|
|
865
|
+
"description": "Result of a conformance probe for one capability check."
|
|
866
|
+
},
|
|
867
|
+
"default": [],
|
|
868
|
+
"description": "Doctor probe results."
|
|
869
|
+
},
|
|
870
|
+
"reasons": {
|
|
871
|
+
"type": "array",
|
|
872
|
+
"items": {
|
|
873
|
+
"type": "string"
|
|
874
|
+
},
|
|
875
|
+
"default": [],
|
|
876
|
+
"description": "Human-readable reasons for degraded/unavailable status."
|
|
877
|
+
},
|
|
878
|
+
"authSources": {
|
|
879
|
+
"type": "array",
|
|
880
|
+
"items": {
|
|
881
|
+
"type": "object",
|
|
882
|
+
"properties": {
|
|
883
|
+
"source": {
|
|
884
|
+
"$ref": "#/definitions/ControlCredentialProfilesQueryResponse/anyOf/1/properties/harnesses/items/properties/manifest/anyOf/0/properties/capability_profile/properties/auth/properties/supported_sources/items"
|
|
885
|
+
},
|
|
886
|
+
"availability": {
|
|
887
|
+
"$ref": "#/definitions/ControlCredentialProfilesQueryResponse/anyOf/0/properties/profiles/items/properties/status/properties/availability"
|
|
888
|
+
},
|
|
889
|
+
"verification": {
|
|
890
|
+
"$ref": "#/definitions/ControlCredentialProfilesQueryResponse/anyOf/0/properties/profiles/items/properties/status/properties/verification"
|
|
891
|
+
},
|
|
892
|
+
"detail": {
|
|
893
|
+
"type": "string",
|
|
894
|
+
"description": "Redacted human-readable source evidence."
|
|
895
|
+
}
|
|
896
|
+
},
|
|
897
|
+
"required": [
|
|
898
|
+
"source",
|
|
899
|
+
"availability",
|
|
900
|
+
"verification"
|
|
901
|
+
],
|
|
902
|
+
"additionalProperties": false,
|
|
903
|
+
"description": "Doctor-backed readiness for one exact credential source."
|
|
904
|
+
},
|
|
905
|
+
"default": [],
|
|
906
|
+
"description": "Doctor-backed readiness by authentication source; an empty array means readiness was not reported."
|
|
907
|
+
},
|
|
908
|
+
"readiness": {
|
|
909
|
+
"type": "array",
|
|
910
|
+
"items": {
|
|
911
|
+
"type": "object",
|
|
912
|
+
"properties": {
|
|
913
|
+
"id": {
|
|
914
|
+
"type": "string",
|
|
915
|
+
"description": "Stable machine id of the check (adapter probe id or auth source)."
|
|
916
|
+
},
|
|
917
|
+
"kind": {
|
|
918
|
+
"type": "string",
|
|
919
|
+
"enum": [
|
|
920
|
+
"binary",
|
|
921
|
+
"auth",
|
|
922
|
+
"smoke",
|
|
923
|
+
"model",
|
|
924
|
+
"probe"
|
|
925
|
+
],
|
|
926
|
+
"description": "What KIND of readiness this is: binary presence, credential source, isolated smoke, configured-model validity, or a generic capability probe."
|
|
927
|
+
},
|
|
928
|
+
"title": {
|
|
929
|
+
"type": "string",
|
|
930
|
+
"description": "Human display name of the check."
|
|
931
|
+
},
|
|
932
|
+
"status": {
|
|
933
|
+
"type": "string",
|
|
934
|
+
"enum": [
|
|
935
|
+
"pass",
|
|
936
|
+
"fail",
|
|
937
|
+
"skip"
|
|
938
|
+
],
|
|
939
|
+
"description": "Outcome; skip = not run / not applicable."
|
|
940
|
+
},
|
|
941
|
+
"detail": {
|
|
942
|
+
"type": [
|
|
943
|
+
"string",
|
|
944
|
+
"null"
|
|
945
|
+
],
|
|
946
|
+
"default": null,
|
|
947
|
+
"description": "Redacted human-readable evidence for the outcome."
|
|
948
|
+
}
|
|
949
|
+
},
|
|
950
|
+
"required": [
|
|
951
|
+
"id",
|
|
952
|
+
"kind",
|
|
953
|
+
"title",
|
|
954
|
+
"status"
|
|
955
|
+
],
|
|
956
|
+
"additionalProperties": false,
|
|
957
|
+
"description": "One display-ready readiness check row (daemon-normalized)."
|
|
958
|
+
},
|
|
959
|
+
"default": [],
|
|
960
|
+
"description": "Display-ready readiness checks, daemon-normalized from the raw evidence."
|
|
961
|
+
},
|
|
962
|
+
"configuredModel": {
|
|
963
|
+
"type": [
|
|
964
|
+
"string",
|
|
965
|
+
"null"
|
|
966
|
+
],
|
|
967
|
+
"default": null,
|
|
968
|
+
"description": "The user's configured per-harness default model, if any."
|
|
969
|
+
},
|
|
970
|
+
"configuredModelCheck": {
|
|
971
|
+
"anyOf": [
|
|
972
|
+
{
|
|
973
|
+
"type": "object",
|
|
974
|
+
"properties": {
|
|
975
|
+
"status": {
|
|
976
|
+
"type": "string",
|
|
977
|
+
"enum": [
|
|
978
|
+
"ok",
|
|
979
|
+
"rejected"
|
|
980
|
+
],
|
|
981
|
+
"description": "Whether the configured model passes the strict truth-source check."
|
|
982
|
+
},
|
|
983
|
+
"message": {
|
|
984
|
+
"type": [
|
|
985
|
+
"string",
|
|
986
|
+
"null"
|
|
987
|
+
],
|
|
988
|
+
"default": null,
|
|
989
|
+
"description": "Actionable rejection message, when rejected."
|
|
990
|
+
}
|
|
991
|
+
},
|
|
992
|
+
"required": [
|
|
993
|
+
"status"
|
|
994
|
+
],
|
|
995
|
+
"additionalProperties": false
|
|
996
|
+
},
|
|
997
|
+
{
|
|
998
|
+
"type": "null"
|
|
999
|
+
}
|
|
1000
|
+
],
|
|
1001
|
+
"default": null,
|
|
1002
|
+
"description": "Strict truth-source check of configuredModel; null when no model is configured."
|
|
1003
|
+
},
|
|
1004
|
+
"delegation": {
|
|
1005
|
+
"anyOf": [
|
|
1006
|
+
{
|
|
1007
|
+
"type": "object",
|
|
1008
|
+
"properties": {
|
|
1009
|
+
"available": {
|
|
1010
|
+
"type": "boolean",
|
|
1011
|
+
"description": "Whether this harness can receive the packaged delegation belt."
|
|
1012
|
+
},
|
|
1013
|
+
"reason": {
|
|
1014
|
+
"type": "string",
|
|
1015
|
+
"enum": [
|
|
1016
|
+
"ready",
|
|
1017
|
+
"runtime_unavailable",
|
|
1018
|
+
"manifest_unsupported"
|
|
1019
|
+
],
|
|
1020
|
+
"description": "Stable reason for the current delegation capability verdict."
|
|
1021
|
+
},
|
|
1022
|
+
"remediation": {
|
|
1023
|
+
"type": [
|
|
1024
|
+
"string",
|
|
1025
|
+
"null"
|
|
1026
|
+
],
|
|
1027
|
+
"default": null,
|
|
1028
|
+
"description": "Concrete update/repair guidance when unavailable; null when ready."
|
|
1029
|
+
},
|
|
1030
|
+
"requiresFullAccess": {
|
|
1031
|
+
"type": "boolean",
|
|
1032
|
+
"default": false,
|
|
1033
|
+
"description": "Whether this harness can reach the belt only under a full-access profile."
|
|
1034
|
+
}
|
|
1035
|
+
},
|
|
1036
|
+
"required": [
|
|
1037
|
+
"available",
|
|
1038
|
+
"reason"
|
|
1039
|
+
],
|
|
1040
|
+
"additionalProperties": false,
|
|
1041
|
+
"description": "Engine-owned Delegate capability projection for one harness and installed runtime."
|
|
1042
|
+
},
|
|
1043
|
+
{
|
|
1044
|
+
"type": "null"
|
|
1045
|
+
}
|
|
1046
|
+
],
|
|
1047
|
+
"description": "Engine-owned Delegate capability for this harness and installed runtime; null on legacy status rows.",
|
|
1048
|
+
"default": null
|
|
1049
|
+
}
|
|
1050
|
+
},
|
|
1051
|
+
"required": [
|
|
1052
|
+
"id",
|
|
1053
|
+
"status"
|
|
1054
|
+
],
|
|
1055
|
+
"additionalProperties": false,
|
|
1056
|
+
"description": "Doctor-backed status row for one harness: status, intents, checks, and configured-model validity."
|
|
1057
|
+
},
|
|
1058
|
+
"description": "Fresh harness readiness used for the account next-up projection."
|
|
1059
|
+
},
|
|
1060
|
+
"git": {
|
|
1061
|
+
"type": "object",
|
|
1062
|
+
"properties": {
|
|
1063
|
+
"status": {
|
|
1064
|
+
"type": "string",
|
|
1065
|
+
"enum": [
|
|
1066
|
+
"available",
|
|
1067
|
+
"missing",
|
|
1068
|
+
"developer_tools_stub",
|
|
1069
|
+
"failed"
|
|
1070
|
+
]
|
|
1071
|
+
},
|
|
1072
|
+
"version": {
|
|
1073
|
+
"type": [
|
|
1074
|
+
"string",
|
|
1075
|
+
"null"
|
|
1076
|
+
]
|
|
1077
|
+
},
|
|
1078
|
+
"detail": {
|
|
1079
|
+
"type": [
|
|
1080
|
+
"string",
|
|
1081
|
+
"null"
|
|
1082
|
+
]
|
|
1083
|
+
},
|
|
1084
|
+
"remediation": {
|
|
1085
|
+
"type": [
|
|
1086
|
+
"string",
|
|
1087
|
+
"null"
|
|
1088
|
+
]
|
|
1089
|
+
}
|
|
1090
|
+
},
|
|
1091
|
+
"required": [
|
|
1092
|
+
"status",
|
|
1093
|
+
"version",
|
|
1094
|
+
"detail",
|
|
1095
|
+
"remediation"
|
|
1096
|
+
],
|
|
1097
|
+
"additionalProperties": false,
|
|
1098
|
+
"description": "Git readiness from the same Accounts refresh cycle."
|
|
1099
|
+
},
|
|
1100
|
+
"quota": {
|
|
1101
|
+
"type": "object",
|
|
1102
|
+
"properties": {
|
|
1103
|
+
"snapshots": {
|
|
1104
|
+
"type": "array",
|
|
1105
|
+
"items": {
|
|
1106
|
+
"type": "object",
|
|
1107
|
+
"properties": {
|
|
1108
|
+
"subject": {
|
|
1109
|
+
"type": "object",
|
|
1110
|
+
"properties": {
|
|
1111
|
+
"harness": {
|
|
1112
|
+
"$ref": "#/definitions/ControlCredentialProfilesQueryResponse/anyOf/0/properties/profiles/items/properties/status/properties/profile_id"
|
|
1113
|
+
},
|
|
1114
|
+
"credential_route": {
|
|
1115
|
+
"type": "string",
|
|
1116
|
+
"enum": [
|
|
1117
|
+
"vendor_native",
|
|
1118
|
+
"managed_api_key",
|
|
1119
|
+
"local"
|
|
1120
|
+
]
|
|
1121
|
+
},
|
|
1122
|
+
"plan_label": {
|
|
1123
|
+
"type": [
|
|
1124
|
+
"string",
|
|
1125
|
+
"null"
|
|
1126
|
+
],
|
|
1127
|
+
"default": null
|
|
1128
|
+
},
|
|
1129
|
+
"subject_id": {
|
|
1130
|
+
"type": [
|
|
1131
|
+
"string",
|
|
1132
|
+
"null"
|
|
1133
|
+
],
|
|
1134
|
+
"default": null
|
|
1135
|
+
}
|
|
1136
|
+
},
|
|
1137
|
+
"required": [
|
|
1138
|
+
"harness",
|
|
1139
|
+
"credential_route"
|
|
1140
|
+
],
|
|
1141
|
+
"additionalProperties": false,
|
|
1142
|
+
"description": "Quota owner and credential route; subject_id is the credential-profile id (null = the engine-default credential)."
|
|
1143
|
+
},
|
|
1144
|
+
"constraints": {
|
|
1145
|
+
"type": "array",
|
|
1146
|
+
"items": {
|
|
1147
|
+
"type": "object",
|
|
1148
|
+
"properties": {
|
|
1149
|
+
"id": {
|
|
1150
|
+
"$ref": "#/definitions/ControlCredentialProfilesQueryResponse/anyOf/0/properties/profiles/items/properties/status/properties/profile_id"
|
|
1151
|
+
},
|
|
1152
|
+
"label": {
|
|
1153
|
+
"type": "string",
|
|
1154
|
+
"minLength": 1
|
|
1155
|
+
},
|
|
1156
|
+
"used_ratio": {
|
|
1157
|
+
"anyOf": [
|
|
1158
|
+
{
|
|
1159
|
+
"type": "number",
|
|
1160
|
+
"minimum": 0,
|
|
1161
|
+
"maximum": 1
|
|
1162
|
+
},
|
|
1163
|
+
{
|
|
1164
|
+
"type": "null"
|
|
1165
|
+
}
|
|
1166
|
+
]
|
|
1167
|
+
},
|
|
1168
|
+
"window_seconds": {
|
|
1169
|
+
"anyOf": [
|
|
1170
|
+
{
|
|
1171
|
+
"type": "number",
|
|
1172
|
+
"exclusiveMinimum": 0
|
|
1173
|
+
},
|
|
1174
|
+
{
|
|
1175
|
+
"type": "null"
|
|
1176
|
+
}
|
|
1177
|
+
]
|
|
1178
|
+
},
|
|
1179
|
+
"resets_at": {
|
|
1180
|
+
"anyOf": [
|
|
1181
|
+
{
|
|
1182
|
+
"type": "string",
|
|
1183
|
+
"format": "date-time"
|
|
1184
|
+
},
|
|
1185
|
+
{
|
|
1186
|
+
"type": "null"
|
|
1187
|
+
}
|
|
1188
|
+
]
|
|
1189
|
+
},
|
|
1190
|
+
"cooldown_until": {
|
|
1191
|
+
"anyOf": [
|
|
1192
|
+
{
|
|
1193
|
+
"type": "string",
|
|
1194
|
+
"format": "date-time"
|
|
1195
|
+
},
|
|
1196
|
+
{
|
|
1197
|
+
"type": "null"
|
|
1198
|
+
}
|
|
1199
|
+
],
|
|
1200
|
+
"default": null
|
|
1201
|
+
}
|
|
1202
|
+
},
|
|
1203
|
+
"required": [
|
|
1204
|
+
"id",
|
|
1205
|
+
"label",
|
|
1206
|
+
"used_ratio",
|
|
1207
|
+
"window_seconds",
|
|
1208
|
+
"resets_at"
|
|
1209
|
+
],
|
|
1210
|
+
"additionalProperties": false,
|
|
1211
|
+
"description": "One independent vendor quota window; null usage stays unknown."
|
|
1212
|
+
}
|
|
1213
|
+
},
|
|
1214
|
+
"source": {
|
|
1215
|
+
"type": "string",
|
|
1216
|
+
"enum": [
|
|
1217
|
+
"codex_app_server",
|
|
1218
|
+
"codex_rollout",
|
|
1219
|
+
"claude_statusline",
|
|
1220
|
+
"claude_api_retry",
|
|
1221
|
+
"claude_oauth_usage"
|
|
1222
|
+
],
|
|
1223
|
+
"description": "Vendor-owned machine-readable source of a quota snapshot."
|
|
1224
|
+
},
|
|
1225
|
+
"observed_at": {
|
|
1226
|
+
"type": "string",
|
|
1227
|
+
"format": "date-time"
|
|
1228
|
+
},
|
|
1229
|
+
"freshness": {
|
|
1230
|
+
"type": "string",
|
|
1231
|
+
"enum": [
|
|
1232
|
+
"fresh",
|
|
1233
|
+
"stale",
|
|
1234
|
+
"unknown"
|
|
1235
|
+
],
|
|
1236
|
+
"description": "Freshness of a quota snapshot at read time."
|
|
1237
|
+
}
|
|
1238
|
+
},
|
|
1239
|
+
"required": [
|
|
1240
|
+
"subject",
|
|
1241
|
+
"constraints",
|
|
1242
|
+
"source",
|
|
1243
|
+
"observed_at",
|
|
1244
|
+
"freshness"
|
|
1245
|
+
],
|
|
1246
|
+
"additionalProperties": false,
|
|
1247
|
+
"description": "All independently reported quota windows for one vendor-owned subject."
|
|
1248
|
+
}
|
|
1249
|
+
},
|
|
1250
|
+
"absences": {
|
|
1251
|
+
"type": "array",
|
|
1252
|
+
"items": {
|
|
1253
|
+
"type": "object",
|
|
1254
|
+
"properties": {
|
|
1255
|
+
"subject": {
|
|
1256
|
+
"$ref": "#/definitions/ControlCredentialProfilesQueryResponse/anyOf/1/properties/quota/properties/snapshots/items/properties/subject"
|
|
1257
|
+
},
|
|
1258
|
+
"reason": {
|
|
1259
|
+
"type": "string",
|
|
1260
|
+
"enum": [
|
|
1261
|
+
"not_logged_in",
|
|
1262
|
+
"transport_unavailable",
|
|
1263
|
+
"platform_unsupported",
|
|
1264
|
+
"refresh_failed",
|
|
1265
|
+
"no_source"
|
|
1266
|
+
],
|
|
1267
|
+
"description": "Why a registered subject has no quota snapshot, in the source's own vocabulary."
|
|
1268
|
+
},
|
|
1269
|
+
"detail": {
|
|
1270
|
+
"type": [
|
|
1271
|
+
"string",
|
|
1272
|
+
"null"
|
|
1273
|
+
],
|
|
1274
|
+
"default": null
|
|
1275
|
+
},
|
|
1276
|
+
"observed_at": {
|
|
1277
|
+
"type": "string",
|
|
1278
|
+
"format": "date-time"
|
|
1279
|
+
}
|
|
1280
|
+
},
|
|
1281
|
+
"required": [
|
|
1282
|
+
"subject",
|
|
1283
|
+
"reason",
|
|
1284
|
+
"observed_at"
|
|
1285
|
+
],
|
|
1286
|
+
"additionalProperties": false,
|
|
1287
|
+
"description": "A registered subject's typed missing-snapshot — absence is stated, never inferred."
|
|
1288
|
+
},
|
|
1289
|
+
"default": [],
|
|
1290
|
+
"description": "Every registered subject reports either a snapshot or a typed absence — absence is never silent emptiness (zen: absence ≠ empty)."
|
|
1291
|
+
},
|
|
1292
|
+
"refreshed_at": {
|
|
1293
|
+
"anyOf": [
|
|
1294
|
+
{
|
|
1295
|
+
"type": "string",
|
|
1296
|
+
"format": "date-time"
|
|
1297
|
+
},
|
|
1298
|
+
{
|
|
1299
|
+
"type": "null"
|
|
1300
|
+
}
|
|
1301
|
+
]
|
|
1302
|
+
}
|
|
1303
|
+
},
|
|
1304
|
+
"required": [
|
|
1305
|
+
"snapshots",
|
|
1306
|
+
"refreshed_at"
|
|
1307
|
+
],
|
|
1308
|
+
"additionalProperties": false,
|
|
1309
|
+
"description": "Fresh quota response used to compute next-up in this exact Accounts snapshot epoch."
|
|
1310
|
+
},
|
|
1311
|
+
"quotaEventCursor": {
|
|
1312
|
+
"type": "string",
|
|
1313
|
+
"minLength": 1,
|
|
1314
|
+
"maxLength": 4096,
|
|
1315
|
+
"description": "Opaque global-journal cursor fencing the returned quota response; pass it verbatim as Last-Event-ID only for the dedicated quota event observer, never the general stream."
|
|
1316
|
+
}
|
|
1317
|
+
},
|
|
1318
|
+
"required": [
|
|
1319
|
+
"profiles",
|
|
1320
|
+
"harnesses",
|
|
1321
|
+
"git",
|
|
1322
|
+
"quota",
|
|
1323
|
+
"quotaEventCursor"
|
|
1324
|
+
],
|
|
1325
|
+
"additionalProperties": false,
|
|
1326
|
+
"description": "Atomic Accounts snapshot: profiles, next-up authority, fresh harness readiness, Git capability, and quota from one server-authored epoch."
|
|
1327
|
+
}
|
|
1328
|
+
],
|
|
1329
|
+
"description": "Legacy credential-profile listing or the opt-in atomic Accounts snapshot."
|
|
1330
|
+
}
|
|
1331
|
+
},
|
|
1332
|
+
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
1333
|
+
}
|