@crvouga/atlas 0.15.0 → 0.16.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 (30) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/reports/src/evidence-detail.d.ts +19 -2
  3. package/dist/reports/src/evidence-detail.js +63 -14
  4. package/dist/reports/src/evidence-types.d.ts +31 -0
  5. package/dist/reports/src/layer-merge.js +2 -2
  6. package/dist/reports/src/test-catalog.d.ts +24 -3
  7. package/dist/reports/src/test-catalog.js +37 -11
  8. package/dist/schema/src/api.d.ts +167 -0
  9. package/dist/schema/src/api.js +28 -4
  10. package/dist/server/src/app.js +3 -2
  11. package/dist/server/src/llms.js +2 -1
  12. package/dist/server/src/openapi.js +2 -1
  13. package/docs/reference/http-api.md +4 -2
  14. package/docs/reference/reports.md +110 -3
  15. package/docs/reference/schema.md +16 -0
  16. package/docs/server.md +1 -1
  17. package/llms-full.txt +5 -3
  18. package/package.json +1 -1
  19. package/packages/schema/schemas/effective-delta.schema.json +82 -0
  20. package/packages/schema/schemas/effective-evidence.schema.json +82 -0
  21. package/packages/schema/schemas/evidence-page.schema.json +41 -0
  22. package/packages/schema/schemas/layer-rows.schema.json +41 -0
  23. package/packages/schema/schemas/report-run.schema.json +71 -0
  24. package/packages/schema/schemas/report-runs.schema.json +38 -1
  25. package/packages/schema/schemas/test-catalog.schema.json +41 -0
  26. package/packages/schema/schemas/test-history.schema.json +82 -0
  27. package/packages/server/openapi.json +498 -3
  28. package/packages/visualizer/src/explorer/RunsView.tsx +128 -10
  29. package/packages/visualizer/src/explorer/catalog.tsx +16 -6
  30. package/packages/visualizer/src/explorer/search.ts +4 -1
@@ -4146,7 +4146,7 @@
4146
4146
  "Report"
4147
4147
  ],
4148
4148
  "summary": "The runs that recorded the report",
4149
- "description": "Every run, newest first: layers grouped by their CI run URL (else branch and commit), with their environments, producers, how many tests they recorded, their results by status, the time they spanned and up to twenty failures. Send `format=markdown` for Markdown.\n\nRole needed: `read`.",
4149
+ "description": "Every run, newest first: layers grouped by their CI run URL (else branch and commit), with their environments, producers, how many tests they recorded, their results by status, the time they spanned, up to twenty failures and their video counts (references, distinct playable recordings, unavailable). Send `format=markdown` for Markdown.\n\nRole needed: `read`.",
4150
4150
  "x-atlas-role": "read",
4151
4151
  "security": [
4152
4152
  {
@@ -4167,6 +4167,15 @@
4167
4167
  "minimum": 0
4168
4168
  }
4169
4169
  },
4170
+ {
4171
+ "required": false,
4172
+ "name": "video",
4173
+ "in": "query",
4174
+ "description": "`true` to list only runs that have a playable video recording. Applied to every run before `limit`; `total` counts the matches. A server that does not know it answers with every run.",
4175
+ "schema": {
4176
+ "type": "boolean"
4177
+ }
4178
+ },
4170
4179
  {
4171
4180
  "required": false,
4172
4181
  "name": "format",
@@ -4237,7 +4246,7 @@
4237
4246
  "Report"
4238
4247
  ],
4239
4248
  "summary": "The runs that recorded the report",
4240
- "description": "Every run, newest first: layers grouped by their CI run URL (else branch and commit), with their environments, producers, how many tests they recorded, their results by status, the time they spanned and up to twenty failures. Send `format=markdown` for Markdown.\n\nScoped to one project. The same project may be selected on the unprefixed API using ?project= or X-Atlas-Project. Unknown projects return 404 on reads and are created by an authenticated upload.\n\nRole needed: `read`.",
4249
+ "description": "Every run, newest first: layers grouped by their CI run URL (else branch and commit), with their environments, producers, how many tests they recorded, their results by status, the time they spanned, up to twenty failures and their video counts (references, distinct playable recordings, unavailable). Send `format=markdown` for Markdown.\n\nScoped to one project. The same project may be selected on the unprefixed API using ?project= or X-Atlas-Project. Unknown projects return 404 on reads and are created by an authenticated upload.\n\nRole needed: `read`.",
4241
4250
  "x-atlas-role": "read",
4242
4251
  "security": [
4243
4252
  {
@@ -4270,6 +4279,15 @@
4270
4279
  "minimum": 0
4271
4280
  }
4272
4281
  },
4282
+ {
4283
+ "required": false,
4284
+ "name": "video",
4285
+ "in": "query",
4286
+ "description": "`true` to list only runs that have a playable video recording. Applied to every run before `limit`; `total` counts the matches. A server that does not know it answers with every run.",
4287
+ "schema": {
4288
+ "type": "boolean"
4289
+ }
4290
+ },
4273
4291
  {
4274
4292
  "required": false,
4275
4293
  "name": "format",
@@ -7810,6 +7828,47 @@
7810
7828
  "items": {
7811
7829
  "type": "string"
7812
7830
  }
7831
+ },
7832
+ "videos": {
7833
+ "description": "Its references to videos and who holds each. Absent when it has none, and in reports written before this was recorded",
7834
+ "type": "array",
7835
+ "items": {
7836
+ "type": "object",
7837
+ "properties": {
7838
+ "name": {
7839
+ "type": "string",
7840
+ "description": "The attachment name"
7841
+ },
7842
+ "owner": {
7843
+ "type": "string",
7844
+ "description": "Who holds it: `layer`, `check`, `attempt` or `step`. An open vocabulary: treat an unknown owner as a check"
7845
+ },
7846
+ "attempt": {
7847
+ "description": "The retry attempt that holds it, or that holds the step that does",
7848
+ "type": "integer",
7849
+ "minimum": 0,
7850
+ "maximum": 9007199254740991
7851
+ },
7852
+ "step": {
7853
+ "description": "The name of the step that holds it",
7854
+ "type": "string"
7855
+ },
7856
+ "recording": {
7857
+ "description": "What identifies the bytes; references with the same value are one recording. Absent when it cannot be played",
7858
+ "type": "string"
7859
+ },
7860
+ "available": {
7861
+ "type": "boolean",
7862
+ "description": "False when the reference names no bytes (no bundle key, address or inline text)"
7863
+ }
7864
+ },
7865
+ "required": [
7866
+ "name",
7867
+ "owner",
7868
+ "available"
7869
+ ],
7870
+ "additionalProperties": {}
7871
+ }
7813
7872
  }
7814
7873
  },
7815
7874
  "required": [
@@ -8043,6 +8102,47 @@
8043
8102
  "items": {
8044
8103
  "type": "string"
8045
8104
  }
8105
+ },
8106
+ "videos": {
8107
+ "description": "Its references to videos and who holds each. Absent when it has none, and in reports written before this was recorded",
8108
+ "type": "array",
8109
+ "items": {
8110
+ "type": "object",
8111
+ "properties": {
8112
+ "name": {
8113
+ "type": "string",
8114
+ "description": "The attachment name"
8115
+ },
8116
+ "owner": {
8117
+ "type": "string",
8118
+ "description": "Who holds it: `layer`, `check`, `attempt` or `step`. An open vocabulary: treat an unknown owner as a check"
8119
+ },
8120
+ "attempt": {
8121
+ "description": "The retry attempt that holds it, or that holds the step that does",
8122
+ "type": "integer",
8123
+ "minimum": 0,
8124
+ "maximum": 9007199254740991
8125
+ },
8126
+ "step": {
8127
+ "description": "The name of the step that holds it",
8128
+ "type": "string"
8129
+ },
8130
+ "recording": {
8131
+ "description": "What identifies the bytes; references with the same value are one recording. Absent when it cannot be played",
8132
+ "type": "string"
8133
+ },
8134
+ "available": {
8135
+ "type": "boolean",
8136
+ "description": "False when the reference names no bytes (no bundle key, address or inline text)"
8137
+ }
8138
+ },
8139
+ "required": [
8140
+ "name",
8141
+ "owner",
8142
+ "available"
8143
+ ],
8144
+ "additionalProperties": {}
8145
+ }
8046
8146
  }
8047
8147
  },
8048
8148
  "required": [
@@ -8297,6 +8397,47 @@
8297
8397
  "items": {
8298
8398
  "type": "string"
8299
8399
  }
8400
+ },
8401
+ "videos": {
8402
+ "description": "Its references to videos and who holds each. Absent when it has none, and in reports written before this was recorded",
8403
+ "type": "array",
8404
+ "items": {
8405
+ "type": "object",
8406
+ "properties": {
8407
+ "name": {
8408
+ "type": "string",
8409
+ "description": "The attachment name"
8410
+ },
8411
+ "owner": {
8412
+ "type": "string",
8413
+ "description": "Who holds it: `layer`, `check`, `attempt` or `step`. An open vocabulary: treat an unknown owner as a check"
8414
+ },
8415
+ "attempt": {
8416
+ "description": "The retry attempt that holds it, or that holds the step that does",
8417
+ "type": "integer",
8418
+ "minimum": 0,
8419
+ "maximum": 9007199254740991
8420
+ },
8421
+ "step": {
8422
+ "description": "The name of the step that holds it",
8423
+ "type": "string"
8424
+ },
8425
+ "recording": {
8426
+ "description": "What identifies the bytes; references with the same value are one recording. Absent when it cannot be played",
8427
+ "type": "string"
8428
+ },
8429
+ "available": {
8430
+ "type": "boolean",
8431
+ "description": "False when the reference names no bytes (no bundle key, address or inline text)"
8432
+ }
8433
+ },
8434
+ "required": [
8435
+ "name",
8436
+ "owner",
8437
+ "available"
8438
+ ],
8439
+ "additionalProperties": {}
8440
+ }
8300
8441
  }
8301
8442
  },
8302
8443
  "required": [
@@ -8530,6 +8671,47 @@
8530
8671
  "items": {
8531
8672
  "type": "string"
8532
8673
  }
8674
+ },
8675
+ "videos": {
8676
+ "description": "Its references to videos and who holds each. Absent when it has none, and in reports written before this was recorded",
8677
+ "type": "array",
8678
+ "items": {
8679
+ "type": "object",
8680
+ "properties": {
8681
+ "name": {
8682
+ "type": "string",
8683
+ "description": "The attachment name"
8684
+ },
8685
+ "owner": {
8686
+ "type": "string",
8687
+ "description": "Who holds it: `layer`, `check`, `attempt` or `step`. An open vocabulary: treat an unknown owner as a check"
8688
+ },
8689
+ "attempt": {
8690
+ "description": "The retry attempt that holds it, or that holds the step that does",
8691
+ "type": "integer",
8692
+ "minimum": 0,
8693
+ "maximum": 9007199254740991
8694
+ },
8695
+ "step": {
8696
+ "description": "The name of the step that holds it",
8697
+ "type": "string"
8698
+ },
8699
+ "recording": {
8700
+ "description": "What identifies the bytes; references with the same value are one recording. Absent when it cannot be played",
8701
+ "type": "string"
8702
+ },
8703
+ "available": {
8704
+ "type": "boolean",
8705
+ "description": "False when the reference names no bytes (no bundle key, address or inline text)"
8706
+ }
8707
+ },
8708
+ "required": [
8709
+ "name",
8710
+ "owner",
8711
+ "available"
8712
+ ],
8713
+ "additionalProperties": {}
8714
+ }
8533
8715
  }
8534
8716
  },
8535
8717
  "required": [
@@ -10785,6 +10967,47 @@
10785
10967
  "items": {
10786
10968
  "type": "string"
10787
10969
  }
10970
+ },
10971
+ "videos": {
10972
+ "description": "Its references to videos and who holds each. Absent when it has none, and in reports written before this was recorded",
10973
+ "type": "array",
10974
+ "items": {
10975
+ "type": "object",
10976
+ "properties": {
10977
+ "name": {
10978
+ "type": "string",
10979
+ "description": "The attachment name"
10980
+ },
10981
+ "owner": {
10982
+ "type": "string",
10983
+ "description": "Who holds it: `layer`, `check`, `attempt` or `step`. An open vocabulary: treat an unknown owner as a check"
10984
+ },
10985
+ "attempt": {
10986
+ "description": "The retry attempt that holds it, or that holds the step that does",
10987
+ "type": "integer",
10988
+ "minimum": 0,
10989
+ "maximum": 9007199254740991
10990
+ },
10991
+ "step": {
10992
+ "description": "The name of the step that holds it",
10993
+ "type": "string"
10994
+ },
10995
+ "recording": {
10996
+ "description": "What identifies the bytes; references with the same value are one recording. Absent when it cannot be played",
10997
+ "type": "string"
10998
+ },
10999
+ "available": {
11000
+ "type": "boolean",
11001
+ "description": "False when the reference names no bytes (no bundle key, address or inline text)"
11002
+ }
11003
+ },
11004
+ "required": [
11005
+ "name",
11006
+ "owner",
11007
+ "available"
11008
+ ],
11009
+ "additionalProperties": {}
11010
+ }
10788
11011
  }
10789
11012
  },
10790
11013
  "required": [
@@ -11019,6 +11242,47 @@
11019
11242
  "items": {
11020
11243
  "type": "string"
11021
11244
  }
11245
+ },
11246
+ "videos": {
11247
+ "description": "Its references to videos and who holds each. Absent when it has none, and in reports written before this was recorded",
11248
+ "type": "array",
11249
+ "items": {
11250
+ "type": "object",
11251
+ "properties": {
11252
+ "name": {
11253
+ "type": "string",
11254
+ "description": "The attachment name"
11255
+ },
11256
+ "owner": {
11257
+ "type": "string",
11258
+ "description": "Who holds it: `layer`, `check`, `attempt` or `step`. An open vocabulary: treat an unknown owner as a check"
11259
+ },
11260
+ "attempt": {
11261
+ "description": "The retry attempt that holds it, or that holds the step that does",
11262
+ "type": "integer",
11263
+ "minimum": 0,
11264
+ "maximum": 9007199254740991
11265
+ },
11266
+ "step": {
11267
+ "description": "The name of the step that holds it",
11268
+ "type": "string"
11269
+ },
11270
+ "recording": {
11271
+ "description": "What identifies the bytes; references with the same value are one recording. Absent when it cannot be played",
11272
+ "type": "string"
11273
+ },
11274
+ "available": {
11275
+ "type": "boolean",
11276
+ "description": "False when the reference names no bytes (no bundle key, address or inline text)"
11277
+ }
11278
+ },
11279
+ "required": [
11280
+ "name",
11281
+ "owner",
11282
+ "available"
11283
+ ],
11284
+ "additionalProperties": {}
11285
+ }
11022
11286
  }
11023
11287
  },
11024
11288
  "required": [
@@ -13243,6 +13507,47 @@
13243
13507
  "items": {
13244
13508
  "type": "string"
13245
13509
  }
13510
+ },
13511
+ "videos": {
13512
+ "description": "Its references to videos and who holds each. Absent when it has none, and in reports written before this was recorded",
13513
+ "type": "array",
13514
+ "items": {
13515
+ "type": "object",
13516
+ "properties": {
13517
+ "name": {
13518
+ "type": "string",
13519
+ "description": "The attachment name"
13520
+ },
13521
+ "owner": {
13522
+ "type": "string",
13523
+ "description": "Who holds it: `layer`, `check`, `attempt` or `step`. An open vocabulary: treat an unknown owner as a check"
13524
+ },
13525
+ "attempt": {
13526
+ "description": "The retry attempt that holds it, or that holds the step that does",
13527
+ "type": "integer",
13528
+ "minimum": 0,
13529
+ "maximum": 9007199254740991
13530
+ },
13531
+ "step": {
13532
+ "description": "The name of the step that holds it",
13533
+ "type": "string"
13534
+ },
13535
+ "recording": {
13536
+ "description": "What identifies the bytes; references with the same value are one recording. Absent when it cannot be played",
13537
+ "type": "string"
13538
+ },
13539
+ "available": {
13540
+ "type": "boolean",
13541
+ "description": "False when the reference names no bytes (no bundle key, address or inline text)"
13542
+ }
13543
+ },
13544
+ "required": [
13545
+ "name",
13546
+ "owner",
13547
+ "available"
13548
+ ],
13549
+ "additionalProperties": {}
13550
+ }
13246
13551
  }
13247
13552
  },
13248
13553
  "required": [
@@ -14136,6 +14441,47 @@
14136
14441
  "items": {
14137
14442
  "type": "string"
14138
14443
  }
14444
+ },
14445
+ "videos": {
14446
+ "description": "Its references to videos and who holds each. Absent when it has none, and in reports written before this was recorded",
14447
+ "type": "array",
14448
+ "items": {
14449
+ "type": "object",
14450
+ "properties": {
14451
+ "name": {
14452
+ "type": "string",
14453
+ "description": "The attachment name"
14454
+ },
14455
+ "owner": {
14456
+ "type": "string",
14457
+ "description": "Who holds it: `layer`, `check`, `attempt` or `step`. An open vocabulary: treat an unknown owner as a check"
14458
+ },
14459
+ "attempt": {
14460
+ "description": "The retry attempt that holds it, or that holds the step that does",
14461
+ "type": "integer",
14462
+ "minimum": 0,
14463
+ "maximum": 9007199254740991
14464
+ },
14465
+ "step": {
14466
+ "description": "The name of the step that holds it",
14467
+ "type": "string"
14468
+ },
14469
+ "recording": {
14470
+ "description": "What identifies the bytes; references with the same value are one recording. Absent when it cannot be played",
14471
+ "type": "string"
14472
+ },
14473
+ "available": {
14474
+ "type": "boolean",
14475
+ "description": "False when the reference names no bytes (no bundle key, address or inline text)"
14476
+ }
14477
+ },
14478
+ "required": [
14479
+ "name",
14480
+ "owner",
14481
+ "available"
14482
+ ],
14483
+ "additionalProperties": {}
14484
+ }
14139
14485
  }
14140
14486
  },
14141
14487
  "required": [
@@ -14533,6 +14879,47 @@
14533
14879
  "items": {
14534
14880
  "type": "string"
14535
14881
  }
14882
+ },
14883
+ "videos": {
14884
+ "description": "Its references to videos and who holds each. Absent when it has none, and in reports written before this was recorded",
14885
+ "type": "array",
14886
+ "items": {
14887
+ "type": "object",
14888
+ "properties": {
14889
+ "name": {
14890
+ "type": "string",
14891
+ "description": "The attachment name"
14892
+ },
14893
+ "owner": {
14894
+ "type": "string",
14895
+ "description": "Who holds it: `layer`, `check`, `attempt` or `step`. An open vocabulary: treat an unknown owner as a check"
14896
+ },
14897
+ "attempt": {
14898
+ "description": "The retry attempt that holds it, or that holds the step that does",
14899
+ "type": "integer",
14900
+ "minimum": 0,
14901
+ "maximum": 9007199254740991
14902
+ },
14903
+ "step": {
14904
+ "description": "The name of the step that holds it",
14905
+ "type": "string"
14906
+ },
14907
+ "recording": {
14908
+ "description": "What identifies the bytes; references with the same value are one recording. Absent when it cannot be played",
14909
+ "type": "string"
14910
+ },
14911
+ "available": {
14912
+ "type": "boolean",
14913
+ "description": "False when the reference names no bytes (no bundle key, address or inline text)"
14914
+ }
14915
+ },
14916
+ "required": [
14917
+ "name",
14918
+ "owner",
14919
+ "available"
14920
+ ],
14921
+ "additionalProperties": {}
14922
+ }
14536
14923
  }
14537
14924
  },
14538
14925
  "required": [
@@ -14589,7 +14976,8 @@
14589
14976
  "total": {
14590
14977
  "type": "integer",
14591
14978
  "minimum": 0,
14592
- "maximum": 9007199254740991
14979
+ "maximum": 9007199254740991,
14980
+ "description": "Runs that matched, before `limit`"
14593
14981
  },
14594
14982
  "runs": {
14595
14983
  "type": "array",
@@ -14723,6 +15111,36 @@
14723
15111
  ],
14724
15112
  "additionalProperties": {}
14725
15113
  }
15114
+ },
15115
+ "videos": {
15116
+ "description": "Its videos, from its layers and the last result of each test. Absent when it has none or the report carries no video information",
15117
+ "type": "object",
15118
+ "properties": {
15119
+ "references": {
15120
+ "type": "integer",
15121
+ "minimum": 0,
15122
+ "maximum": 9007199254740991,
15123
+ "description": "Every reference to a video; identical bytes referenced twice count twice"
15124
+ },
15125
+ "recordings": {
15126
+ "type": "integer",
15127
+ "minimum": 0,
15128
+ "maximum": 9007199254740991,
15129
+ "description": "Distinct playable recordings"
15130
+ },
15131
+ "unavailable": {
15132
+ "type": "integer",
15133
+ "minimum": 0,
15134
+ "maximum": 9007199254740991,
15135
+ "description": "References that name no bytes"
15136
+ }
15137
+ },
15138
+ "required": [
15139
+ "references",
15140
+ "recordings",
15141
+ "unavailable"
15142
+ ],
15143
+ "additionalProperties": {}
14726
15144
  }
14727
15145
  },
14728
15146
  "required": [
@@ -14743,6 +15161,12 @@
14743
15161
  ],
14744
15162
  "additionalProperties": {}
14745
15163
  }
15164
+ },
15165
+ "withVideo": {
15166
+ "description": "How many of all runs (before `video` and `limit`) have a playable video recording",
15167
+ "type": "integer",
15168
+ "minimum": 0,
15169
+ "maximum": 9007199254740991
14746
15170
  }
14747
15171
  },
14748
15172
  "required": [
@@ -14893,6 +15317,36 @@
14893
15317
  ],
14894
15318
  "additionalProperties": {}
14895
15319
  }
15320
+ },
15321
+ "videos": {
15322
+ "description": "Its videos, from its layers and the last result of each test. Absent when it has none or the report carries no video information",
15323
+ "type": "object",
15324
+ "properties": {
15325
+ "references": {
15326
+ "type": "integer",
15327
+ "minimum": 0,
15328
+ "maximum": 9007199254740991,
15329
+ "description": "Every reference to a video; identical bytes referenced twice count twice"
15330
+ },
15331
+ "recordings": {
15332
+ "type": "integer",
15333
+ "minimum": 0,
15334
+ "maximum": 9007199254740991,
15335
+ "description": "Distinct playable recordings"
15336
+ },
15337
+ "unavailable": {
15338
+ "type": "integer",
15339
+ "minimum": 0,
15340
+ "maximum": 9007199254740991,
15341
+ "description": "References that name no bytes"
15342
+ }
15343
+ },
15344
+ "required": [
15345
+ "references",
15346
+ "recordings",
15347
+ "unavailable"
15348
+ ],
15349
+ "additionalProperties": {}
14896
15350
  }
14897
15351
  },
14898
15352
  "required": [
@@ -14965,6 +15419,47 @@
14965
15419
  },
14966
15420
  "detail": {
14967
15421
  "type": "string"
15422
+ },
15423
+ "videos": {
15424
+ "description": "Every video its evidence references, with who holds it",
15425
+ "type": "array",
15426
+ "items": {
15427
+ "type": "object",
15428
+ "properties": {
15429
+ "name": {
15430
+ "type": "string",
15431
+ "description": "The attachment name"
15432
+ },
15433
+ "owner": {
15434
+ "type": "string",
15435
+ "description": "Who holds it: `layer`, `check`, `attempt` or `step`. An open vocabulary: treat an unknown owner as a check"
15436
+ },
15437
+ "attempt": {
15438
+ "description": "The retry attempt that holds it, or that holds the step that does",
15439
+ "type": "integer",
15440
+ "minimum": 0,
15441
+ "maximum": 9007199254740991
15442
+ },
15443
+ "step": {
15444
+ "description": "The name of the step that holds it",
15445
+ "type": "string"
15446
+ },
15447
+ "recording": {
15448
+ "description": "What identifies the bytes; references with the same value are one recording. Absent when it cannot be played",
15449
+ "type": "string"
15450
+ },
15451
+ "available": {
15452
+ "type": "boolean",
15453
+ "description": "False when the reference names no bytes (no bundle key, address or inline text)"
15454
+ }
15455
+ },
15456
+ "required": [
15457
+ "name",
15458
+ "owner",
15459
+ "available"
15460
+ ],
15461
+ "additionalProperties": {}
15462
+ }
14968
15463
  }
14969
15464
  },
14970
15465
  "required": [