@claudexor/schema 2.0.0 → 2.1.1

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 (128) hide show
  1. package/dist/agent-capabilities.d.ts +24 -24
  2. package/dist/attachment.d.ts +13 -13
  3. package/dist/auth.d.ts +21 -0
  4. package/dist/auth.d.ts.map +1 -1
  5. package/dist/auth.js +54 -0
  6. package/dist/auth.js.map +1 -1
  7. package/dist/budget.d.ts +17 -5
  8. package/dist/budget.d.ts.map +1 -1
  9. package/dist/budget.js +15 -0
  10. package/dist/budget.js.map +1 -1
  11. package/dist/config.d.ts +380 -20
  12. package/dist/config.d.ts.map +1 -1
  13. package/dist/config.js +81 -0
  14. package/dist/config.js.map +1 -1
  15. package/dist/control-gc.d.ts +185 -0
  16. package/dist/control-gc.d.ts.map +1 -0
  17. package/dist/control-gc.js +81 -0
  18. package/dist/control-gc.js.map +1 -0
  19. package/dist/control-operation-responses.d.ts +155 -29
  20. package/dist/control-operation-responses.d.ts.map +1 -1
  21. package/dist/control-run-detail.d.ts +140 -32
  22. package/dist/control-run-detail.d.ts.map +1 -1
  23. package/dist/control-spec.d.ts +6 -6
  24. package/dist/control-thread-apply.d.ts +2 -2
  25. package/dist/control.d.ts +427 -586
  26. package/dist/control.d.ts.map +1 -1
  27. package/dist/control.js +155 -54
  28. package/dist/control.js.map +1 -1
  29. package/dist/credential-profile.d.ts +454 -0
  30. package/dist/credential-profile.d.ts.map +1 -0
  31. package/dist/credential-profile.js +140 -0
  32. package/dist/credential-profile.js.map +1 -0
  33. package/dist/events.d.ts +20 -6
  34. package/dist/events.d.ts.map +1 -1
  35. package/dist/events.js +22 -0
  36. package/dist/events.js.map +1 -1
  37. package/dist/gate.d.ts +3 -3
  38. package/dist/harness.d.ts +243 -88
  39. package/dist/harness.d.ts.map +1 -1
  40. package/dist/harness.js +124 -46
  41. package/dist/harness.js.map +1 -1
  42. package/dist/index.d.ts +4 -0
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +4 -0
  45. package/dist/index.js.map +1 -1
  46. package/dist/orchestrate.d.ts +23 -0
  47. package/dist/orchestrate.d.ts.map +1 -1
  48. package/dist/orchestrate.js +56 -0
  49. package/dist/orchestrate.js.map +1 -1
  50. package/dist/project.d.ts +2 -2
  51. package/dist/quota.d.ts +27 -9
  52. package/dist/quota.d.ts.map +1 -1
  53. package/dist/quota.js +14 -2
  54. package/dist/quota.js.map +1 -1
  55. package/dist/readiness.d.ts +596 -0
  56. package/dist/readiness.d.ts.map +1 -0
  57. package/dist/readiness.js +87 -0
  58. package/dist/readiness.js.map +1 -0
  59. package/dist/request-requirements.d.ts +8 -8
  60. package/dist/request-requirements.d.ts.map +1 -1
  61. package/dist/request-requirements.js +4 -1
  62. package/dist/request-requirements.js.map +1 -1
  63. package/dist/route.d.ts +4 -4
  64. package/dist/setup.d.ts +69 -24
  65. package/dist/setup.d.ts.map +1 -1
  66. package/dist/setup.js +25 -0
  67. package/dist/setup.js.map +1 -1
  68. package/dist/spec.d.ts +4 -4
  69. package/dist/task.d.ts +99 -4
  70. package/dist/task.d.ts.map +1 -1
  71. package/dist/task.js +48 -1
  72. package/dist/task.js.map +1 -1
  73. package/dist/telemetry.d.ts +309 -67
  74. package/dist/telemetry.d.ts.map +1 -1
  75. package/dist/telemetry.js +97 -1
  76. package/dist/telemetry.js.map +1 -1
  77. package/dist/thread.d.ts +26 -15
  78. package/dist/thread.d.ts.map +1 -1
  79. package/dist/thread.js +11 -0
  80. package/dist/thread.js.map +1 -1
  81. package/dist/tool-ref.d.ts +45 -0
  82. package/dist/tool-ref.d.ts.map +1 -0
  83. package/dist/tool-ref.js +45 -0
  84. package/dist/tool-ref.js.map +1 -0
  85. package/dist/workspace.d.ts +2 -2
  86. package/generated/BudgetObservation.schema.json +16 -0
  87. package/generated/ControlCredentialProfileCreateRequest.schema.json +32 -0
  88. package/generated/ControlCredentialProfileCreateResponse.schema.json +142 -0
  89. package/generated/ControlCredentialProfileDeleteResponse.schema.json +107 -0
  90. package/generated/ControlCredentialProfilesResponse.schema.json +155 -0
  91. package/generated/ControlGcReceipt.schema.json +170 -0
  92. package/generated/ControlGcRequest.schema.json +18 -0
  93. package/generated/ControlHarnessListResponse.schema.json +95 -2
  94. package/generated/ControlHarnessModelsResponse.schema.json +19 -0
  95. package/generated/ControlHarnessSettingsPatch.schema.json +9 -0
  96. package/generated/ControlQuotaResponse.schema.json +3 -2
  97. package/generated/ControlRunAgainDraft.schema.json +40 -0
  98. package/generated/ControlRunDetail.schema.json +178 -6
  99. package/generated/ControlRunListResponse.schema.json +174 -3
  100. package/generated/ControlRunStartRequest.schema.json +40 -0
  101. package/generated/ControlRunSummary.schema.json +174 -3
  102. package/generated/ControlSettingsSnapshot.schema.json +10 -0
  103. package/generated/ControlSettingsUpdateRequest.schema.json +9 -0
  104. package/generated/ControlSetupJob.schema.json +8 -0
  105. package/generated/ControlSetupJobCreateRequest.schema.json +5 -0
  106. package/generated/ControlSetupJobEvent.schema.json +8 -0
  107. package/generated/ControlSetupJobListResponse.schema.json +8 -0
  108. package/generated/ControlSetupJobSnapshot.schema.json +8 -0
  109. package/generated/ControlThread.schema.json +16 -4
  110. package/generated/ControlThreadCreateRequest.schema.json +6 -2
  111. package/generated/ControlThreadDetail.schema.json +32 -8
  112. package/generated/ControlThreadListResponse.schema.json +16 -4
  113. package/generated/ControlThreadTurnRequest.schema.json +40 -0
  114. package/generated/ControlThreadUpdateRequest.schema.json +11 -0
  115. package/generated/CredentialProfile.schema.json +78 -0
  116. package/generated/CredentialProfileStatus.schema.json +61 -0
  117. package/generated/GlobalConfig.schema.json +136 -0
  118. package/generated/HarnessEvent.schema.json +62 -5
  119. package/generated/HarnessManifest.schema.json +33 -2
  120. package/generated/HarnessModel.schema.json +19 -0
  121. package/generated/HarnessStatusDto.schema.json +95 -2
  122. package/generated/RunEvent.schema.json +3 -0
  123. package/generated/RunTelemetry.schema.json +202 -2
  124. package/generated/Session.schema.json +14 -0
  125. package/generated/TaskContract.schema.json +65 -4
  126. package/generated/Thread.schema.json +17 -5
  127. package/generated/ThreadHeadPing.schema.json +40 -0
  128. package/package.json +3 -2
@@ -0,0 +1,142 @@
1
+ {
2
+ "$ref": "#/definitions/ControlCredentialProfileCreateResponse",
3
+ "definitions": {
4
+ "ControlCredentialProfileCreateResponse": {
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/ControlCredentialProfileCreateResponse/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/ControlCredentialProfileCreateResponse/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 registered profile with its initial doctor readiness projection."
139
+ }
140
+ },
141
+ "$schema": "http://json-schema.org/draft-07/schema#"
142
+ }
@@ -0,0 +1,107 @@
1
+ {
2
+ "$ref": "#/definitions/ControlCredentialProfileDeleteResponse",
3
+ "definitions": {
4
+ "ControlCredentialProfileDeleteResponse": {
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": "The removed registry entry."
78
+ },
79
+ "removed": {
80
+ "type": "boolean",
81
+ "const": true
82
+ },
83
+ "credentialCleanup": {
84
+ "type": "string",
85
+ "enum": [
86
+ "config_dir_removed",
87
+ "secret_deleted",
88
+ "none"
89
+ ],
90
+ "description": "What credential material was deleted alongside the registry entry."
91
+ },
92
+ "cleanupWarning": {
93
+ "type": "string",
94
+ "description": "Present when the registry entry was removed but cleanup failed (orphan left)."
95
+ }
96
+ },
97
+ "required": [
98
+ "profile",
99
+ "removed",
100
+ "credentialCleanup"
101
+ ],
102
+ "additionalProperties": false,
103
+ "description": "Receipt for a credential-profile removal."
104
+ }
105
+ },
106
+ "$schema": "http://json-schema.org/draft-07/schema#"
107
+ }
@@ -0,0 +1,155 @@
1
+ {
2
+ "$ref": "#/definitions/ControlCredentialProfilesResponse",
3
+ "definitions": {
4
+ "ControlCredentialProfilesResponse": {
5
+ "type": "object",
6
+ "properties": {
7
+ "profiles": {
8
+ "type": "array",
9
+ "items": {
10
+ "type": "object",
11
+ "properties": {
12
+ "profile": {
13
+ "type": "object",
14
+ "properties": {
15
+ "profile_id": {
16
+ "type": "string",
17
+ "minLength": 1,
18
+ "description": "Stable user-chosen profile identifier (unique per harness)."
19
+ },
20
+ "harness_id": {
21
+ "type": "string",
22
+ "minLength": 1,
23
+ "description": "Harness family this profile belongs to."
24
+ },
25
+ "display_name": {
26
+ "type": "string",
27
+ "minLength": 1,
28
+ "description": "Human label shown wherever the profile appears."
29
+ },
30
+ "credential_kind": {
31
+ "type": "string",
32
+ "enum": [
33
+ "config_dir_login",
34
+ "oauth_token",
35
+ "api_key"
36
+ ],
37
+ "description": "Credential transport a profile isolates: a scoped vendor config-dir login, a stored OAuth token, or a stored API key."
38
+ },
39
+ "isolation_locator": {
40
+ "type": [
41
+ "string",
42
+ "null"
43
+ ],
44
+ "default": null,
45
+ "description": "Canonical absolute config-dir path for config_dir_login profiles; null for secret-ref kinds."
46
+ },
47
+ "secret_ref": {
48
+ "type": [
49
+ "string",
50
+ "null"
51
+ ],
52
+ "default": null,
53
+ "description": "Namespaced secret-store name (e.g. claude_oauth:work) for oauth_token/api_key profiles; null for config_dir_login."
54
+ },
55
+ "enabled": {
56
+ "type": "boolean",
57
+ "default": true,
58
+ "description": "Disabled profiles are never routable."
59
+ },
60
+ "created_at": {
61
+ "anyOf": [
62
+ {
63
+ "type": "string",
64
+ "minLength": 1,
65
+ "description": "ISO-8601 timestamp string."
66
+ },
67
+ {
68
+ "type": "null"
69
+ }
70
+ ],
71
+ "description": "When the profile was registered; null for hand-written config entries.",
72
+ "default": null
73
+ }
74
+ },
75
+ "required": [
76
+ "profile_id",
77
+ "harness_id",
78
+ "display_name",
79
+ "credential_kind"
80
+ ],
81
+ "additionalProperties": false,
82
+ "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."
83
+ },
84
+ "status": {
85
+ "type": "object",
86
+ "properties": {
87
+ "profile_id": {
88
+ "type": "string",
89
+ "minLength": 1,
90
+ "description": "Non-empty identifier string."
91
+ },
92
+ "harness_id": {
93
+ "$ref": "#/definitions/ControlCredentialProfilesResponse/properties/profiles/items/properties/status/properties/profile_id"
94
+ },
95
+ "availability": {
96
+ "type": "string",
97
+ "enum": [
98
+ "available",
99
+ "unavailable",
100
+ "unknown"
101
+ ]
102
+ },
103
+ "verification": {
104
+ "type": "string",
105
+ "enum": [
106
+ "passed",
107
+ "failed",
108
+ "not_run"
109
+ ]
110
+ },
111
+ "detail": {
112
+ "type": "string",
113
+ "description": "Redacted human-readable probe evidence."
114
+ },
115
+ "last_verified_at": {
116
+ "anyOf": [
117
+ {
118
+ "$ref": "#/definitions/ControlCredentialProfilesResponse/properties/profiles/items/properties/profile/properties/created_at/anyOf/0"
119
+ },
120
+ {
121
+ "type": "null"
122
+ }
123
+ ],
124
+ "description": "When a probe last verified this profile; null = never verified.",
125
+ "default": null
126
+ }
127
+ },
128
+ "required": [
129
+ "profile_id",
130
+ "harness_id",
131
+ "availability",
132
+ "verification"
133
+ ],
134
+ "additionalProperties": false,
135
+ "description": "Doctor-owned readiness projection for one credential profile; never durable config."
136
+ }
137
+ },
138
+ "required": [
139
+ "profile",
140
+ "status"
141
+ ],
142
+ "additionalProperties": false
143
+ },
144
+ "description": "Every registered credential profile paired with its doctor readiness projection."
145
+ }
146
+ },
147
+ "required": [
148
+ "profiles"
149
+ ],
150
+ "additionalProperties": false,
151
+ "description": "Credential-profile registry listing with per-profile doctor readiness."
152
+ }
153
+ },
154
+ "$schema": "http://json-schema.org/draft-07/schema#"
155
+ }
@@ -0,0 +1,170 @@
1
+ {
2
+ "$ref": "#/definitions/ControlGcReceipt",
3
+ "definitions": {
4
+ "ControlGcReceipt": {
5
+ "type": "object",
6
+ "properties": {
7
+ "schema_version": {
8
+ "type": "number",
9
+ "const": 1,
10
+ "default": 1
11
+ },
12
+ "dry_run": {
13
+ "type": "boolean",
14
+ "description": "Whether disk was left untouched."
15
+ },
16
+ "started_at": {
17
+ "type": "string",
18
+ "description": "Pass start (ISO 8601)."
19
+ },
20
+ "finished_at": {
21
+ "type": "string",
22
+ "description": "Pass end (ISO 8601)."
23
+ },
24
+ "policy": {
25
+ "type": "object",
26
+ "properties": {
27
+ "runs_max_age_days": {
28
+ "type": "integer",
29
+ "exclusiveMinimum": 0
30
+ },
31
+ "reviews_max_age_days": {
32
+ "type": "integer",
33
+ "exclusiveMinimum": 0
34
+ },
35
+ "keep_last_runs_per_project": {
36
+ "type": "integer",
37
+ "minimum": 0
38
+ }
39
+ },
40
+ "required": [
41
+ "runs_max_age_days",
42
+ "reviews_max_age_days",
43
+ "keep_last_runs_per_project"
44
+ ],
45
+ "additionalProperties": false,
46
+ "description": "The effective retention policy this pass applied."
47
+ },
48
+ "examined_runs": {
49
+ "type": "integer",
50
+ "minimum": 0,
51
+ "description": "Run trees examined."
52
+ },
53
+ "deleted_runs": {
54
+ "type": "array",
55
+ "items": {
56
+ "type": "object",
57
+ "properties": {
58
+ "run_id": {
59
+ "type": "string",
60
+ "description": "Deleted (or would-be-deleted) run id."
61
+ },
62
+ "project_root": {
63
+ "type": "string",
64
+ "description": "Canonical project root owning the run tree."
65
+ },
66
+ "freed_bytes": {
67
+ "type": "integer",
68
+ "minimum": 0,
69
+ "description": "Bytes the tree occupied."
70
+ }
71
+ },
72
+ "required": [
73
+ "run_id",
74
+ "project_root",
75
+ "freed_bytes"
76
+ ],
77
+ "additionalProperties": false
78
+ },
79
+ "default": [],
80
+ "description": "Run trees deleted (or would-be under dry_run), tombstones left behind."
81
+ },
82
+ "kept": {
83
+ "type": "object",
84
+ "properties": {
85
+ "active": {
86
+ "type": "integer",
87
+ "minimum": 0,
88
+ "default": 0
89
+ },
90
+ "recent": {
91
+ "type": "integer",
92
+ "minimum": 0,
93
+ "default": 0
94
+ },
95
+ "young": {
96
+ "type": "integer",
97
+ "minimum": 0,
98
+ "default": 0
99
+ },
100
+ "referenced": {
101
+ "type": "integer",
102
+ "minimum": 0,
103
+ "default": 0
104
+ },
105
+ "actionable": {
106
+ "type": "integer",
107
+ "minimum": 0,
108
+ "default": 0
109
+ },
110
+ "unknown_state": {
111
+ "type": "integer",
112
+ "minimum": 0,
113
+ "default": 0
114
+ }
115
+ },
116
+ "additionalProperties": false,
117
+ "description": "Why every surviving candidate survived."
118
+ },
119
+ "deleted_reviews": {
120
+ "type": "array",
121
+ "items": {
122
+ "type": "object",
123
+ "properties": {
124
+ "path": {
125
+ "type": "string",
126
+ "description": "Deleted standalone diff-review tree."
127
+ },
128
+ "freed_bytes": {
129
+ "type": "integer",
130
+ "minimum": 0
131
+ }
132
+ },
133
+ "required": [
134
+ "path",
135
+ "freed_bytes"
136
+ ],
137
+ "additionalProperties": false
138
+ },
139
+ "default": [],
140
+ "description": "Standalone diff-review trees deleted (or would-be under dry_run)."
141
+ },
142
+ "freed_bytes": {
143
+ "type": "integer",
144
+ "minimum": 0,
145
+ "description": "Total bytes freed (or reclaimable under dry_run)."
146
+ },
147
+ "errors": {
148
+ "type": "array",
149
+ "items": {
150
+ "type": "string"
151
+ },
152
+ "default": [],
153
+ "description": "Non-fatal per-tree failures; the pass continues past them."
154
+ }
155
+ },
156
+ "required": [
157
+ "dry_run",
158
+ "started_at",
159
+ "finished_at",
160
+ "policy",
161
+ "examined_runs",
162
+ "kept",
163
+ "freed_bytes"
164
+ ],
165
+ "additionalProperties": false,
166
+ "description": "Typed receipt of one retention pass."
167
+ }
168
+ },
169
+ "$schema": "http://json-schema.org/draft-07/schema#"
170
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "$ref": "#/definitions/ControlGcRequest",
3
+ "definitions": {
4
+ "ControlGcRequest": {
5
+ "type": "object",
6
+ "properties": {
7
+ "dry_run": {
8
+ "type": "boolean",
9
+ "default": false,
10
+ "description": "Report what WOULD be deleted without touching disk."
11
+ }
12
+ },
13
+ "additionalProperties": false,
14
+ "description": "Run one retention pass over engine-owned runtime artifacts."
15
+ }
16
+ },
17
+ "$schema": "http://json-schema.org/draft-07/schema#"
18
+ }