@viberaven/cli 1.4.4 → 1.5.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 (42) hide show
  1. package/AGENTS.md +157 -157
  2. package/LICENSE +21 -21
  3. package/README.md +1 -3
  4. package/SECURITY.md +59 -53
  5. package/dist/cli.js +13764 -32046
  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/playbooks/_stack-default.json +11 -11
  10. package/dist/playbooks/auth-supabase.json +31 -31
  11. package/dist/playbooks/stripe.json +66 -66
  12. package/dist/playbooks/supabase.json +51 -51
  13. package/dist/playbooks/vercel.json +42 -42
  14. package/dist/report/report-cli.css +1466 -1466
  15. package/dist/report/station.css +11854 -11854
  16. package/dist/report/station.js +8317 -8317
  17. package/dist/stack/app.js +18 -0
  18. package/dist/stack/stack.css +854 -0
  19. package/package.json +84 -75
  20. package/playbooks/_stack-default.json +11 -11
  21. package/playbooks/auth-supabase.json +31 -31
  22. package/playbooks/stripe.json +66 -66
  23. package/playbooks/supabase.json +51 -51
  24. package/playbooks/vercel.json +42 -42
  25. package/schemas/permissions-matrix.schema.json +90 -0
  26. package/templates/AGENTS.snippet.md +52 -52
  27. package/templates/CLAUDE.snippet.md +17 -17
  28. package/templates/CURSOR.snippet.md +17 -17
  29. package/assets/report/assets/provider-authjs.svg +0 -5
  30. package/assets/report/assets/provider-aws.svg +0 -5
  31. package/assets/report/assets/provider-logrocket.svg +0 -4
  32. package/assets/report/assets/viberaven-favicon.png +0 -0
  33. package/assets/report/assets/viberaven-hero.png +0 -0
  34. package/assets/report/assets/viberaven-logo.png +0 -0
  35. package/assets/report/assets/viberaven-mascot.png +0 -0
  36. package/assets/report/assets/viberaven-table.png +0 -0
  37. package/assets/report/report-cli.css +0 -1466
  38. package/assets/report/station.css +0 -11854
  39. package/assets/report/station.js +0 -8319
  40. package/dist/cli.js.map +0 -7
  41. package/dist/report/assets/viberaven-hero.png +0 -0
  42. package/dist/report/assets/viberaven-table.png +0 -0
@@ -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
+ }
@@ -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
+ }