@crvouga/atlas 1.20.0 → 1.22.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 (114) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/dist/core/src/cli.d.ts +2 -2
  3. package/dist/core/src/cli.js +7 -1
  4. package/dist/critics/src/catalog-client.d.ts +91 -0
  5. package/dist/critics/src/catalog-client.js +194 -0
  6. package/dist/critics/src/cli-calibrate.d.ts +4 -0
  7. package/dist/critics/src/cli-calibrate.js +211 -0
  8. package/dist/critics/src/cli-common.d.ts +108 -0
  9. package/dist/critics/src/cli-common.js +155 -0
  10. package/dist/critics/src/cli-review.d.ts +4 -0
  11. package/dist/critics/src/cli-review.js +174 -0
  12. package/dist/critics/src/cli-watch.d.ts +4 -0
  13. package/dist/critics/src/cli-watch.js +191 -0
  14. package/dist/critics/src/cli.d.ts +13 -0
  15. package/dist/critics/src/cli.js +490 -0
  16. package/dist/critics/src/index.d.ts +3 -0
  17. package/dist/critics/src/index.js +3 -0
  18. package/dist/critics/src/judging.d.ts +8 -0
  19. package/dist/critics/src/llm.d.ts +120 -0
  20. package/dist/critics/src/llm.js +266 -0
  21. package/dist/critics/src/marks.d.ts +74 -0
  22. package/dist/critics/src/marks.js +76 -0
  23. package/dist/critics/src/registry.d.ts +125 -0
  24. package/dist/critics/src/registry.js +203 -0
  25. package/dist/critics/src/spool.d.ts +32 -0
  26. package/dist/critics/src/spool.js +129 -0
  27. package/dist/critics/src/uiclip.d.ts +82 -0
  28. package/dist/critics/src/uiclip.js +167 -0
  29. package/dist/reports/src/compose.d.ts +23 -1
  30. package/dist/reports/src/compose.js +29 -19
  31. package/dist/reports/src/critique-review.d.ts +111 -0
  32. package/dist/reports/src/critique-review.js +123 -0
  33. package/dist/reports/src/critique-row.d.ts +24 -0
  34. package/dist/reports/src/critique-row.js +39 -0
  35. package/dist/reports/src/evidence-types.d.ts +5 -0
  36. package/dist/reports/src/layer-merge.js +5 -0
  37. package/dist/reports/src/report-cli.d.ts +13 -0
  38. package/dist/reports/src/report-cli.js +6 -4
  39. package/dist/reports/src/report-index.d.ts +6 -0
  40. package/dist/reports/src/report-index.js +12 -0
  41. package/dist/reports/src/ui-catalog-cli.d.ts +10 -0
  42. package/dist/reports/src/ui-catalog-cli.js +391 -0
  43. package/dist/reports/src/ui-catalog-diff.d.ts +104 -0
  44. package/dist/reports/src/ui-catalog-diff.js +130 -0
  45. package/dist/reports/src/ui-catalog-entries.d.ts +147 -0
  46. package/dist/reports/src/ui-catalog-entries.js +190 -0
  47. package/dist/reports/src/ui-catalog-export.d.ts +82 -0
  48. package/dist/reports/src/ui-catalog-export.js +221 -0
  49. package/dist/reports/src/ui-catalog-publish.js +2 -2
  50. package/dist/reports/src/ui-catalog.d.ts +2 -0
  51. package/dist/reports/src/ui-catalog.js +1 -1
  52. package/dist/reports/src/ui-state.d.ts +2 -0
  53. package/dist/reports/src/ui-state.js +2 -2
  54. package/dist/schema/src/api.d.ts +653 -1
  55. package/dist/schema/src/api.js +44 -0
  56. package/dist/schema/src/cli-results.d.ts +991 -1
  57. package/dist/schema/src/cli-results.js +265 -1
  58. package/dist/schema/src/critique.d.ts +31 -0
  59. package/dist/schema/src/critique.js +26 -0
  60. package/dist/schema/src/server-config.d.ts +3 -3
  61. package/dist/server/src/app.js +28 -1
  62. package/dist/server/src/openapi.js +19 -2
  63. package/docs/agents.md +16 -2
  64. package/docs/critics.md +273 -9
  65. package/docs/extending.md +1 -1
  66. package/docs/reference/cli.md +126 -1
  67. package/docs/reference/core.md +1 -1
  68. package/docs/reference/critics.md +1131 -29
  69. package/docs/reference/http-api.md +40 -0
  70. package/docs/reference/reports.md +855 -0
  71. package/docs/reference/schema.md +197 -1
  72. package/docs/report-contract.md +2 -1
  73. package/docs/server.md +2 -0
  74. package/docs/ui-catalog.md +110 -13
  75. package/docs/ui.md +69 -2
  76. package/llms-full.txt +636 -26
  77. package/llms.txt +1 -1
  78. package/package.json +9 -1
  79. package/packages/critics/README.md +1 -0
  80. package/packages/schema/schemas/critic-calibrate-result.schema.json +274 -0
  81. package/packages/schema/schemas/critic-doctor-result.schema.json +74 -0
  82. package/packages/schema/schemas/critic-list-result.schema.json +90 -0
  83. package/packages/schema/schemas/critic-review-result.schema.json +397 -0
  84. package/packages/schema/schemas/critic-run-result.schema.json +249 -0
  85. package/packages/schema/schemas/critic-setup-result.schema.json +34 -0
  86. package/packages/schema/schemas/critic-watch-result.schema.json +211 -0
  87. package/packages/schema/schemas/critique-mark.schema.json +81 -0
  88. package/packages/schema/schemas/effective-delta.schema.json +337 -0
  89. package/packages/schema/schemas/effective-evidence.schema.json +337 -0
  90. package/packages/schema/schemas/layer-rows.schema.json +337 -0
  91. package/packages/schema/schemas/ui-catalog-diff-result.schema.json +201 -0
  92. package/packages/schema/schemas/ui-catalog-export-result.schema.json +83 -0
  93. package/packages/schema/schemas/ui-catalog-publish-result.schema.json +116 -0
  94. package/packages/schema/schemas/ui-catalog-status.schema.json +197 -0
  95. package/packages/server/openapi.json +6755 -4738
  96. package/packages/visualizer/src/app/AppShell.tsx +3 -1
  97. package/packages/visualizer/src/app/router.tsx +20 -7
  98. package/packages/visualizer/src/catalog/Picture.tsx +32 -0
  99. package/packages/visualizer/src/catalog/UiCatalogCompare.tsx +289 -0
  100. package/packages/visualizer/src/catalog/UiCatalogPage.tsx +18 -28
  101. package/packages/visualizer/src/catalog/history.ts +61 -0
  102. package/packages/visualizer/src/catalog/search.ts +14 -3
  103. package/packages/visualizer/src/components/Header.tsx +16 -4
  104. package/packages/visualizer/src/critiques/CritiquesPage.tsx +402 -0
  105. package/packages/visualizer/src/critiques/FindingOverlay.tsx +50 -0
  106. package/packages/visualizer/src/critiques/ranking.ts +54 -0
  107. package/packages/visualizer/src/critiques/search.ts +41 -0
  108. package/packages/visualizer/src/evidence/applicability-view.tsx +11 -7
  109. package/packages/visualizer/src/evidence/behaviors-page.tsx +22 -15
  110. package/packages/visualizer/src/evidence/evidence-context.tsx +2 -1
  111. package/packages/visualizer/src/explorer/Explorer.tsx +5 -0
  112. package/packages/visualizer/src/explorer/TestDetail.tsx +4 -1
  113. package/packages/visualizer/src/explorer/parts.tsx +19 -1
  114. package/packages/visualizer/src/explorer/playlist.tsx +11 -7
@@ -0,0 +1,116 @@
1
+ {
2
+ "$id": "https://github.com/crvouga/atlas/schemas/ui-catalog-publish-result.schema.json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "type": "object",
5
+ "properties": {
6
+ "ok": {
7
+ "type": "boolean",
8
+ "const": true,
9
+ "description": "True: the layer was written. A state whose picture could not be read is published as `failed` and named in `warnings`; it does not fail the command"
10
+ },
11
+ "store": {
12
+ "type": "string",
13
+ "description": "Where it was written: a folder, `s3://…` or a server URL"
14
+ },
15
+ "layer": {
16
+ "type": "object",
17
+ "properties": {
18
+ "id": {
19
+ "type": "string",
20
+ "description": "The layer id: 64 hex digits, the SHA-256 of its content. Publishing the same input again gives the same id"
21
+ },
22
+ "kind": {
23
+ "type": "string",
24
+ "enum": [
25
+ "ui-state",
26
+ "ui-plan"
27
+ ],
28
+ "description": "`ui-state`: captures (`publish`). `ui-plan`: the expected set (`plan`)"
29
+ },
30
+ "producer": {
31
+ "type": "string"
32
+ },
33
+ "environment": {
34
+ "type": [
35
+ "string",
36
+ "null"
37
+ ]
38
+ },
39
+ "parameters": {
40
+ "type": "object",
41
+ "propertyNames": {
42
+ "type": "string"
43
+ },
44
+ "additionalProperties": {
45
+ "type": "string"
46
+ },
47
+ "description": "The rest of the profile, such as `{ \"viewport\": \"390x844\" }`"
48
+ },
49
+ "states": {
50
+ "type": "integer",
51
+ "minimum": 0,
52
+ "maximum": 9007199254740991,
53
+ "description": "States in the layer"
54
+ },
55
+ "captured": {
56
+ "type": "integer",
57
+ "minimum": 0,
58
+ "maximum": 9007199254740991,
59
+ "description": "For `publish`: states that were captured (`passed`). Zero for a plan"
60
+ },
61
+ "failed": {
62
+ "type": "integer",
63
+ "minimum": 0,
64
+ "maximum": 9007199254740991,
65
+ "description": "For `publish`: states recorded as failed, including those whose picture could not be read"
66
+ },
67
+ "pictures": {
68
+ "type": "integer",
69
+ "minimum": 0,
70
+ "maximum": 9007199254740991,
71
+ "description": "Pictures stored in the layer"
72
+ },
73
+ "pictureBytes": {
74
+ "type": "integer",
75
+ "minimum": 0,
76
+ "maximum": 9007199254740991
77
+ },
78
+ "shard": {
79
+ "description": "The `--shard` label, which describes the layer and never splits its slot",
80
+ "type": [
81
+ "string",
82
+ "null"
83
+ ]
84
+ }
85
+ },
86
+ "required": [
87
+ "id",
88
+ "kind",
89
+ "producer",
90
+ "environment",
91
+ "parameters",
92
+ "states",
93
+ "captured",
94
+ "failed",
95
+ "pictures",
96
+ "pictureBytes",
97
+ "shard"
98
+ ],
99
+ "additionalProperties": {}
100
+ },
101
+ "warnings": {
102
+ "type": "array",
103
+ "items": {
104
+ "type": "string"
105
+ },
106
+ "description": "What was skipped and why, such as a picture file that could not be read. Never fatal"
107
+ }
108
+ },
109
+ "required": [
110
+ "ok",
111
+ "store",
112
+ "layer",
113
+ "warnings"
114
+ ],
115
+ "additionalProperties": {}
116
+ }
@@ -0,0 +1,197 @@
1
+ {
2
+ "$id": "https://github.com/crvouga/atlas/schemas/ui-catalog-status.schema.json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "type": "object",
5
+ "properties": {
6
+ "ok": {
7
+ "type": "boolean",
8
+ "description": "True only when the catalog holds a state and has no problem: nothing failed, nothing expected is missing, nothing is still being captured, and every backend and layer was read (otherwise the exit code is 1). Skipped cells are counted, not problems"
9
+ },
10
+ "summary": {
11
+ "type": "object",
12
+ "properties": {
13
+ "states": {
14
+ "type": "integer",
15
+ "minimum": 0,
16
+ "maximum": 9007199254740991
17
+ },
18
+ "profiles": {
19
+ "type": "integer",
20
+ "minimum": 0,
21
+ "maximum": 9007199254740991
22
+ },
23
+ "cells": {
24
+ "type": "integer",
25
+ "minimum": 0,
26
+ "maximum": 9007199254740991,
27
+ "description": "States counted once per profile"
28
+ },
29
+ "coverage": {
30
+ "type": "object",
31
+ "propertyNames": {
32
+ "type": "string",
33
+ "enum": [
34
+ "captured",
35
+ "failed",
36
+ "capturing",
37
+ "skipped",
38
+ "missing"
39
+ ]
40
+ },
41
+ "additionalProperties": {
42
+ "type": "integer",
43
+ "minimum": 0,
44
+ "maximum": 9007199254740991
45
+ },
46
+ "required": [
47
+ "captured",
48
+ "failed",
49
+ "capturing",
50
+ "skipped",
51
+ "missing"
52
+ ],
53
+ "description": "Cells by coverage"
54
+ },
55
+ "undeclared": {
56
+ "type": "integer",
57
+ "minimum": 0,
58
+ "maximum": 9007199254740991,
59
+ "description": "Captured cells no plan expects; zero when no plan exists"
60
+ },
61
+ "planned": {
62
+ "type": "boolean",
63
+ "description": "Whether any plan was published. Without one, `missing` is always zero because what should exist is unknown"
64
+ },
65
+ "surfaces": {
66
+ "type": "integer",
67
+ "minimum": 0,
68
+ "maximum": 9007199254740991
69
+ },
70
+ "uncoveredSurfaces": {
71
+ "type": "integer",
72
+ "minimum": 0,
73
+ "maximum": 9007199254740991
74
+ }
75
+ },
76
+ "required": [
77
+ "states",
78
+ "profiles",
79
+ "cells",
80
+ "coverage",
81
+ "undeclared",
82
+ "planned",
83
+ "surfaces",
84
+ "uncoveredSurfaces"
85
+ ],
86
+ "additionalProperties": {}
87
+ },
88
+ "profiles": {
89
+ "type": "array",
90
+ "items": {
91
+ "type": "object",
92
+ "properties": {
93
+ "key": {
94
+ "type": "string"
95
+ },
96
+ "label": {
97
+ "type": "string"
98
+ }
99
+ },
100
+ "required": [
101
+ "key",
102
+ "label"
103
+ ],
104
+ "additionalProperties": {}
105
+ }
106
+ },
107
+ "problems": {
108
+ "type": "array",
109
+ "items": {
110
+ "type": "object",
111
+ "properties": {
112
+ "kind": {
113
+ "type": "string",
114
+ "enum": [
115
+ "failed",
116
+ "missing",
117
+ "capturing",
118
+ "unavailable",
119
+ "unreadable",
120
+ "empty"
121
+ ],
122
+ "description": "`failed`: a capture was attempted and failed. `missing`: a plan expects it and nothing was captured. `capturing`: still being taken, so not known. `unavailable`: a backend could not be read. `unreadable`: a layer could not be read. `empty`: the catalog holds no state at all"
123
+ },
124
+ "state": {
125
+ "description": "The state id, for `failed`, `missing` and `capturing`",
126
+ "type": "string"
127
+ },
128
+ "profile": {
129
+ "description": "The profile label, for `failed`, `missing` and `capturing`",
130
+ "type": "string"
131
+ },
132
+ "detail": {
133
+ "description": "Why, when the producer said",
134
+ "type": "string"
135
+ }
136
+ },
137
+ "required": [
138
+ "kind"
139
+ ],
140
+ "additionalProperties": {}
141
+ }
142
+ },
143
+ "sources": {
144
+ "type": "object",
145
+ "properties": {
146
+ "layers": {
147
+ "type": "integer",
148
+ "minimum": 0,
149
+ "maximum": 9007199254740991
150
+ },
151
+ "backends": {
152
+ "type": "array",
153
+ "items": {
154
+ "type": "object",
155
+ "properties": {
156
+ "id": {
157
+ "type": "string"
158
+ },
159
+ "label": {
160
+ "type": "string"
161
+ },
162
+ "available": {
163
+ "type": "boolean"
164
+ }
165
+ },
166
+ "required": [
167
+ "id",
168
+ "label",
169
+ "available"
170
+ ],
171
+ "additionalProperties": {}
172
+ }
173
+ },
174
+ "notices": {
175
+ "type": "array",
176
+ "items": {
177
+ "type": "string"
178
+ }
179
+ }
180
+ },
181
+ "required": [
182
+ "layers",
183
+ "backends",
184
+ "notices"
185
+ ],
186
+ "additionalProperties": {}
187
+ }
188
+ },
189
+ "required": [
190
+ "ok",
191
+ "summary",
192
+ "profiles",
193
+ "problems",
194
+ "sources"
195
+ ],
196
+ "additionalProperties": {}
197
+ }