agentrinse 0.1.0 → 0.3.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 (160) hide show
  1. package/README.md +92 -13
  2. package/dist/adapters/artifacts/adapter.d.ts +3 -1
  3. package/dist/adapters/artifacts/adapter.d.ts.map +1 -1
  4. package/dist/adapters/artifacts/adapter.js +23 -1
  5. package/dist/adapters/artifacts/adapter.js.map +1 -1
  6. package/dist/adapters/git/adapter.d.ts +21 -1
  7. package/dist/adapters/git/adapter.d.ts.map +1 -1
  8. package/dist/adapters/git/adapter.js +414 -19
  9. package/dist/adapters/git/adapter.js.map +1 -1
  10. package/dist/adapters/git/refs.d.ts +6 -0
  11. package/dist/adapters/git/refs.d.ts.map +1 -0
  12. package/dist/adapters/git/refs.js +24 -0
  13. package/dist/adapters/git/refs.js.map +1 -0
  14. package/dist/adapters/git/status.d.ts +15 -0
  15. package/dist/adapters/git/status.d.ts.map +1 -0
  16. package/dist/adapters/git/status.js +87 -0
  17. package/dist/adapters/git/status.js.map +1 -0
  18. package/dist/adapters/provider-adapter.d.ts +3 -0
  19. package/dist/adapters/provider-adapter.d.ts.map +1 -1
  20. package/dist/adapters/provider-adapter.js +16 -0
  21. package/dist/adapters/provider-adapter.js.map +1 -1
  22. package/dist/adapters/provider-reachability.d.ts +6 -0
  23. package/dist/adapters/provider-reachability.d.ts.map +1 -0
  24. package/dist/adapters/provider-reachability.js +207 -0
  25. package/dist/adapters/provider-reachability.js.map +1 -0
  26. package/dist/adapters/provider-specs.d.ts +1 -1
  27. package/dist/adapters/provider-specs.d.ts.map +1 -1
  28. package/dist/adapters/registry.d.ts +8 -1
  29. package/dist/adapters/registry.d.ts.map +1 -1
  30. package/dist/adapters/registry.js +48 -4
  31. package/dist/adapters/registry.js.map +1 -1
  32. package/dist/adapters/runtime/adapter.d.ts +24 -0
  33. package/dist/adapters/runtime/adapter.d.ts.map +1 -0
  34. package/dist/adapters/runtime/adapter.js +319 -0
  35. package/dist/adapters/runtime/adapter.js.map +1 -0
  36. package/dist/commands/adapters.d.ts.map +1 -1
  37. package/dist/commands/adapters.js +1 -0
  38. package/dist/commands/adapters.js.map +1 -1
  39. package/dist/commands/apply.d.ts.map +1 -1
  40. package/dist/commands/apply.js +4 -0
  41. package/dist/commands/apply.js.map +1 -1
  42. package/dist/commands/clean.d.ts +63 -0
  43. package/dist/commands/clean.d.ts.map +1 -0
  44. package/dist/commands/clean.js +230 -0
  45. package/dist/commands/clean.js.map +1 -0
  46. package/dist/commands/completion.d.ts.map +1 -1
  47. package/dist/commands/completion.js +4 -1
  48. package/dist/commands/completion.js.map +1 -1
  49. package/dist/commands/confirmation.d.ts +6 -0
  50. package/dist/commands/confirmation.d.ts.map +1 -0
  51. package/dist/commands/confirmation.js +21 -0
  52. package/dist/commands/confirmation.js.map +1 -0
  53. package/dist/commands/doctor.d.ts.map +1 -1
  54. package/dist/commands/doctor.js +4 -2
  55. package/dist/commands/doctor.js.map +1 -1
  56. package/dist/commands/purge.d.ts +29 -0
  57. package/dist/commands/purge.d.ts.map +1 -0
  58. package/dist/commands/purge.js +168 -0
  59. package/dist/commands/purge.js.map +1 -0
  60. package/dist/commands/show.d.ts.map +1 -1
  61. package/dist/commands/show.js +14 -2
  62. package/dist/commands/show.js.map +1 -1
  63. package/dist/commands/undo.d.ts +21 -0
  64. package/dist/commands/undo.d.ts.map +1 -0
  65. package/dist/commands/undo.js +66 -0
  66. package/dist/commands/undo.js.map +1 -0
  67. package/dist/config/defaults.d.ts.map +1 -1
  68. package/dist/config/defaults.js +6 -0
  69. package/dist/config/defaults.js.map +1 -1
  70. package/dist/config/load.d.ts.map +1 -1
  71. package/dist/config/load.js +4 -0
  72. package/dist/config/load.js.map +1 -1
  73. package/dist/config/schema.d.ts +27 -0
  74. package/dist/config/schema.d.ts.map +1 -1
  75. package/dist/config/schema.js +66 -0
  76. package/dist/config/schema.js.map +1 -1
  77. package/dist/contracts/action.d.ts +59 -0
  78. package/dist/contracts/action.d.ts.map +1 -1
  79. package/dist/contracts/action.js +28 -1
  80. package/dist/contracts/action.js.map +1 -1
  81. package/dist/contracts/finding.d.ts +22 -0
  82. package/dist/contracts/finding.d.ts.map +1 -1
  83. package/dist/contracts/plan.d.ts +23 -0
  84. package/dist/contracts/plan.d.ts.map +1 -1
  85. package/dist/contracts/plan.js +20 -1
  86. package/dist/contracts/plan.js.map +1 -1
  87. package/dist/contracts/quarantine.d.ts +79 -0
  88. package/dist/contracts/quarantine.d.ts.map +1 -0
  89. package/dist/contracts/quarantine.js +60 -0
  90. package/dist/contracts/quarantine.js.map +1 -0
  91. package/dist/contracts/report.d.ts +22 -0
  92. package/dist/contracts/report.d.ts.map +1 -1
  93. package/dist/contracts/run.d.ts +133 -5
  94. package/dist/contracts/run.d.ts.map +1 -1
  95. package/dist/contracts/run.js +17 -3
  96. package/dist/contracts/run.js.map +1 -1
  97. package/dist/core/apply.d.ts +8 -1
  98. package/dist/core/apply.d.ts.map +1 -1
  99. package/dist/core/apply.js +138 -48
  100. package/dist/core/apply.js.map +1 -1
  101. package/dist/core/git-operation-state.d.ts +3 -0
  102. package/dist/core/git-operation-state.d.ts.map +1 -0
  103. package/dist/core/git-operation-state.js +23 -0
  104. package/dist/core/git-operation-state.js.map +1 -0
  105. package/dist/core/measure.d.ts +1 -0
  106. package/dist/core/measure.d.ts.map +1 -1
  107. package/dist/core/measure.js +3 -0
  108. package/dist/core/measure.js.map +1 -1
  109. package/dist/core/no-clobber-rename.d.ts +2 -0
  110. package/dist/core/no-clobber-rename.d.ts.map +1 -0
  111. package/dist/core/no-clobber-rename.js +58 -0
  112. package/dist/core/no-clobber-rename.js.map +1 -0
  113. package/dist/core/plan.d.ts.map +1 -1
  114. package/dist/core/plan.js +1 -0
  115. package/dist/core/plan.js.map +1 -1
  116. package/dist/core/reachability.d.ts +29 -0
  117. package/dist/core/reachability.d.ts.map +1 -0
  118. package/dist/core/reachability.js +121 -0
  119. package/dist/core/reachability.js.map +1 -0
  120. package/dist/core/worktree-executor.d.ts +51 -0
  121. package/dist/core/worktree-executor.d.ts.map +1 -0
  122. package/dist/core/worktree-executor.js +676 -0
  123. package/dist/core/worktree-executor.js.map +1 -0
  124. package/dist/core/worktree-lock.d.ts +15 -0
  125. package/dist/core/worktree-lock.d.ts.map +1 -0
  126. package/dist/core/worktree-lock.js +139 -0
  127. package/dist/core/worktree-lock.js.map +1 -0
  128. package/dist/core/worktree-recovery.d.ts +37 -0
  129. package/dist/core/worktree-recovery.d.ts.map +1 -0
  130. package/dist/core/worktree-recovery.js +1018 -0
  131. package/dist/core/worktree-recovery.js.map +1 -0
  132. package/dist/core/worktree-revalidation.d.ts +25 -0
  133. package/dist/core/worktree-revalidation.d.ts.map +1 -0
  134. package/dist/core/worktree-revalidation.js +107 -0
  135. package/dist/core/worktree-revalidation.js.map +1 -0
  136. package/dist/index.d.ts +3 -2
  137. package/dist/index.d.ts.map +1 -1
  138. package/dist/index.js +3 -2
  139. package/dist/index.js.map +1 -1
  140. package/dist/main.d.ts.map +1 -1
  141. package/dist/main.js +85 -0
  142. package/dist/main.js.map +1 -1
  143. package/dist/state/layout.d.ts +1 -0
  144. package/dist/state/layout.d.ts.map +1 -1
  145. package/dist/state/layout.js +1 -0
  146. package/dist/state/layout.js.map +1 -1
  147. package/dist/state/records.d.ts +6 -0
  148. package/dist/state/records.d.ts.map +1 -1
  149. package/dist/state/records.js +9 -1
  150. package/dist/state/records.js.map +1 -1
  151. package/dist/state/run-journal.d.ts.map +1 -1
  152. package/dist/state/run-journal.js +3 -0
  153. package/dist/state/run-journal.js.map +1 -1
  154. package/dist/version.d.ts +1 -1
  155. package/dist/version.js +1 -1
  156. package/package.json +2 -1
  157. package/schemas/audit.schema.json +112 -0
  158. package/schemas/plan.schema.json +117 -0
  159. package/schemas/quarantine.schema.json +238 -0
  160. package/schemas/run.schema.json +152 -54
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentrinse",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "private": false,
5
5
  "description": "Safe, local-first cleanup for agentic development.",
6
6
  "keywords": [
@@ -57,6 +57,7 @@
57
57
  },
58
58
  "dependencies": {
59
59
  "commander": "15.0.0",
60
+ "koffi": "3.1.2",
60
61
  "zod": "4.4.3"
61
62
  },
62
63
  "devDependencies": {
@@ -313,6 +313,118 @@
313
313
  "expectedReclaimBytes",
314
314
  "target"
315
315
  ]
316
+ },
317
+ {
318
+ "type": "object",
319
+ "properties": {
320
+ "actionId": {
321
+ "type": "string",
322
+ "minLength": 1
323
+ },
324
+ "type": {
325
+ "type": "string",
326
+ "const": "worktree.quarantine"
327
+ },
328
+ "adapter": {
329
+ "type": "string",
330
+ "const": "git"
331
+ },
332
+ "resourceId": {
333
+ "type": "string",
334
+ "minLength": 1
335
+ },
336
+ "risk": {
337
+ "type": "string",
338
+ "const": "recoverable"
339
+ },
340
+ "description": {
341
+ "type": "string",
342
+ "minLength": 1
343
+ },
344
+ "expectedReclaimBytes": {
345
+ "type": "number",
346
+ "const": 0
347
+ },
348
+ "pendingQuarantineBytes": {
349
+ "type": "integer",
350
+ "minimum": 0,
351
+ "maximum": 9007199254740991
352
+ },
353
+ "quarantineTtlMinutes": {
354
+ "type": "integer",
355
+ "exclusiveMinimum": 0,
356
+ "maximum": 9007199254740991
357
+ },
358
+ "target": {
359
+ "type": "object",
360
+ "properties": {
361
+ "path": {
362
+ "type": "string",
363
+ "minLength": 1
364
+ },
365
+ "repositoryCommonDir": {
366
+ "type": "string",
367
+ "minLength": 1
368
+ },
369
+ "head": {
370
+ "type": "string",
371
+ "pattern": "^[a-f0-9]{40,64}$"
372
+ },
373
+ "branch": {
374
+ "type": "string",
375
+ "minLength": 1
376
+ },
377
+ "device": {
378
+ "type": "integer",
379
+ "minimum": 0,
380
+ "maximum": 9007199254740991
381
+ },
382
+ "inode": {
383
+ "type": "integer",
384
+ "minimum": 0,
385
+ "maximum": 9007199254740991
386
+ },
387
+ "mtimeMs": {
388
+ "type": "number"
389
+ },
390
+ "measuredBytes": {
391
+ "type": "integer",
392
+ "minimum": 0,
393
+ "maximum": 9007199254740991
394
+ },
395
+ "newestMtimeMs": {
396
+ "type": "number"
397
+ },
398
+ "fingerprint": {
399
+ "type": "string",
400
+ "pattern": "^[a-f0-9]{64}$"
401
+ }
402
+ },
403
+ "required": [
404
+ "path",
405
+ "repositoryCommonDir",
406
+ "head",
407
+ "device",
408
+ "inode",
409
+ "mtimeMs",
410
+ "measuredBytes",
411
+ "newestMtimeMs",
412
+ "fingerprint"
413
+ ]
414
+ }
415
+ },
416
+ "required": [
417
+ "actionId",
418
+ "type",
419
+ "adapter",
420
+ "resourceId",
421
+ "risk",
422
+ "description",
423
+ "expectedReclaimBytes",
424
+ "pendingQuarantineBytes",
425
+ "quarantineTtlMinutes",
426
+ "target"
427
+ ]
316
428
  }
317
429
  ]
318
430
  }
@@ -155,6 +155,118 @@
155
155
  "expectedReclaimBytes",
156
156
  "target"
157
157
  ]
158
+ },
159
+ {
160
+ "type": "object",
161
+ "properties": {
162
+ "actionId": {
163
+ "type": "string",
164
+ "minLength": 1
165
+ },
166
+ "type": {
167
+ "type": "string",
168
+ "const": "worktree.quarantine"
169
+ },
170
+ "adapter": {
171
+ "type": "string",
172
+ "const": "git"
173
+ },
174
+ "resourceId": {
175
+ "type": "string",
176
+ "minLength": 1
177
+ },
178
+ "risk": {
179
+ "type": "string",
180
+ "const": "recoverable"
181
+ },
182
+ "description": {
183
+ "type": "string",
184
+ "minLength": 1
185
+ },
186
+ "expectedReclaimBytes": {
187
+ "type": "number",
188
+ "const": 0
189
+ },
190
+ "pendingQuarantineBytes": {
191
+ "type": "integer",
192
+ "minimum": 0,
193
+ "maximum": 9007199254740991
194
+ },
195
+ "quarantineTtlMinutes": {
196
+ "type": "integer",
197
+ "exclusiveMinimum": 0,
198
+ "maximum": 9007199254740991
199
+ },
200
+ "target": {
201
+ "type": "object",
202
+ "properties": {
203
+ "path": {
204
+ "type": "string",
205
+ "minLength": 1
206
+ },
207
+ "repositoryCommonDir": {
208
+ "type": "string",
209
+ "minLength": 1
210
+ },
211
+ "head": {
212
+ "type": "string",
213
+ "pattern": "^[a-f0-9]{40,64}$"
214
+ },
215
+ "branch": {
216
+ "type": "string",
217
+ "minLength": 1
218
+ },
219
+ "device": {
220
+ "type": "integer",
221
+ "minimum": 0,
222
+ "maximum": 9007199254740991
223
+ },
224
+ "inode": {
225
+ "type": "integer",
226
+ "minimum": 0,
227
+ "maximum": 9007199254740991
228
+ },
229
+ "mtimeMs": {
230
+ "type": "number"
231
+ },
232
+ "measuredBytes": {
233
+ "type": "integer",
234
+ "minimum": 0,
235
+ "maximum": 9007199254740991
236
+ },
237
+ "newestMtimeMs": {
238
+ "type": "number"
239
+ },
240
+ "fingerprint": {
241
+ "type": "string",
242
+ "pattern": "^[a-f0-9]{64}$"
243
+ }
244
+ },
245
+ "required": [
246
+ "path",
247
+ "repositoryCommonDir",
248
+ "head",
249
+ "device",
250
+ "inode",
251
+ "mtimeMs",
252
+ "measuredBytes",
253
+ "newestMtimeMs",
254
+ "fingerprint"
255
+ ]
256
+ }
257
+ },
258
+ "required": [
259
+ "actionId",
260
+ "type",
261
+ "adapter",
262
+ "resourceId",
263
+ "risk",
264
+ "description",
265
+ "expectedReclaimBytes",
266
+ "pendingQuarantineBytes",
267
+ "quarantineTtlMinutes",
268
+ "target"
269
+ ]
158
270
  }
159
271
  ]
160
272
  }
@@ -163,6 +275,11 @@
163
275
  "type": "integer",
164
276
  "minimum": 0,
165
277
  "maximum": 9007199254740991
278
+ },
279
+ "pendingQuarantineBytes": {
280
+ "type": "integer",
281
+ "minimum": 0,
282
+ "maximum": 9007199254740991
166
283
  }
167
284
  },
168
285
  "required": [
@@ -0,0 +1,238 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "schemaVersion": {
6
+ "type": "number",
7
+ "const": 1
8
+ },
9
+ "entryId": {
10
+ "type": "string",
11
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$"
12
+ },
13
+ "runId": {
14
+ "type": "string",
15
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$"
16
+ },
17
+ "actionId": {
18
+ "type": "string",
19
+ "minLength": 1
20
+ },
21
+ "resourceId": {
22
+ "type": "string",
23
+ "minLength": 1
24
+ },
25
+ "status": {
26
+ "type": "string",
27
+ "enum": [
28
+ "preparing",
29
+ "recovery-ref-created",
30
+ "moved",
31
+ "quarantined",
32
+ "restoring",
33
+ "restored",
34
+ "purging",
35
+ "purged",
36
+ "partial"
37
+ ]
38
+ },
39
+ "originalPath": {
40
+ "type": "string",
41
+ "minLength": 1
42
+ },
43
+ "quarantinePath": {
44
+ "type": "string",
45
+ "minLength": 1
46
+ },
47
+ "recoveryRef": {
48
+ "type": "string",
49
+ "pattern": "^refs\\/agentrinse\\/quarantine\\/.*"
50
+ },
51
+ "createdAt": {
52
+ "type": "string",
53
+ "format": "date-time",
54
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
55
+ },
56
+ "expiresAt": {
57
+ "type": "string",
58
+ "format": "date-time",
59
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
60
+ },
61
+ "measurementMaxEntries": {
62
+ "type": "integer",
63
+ "exclusiveMinimum": 0,
64
+ "maximum": 1000000
65
+ },
66
+ "target": {
67
+ "type": "object",
68
+ "properties": {
69
+ "path": {
70
+ "type": "string",
71
+ "minLength": 1
72
+ },
73
+ "repositoryCommonDir": {
74
+ "type": "string",
75
+ "minLength": 1
76
+ },
77
+ "head": {
78
+ "type": "string",
79
+ "pattern": "^[a-f0-9]{40,64}$"
80
+ },
81
+ "branch": {
82
+ "type": "string",
83
+ "minLength": 1
84
+ },
85
+ "device": {
86
+ "type": "integer",
87
+ "minimum": 0,
88
+ "maximum": 9007199254740991
89
+ },
90
+ "inode": {
91
+ "type": "integer",
92
+ "minimum": 0,
93
+ "maximum": 9007199254740991
94
+ },
95
+ "mtimeMs": {
96
+ "type": "number"
97
+ },
98
+ "measuredBytes": {
99
+ "type": "integer",
100
+ "minimum": 0,
101
+ "maximum": 9007199254740991
102
+ },
103
+ "newestMtimeMs": {
104
+ "type": "number"
105
+ },
106
+ "fingerprint": {
107
+ "type": "string",
108
+ "pattern": "^[a-f0-9]{64}$"
109
+ }
110
+ },
111
+ "required": [
112
+ "path",
113
+ "repositoryCommonDir",
114
+ "head",
115
+ "device",
116
+ "inode",
117
+ "mtimeMs",
118
+ "measuredBytes",
119
+ "newestMtimeMs",
120
+ "fingerprint"
121
+ ]
122
+ },
123
+ "quarantineIdentity": {
124
+ "type": "object",
125
+ "properties": {
126
+ "path": {
127
+ "type": "string",
128
+ "minLength": 1
129
+ },
130
+ "repositoryCommonDir": {
131
+ "type": "string",
132
+ "minLength": 1
133
+ },
134
+ "head": {
135
+ "type": "string",
136
+ "pattern": "^[a-f0-9]{40,64}$"
137
+ },
138
+ "branch": {
139
+ "type": "string",
140
+ "minLength": 1
141
+ },
142
+ "device": {
143
+ "type": "integer",
144
+ "minimum": 0,
145
+ "maximum": 9007199254740991
146
+ },
147
+ "inode": {
148
+ "type": "integer",
149
+ "minimum": 0,
150
+ "maximum": 9007199254740991
151
+ },
152
+ "mtimeMs": {
153
+ "type": "number"
154
+ },
155
+ "measuredBytes": {
156
+ "type": "integer",
157
+ "minimum": 0,
158
+ "maximum": 9007199254740991
159
+ },
160
+ "newestMtimeMs": {
161
+ "type": "number"
162
+ },
163
+ "fingerprint": {
164
+ "type": "string",
165
+ "pattern": "^[a-f0-9]{64}$"
166
+ }
167
+ },
168
+ "required": [
169
+ "path",
170
+ "repositoryCommonDir",
171
+ "head",
172
+ "device",
173
+ "inode",
174
+ "mtimeMs",
175
+ "measuredBytes",
176
+ "newestMtimeMs",
177
+ "fingerprint"
178
+ ]
179
+ },
180
+ "restoredAt": {
181
+ "type": "string",
182
+ "format": "date-time",
183
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
184
+ },
185
+ "purgedAt": {
186
+ "type": "string",
187
+ "format": "date-time",
188
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
189
+ },
190
+ "diagnostic": {
191
+ "type": "object",
192
+ "properties": {
193
+ "severity": {
194
+ "type": "string",
195
+ "enum": ["info", "warning", "error"]
196
+ },
197
+ "code": {
198
+ "type": "string",
199
+ "minLength": 1
200
+ },
201
+ "message": {
202
+ "type": "string",
203
+ "minLength": 1
204
+ },
205
+ "adapter": {
206
+ "type": "string",
207
+ "minLength": 1
208
+ },
209
+ "resourceId": {
210
+ "type": "string",
211
+ "minLength": 1
212
+ },
213
+ "remediation": {
214
+ "type": "string",
215
+ "minLength": 1
216
+ }
217
+ },
218
+ "required": ["severity", "code", "message"]
219
+ }
220
+ },
221
+ "required": [
222
+ "schemaVersion",
223
+ "entryId",
224
+ "runId",
225
+ "actionId",
226
+ "resourceId",
227
+ "status",
228
+ "originalPath",
229
+ "quarantinePath",
230
+ "recoveryRef",
231
+ "createdAt",
232
+ "expiresAt",
233
+ "measurementMaxEntries",
234
+ "target"
235
+ ],
236
+ "$id": "https://agentrinse.com/schemas/quarantine.schema.json",
237
+ "title": "AgentRinse quarantine schema"
238
+ }