@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,267 +1,267 @@
1
- :root {
2
- --console-bg: #101214;
3
- --console-panel: #15181b;
4
- --console-panel-strong: #1b2024;
5
- --console-border: rgba(214, 222, 230, 0.14);
6
- --console-border-strong: rgba(214, 222, 230, 0.24);
7
- --console-text: #edf2f7;
8
- --console-subtle: #aab4bf;
9
- --console-muted: #747f8b;
10
- --console-command: #0c0f11;
11
- --console-accent: #80d0ff;
12
- --console-ready: #76d49b;
13
- --console-warn: #e4bd63;
14
- --console-danger: #f08b8b;
15
- --console-radius: 8px;
16
- font-family:
17
- Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
18
- }
19
-
20
- * {
21
- box-sizing: border-box;
22
- }
23
-
24
- body {
25
- margin: 0;
26
- background: var(--console-bg);
27
- color: var(--console-text);
28
- font-size: 14px;
29
- }
30
-
31
- button {
32
- font: inherit;
33
- }
34
-
35
- .console-shell {
36
- width: min(1360px, calc(100vw - 32px));
37
- margin: 0 auto;
38
- padding: 20px 0 28px;
39
- }
40
-
41
- .topbar {
42
- display: flex;
43
- align-items: center;
44
- justify-content: space-between;
45
- gap: 16px;
46
- min-height: 56px;
47
- border-bottom: 1px solid var(--console-border);
48
- }
49
-
50
- .eyebrow {
51
- margin: 0 0 4px;
52
- color: var(--console-muted);
53
- font-size: 12px;
54
- font-weight: 700;
55
- text-transform: uppercase;
56
- }
57
-
58
- h1 {
59
- margin: 0;
60
- font-size: 22px;
61
- font-weight: 750;
62
- }
63
-
64
- .button {
65
- min-height: 34px;
66
- border: 1px solid var(--console-border-strong);
67
- border-radius: 7px;
68
- background: var(--console-panel-strong);
69
- color: var(--console-text);
70
- cursor: pointer;
71
- padding: 0 12px;
72
- font-weight: 700;
73
- }
74
-
75
- .button:hover {
76
- border-color: rgba(128, 208, 255, 0.58);
77
- }
78
-
79
- .button:focus-visible {
80
- outline: 2px solid var(--console-accent);
81
- outline-offset: 2px;
82
- }
83
-
84
- .button.secondary {
85
- min-height: 30px;
86
- padding: 0 10px;
87
- color: var(--console-subtle);
88
- font-size: 12px;
89
- }
90
-
91
- .summary-strip {
92
- display: grid;
93
- grid-template-columns: repeat(4, minmax(0, 1fr));
94
- gap: 1px;
95
- margin: 16px 0;
96
- overflow: hidden;
97
- border: 1px solid var(--console-border);
98
- border-radius: var(--console-radius);
99
- background: var(--console-border);
100
- }
101
-
102
- .summary-strip > div {
103
- min-width: 0;
104
- padding: 11px 12px;
105
- background: var(--console-panel);
106
- }
107
-
108
- .summary-label {
109
- display: block;
110
- margin-bottom: 3px;
111
- color: var(--console-muted);
112
- font-size: 11px;
113
- font-weight: 700;
114
- text-transform: uppercase;
115
- }
116
-
117
- .summary-strip strong {
118
- display: block;
119
- overflow: hidden;
120
- color: var(--console-text);
121
- font-size: 13px;
122
- font-weight: 700;
123
- text-overflow: ellipsis;
124
- white-space: nowrap;
125
- }
126
-
127
- .message {
128
- margin-bottom: 16px;
129
- border: 1px solid rgba(228, 189, 99, 0.34);
130
- border-radius: var(--console-radius);
131
- background: rgba(228, 189, 99, 0.08);
132
- color: #f2d994;
133
- padding: 12px;
134
- }
135
-
136
- .actions-grid {
137
- display: grid;
138
- grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
139
- gap: 12px;
140
- align-items: start;
141
- }
142
-
143
- .action-card {
144
- display: grid;
145
- gap: 12px;
146
- min-height: 320px;
147
- border: 1px solid var(--console-border);
148
- border-radius: var(--console-radius);
149
- background: var(--console-panel);
150
- padding: 13px;
151
- }
152
-
153
- .action-header {
154
- display: grid;
155
- gap: 8px;
156
- }
157
-
158
- .action-title-row,
159
- .meta-row,
160
- .control-row {
161
- display: flex;
162
- align-items: center;
163
- gap: 8px;
164
- min-width: 0;
165
- }
166
-
167
- .action-title-row {
168
- justify-content: space-between;
169
- }
170
-
171
- .action-title {
172
- margin: 0;
173
- overflow-wrap: anywhere;
174
- font-size: 15px;
175
- font-weight: 750;
176
- }
177
-
178
- .pill {
179
- display: inline-flex;
180
- align-items: center;
181
- min-height: 22px;
182
- max-width: 100%;
183
- border: 1px solid var(--console-border);
184
- border-radius: 999px;
185
- color: var(--console-subtle);
186
- font-size: 11px;
187
- font-weight: 700;
188
- padding: 2px 8px;
189
- white-space: nowrap;
190
- }
191
-
192
- .pill.status {
193
- border-color: rgba(128, 208, 255, 0.42);
194
- color: var(--console-accent);
195
- }
196
-
197
- .pill.ready {
198
- border-color: rgba(118, 212, 155, 0.38);
199
- color: var(--console-ready);
200
- }
201
-
202
- .section-label {
203
- margin: 0 0 5px;
204
- color: var(--console-muted);
205
- font-size: 11px;
206
- font-weight: 750;
207
- text-transform: uppercase;
208
- }
209
-
210
- .target,
211
- .readiness-list {
212
- margin: 0;
213
- color: var(--console-subtle);
214
- }
215
-
216
- .target {
217
- overflow-wrap: anywhere;
218
- }
219
-
220
- .readiness-list {
221
- padding-left: 18px;
222
- }
223
-
224
- .readiness-list li + li {
225
- margin-top: 4px;
226
- }
227
-
228
- .command-box {
229
- min-height: 58px;
230
- max-height: 112px;
231
- overflow: auto;
232
- border: 1px solid var(--console-border);
233
- border-radius: 7px;
234
- background: var(--console-command);
235
- color: #dce7ef;
236
- padding: 9px;
237
- font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
238
- font-size: 12px;
239
- line-height: 1.45;
240
- white-space: pre-wrap;
241
- overflow-wrap: anywhere;
242
- }
243
-
244
- .action-footer {
245
- display: flex;
246
- flex-wrap: wrap;
247
- gap: 8px;
248
- align-self: end;
249
- }
250
-
251
- @media (max-width: 760px) {
252
- .console-shell {
253
- width: min(100vw - 20px, 1360px);
254
- padding-top: 12px;
255
- }
256
-
257
- .topbar,
258
- .action-title-row {
259
- align-items: flex-start;
260
- flex-direction: column;
261
- }
262
-
263
- .summary-strip,
264
- .actions-grid {
265
- grid-template-columns: 1fr;
266
- }
267
- }
1
+ :root {
2
+ --console-bg: #101214;
3
+ --console-panel: #15181b;
4
+ --console-panel-strong: #1b2024;
5
+ --console-border: rgba(214, 222, 230, 0.14);
6
+ --console-border-strong: rgba(214, 222, 230, 0.24);
7
+ --console-text: #edf2f7;
8
+ --console-subtle: #aab4bf;
9
+ --console-muted: #747f8b;
10
+ --console-command: #0c0f11;
11
+ --console-accent: #80d0ff;
12
+ --console-ready: #76d49b;
13
+ --console-warn: #e4bd63;
14
+ --console-danger: #f08b8b;
15
+ --console-radius: 8px;
16
+ font-family:
17
+ Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
18
+ }
19
+
20
+ * {
21
+ box-sizing: border-box;
22
+ }
23
+
24
+ body {
25
+ margin: 0;
26
+ background: var(--console-bg);
27
+ color: var(--console-text);
28
+ font-size: 14px;
29
+ }
30
+
31
+ button {
32
+ font: inherit;
33
+ }
34
+
35
+ .console-shell {
36
+ width: min(1360px, calc(100vw - 32px));
37
+ margin: 0 auto;
38
+ padding: 20px 0 28px;
39
+ }
40
+
41
+ .topbar {
42
+ display: flex;
43
+ align-items: center;
44
+ justify-content: space-between;
45
+ gap: 16px;
46
+ min-height: 56px;
47
+ border-bottom: 1px solid var(--console-border);
48
+ }
49
+
50
+ .eyebrow {
51
+ margin: 0 0 4px;
52
+ color: var(--console-muted);
53
+ font-size: 12px;
54
+ font-weight: 700;
55
+ text-transform: uppercase;
56
+ }
57
+
58
+ h1 {
59
+ margin: 0;
60
+ font-size: 22px;
61
+ font-weight: 750;
62
+ }
63
+
64
+ .button {
65
+ min-height: 34px;
66
+ border: 1px solid var(--console-border-strong);
67
+ border-radius: 7px;
68
+ background: var(--console-panel-strong);
69
+ color: var(--console-text);
70
+ cursor: pointer;
71
+ padding: 0 12px;
72
+ font-weight: 700;
73
+ }
74
+
75
+ .button:hover {
76
+ border-color: rgba(128, 208, 255, 0.58);
77
+ }
78
+
79
+ .button:focus-visible {
80
+ outline: 2px solid var(--console-accent);
81
+ outline-offset: 2px;
82
+ }
83
+
84
+ .button.secondary {
85
+ min-height: 30px;
86
+ padding: 0 10px;
87
+ color: var(--console-subtle);
88
+ font-size: 12px;
89
+ }
90
+
91
+ .summary-strip {
92
+ display: grid;
93
+ grid-template-columns: repeat(4, minmax(0, 1fr));
94
+ gap: 1px;
95
+ margin: 16px 0;
96
+ overflow: hidden;
97
+ border: 1px solid var(--console-border);
98
+ border-radius: var(--console-radius);
99
+ background: var(--console-border);
100
+ }
101
+
102
+ .summary-strip > div {
103
+ min-width: 0;
104
+ padding: 11px 12px;
105
+ background: var(--console-panel);
106
+ }
107
+
108
+ .summary-label {
109
+ display: block;
110
+ margin-bottom: 3px;
111
+ color: var(--console-muted);
112
+ font-size: 11px;
113
+ font-weight: 700;
114
+ text-transform: uppercase;
115
+ }
116
+
117
+ .summary-strip strong {
118
+ display: block;
119
+ overflow: hidden;
120
+ color: var(--console-text);
121
+ font-size: 13px;
122
+ font-weight: 700;
123
+ text-overflow: ellipsis;
124
+ white-space: nowrap;
125
+ }
126
+
127
+ .message {
128
+ margin-bottom: 16px;
129
+ border: 1px solid rgba(228, 189, 99, 0.34);
130
+ border-radius: var(--console-radius);
131
+ background: rgba(228, 189, 99, 0.08);
132
+ color: #f2d994;
133
+ padding: 12px;
134
+ }
135
+
136
+ .actions-grid {
137
+ display: grid;
138
+ grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
139
+ gap: 12px;
140
+ align-items: start;
141
+ }
142
+
143
+ .action-card {
144
+ display: grid;
145
+ gap: 12px;
146
+ min-height: 320px;
147
+ border: 1px solid var(--console-border);
148
+ border-radius: var(--console-radius);
149
+ background: var(--console-panel);
150
+ padding: 13px;
151
+ }
152
+
153
+ .action-header {
154
+ display: grid;
155
+ gap: 8px;
156
+ }
157
+
158
+ .action-title-row,
159
+ .meta-row,
160
+ .control-row {
161
+ display: flex;
162
+ align-items: center;
163
+ gap: 8px;
164
+ min-width: 0;
165
+ }
166
+
167
+ .action-title-row {
168
+ justify-content: space-between;
169
+ }
170
+
171
+ .action-title {
172
+ margin: 0;
173
+ overflow-wrap: anywhere;
174
+ font-size: 15px;
175
+ font-weight: 750;
176
+ }
177
+
178
+ .pill {
179
+ display: inline-flex;
180
+ align-items: center;
181
+ min-height: 22px;
182
+ max-width: 100%;
183
+ border: 1px solid var(--console-border);
184
+ border-radius: 999px;
185
+ color: var(--console-subtle);
186
+ font-size: 11px;
187
+ font-weight: 700;
188
+ padding: 2px 8px;
189
+ white-space: nowrap;
190
+ }
191
+
192
+ .pill.status {
193
+ border-color: rgba(128, 208, 255, 0.42);
194
+ color: var(--console-accent);
195
+ }
196
+
197
+ .pill.ready {
198
+ border-color: rgba(118, 212, 155, 0.38);
199
+ color: var(--console-ready);
200
+ }
201
+
202
+ .section-label {
203
+ margin: 0 0 5px;
204
+ color: var(--console-muted);
205
+ font-size: 11px;
206
+ font-weight: 750;
207
+ text-transform: uppercase;
208
+ }
209
+
210
+ .target,
211
+ .readiness-list {
212
+ margin: 0;
213
+ color: var(--console-subtle);
214
+ }
215
+
216
+ .target {
217
+ overflow-wrap: anywhere;
218
+ }
219
+
220
+ .readiness-list {
221
+ padding-left: 18px;
222
+ }
223
+
224
+ .readiness-list li + li {
225
+ margin-top: 4px;
226
+ }
227
+
228
+ .command-box {
229
+ min-height: 58px;
230
+ max-height: 112px;
231
+ overflow: auto;
232
+ border: 1px solid var(--console-border);
233
+ border-radius: 7px;
234
+ background: var(--console-command);
235
+ color: #dce7ef;
236
+ padding: 9px;
237
+ font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
238
+ font-size: 12px;
239
+ line-height: 1.45;
240
+ white-space: pre-wrap;
241
+ overflow-wrap: anywhere;
242
+ }
243
+
244
+ .action-footer {
245
+ display: flex;
246
+ flex-wrap: wrap;
247
+ gap: 8px;
248
+ align-self: end;
249
+ }
250
+
251
+ @media (max-width: 760px) {
252
+ .console-shell {
253
+ width: min(100vw - 20px, 1360px);
254
+ padding-top: 12px;
255
+ }
256
+
257
+ .topbar,
258
+ .action-title-row {
259
+ align-items: flex-start;
260
+ flex-direction: column;
261
+ }
262
+
263
+ .summary-strip,
264
+ .actions-grid {
265
+ grid-template-columns: 1fr;
266
+ }
267
+ }
package/dist/github-ci.js CHANGED
@@ -1131,7 +1131,7 @@ async function exportCommit(cwd, commit) {
1131
1131
  }
1132
1132
 
1133
1133
  // src/version.ts
1134
- var VERSION = "1.7.0";
1134
+ var VERSION = "1.7.1";
1135
1135
 
1136
1136
  // src/github-ci/api.ts
1137
1137
  var import_node_zlib = require("node:zlib");
@@ -1,11 +1,11 @@
1
- {
2
- "id": "stack-default",
3
- "recommendation": {
4
- "frontend": "react",
5
- "ui": "tailwind + shadcn/ui",
6
- "database": "supabase",
7
- "auth": "supabase",
8
- "deploy": "vercel",
9
- "reason": "Highest agent training density; lowest friction for autonomous deploy loop"
10
- }
11
- }
1
+ {
2
+ "id": "stack-default",
3
+ "recommendation": {
4
+ "frontend": "react",
5
+ "ui": "tailwind + shadcn/ui",
6
+ "database": "supabase",
7
+ "auth": "supabase",
8
+ "deploy": "vercel",
9
+ "reason": "Highest agent training density; lowest friction for autonomous deploy loop"
10
+ }
11
+ }
@@ -1,31 +1,31 @@
1
- {
2
- "id": "auth-supabase",
3
- "provider": "auth-supabase",
4
- "title": "Supabase Auth providers",
5
- "steps": [
6
- {
7
- "id": "auth-providers",
8
- "title": "Enable providers",
9
- "instruction": "Enable Email and any OAuth providers your app uses (Google, GitHub, etc.).",
10
- "openUrl": "https://supabase.com/dashboard/project/_/auth/providers"
11
- },
12
- {
13
- "id": "auth-urls",
14
- "title": "Redirect URLs",
15
- "instruction": "Site URL and Redirect URLs must include your Vercel deployment URL.",
16
- "openUrl": "https://supabase.com/dashboard/project/_/auth/url-configuration"
17
- },
18
- {
19
- "id": "auth-email-templates",
20
- "title": "Email templates",
21
- "instruction": "Customize confirm signup and magic link templates if your app uses email auth.",
22
- "openUrl": "https://supabase.com/dashboard/project/_/auth/templates"
23
- },
24
- {
25
- "id": "auth-jwt",
26
- "title": "JWT settings",
27
- "instruction": "Confirm JWT expiry matches your session strategy. Use service role key only on the server.",
28
- "openUrl": "https://supabase.com/dashboard/project/_/settings/api"
29
- }
30
- ]
31
- }
1
+ {
2
+ "id": "auth-supabase",
3
+ "provider": "auth-supabase",
4
+ "title": "Supabase Auth providers",
5
+ "steps": [
6
+ {
7
+ "id": "auth-providers",
8
+ "title": "Enable providers",
9
+ "instruction": "Enable Email and any OAuth providers your app uses (Google, GitHub, etc.).",
10
+ "openUrl": "https://supabase.com/dashboard/project/_/auth/providers"
11
+ },
12
+ {
13
+ "id": "auth-urls",
14
+ "title": "Redirect URLs",
15
+ "instruction": "Site URL and Redirect URLs must include your Vercel deployment URL.",
16
+ "openUrl": "https://supabase.com/dashboard/project/_/auth/url-configuration"
17
+ },
18
+ {
19
+ "id": "auth-email-templates",
20
+ "title": "Email templates",
21
+ "instruction": "Customize confirm signup and magic link templates if your app uses email auth.",
22
+ "openUrl": "https://supabase.com/dashboard/project/_/auth/templates"
23
+ },
24
+ {
25
+ "id": "auth-jwt",
26
+ "title": "JWT settings",
27
+ "instruction": "Confirm JWT expiry matches your session strategy. Use service role key only on the server.",
28
+ "openUrl": "https://supabase.com/dashboard/project/_/settings/api"
29
+ }
30
+ ]
31
+ }