@crvouga/atlas 0.10.2 → 0.12.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 +12 -0
  2. package/README.md +7 -0
  3. package/dist/reports/src/catalog-health.d.ts +142 -0
  4. package/dist/reports/src/catalog-health.js +257 -0
  5. package/dist/reports/src/test-catalog.d.ts +8 -0
  6. package/dist/reports/src/test-catalog.js +5 -1
  7. package/dist/schema/src/api.d.ts +79 -0
  8. package/dist/schema/src/api.js +50 -0
  9. package/dist/server/src/app.js +9 -0
  10. package/dist/server/src/llms.js +1 -0
  11. package/dist/server/src/openapi.js +18 -2
  12. package/dist/server/src/settings-page.d.ts +4 -4
  13. package/dist/server/src/settings-page.js +17 -78
  14. package/docs/reference/http-api.md +34 -0
  15. package/docs/reference/reports.md +224 -0
  16. package/docs/reference/schema.md +10 -0
  17. package/docs/reference/server.md +4 -4
  18. package/docs/server.md +10 -0
  19. package/docs/ui.md +142 -0
  20. package/docs/workspaces.md +130 -0
  21. package/llms-full.txt +322 -0
  22. package/llms.txt +2 -0
  23. package/package.json +17 -10
  24. package/packages/schema/schemas/catalog-health.schema.json +400 -0
  25. package/packages/server/openapi.json +596 -0
  26. package/packages/visualizer/src/admin/SettingsPage.tsx +456 -0
  27. package/packages/visualizer/src/admin/main.tsx +11 -0
  28. package/packages/visualizer/src/app/AppShell.tsx +62 -38
  29. package/packages/visualizer/src/app/gazetteer.tsx +90 -83
  30. package/packages/visualizer/src/app/router.tsx +33 -15
  31. package/packages/visualizer/src/components/ActivityIndicator.tsx +4 -5
  32. package/packages/visualizer/src/components/DataIssues.tsx +36 -54
  33. package/packages/visualizer/src/components/Header.tsx +197 -125
  34. package/packages/visualizer/src/components/Legend.tsx +13 -41
  35. package/packages/visualizer/src/components/ProjectPicker.tsx +61 -26
  36. package/packages/visualizer/src/components/Screen.tsx +80 -71
  37. package/packages/visualizer/src/components/SpecLogo.tsx +15 -0
  38. package/packages/visualizer/src/components/Status.tsx +20 -34
  39. package/packages/visualizer/src/components/labels.tsx +8 -3
  40. package/packages/visualizer/src/components/spec-logos/APACHE-2.0.txt +206 -0
  41. package/packages/visualizer/src/components/spec-logos/CAMUNDA-MIT.txt +21 -0
  42. package/packages/visualizer/src/components/spec-logos/FILE-ICONS-ISC.txt +13 -0
  43. package/packages/visualizer/src/components/spec-logos/README.md +23 -0
  44. package/packages/visualizer/src/components/spec-logos/SIMPLE-ICONS-CC0.txt +30 -0
  45. package/packages/visualizer/src/components/spec-logos/alloy.svg +1 -0
  46. package/packages/visualizer/src/components/spec-logos/dmn.svg +3 -0
  47. package/packages/visualizer/src/components/spec-logos/gherkin.svg +1 -0
  48. package/packages/visualizer/src/components/spec-logos/openslo.svg +63 -0
  49. package/packages/visualizer/src/components/spec-logos/quint.svg +1 -0
  50. package/packages/visualizer/src/evidence/artifacts.tsx +263 -110
  51. package/packages/visualizer/src/evidence/chart-source.tsx +18 -0
  52. package/packages/visualizer/src/evidence/check-detail.tsx +283 -139
  53. package/packages/visualizer/src/evidence/decision-table.tsx +35 -26
  54. package/packages/visualizer/src/evidence/document-page.tsx +51 -29
  55. package/packages/visualizer/src/evidence/feature-page.tsx +121 -53
  56. package/packages/visualizer/src/evidence/marks.tsx +112 -79
  57. package/packages/visualizer/src/evidence/model-page.tsx +77 -46
  58. package/packages/visualizer/src/evidence/model-trace.tsx +55 -35
  59. package/packages/visualizer/src/evidence/overview.tsx +137 -69
  60. package/packages/visualizer/src/evidence/recording-page.tsx +70 -31
  61. package/packages/visualizer/src/evidence/recording.tsx +135 -68
  62. package/packages/visualizer/src/evidence/snapshot.tsx +99 -43
  63. package/packages/visualizer/src/evidence/source-text.tsx +33 -0
  64. package/packages/visualizer/src/evidence/sources-panel.tsx +138 -144
  65. package/packages/visualizer/src/evidence/spec-header.tsx +52 -36
  66. package/packages/visualizer/src/evidence/spec-index.tsx +61 -32
  67. package/packages/visualizer/src/evidence/spec-page.tsx +56 -25
  68. package/packages/visualizer/src/evidence/test-filter.tsx +38 -14
  69. package/packages/visualizer/src/explorer/Explorer.tsx +688 -261
  70. package/packages/visualizer/src/explorer/ExplorerIndex.tsx +136 -68
  71. package/packages/visualizer/src/explorer/RunsView.tsx +307 -94
  72. package/packages/visualizer/src/explorer/TestDetail.tsx +393 -118
  73. package/packages/visualizer/src/explorer/parts.tsx +35 -13
  74. package/packages/visualizer/src/find/Finder.tsx +106 -90
  75. package/packages/visualizer/src/find/open.ts +17 -20
  76. package/packages/visualizer/src/live/test-progress.tsx +60 -22
  77. package/packages/visualizer/src/looks/Stage.tsx +223 -110
  78. package/packages/visualizer/src/main.tsx +9 -11
  79. package/packages/visualizer/src/map/ChartMap.tsx +125 -69
  80. package/packages/visualizer/src/map/EventEdge.tsx +59 -37
  81. package/packages/visualizer/src/map/map.module.css +12 -546
  82. package/packages/visualizer/src/map/nodes.tsx +124 -70
  83. package/packages/visualizer/src/reachable.test.ts +3 -2
  84. package/packages/visualizer/src/spec-kind.ts +2 -2
  85. package/packages/visualizer/src/ui/grammars/ALLOY-MIT.txt +21 -0
  86. package/packages/visualizer/src/ui/grammars/QUINT-APACHE-2.0.txt +206 -0
  87. package/packages/visualizer/src/ui/grammars/README.md +14 -0
  88. package/packages/visualizer/src/ui/grammars/alloy.json +71 -0
  89. package/packages/visualizer/src/ui/grammars/quint.json +152 -0
  90. package/packages/visualizer/src/ui/highlight.ts +50 -0
  91. package/packages/visualizer/src/ui/theme.tsx +109 -0
  92. package/packages/visualizer/src/views/ChartPage.tsx +46 -26
  93. package/packages/visualizer/src/views/ChartTests.tsx +59 -22
  94. package/packages/visualizer/src/views/ProductPage.tsx +16 -15
  95. package/packages/visualizer/src/views/SidePanel.tsx +241 -131
  96. package/packages/visualizer/src/app/gazetteer.module.css +0 -107
  97. package/packages/visualizer/src/components/ActivityIndicator.module.css +0 -4
  98. package/packages/visualizer/src/components/DataIssues.module.css +0 -136
  99. package/packages/visualizer/src/components/Header.module.css +0 -114
  100. package/packages/visualizer/src/components/Legend.module.css +0 -84
  101. package/packages/visualizer/src/components/Screen.module.css +0 -312
  102. package/packages/visualizer/src/components/Status.module.css +0 -116
  103. package/packages/visualizer/src/components/icons.tsx +0 -156
  104. package/packages/visualizer/src/evidence/artifacts.module.css +0 -213
  105. package/packages/visualizer/src/evidence/evidence.module.css +0 -907
  106. package/packages/visualizer/src/evidence/recording.module.css +0 -460
  107. package/packages/visualizer/src/evidence/sources.module.css +0 -168
  108. package/packages/visualizer/src/evidence/spec-snapshot.tsx +0 -26
  109. package/packages/visualizer/src/explorer/explorer.module.css +0 -1238
  110. package/packages/visualizer/src/find/Finder.module.css +0 -168
  111. package/packages/visualizer/src/looks/stage.module.css +0 -300
  112. package/packages/visualizer/src/styles/global.css +0 -105
  113. package/packages/visualizer/src/styles/tokens.css +0 -80
  114. package/packages/visualizer/src/views/views.module.css +0 -546
@@ -0,0 +1,400 @@
1
+ {
2
+ "$id": "https://github.com/crvouga/atlas/schemas/catalog-health.schema.json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "type": "object",
5
+ "properties": {
6
+ "schemaVersion": {
7
+ "type": "number",
8
+ "const": 1
9
+ },
10
+ "version": {
11
+ "type": "string",
12
+ "description": "Changes whenever the report or its history does"
13
+ },
14
+ "generatedAtMs": {
15
+ "type": "number"
16
+ },
17
+ "ok": {
18
+ "type": "boolean",
19
+ "description": "True when there is no warning-severity finding"
20
+ },
21
+ "counts": {
22
+ "type": "object",
23
+ "properties": {
24
+ "specs": {
25
+ "type": "object",
26
+ "properties": {
27
+ "files": {
28
+ "type": "integer",
29
+ "minimum": 0,
30
+ "maximum": 9007199254740991,
31
+ "description": "Spec files the report is laid over, before any root mapping"
32
+ },
33
+ "defined": {
34
+ "type": "integer",
35
+ "minimum": 0,
36
+ "maximum": 9007199254740991,
37
+ "description": "Logical specs: files joined by a declared root mapping count once"
38
+ },
39
+ "withTests": {
40
+ "type": "integer",
41
+ "minimum": 0,
42
+ "maximum": 9007199254740991,
43
+ "description": "Logical specs, defined or not, that have at least one test"
44
+ },
45
+ "executed": {
46
+ "type": "integer",
47
+ "minimum": 0,
48
+ "maximum": 9007199254740991,
49
+ "description": "Defined logical specs with a test that passed or failed"
50
+ },
51
+ "withoutExecution": {
52
+ "type": "integer",
53
+ "minimum": 0,
54
+ "maximum": 9007199254740991,
55
+ "description": "Defined logical specs with no passed or failed test: the defined coverage gaps"
56
+ }
57
+ },
58
+ "required": [
59
+ "files",
60
+ "defined",
61
+ "withTests",
62
+ "executed",
63
+ "withoutExecution"
64
+ ],
65
+ "additionalProperties": {}
66
+ },
67
+ "tests": {
68
+ "type": "object",
69
+ "properties": {
70
+ "total": {
71
+ "type": "integer",
72
+ "minimum": 0,
73
+ "maximum": 9007199254740991
74
+ },
75
+ "withSpec": {
76
+ "type": "integer",
77
+ "minimum": 0,
78
+ "maximum": 9007199254740991
79
+ },
80
+ "withoutSpec": {
81
+ "type": "integer",
82
+ "minimum": 0,
83
+ "maximum": 9007199254740991
84
+ },
85
+ "passed": {
86
+ "type": "integer",
87
+ "minimum": 0,
88
+ "maximum": 9007199254740991,
89
+ "description": "Tests whose current status is passed"
90
+ },
91
+ "historicalOnly": {
92
+ "type": "integer",
93
+ "minimum": 0,
94
+ "maximum": 9007199254740991,
95
+ "description": "Tests only the history holds a result for"
96
+ }
97
+ },
98
+ "required": [
99
+ "total",
100
+ "withSpec",
101
+ "withoutSpec",
102
+ "passed",
103
+ "historicalOnly"
104
+ ],
105
+ "additionalProperties": {}
106
+ },
107
+ "scenarios": {
108
+ "type": "object",
109
+ "properties": {
110
+ "outlines": {
111
+ "type": "integer",
112
+ "minimum": 0,
113
+ "maximum": 9007199254740991,
114
+ "description": "Tests sharing the label `outline` count once; a test without it is its own outline"
115
+ },
116
+ "examples": {
117
+ "type": "integer",
118
+ "minimum": 0,
119
+ "maximum": 9007199254740991,
120
+ "description": "Tests (check identities), however many environments ran them"
121
+ },
122
+ "observations": {
123
+ "type": "integer",
124
+ "minimum": 0,
125
+ "maximum": 9007199254740991,
126
+ "description": "Current results per producer, environment and parameter set"
127
+ },
128
+ "executedObservations": {
129
+ "type": "integer",
130
+ "minimum": 0,
131
+ "maximum": 9007199254740991
132
+ },
133
+ "passedObservations": {
134
+ "type": "integer",
135
+ "minimum": 0,
136
+ "maximum": 9007199254740991
137
+ }
138
+ },
139
+ "required": [
140
+ "outlines",
141
+ "examples",
142
+ "observations",
143
+ "executedObservations",
144
+ "passedObservations"
145
+ ],
146
+ "additionalProperties": {}
147
+ }
148
+ },
149
+ "required": [
150
+ "specs",
151
+ "tests",
152
+ "scenarios"
153
+ ],
154
+ "additionalProperties": {}
155
+ },
156
+ "reconciliation": {
157
+ "type": "object",
158
+ "properties": {
159
+ "specs": {
160
+ "type": "integer",
161
+ "minimum": 0,
162
+ "maximum": 9007199254740991,
163
+ "description": "What the Specs view counts: spec files"
164
+ },
165
+ "testSpecs": {
166
+ "type": "integer",
167
+ "minimum": 0,
168
+ "maximum": 9007199254740991,
169
+ "description": "What the Tests view groups by: logical specs with at least one test"
170
+ },
171
+ "steps": {
172
+ "type": "array",
173
+ "items": {
174
+ "type": "object",
175
+ "properties": {
176
+ "code": {
177
+ "type": "string"
178
+ },
179
+ "label": {
180
+ "type": "string"
181
+ },
182
+ "delta": {
183
+ "type": "integer",
184
+ "minimum": -9007199254740991,
185
+ "maximum": 9007199254740991
186
+ }
187
+ },
188
+ "required": [
189
+ "code",
190
+ "label",
191
+ "delta"
192
+ ],
193
+ "additionalProperties": {}
194
+ },
195
+ "description": "From `specs` to `testSpecs`: each step adds its `delta`"
196
+ },
197
+ "testsWithoutSpec": {
198
+ "type": "integer",
199
+ "minimum": 0,
200
+ "maximum": 9007199254740991
201
+ },
202
+ "explanation": {
203
+ "type": "array",
204
+ "items": {
205
+ "type": "string"
206
+ }
207
+ }
208
+ },
209
+ "required": [
210
+ "specs",
211
+ "testSpecs",
212
+ "steps",
213
+ "testsWithoutSpec",
214
+ "explanation"
215
+ ],
216
+ "additionalProperties": {}
217
+ },
218
+ "identity": {
219
+ "type": "object",
220
+ "properties": {
221
+ "checks": {
222
+ "type": "integer",
223
+ "minimum": 0,
224
+ "maximum": 9007199254740991
225
+ },
226
+ "fallbackIdentity": {
227
+ "type": "integer",
228
+ "minimum": 0,
229
+ "maximum": 9007199254740991,
230
+ "description": "Checks whose id equals their title"
231
+ },
232
+ "basis": {
233
+ "type": "string"
234
+ }
235
+ },
236
+ "required": [
237
+ "checks",
238
+ "fallbackIdentity",
239
+ "basis"
240
+ ],
241
+ "additionalProperties": {}
242
+ },
243
+ "domains": {
244
+ "type": "array",
245
+ "items": {
246
+ "type": "object",
247
+ "properties": {
248
+ "name": {
249
+ "type": "string"
250
+ },
251
+ "specs": {
252
+ "type": "integer",
253
+ "minimum": 0,
254
+ "maximum": 9007199254740991
255
+ }
256
+ },
257
+ "required": [
258
+ "name",
259
+ "specs"
260
+ ],
261
+ "additionalProperties": {}
262
+ },
263
+ "description": "Specs per domain, most first"
264
+ },
265
+ "roots": {
266
+ "type": "array",
267
+ "items": {
268
+ "type": "object",
269
+ "properties": {
270
+ "from": {
271
+ "type": "string"
272
+ },
273
+ "to": {
274
+ "type": "string"
275
+ },
276
+ "matched": {
277
+ "type": "integer",
278
+ "minimum": 0,
279
+ "maximum": 9007199254740991,
280
+ "description": "Distinct paths the mapping changed"
281
+ }
282
+ },
283
+ "required": [
284
+ "from",
285
+ "to",
286
+ "matched"
287
+ ],
288
+ "additionalProperties": {}
289
+ }
290
+ },
291
+ "aliases": {
292
+ "type": "array",
293
+ "items": {
294
+ "type": "object",
295
+ "properties": {
296
+ "path": {
297
+ "type": "string"
298
+ },
299
+ "sources": {
300
+ "type": "array",
301
+ "items": {
302
+ "type": "string"
303
+ }
304
+ }
305
+ },
306
+ "required": [
307
+ "path",
308
+ "sources"
309
+ ],
310
+ "additionalProperties": {}
311
+ },
312
+ "description": "Logical specs seen under more than one original path, joined by a root mapping"
313
+ },
314
+ "findings": {
315
+ "type": "array",
316
+ "items": {
317
+ "type": "object",
318
+ "properties": {
319
+ "code": {
320
+ "type": "string",
321
+ "description": "An open set: treat a code you do not know as informational"
322
+ },
323
+ "severity": {
324
+ "type": "string",
325
+ "enum": [
326
+ "warning",
327
+ "info"
328
+ ]
329
+ },
330
+ "message": {
331
+ "type": "string"
332
+ },
333
+ "count": {
334
+ "type": "integer",
335
+ "minimum": 0,
336
+ "maximum": 9007199254740991
337
+ },
338
+ "items": {
339
+ "type": "array",
340
+ "items": {
341
+ "type": "object",
342
+ "properties": {
343
+ "path": {
344
+ "type": "string"
345
+ },
346
+ "candidates": {
347
+ "description": "Other paths it could be the same promise as. Atlas has not merged them",
348
+ "type": "array",
349
+ "items": {
350
+ "type": "object",
351
+ "properties": {
352
+ "path": {
353
+ "type": "string"
354
+ },
355
+ "reason": {
356
+ "type": "string"
357
+ }
358
+ },
359
+ "required": [
360
+ "path",
361
+ "reason"
362
+ ],
363
+ "additionalProperties": {}
364
+ }
365
+ }
366
+ },
367
+ "required": [
368
+ "path"
369
+ ],
370
+ "additionalProperties": {}
371
+ },
372
+ "description": "At most 25; `count` is the whole"
373
+ }
374
+ },
375
+ "required": [
376
+ "code",
377
+ "severity",
378
+ "message",
379
+ "count",
380
+ "items"
381
+ ],
382
+ "additionalProperties": {}
383
+ }
384
+ }
385
+ },
386
+ "required": [
387
+ "schemaVersion",
388
+ "version",
389
+ "generatedAtMs",
390
+ "ok",
391
+ "counts",
392
+ "reconciliation",
393
+ "identity",
394
+ "domains",
395
+ "roots",
396
+ "aliases",
397
+ "findings"
398
+ ],
399
+ "additionalProperties": {}
400
+ }