@viberaven/cli 1.7.0 → 1.7.1

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 (35) hide show
  1. package/AGENTS.md +64 -64
  2. package/LICENSE +21 -21
  3. package/README.md +67 -67
  4. package/SECURITY.md +59 -59
  5. package/dist/cli.js +697 -632
  6. package/dist/console/app.js +251 -251
  7. package/dist/console/index.html +46 -46
  8. package/dist/console/styles.css +267 -267
  9. package/dist/github-ci.js +1 -1
  10. package/dist/playbooks/_stack-default.json +11 -11
  11. package/dist/playbooks/auth-supabase.json +31 -31
  12. package/dist/playbooks/stripe.json +66 -66
  13. package/dist/playbooks/supabase.json +51 -51
  14. package/dist/playbooks/vercel.json +42 -42
  15. package/dist/report/assets/provider-authjs.svg +5 -5
  16. package/dist/report/assets/provider-aws.svg +5 -5
  17. package/dist/report/assets/provider-logrocket.svg +4 -4
  18. package/dist/report/report-cli.css +1466 -1466
  19. package/dist/report/station.css +11854 -11854
  20. package/dist/report/station.js +8319 -8319
  21. package/dist/stack/scene.css +522 -522
  22. package/dist/stack/stack.css +1691 -1691
  23. package/dist/vendor/anime.umd.min.js +7 -7
  24. package/package.json +96 -96
  25. package/playbooks/_stack-default.json +11 -11
  26. package/playbooks/auth-supabase.json +31 -31
  27. package/playbooks/stripe.json +66 -66
  28. package/playbooks/supabase.json +51 -51
  29. package/playbooks/vercel.json +42 -42
  30. package/schemas/permissions-matrix.schema.json +90 -90
  31. package/schemas/verification-plan.schema.json +350 -350
  32. package/schemas/verification-report.schema.json +550 -550
  33. package/templates/AGENTS.snippet.md +56 -56
  34. package/templates/CLAUDE.snippet.md +14 -14
  35. package/templates/CURSOR.snippet.md +14 -14
@@ -1,350 +1,350 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "title": "VibeRaven local verification plan v1",
4
- "type": "object",
5
- "properties": {
6
- "schemaVersion": {
7
- "const": 1
8
- },
9
- "checks": {
10
- "type": "array",
11
- "minItems": 1,
12
- "maxItems": 32,
13
- "items": {
14
- "oneOf": [
15
- {
16
- "type": "object",
17
- "properties": {
18
- "id": {
19
- "type": "string",
20
- "pattern": "^[a-z][a-z0-9_-]{0,39}$"
21
- },
22
- "conditionId": {
23
- "type": "string",
24
- "pattern": "^[a-z][a-z0-9_-]{0,39}$"
25
- },
26
- "adapter": {
27
- "const": "module"
28
- },
29
- "module": {
30
- "type": "string",
31
- "minLength": 1,
32
- "maxLength": 200,
33
- "pattern": "^(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*[\\\\:*?\"<>|\\u0000-\\u001f])(?!/)(?!.*//)(?!.*[. ](?:/|$))[^/]+(?:/[^/]+)*$"
34
- },
35
- "export": {
36
- "type": "string",
37
- "pattern": "^[A-Za-z_$][A-Za-z0-9_$]{0,79}$"
38
- },
39
- "cases": {
40
- "type": "array",
41
- "minItems": 1,
42
- "maxItems": 32,
43
- "items": {
44
- "type": "object",
45
- "properties": {
46
- "args": {
47
- "type": "array",
48
- "maxItems": 16
49
- },
50
- "expected": {}
51
- },
52
- "required": [
53
- "args",
54
- "expected"
55
- ],
56
- "additionalProperties": false
57
- }
58
- }
59
- },
60
- "required": [
61
- "id",
62
- "conditionId",
63
- "adapter",
64
- "module",
65
- "export",
66
- "cases"
67
- ],
68
- "additionalProperties": false
69
- },
70
- {
71
- "type": "object",
72
- "properties": {
73
- "id": {
74
- "type": "string",
75
- "pattern": "^[a-z][a-z0-9_-]{0,39}$"
76
- },
77
- "conditionId": {
78
- "type": "string",
79
- "pattern": "^[a-z][a-z0-9_-]{0,39}$"
80
- },
81
- "adapter": {
82
- "const": "node-test"
83
- },
84
- "entry": {
85
- "type": "string",
86
- "minLength": 1,
87
- "maxLength": 200,
88
- "pattern": "^(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*[\\\\:*?\"<>|\\u0000-\\u001f])(?!/)(?!.*//)(?!.*[. ](?:/|$))[^/]+(?:/[^/]+)*$"
89
- },
90
- "frozenPaths": {
91
- "type": "array",
92
- "minItems": 0,
93
- "maxItems": 16,
94
- "uniqueItems": true,
95
- "items": {
96
- "type": "string",
97
- "minLength": 1,
98
- "maxLength": 200,
99
- "pattern": "^(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*[\\\\:*?\"<>|\\u0000-\\u001f])(?!/)(?!.*//)(?!.*[. ](?:/|$))[^/]+(?:/[^/]+)*$"
100
- }
101
- }
102
- },
103
- "required": [
104
- "id",
105
- "conditionId",
106
- "adapter",
107
- "entry",
108
- "frozenPaths"
109
- ],
110
- "additionalProperties": false
111
- },
112
- {
113
- "type": "object",
114
- "properties": {
115
- "id": {
116
- "type": "string",
117
- "pattern": "^[a-z][a-z0-9_-]{0,39}$"
118
- },
119
- "conditionId": {
120
- "type": "string",
121
- "pattern": "^[a-z][a-z0-9_-]{0,39}$"
122
- },
123
- "adapter": {
124
- "const": "http"
125
- },
126
- "module": {
127
- "type": "string",
128
- "minLength": 1,
129
- "maxLength": 200,
130
- "pattern": "^(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*[\\\\:*?\"<>|\\u0000-\\u001f])(?!/)(?!.*//)(?!.*[. ](?:/|$))[^/]+(?:/[^/]+)*$"
131
- },
132
- "export": {
133
- "type": "string",
134
- "pattern": "^[A-Za-z_$][A-Za-z0-9_$]{0,79}$"
135
- },
136
- "cases": {
137
- "type": "array",
138
- "minItems": 1,
139
- "maxItems": 32,
140
- "items": {
141
- "type": "object",
142
- "properties": {
143
- "request": {
144
- "type": "object",
145
- "properties": {
146
- "method": {
147
- "enum": [
148
- "GET",
149
- "HEAD",
150
- "POST",
151
- "PUT",
152
- "PATCH",
153
- "DELETE",
154
- "OPTIONS"
155
- ]
156
- },
157
- "path": {
158
- "type": "string",
159
- "minLength": 1,
160
- "maxLength": 2048,
161
- "allOf": [
162
- {
163
- "pattern": "^/(?!/)(?!.*%(?:0[0-9a-fA-F]|1[0-9a-fA-F]|20|7[fF]|5[cC]))[!-~]*$(?![\\s\\S])"
164
- },
165
- {
166
- "not": {
167
- "pattern": "[\\\\#]"
168
- }
169
- }
170
- ]
171
- },
172
- "headers": {
173
- "type": "object",
174
- "maxProperties": 8,
175
- "propertyNames": {
176
- "pattern": "^(?:accept|content-type|stripe-signature|x-(?:fixture|test)-[a-z0-9-]{1,40})$(?![\\s\\S])"
177
- },
178
- "additionalProperties": {
179
- "type": "string",
180
- "maxLength": 512,
181
- "pattern": "^[ -~]*$(?![\\s\\S])"
182
- }
183
- },
184
- "body": {
185
- "type": "string",
186
- "maxLength": 8192
187
- }
188
- },
189
- "required": [
190
- "method",
191
- "path"
192
- ],
193
- "additionalProperties": false,
194
- "allOf": [
195
- {
196
- "if": {
197
- "properties": {
198
- "method": {
199
- "enum": [
200
- "GET",
201
- "HEAD"
202
- ]
203
- }
204
- }
205
- },
206
- "then": {
207
- "not": {
208
- "required": [
209
- "body"
210
- ]
211
- }
212
- }
213
- }
214
- ]
215
- },
216
- "expected": {
217
- "type": "object",
218
- "properties": {
219
- "status": {
220
- "type": "integer",
221
- "minimum": 200,
222
- "maximum": 599
223
- },
224
- "json": {},
225
- "text": {
226
- "type": "string",
227
- "maxLength": 8192
228
- }
229
- },
230
- "required": [
231
- "status"
232
- ],
233
- "additionalProperties": false,
234
- "oneOf": [
235
- {
236
- "required": [
237
- "json"
238
- ],
239
- "not": {
240
- "required": [
241
- "text"
242
- ]
243
- }
244
- },
245
- {
246
- "required": [
247
- "text"
248
- ],
249
- "not": {
250
- "required": [
251
- "json"
252
- ]
253
- }
254
- }
255
- ],
256
- "allOf": [
257
- {
258
- "if": {
259
- "properties": {
260
- "status": {
261
- "enum": [
262
- 204,
263
- 205,
264
- 304
265
- ]
266
- }
267
- }
268
- },
269
- "then": {
270
- "required": [
271
- "text"
272
- ],
273
- "properties": {
274
- "text": {
275
- "const": ""
276
- }
277
- },
278
- "not": {
279
- "required": [
280
- "json"
281
- ]
282
- }
283
- }
284
- }
285
- ]
286
- }
287
- },
288
- "required": [
289
- "request",
290
- "expected"
291
- ],
292
- "additionalProperties": false,
293
- "allOf": [
294
- {
295
- "if": {
296
- "properties": {
297
- "request": {
298
- "properties": {
299
- "method": {
300
- "const": "HEAD"
301
- }
302
- }
303
- }
304
- }
305
- },
306
- "then": {
307
- "properties": {
308
- "expected": {
309
- "required": [
310
- "text"
311
- ],
312
- "properties": {
313
- "text": {
314
- "const": ""
315
- }
316
- },
317
- "not": {
318
- "required": [
319
- "json"
320
- ]
321
- }
322
- }
323
- }
324
- }
325
- }
326
- ]
327
- }
328
- }
329
- },
330
- "required": [
331
- "id",
332
- "conditionId",
333
- "adapter",
334
- "module",
335
- "export",
336
- "cases"
337
- ],
338
- "additionalProperties": false
339
- }
340
- ]
341
- }
342
- }
343
- },
344
- "required": [
345
- "schemaVersion",
346
- "checks"
347
- ],
348
- "additionalProperties": false,
349
- "description": "Reviewed local observations, not commands or imported proof. Runtime also bounds JSON depth/UTF-8 bytes, including HTTP request/expected bodies to 8192 bytes, rejects unknown condition IDs, and restricts node-test to preservation conditions and frozen test-owned paths. HTTP factories return unlistened Node servers; sequential requests observe volatile state only. Runtime package/config files remain candidate inputs. Expected values remain in the host comparator. Coverage completeness is a human judgment."
350
- }
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "VibeRaven local verification plan v1",
4
+ "type": "object",
5
+ "properties": {
6
+ "schemaVersion": {
7
+ "const": 1
8
+ },
9
+ "checks": {
10
+ "type": "array",
11
+ "minItems": 1,
12
+ "maxItems": 32,
13
+ "items": {
14
+ "oneOf": [
15
+ {
16
+ "type": "object",
17
+ "properties": {
18
+ "id": {
19
+ "type": "string",
20
+ "pattern": "^[a-z][a-z0-9_-]{0,39}$"
21
+ },
22
+ "conditionId": {
23
+ "type": "string",
24
+ "pattern": "^[a-z][a-z0-9_-]{0,39}$"
25
+ },
26
+ "adapter": {
27
+ "const": "module"
28
+ },
29
+ "module": {
30
+ "type": "string",
31
+ "minLength": 1,
32
+ "maxLength": 200,
33
+ "pattern": "^(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*[\\\\:*?\"<>|\\u0000-\\u001f])(?!/)(?!.*//)(?!.*[. ](?:/|$))[^/]+(?:/[^/]+)*$"
34
+ },
35
+ "export": {
36
+ "type": "string",
37
+ "pattern": "^[A-Za-z_$][A-Za-z0-9_$]{0,79}$"
38
+ },
39
+ "cases": {
40
+ "type": "array",
41
+ "minItems": 1,
42
+ "maxItems": 32,
43
+ "items": {
44
+ "type": "object",
45
+ "properties": {
46
+ "args": {
47
+ "type": "array",
48
+ "maxItems": 16
49
+ },
50
+ "expected": {}
51
+ },
52
+ "required": [
53
+ "args",
54
+ "expected"
55
+ ],
56
+ "additionalProperties": false
57
+ }
58
+ }
59
+ },
60
+ "required": [
61
+ "id",
62
+ "conditionId",
63
+ "adapter",
64
+ "module",
65
+ "export",
66
+ "cases"
67
+ ],
68
+ "additionalProperties": false
69
+ },
70
+ {
71
+ "type": "object",
72
+ "properties": {
73
+ "id": {
74
+ "type": "string",
75
+ "pattern": "^[a-z][a-z0-9_-]{0,39}$"
76
+ },
77
+ "conditionId": {
78
+ "type": "string",
79
+ "pattern": "^[a-z][a-z0-9_-]{0,39}$"
80
+ },
81
+ "adapter": {
82
+ "const": "node-test"
83
+ },
84
+ "entry": {
85
+ "type": "string",
86
+ "minLength": 1,
87
+ "maxLength": 200,
88
+ "pattern": "^(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*[\\\\:*?\"<>|\\u0000-\\u001f])(?!/)(?!.*//)(?!.*[. ](?:/|$))[^/]+(?:/[^/]+)*$"
89
+ },
90
+ "frozenPaths": {
91
+ "type": "array",
92
+ "minItems": 0,
93
+ "maxItems": 16,
94
+ "uniqueItems": true,
95
+ "items": {
96
+ "type": "string",
97
+ "minLength": 1,
98
+ "maxLength": 200,
99
+ "pattern": "^(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*[\\\\:*?\"<>|\\u0000-\\u001f])(?!/)(?!.*//)(?!.*[. ](?:/|$))[^/]+(?:/[^/]+)*$"
100
+ }
101
+ }
102
+ },
103
+ "required": [
104
+ "id",
105
+ "conditionId",
106
+ "adapter",
107
+ "entry",
108
+ "frozenPaths"
109
+ ],
110
+ "additionalProperties": false
111
+ },
112
+ {
113
+ "type": "object",
114
+ "properties": {
115
+ "id": {
116
+ "type": "string",
117
+ "pattern": "^[a-z][a-z0-9_-]{0,39}$"
118
+ },
119
+ "conditionId": {
120
+ "type": "string",
121
+ "pattern": "^[a-z][a-z0-9_-]{0,39}$"
122
+ },
123
+ "adapter": {
124
+ "const": "http"
125
+ },
126
+ "module": {
127
+ "type": "string",
128
+ "minLength": 1,
129
+ "maxLength": 200,
130
+ "pattern": "^(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*[\\\\:*?\"<>|\\u0000-\\u001f])(?!/)(?!.*//)(?!.*[. ](?:/|$))[^/]+(?:/[^/]+)*$"
131
+ },
132
+ "export": {
133
+ "type": "string",
134
+ "pattern": "^[A-Za-z_$][A-Za-z0-9_$]{0,79}$"
135
+ },
136
+ "cases": {
137
+ "type": "array",
138
+ "minItems": 1,
139
+ "maxItems": 32,
140
+ "items": {
141
+ "type": "object",
142
+ "properties": {
143
+ "request": {
144
+ "type": "object",
145
+ "properties": {
146
+ "method": {
147
+ "enum": [
148
+ "GET",
149
+ "HEAD",
150
+ "POST",
151
+ "PUT",
152
+ "PATCH",
153
+ "DELETE",
154
+ "OPTIONS"
155
+ ]
156
+ },
157
+ "path": {
158
+ "type": "string",
159
+ "minLength": 1,
160
+ "maxLength": 2048,
161
+ "allOf": [
162
+ {
163
+ "pattern": "^/(?!/)(?!.*%(?:0[0-9a-fA-F]|1[0-9a-fA-F]|20|7[fF]|5[cC]))[!-~]*$(?![\\s\\S])"
164
+ },
165
+ {
166
+ "not": {
167
+ "pattern": "[\\\\#]"
168
+ }
169
+ }
170
+ ]
171
+ },
172
+ "headers": {
173
+ "type": "object",
174
+ "maxProperties": 8,
175
+ "propertyNames": {
176
+ "pattern": "^(?:accept|content-type|stripe-signature|x-(?:fixture|test)-[a-z0-9-]{1,40})$(?![\\s\\S])"
177
+ },
178
+ "additionalProperties": {
179
+ "type": "string",
180
+ "maxLength": 512,
181
+ "pattern": "^[ -~]*$(?![\\s\\S])"
182
+ }
183
+ },
184
+ "body": {
185
+ "type": "string",
186
+ "maxLength": 8192
187
+ }
188
+ },
189
+ "required": [
190
+ "method",
191
+ "path"
192
+ ],
193
+ "additionalProperties": false,
194
+ "allOf": [
195
+ {
196
+ "if": {
197
+ "properties": {
198
+ "method": {
199
+ "enum": [
200
+ "GET",
201
+ "HEAD"
202
+ ]
203
+ }
204
+ }
205
+ },
206
+ "then": {
207
+ "not": {
208
+ "required": [
209
+ "body"
210
+ ]
211
+ }
212
+ }
213
+ }
214
+ ]
215
+ },
216
+ "expected": {
217
+ "type": "object",
218
+ "properties": {
219
+ "status": {
220
+ "type": "integer",
221
+ "minimum": 200,
222
+ "maximum": 599
223
+ },
224
+ "json": {},
225
+ "text": {
226
+ "type": "string",
227
+ "maxLength": 8192
228
+ }
229
+ },
230
+ "required": [
231
+ "status"
232
+ ],
233
+ "additionalProperties": false,
234
+ "oneOf": [
235
+ {
236
+ "required": [
237
+ "json"
238
+ ],
239
+ "not": {
240
+ "required": [
241
+ "text"
242
+ ]
243
+ }
244
+ },
245
+ {
246
+ "required": [
247
+ "text"
248
+ ],
249
+ "not": {
250
+ "required": [
251
+ "json"
252
+ ]
253
+ }
254
+ }
255
+ ],
256
+ "allOf": [
257
+ {
258
+ "if": {
259
+ "properties": {
260
+ "status": {
261
+ "enum": [
262
+ 204,
263
+ 205,
264
+ 304
265
+ ]
266
+ }
267
+ }
268
+ },
269
+ "then": {
270
+ "required": [
271
+ "text"
272
+ ],
273
+ "properties": {
274
+ "text": {
275
+ "const": ""
276
+ }
277
+ },
278
+ "not": {
279
+ "required": [
280
+ "json"
281
+ ]
282
+ }
283
+ }
284
+ }
285
+ ]
286
+ }
287
+ },
288
+ "required": [
289
+ "request",
290
+ "expected"
291
+ ],
292
+ "additionalProperties": false,
293
+ "allOf": [
294
+ {
295
+ "if": {
296
+ "properties": {
297
+ "request": {
298
+ "properties": {
299
+ "method": {
300
+ "const": "HEAD"
301
+ }
302
+ }
303
+ }
304
+ }
305
+ },
306
+ "then": {
307
+ "properties": {
308
+ "expected": {
309
+ "required": [
310
+ "text"
311
+ ],
312
+ "properties": {
313
+ "text": {
314
+ "const": ""
315
+ }
316
+ },
317
+ "not": {
318
+ "required": [
319
+ "json"
320
+ ]
321
+ }
322
+ }
323
+ }
324
+ }
325
+ }
326
+ ]
327
+ }
328
+ }
329
+ },
330
+ "required": [
331
+ "id",
332
+ "conditionId",
333
+ "adapter",
334
+ "module",
335
+ "export",
336
+ "cases"
337
+ ],
338
+ "additionalProperties": false
339
+ }
340
+ ]
341
+ }
342
+ }
343
+ },
344
+ "required": [
345
+ "schemaVersion",
346
+ "checks"
347
+ ],
348
+ "additionalProperties": false,
349
+ "description": "Reviewed local observations, not commands or imported proof. Runtime also bounds JSON depth/UTF-8 bytes, including HTTP request/expected bodies to 8192 bytes, rejects unknown condition IDs, and restricts node-test to preservation conditions and frozen test-owned paths. HTTP factories return unlistened Node servers; sequential requests observe volatile state only. Runtime package/config files remain candidate inputs. Expected values remain in the host comparator. Coverage completeness is a human judgment."
350
+ }