agentrinse 0.2.0 → 0.4.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 (179) hide show
  1. package/README.md +278 -143
  2. package/dist/adapters/codex-database.d.ts +64 -0
  3. package/dist/adapters/codex-database.d.ts.map +1 -0
  4. package/dist/adapters/codex-database.js +409 -0
  5. package/dist/adapters/codex-database.js.map +1 -0
  6. package/dist/adapters/git/adapter.d.ts +14 -1
  7. package/dist/adapters/git/adapter.d.ts.map +1 -1
  8. package/dist/adapters/git/adapter.js +217 -56
  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 +1 -0
  15. package/dist/adapters/git/status.d.ts.map +1 -1
  16. package/dist/adapters/git/status.js +6 -0
  17. package/dist/adapters/git/status.js.map +1 -1
  18. package/dist/adapters/provider-adapter.d.ts +4 -0
  19. package/dist/adapters/provider-adapter.d.ts.map +1 -1
  20. package/dist/adapters/provider-adapter.js +144 -3
  21. package/dist/adapters/provider-adapter.js.map +1 -1
  22. package/dist/adapters/provider-specs.d.ts.map +1 -1
  23. package/dist/adapters/provider-specs.js +15 -0
  24. package/dist/adapters/provider-specs.js.map +1 -1
  25. package/dist/adapters/registry.d.ts +3 -1
  26. package/dist/adapters/registry.d.ts.map +1 -1
  27. package/dist/adapters/registry.js +7 -2
  28. package/dist/adapters/registry.js.map +1 -1
  29. package/dist/commands/adapters.d.ts.map +1 -1
  30. package/dist/commands/adapters.js +3 -1
  31. package/dist/commands/adapters.js.map +1 -1
  32. package/dist/commands/apply.d.ts +2 -0
  33. package/dist/commands/apply.d.ts.map +1 -1
  34. package/dist/commands/apply.js +27 -2
  35. package/dist/commands/apply.js.map +1 -1
  36. package/dist/commands/audit.d.ts +1 -0
  37. package/dist/commands/audit.d.ts.map +1 -1
  38. package/dist/commands/audit.js +3 -1
  39. package/dist/commands/audit.js.map +1 -1
  40. package/dist/commands/clean.d.ts +2 -0
  41. package/dist/commands/clean.d.ts.map +1 -1
  42. package/dist/commands/clean.js +9 -3
  43. package/dist/commands/clean.js.map +1 -1
  44. package/dist/commands/completion.d.ts.map +1 -1
  45. package/dist/commands/completion.js +3 -1
  46. package/dist/commands/completion.js.map +1 -1
  47. package/dist/commands/confirmation.d.ts +6 -0
  48. package/dist/commands/confirmation.d.ts.map +1 -0
  49. package/dist/commands/confirmation.js +21 -0
  50. package/dist/commands/confirmation.js.map +1 -0
  51. package/dist/commands/doctor.d.ts.map +1 -1
  52. package/dist/commands/doctor.js +36 -2
  53. package/dist/commands/doctor.js.map +1 -1
  54. package/dist/commands/plan.d.ts +2 -0
  55. package/dist/commands/plan.d.ts.map +1 -1
  56. package/dist/commands/plan.js +11 -1
  57. package/dist/commands/plan.js.map +1 -1
  58. package/dist/commands/purge.d.ts +35 -0
  59. package/dist/commands/purge.d.ts.map +1 -0
  60. package/dist/commands/purge.js +191 -0
  61. package/dist/commands/purge.js.map +1 -0
  62. package/dist/commands/show.d.ts.map +1 -1
  63. package/dist/commands/show.js +17 -2
  64. package/dist/commands/show.js.map +1 -1
  65. package/dist/commands/undo.d.ts +24 -0
  66. package/dist/commands/undo.d.ts.map +1 -0
  67. package/dist/commands/undo.js +84 -0
  68. package/dist/commands/undo.js.map +1 -0
  69. package/dist/config/defaults.d.ts.map +1 -1
  70. package/dist/config/defaults.js +4 -0
  71. package/dist/config/defaults.js.map +1 -1
  72. package/dist/config/load.d.ts.map +1 -1
  73. package/dist/config/load.js +4 -0
  74. package/dist/config/load.js.map +1 -1
  75. package/dist/config/schema.d.ts +4 -0
  76. package/dist/config/schema.d.ts.map +1 -1
  77. package/dist/config/schema.js +18 -0
  78. package/dist/config/schema.js.map +1 -1
  79. package/dist/contracts/action.d.ts +241 -0
  80. package/dist/contracts/action.d.ts.map +1 -1
  81. package/dist/contracts/action.js +77 -1
  82. package/dist/contracts/action.js.map +1 -1
  83. package/dist/contracts/database-backup.d.ts +192 -0
  84. package/dist/contracts/database-backup.d.ts.map +1 -0
  85. package/dist/contracts/database-backup.js +70 -0
  86. package/dist/contracts/database-backup.js.map +1 -0
  87. package/dist/contracts/finding.d.ts +77 -0
  88. package/dist/contracts/finding.d.ts.map +1 -1
  89. package/dist/contracts/plan.d.ts +78 -0
  90. package/dist/contracts/plan.d.ts.map +1 -1
  91. package/dist/contracts/plan.js +29 -1
  92. package/dist/contracts/plan.js.map +1 -1
  93. package/dist/contracts/quarantine.d.ts +79 -0
  94. package/dist/contracts/quarantine.d.ts.map +1 -0
  95. package/dist/contracts/quarantine.js +60 -0
  96. package/dist/contracts/quarantine.js.map +1 -0
  97. package/dist/contracts/report.d.ts +77 -0
  98. package/dist/contracts/report.d.ts.map +1 -1
  99. package/dist/contracts/run.d.ts +233 -5
  100. package/dist/contracts/run.d.ts.map +1 -1
  101. package/dist/contracts/run.js +26 -3
  102. package/dist/contracts/run.js.map +1 -1
  103. package/dist/core/apply.d.ts +12 -1
  104. package/dist/core/apply.d.ts.map +1 -1
  105. package/dist/core/apply.js +209 -47
  106. package/dist/core/apply.js.map +1 -1
  107. package/dist/core/database-exclusion.d.ts +23 -0
  108. package/dist/core/database-exclusion.d.ts.map +1 -0
  109. package/dist/core/database-exclusion.js +133 -0
  110. package/dist/core/database-exclusion.js.map +1 -0
  111. package/dist/core/database-executor.d.ts +45 -0
  112. package/dist/core/database-executor.d.ts.map +1 -0
  113. package/dist/core/database-executor.js +436 -0
  114. package/dist/core/database-executor.js.map +1 -0
  115. package/dist/core/database-recovery.d.ts +25 -0
  116. package/dist/core/database-recovery.d.ts.map +1 -0
  117. package/dist/core/database-recovery.js +628 -0
  118. package/dist/core/database-recovery.js.map +1 -0
  119. package/dist/core/database-revalidation.d.ts +19 -0
  120. package/dist/core/database-revalidation.d.ts.map +1 -0
  121. package/dist/core/database-revalidation.js +70 -0
  122. package/dist/core/database-revalidation.js.map +1 -0
  123. package/dist/core/git-operation-state.d.ts +3 -0
  124. package/dist/core/git-operation-state.d.ts.map +1 -0
  125. package/dist/core/git-operation-state.js +23 -0
  126. package/dist/core/git-operation-state.js.map +1 -0
  127. package/dist/core/measure.d.ts +1 -0
  128. package/dist/core/measure.d.ts.map +1 -1
  129. package/dist/core/measure.js +3 -0
  130. package/dist/core/measure.js.map +1 -1
  131. package/dist/core/no-clobber-rename.d.ts +3 -0
  132. package/dist/core/no-clobber-rename.d.ts.map +1 -0
  133. package/dist/core/no-clobber-rename.js +102 -0
  134. package/dist/core/no-clobber-rename.js.map +1 -0
  135. package/dist/core/plan.d.ts.map +1 -1
  136. package/dist/core/plan.js +1 -0
  137. package/dist/core/plan.js.map +1 -1
  138. package/dist/core/worktree-executor.d.ts +51 -0
  139. package/dist/core/worktree-executor.d.ts.map +1 -0
  140. package/dist/core/worktree-executor.js +676 -0
  141. package/dist/core/worktree-executor.js.map +1 -0
  142. package/dist/core/worktree-lock.d.ts +15 -0
  143. package/dist/core/worktree-lock.d.ts.map +1 -0
  144. package/dist/core/worktree-lock.js +139 -0
  145. package/dist/core/worktree-lock.js.map +1 -0
  146. package/dist/core/worktree-recovery.d.ts +37 -0
  147. package/dist/core/worktree-recovery.d.ts.map +1 -0
  148. package/dist/core/worktree-recovery.js +1018 -0
  149. package/dist/core/worktree-recovery.js.map +1 -0
  150. package/dist/core/worktree-revalidation.d.ts +25 -0
  151. package/dist/core/worktree-revalidation.d.ts.map +1 -0
  152. package/dist/core/worktree-revalidation.js +107 -0
  153. package/dist/core/worktree-revalidation.js.map +1 -0
  154. package/dist/index.d.ts +4 -2
  155. package/dist/index.d.ts.map +1 -1
  156. package/dist/index.js +4 -2
  157. package/dist/index.js.map +1 -1
  158. package/dist/main.d.ts.map +1 -1
  159. package/dist/main.js +50 -0
  160. package/dist/main.js.map +1 -1
  161. package/dist/state/layout.d.ts +2 -0
  162. package/dist/state/layout.d.ts.map +1 -1
  163. package/dist/state/layout.js +2 -0
  164. package/dist/state/layout.js.map +1 -1
  165. package/dist/state/records.d.ts +6 -0
  166. package/dist/state/records.d.ts.map +1 -1
  167. package/dist/state/records.js +9 -1
  168. package/dist/state/records.js.map +1 -1
  169. package/dist/state/run-journal.d.ts.map +1 -1
  170. package/dist/state/run-journal.js +3 -0
  171. package/dist/state/run-journal.js.map +1 -1
  172. package/dist/version.d.ts +1 -1
  173. package/dist/version.js +1 -1
  174. package/package.json +2 -1
  175. package/schemas/audit.schema.json +355 -0
  176. package/schemas/database-backup.schema.json +648 -0
  177. package/schemas/plan.schema.json +346 -0
  178. package/schemas/quarantine.schema.json +238 -0
  179. package/schemas/run.schema.json +245 -52
@@ -155,6 +155,347 @@
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
+ ]
270
+ },
271
+ {
272
+ "type": "object",
273
+ "properties": {
274
+ "actionId": {
275
+ "type": "string",
276
+ "minLength": 1
277
+ },
278
+ "type": {
279
+ "type": "string",
280
+ "const": "database.vacuum"
281
+ },
282
+ "adapter": {
283
+ "type": "string",
284
+ "const": "codex"
285
+ },
286
+ "resourceId": {
287
+ "type": "string",
288
+ "minLength": 1
289
+ },
290
+ "risk": {
291
+ "type": "string",
292
+ "const": "experimental"
293
+ },
294
+ "description": {
295
+ "type": "string",
296
+ "minLength": 1
297
+ },
298
+ "expectedReclaimBytes": {
299
+ "type": "integer",
300
+ "exclusiveMinimum": 0,
301
+ "maximum": 9007199254740991
302
+ },
303
+ "backupTtlMinutes": {
304
+ "type": "integer",
305
+ "exclusiveMinimum": 0,
306
+ "maximum": 9007199254740991
307
+ },
308
+ "target": {
309
+ "type": "object",
310
+ "properties": {
311
+ "path": {
312
+ "type": "string",
313
+ "minLength": 1
314
+ },
315
+ "database": {
316
+ "type": "string",
317
+ "enum": ["state", "logs", "goals", "memories"]
318
+ },
319
+ "filename": {
320
+ "type": "string",
321
+ "enum": [
322
+ "state_5.sqlite",
323
+ "logs_2.sqlite",
324
+ "goals_1.sqlite",
325
+ "memories_1.sqlite"
326
+ ]
327
+ },
328
+ "device": {
329
+ "type": "integer",
330
+ "minimum": 0,
331
+ "maximum": 9007199254740991
332
+ },
333
+ "inode": {
334
+ "type": "integer",
335
+ "minimum": 0,
336
+ "maximum": 9007199254740991
337
+ },
338
+ "mode": {
339
+ "type": "integer",
340
+ "minimum": 0,
341
+ "maximum": 9007199254740991
342
+ },
343
+ "mtimeMs": {
344
+ "type": "number"
345
+ },
346
+ "measuredBytes": {
347
+ "type": "integer",
348
+ "minimum": 0,
349
+ "maximum": 9007199254740991
350
+ },
351
+ "pageSize": {
352
+ "type": "integer",
353
+ "exclusiveMinimum": 0,
354
+ "maximum": 9007199254740991
355
+ },
356
+ "pageCount": {
357
+ "type": "integer",
358
+ "minimum": 0,
359
+ "maximum": 9007199254740991
360
+ },
361
+ "freelistCount": {
362
+ "type": "integer",
363
+ "minimum": 0,
364
+ "maximum": 9007199254740991
365
+ },
366
+ "journalMode": {
367
+ "type": "string",
368
+ "const": "wal"
369
+ },
370
+ "autoVacuum": {
371
+ "type": "integer",
372
+ "minimum": 0,
373
+ "maximum": 2
374
+ },
375
+ "migrationVersion": {
376
+ "type": "integer",
377
+ "minimum": 0,
378
+ "maximum": 9007199254740991
379
+ },
380
+ "migrationDigest": {
381
+ "type": "string",
382
+ "pattern": "^[a-f0-9]{64}$"
383
+ },
384
+ "tables": {
385
+ "type": "array",
386
+ "items": {
387
+ "type": "string",
388
+ "minLength": 1
389
+ }
390
+ },
391
+ "wal": {
392
+ "type": "object",
393
+ "properties": {
394
+ "path": {
395
+ "type": "string",
396
+ "minLength": 1
397
+ },
398
+ "device": {
399
+ "type": "integer",
400
+ "minimum": 0,
401
+ "maximum": 9007199254740991
402
+ },
403
+ "inode": {
404
+ "type": "integer",
405
+ "minimum": 0,
406
+ "maximum": 9007199254740991
407
+ },
408
+ "mode": {
409
+ "type": "integer",
410
+ "minimum": 0,
411
+ "maximum": 9007199254740991
412
+ },
413
+ "mtimeMs": {
414
+ "type": "number"
415
+ },
416
+ "measuredBytes": {
417
+ "type": "integer",
418
+ "minimum": 0,
419
+ "maximum": 9007199254740991
420
+ }
421
+ },
422
+ "required": ["path", "device", "inode", "mode", "mtimeMs", "measuredBytes"]
423
+ },
424
+ "shm": {
425
+ "type": "object",
426
+ "properties": {
427
+ "path": {
428
+ "type": "string",
429
+ "minLength": 1
430
+ },
431
+ "device": {
432
+ "type": "integer",
433
+ "minimum": 0,
434
+ "maximum": 9007199254740991
435
+ },
436
+ "inode": {
437
+ "type": "integer",
438
+ "minimum": 0,
439
+ "maximum": 9007199254740991
440
+ },
441
+ "mode": {
442
+ "type": "integer",
443
+ "minimum": 0,
444
+ "maximum": 9007199254740991
445
+ },
446
+ "mtimeMs": {
447
+ "type": "number"
448
+ },
449
+ "measuredBytes": {
450
+ "type": "integer",
451
+ "minimum": 0,
452
+ "maximum": 9007199254740991
453
+ }
454
+ },
455
+ "required": ["path", "device", "inode", "mode", "mtimeMs", "measuredBytes"]
456
+ },
457
+ "schemaDigest": {
458
+ "type": "string",
459
+ "pattern": "^[a-f0-9]{64}$"
460
+ },
461
+ "fingerprint": {
462
+ "type": "string",
463
+ "pattern": "^[a-f0-9]{64}$"
464
+ }
465
+ },
466
+ "required": [
467
+ "path",
468
+ "database",
469
+ "filename",
470
+ "device",
471
+ "inode",
472
+ "mode",
473
+ "mtimeMs",
474
+ "measuredBytes",
475
+ "pageSize",
476
+ "pageCount",
477
+ "freelistCount",
478
+ "journalMode",
479
+ "autoVacuum",
480
+ "migrationVersion",
481
+ "migrationDigest",
482
+ "tables",
483
+ "schemaDigest",
484
+ "fingerprint"
485
+ ]
486
+ }
487
+ },
488
+ "required": [
489
+ "actionId",
490
+ "type",
491
+ "adapter",
492
+ "resourceId",
493
+ "risk",
494
+ "description",
495
+ "expectedReclaimBytes",
496
+ "backupTtlMinutes",
497
+ "target"
498
+ ]
158
499
  }
159
500
  ]
160
501
  }
@@ -163,6 +504,11 @@
163
504
  "type": "integer",
164
505
  "minimum": 0,
165
506
  "maximum": 9007199254740991
507
+ },
508
+ "pendingQuarantineBytes": {
509
+ "type": "integer",
510
+ "minimum": 0,
511
+ "maximum": 9007199254740991
166
512
  }
167
513
  },
168
514
  "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
+ }