@edge-base/cli 0.1.5 → 0.2.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.
@@ -0,0 +1,287 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import * as readline from 'node:readline';
3
+ import { fetchWithTimeout } from './fetch-with-timeout.js';
4
+ import { raiseCliError, raiseNeedsInput, } from './agent-contract.js';
5
+ import { isNonInteractive } from './cli-context.js';
6
+ const ADMIN_EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
7
+ export function normalizeAdminEmail(email) {
8
+ return email.trim().toLowerCase();
9
+ }
10
+ export function validateAdminEmail(email) {
11
+ if (!ADMIN_EMAIL_REGEX.test(email)) {
12
+ raiseCliError({
13
+ code: 'admin_invalid_email',
14
+ field: 'email',
15
+ message: 'Admin email must be a valid email address.',
16
+ hint: 'Use a full email address such as admin@example.com.',
17
+ });
18
+ }
19
+ }
20
+ export function validateAdminPassword(password) {
21
+ if (password.length < 8) {
22
+ raiseCliError({
23
+ code: 'admin_password_too_short',
24
+ field: 'password',
25
+ message: 'Password must be at least 8 characters.',
26
+ hint: 'Choose a password with at least 8 characters and retry.',
27
+ });
28
+ }
29
+ if (password.length > 256) {
30
+ raiseCliError({
31
+ code: 'admin_password_too_long',
32
+ field: 'password',
33
+ message: 'Password must not exceed 256 characters.',
34
+ hint: 'Use a shorter password and retry.',
35
+ });
36
+ }
37
+ }
38
+ export function promptValue(question, hidden = false, options) {
39
+ if (!process.stdin.isTTY || isNonInteractive()) {
40
+ raiseNeedsInput({
41
+ code: 'admin_input_required',
42
+ field: options?.field,
43
+ message: options?.message ?? `${question.replace(/:?\s*$/, '')} is required.`,
44
+ hint: options?.hint,
45
+ });
46
+ }
47
+ return new Promise((resolve) => {
48
+ const rl = readline.createInterface({
49
+ input: process.stdin,
50
+ output: process.stdout,
51
+ });
52
+ if (hidden && process.stdout.isTTY) {
53
+ process.stdout.write(question);
54
+ const stdin = process.stdin;
55
+ const oldRawMode = stdin.isRaw;
56
+ stdin.setRawMode(true);
57
+ let input = '';
58
+ stdin.resume();
59
+ stdin.on('data', function handler(ch) {
60
+ const c = ch.toString('utf8');
61
+ if (c === '\n' || c === '\r' || c === '\u0004') {
62
+ stdin.setRawMode(oldRawMode ?? false);
63
+ stdin.removeListener('data', handler);
64
+ stdin.pause();
65
+ rl.close();
66
+ process.stdout.write('\n');
67
+ resolve(input);
68
+ }
69
+ else if (c === '\u007F' || c === '\b') {
70
+ if (input.length > 0)
71
+ input = input.slice(0, -1);
72
+ }
73
+ else {
74
+ input += c;
75
+ }
76
+ });
77
+ }
78
+ else {
79
+ rl.question(question, (answer) => {
80
+ rl.close();
81
+ resolve(answer);
82
+ });
83
+ }
84
+ });
85
+ }
86
+ async function readSecretFromStdin() {
87
+ if (process.stdin.isTTY) {
88
+ raiseNeedsInput({
89
+ code: 'admin_password_stdin_required',
90
+ field: 'password',
91
+ message: 'Password stdin mode requires piped input.',
92
+ hint: 'Pipe the password into stdin or omit --bootstrap-admin-password-stdin to use an interactive prompt.',
93
+ });
94
+ }
95
+ return new Promise((resolve, reject) => {
96
+ const chunks = [];
97
+ process.stdin.on('data', (chunk) => chunks.push(chunk));
98
+ process.stdin.on('end', () => resolve(Buffer.concat(chunks).toString('utf-8').trimEnd()));
99
+ process.stdin.on('error', reject);
100
+ });
101
+ }
102
+ export async function resolvePasswordInput(options) {
103
+ let value = options.directValue;
104
+ if (!value && options.filePath) {
105
+ try {
106
+ value = readFileSync(options.filePath, 'utf-8').trimEnd();
107
+ }
108
+ catch (error) {
109
+ raiseCliError({
110
+ code: 'admin_password_file_read_failed',
111
+ field: 'password',
112
+ message: `Failed to read bootstrap admin password file: ${error.message}`,
113
+ hint: 'Check the file path and permissions, then retry.',
114
+ });
115
+ }
116
+ }
117
+ if (!value && options.stdin) {
118
+ value = await readSecretFromStdin();
119
+ }
120
+ if (!value) {
121
+ value = await promptValue(options.promptLabel, true, {
122
+ field: options.promptField,
123
+ hint: options.promptHint,
124
+ message: options.requiredMessage,
125
+ });
126
+ }
127
+ if (!value) {
128
+ raiseNeedsInput({
129
+ code: 'admin_password_required',
130
+ field: options.promptField ?? 'password',
131
+ message: options.requiredMessage ?? `${options.promptLabel.replace(/:?\s*$/, '')} is required.`,
132
+ hint: options.promptHint,
133
+ });
134
+ }
135
+ if (!options.directValue && !options.filePath && !options.stdin && options.confirmationLabel) {
136
+ const confirmation = await promptValue(options.confirmationLabel, true, {
137
+ field: options.promptField,
138
+ hint: options.promptHint,
139
+ message: options.requiredMessage,
140
+ });
141
+ if (value !== confirmation) {
142
+ raiseCliError({
143
+ code: 'admin_password_confirmation_failed',
144
+ field: options.promptField ?? 'password',
145
+ message: options.confirmationMismatchMessage ?? 'Passwords did not match.',
146
+ hint: 'Retry and enter the same password twice.',
147
+ });
148
+ }
149
+ }
150
+ validateAdminPassword(value);
151
+ return value;
152
+ }
153
+ export async function listRemoteAdmins(url, serviceKey) {
154
+ let response;
155
+ try {
156
+ response = await fetchWithTimeout(`${url}/admin/api/data/admins`, {
157
+ method: 'GET',
158
+ headers: {
159
+ 'X-EdgeBase-Service-Key': serviceKey,
160
+ },
161
+ });
162
+ }
163
+ catch (error) {
164
+ raiseCliError({
165
+ code: 'admin_bootstrap_connection_failed',
166
+ message: `Could not reach the admin bootstrap endpoint: ${error.message}`,
167
+ hint: 'Check the server URL, wait for the runtime to finish starting, and retry.',
168
+ });
169
+ }
170
+ let payload = null;
171
+ try {
172
+ payload = await response.json();
173
+ }
174
+ catch {
175
+ payload = null;
176
+ }
177
+ if (!response.ok) {
178
+ raiseCliError({
179
+ code: 'admin_bootstrap_list_failed',
180
+ message: payload?.message
181
+ ? `Failed to inspect admin accounts: ${payload.message}`
182
+ : `Failed to inspect admin accounts (${response.status}).`,
183
+ hint: 'Make sure the Service Key has admin privileges and the runtime is reachable.',
184
+ });
185
+ }
186
+ return payload?.admins ?? [];
187
+ }
188
+ export async function createRemoteAdmin(url, serviceKey, email, password) {
189
+ let response;
190
+ try {
191
+ response = await fetchWithTimeout(`${url}/admin/api/data/admins`, {
192
+ method: 'POST',
193
+ headers: {
194
+ 'Content-Type': 'application/json',
195
+ 'X-EdgeBase-Service-Key': serviceKey,
196
+ },
197
+ body: JSON.stringify({ email, password }),
198
+ });
199
+ }
200
+ catch (error) {
201
+ raiseCliError({
202
+ code: 'admin_bootstrap_connection_failed',
203
+ message: `Could not create the bootstrap admin: ${error.message}`,
204
+ hint: 'Check the server URL, wait for the runtime to finish starting, and retry.',
205
+ });
206
+ }
207
+ let payload = null;
208
+ try {
209
+ payload = await response.json();
210
+ }
211
+ catch {
212
+ payload = null;
213
+ }
214
+ if (!response.ok) {
215
+ raiseCliError({
216
+ code: response.status === 409 ? 'admin_bootstrap_conflict' : 'admin_bootstrap_create_failed',
217
+ message: payload?.message
218
+ ? `Failed to create bootstrap admin: ${payload.message}`
219
+ : `Failed to create bootstrap admin (${response.status}).`,
220
+ hint: response.status === 409
221
+ ? 'An admin with this email already exists. Use the existing admin account or add a different one explicitly from the dashboard settings.'
222
+ : 'Make sure the Service Key has admin privileges and retry.',
223
+ });
224
+ }
225
+ return {
226
+ id: payload?.id ?? '',
227
+ email: payload?.email ?? email,
228
+ };
229
+ }
230
+ export async function ensureBootstrapAdmin(options) {
231
+ const requestedEmail = options.email ? normalizeAdminEmail(options.email) : '';
232
+ if (requestedEmail) {
233
+ validateAdminEmail(requestedEmail);
234
+ }
235
+ const admins = await listRemoteAdmins(options.url, options.serviceKey);
236
+ if (admins.length > 0) {
237
+ const matchingAdmin = requestedEmail
238
+ ? admins.find((admin) => normalizeAdminEmail(admin.email) === requestedEmail)
239
+ : undefined;
240
+ if (matchingAdmin) {
241
+ return {
242
+ status: 'already-configured',
243
+ admin: matchingAdmin,
244
+ admins,
245
+ };
246
+ }
247
+ return {
248
+ status: 'skipped-existing',
249
+ admins,
250
+ ...(requestedEmail ? { requestedEmail } : {}),
251
+ };
252
+ }
253
+ let email = requestedEmail;
254
+ if (!email) {
255
+ email = normalizeAdminEmail(await promptValue(options.emailPromptLabel ?? 'Bootstrap admin email: ', false, {
256
+ field: options.emailPromptField ?? 'bootstrapAdminEmail',
257
+ hint: options.emailPromptHint,
258
+ message: options.emailRequiredMessage ?? 'A bootstrap admin email is required.',
259
+ }));
260
+ }
261
+ if (!email) {
262
+ raiseNeedsInput({
263
+ code: 'bootstrap_admin_email_required',
264
+ field: options.emailPromptField ?? 'bootstrapAdminEmail',
265
+ message: options.emailRequiredMessage ?? 'A bootstrap admin email is required.',
266
+ hint: options.emailPromptHint,
267
+ });
268
+ }
269
+ validateAdminEmail(email);
270
+ const password = await resolvePasswordInput({
271
+ directValue: options.password,
272
+ filePath: options.passwordFile,
273
+ stdin: options.passwordStdin,
274
+ promptLabel: options.passwordPromptLabel ?? 'Bootstrap admin password (min 8 chars): ',
275
+ promptField: options.passwordPromptField ?? 'bootstrapAdminPassword',
276
+ promptHint: options.passwordPromptHint,
277
+ requiredMessage: options.passwordRequiredMessage ?? 'A bootstrap admin password is required.',
278
+ confirmationLabel: options.passwordConfirmationLabel ?? 'Confirm bootstrap admin password: ',
279
+ confirmationMismatchMessage: options.passwordConfirmationMismatchMessage ?? 'Bootstrap admin passwords did not match.',
280
+ });
281
+ const admin = await createRemoteAdmin(options.url, options.serviceKey, email, password);
282
+ return {
283
+ status: 'created',
284
+ admin,
285
+ };
286
+ }
287
+ //# sourceMappingURL=admin-bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-bootstrap.js","sourceRoot":"","sources":["../../src/lib/admin-bootstrap.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dev-sidecar.d.ts","sourceRoot":"","sources":["../../src/lib/dev-sidecar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAA2D,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAqBjG,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AA4kBD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,cAAc,EACpB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAimBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAgDzD;AAID;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBrE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIvE"}
1
+ {"version":3,"file":"dev-sidecar.d.ts","sourceRoot":"","sources":["../../src/lib/dev-sidecar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAA2D,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAqBjG,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AA8nBD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,cAAc,EACpB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAkwBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAmDzD;AAID;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwBrE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIvE"}