@edge-base/cli 0.2.8 → 0.3.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.
@@ -1,71 +0,0 @@
1
- import { Command } from 'commander';
2
- import chalk from 'chalk';
3
- import { isCliStructuredError, raiseCliError } from '../lib/agent-contract.js';
4
- import { isJson, isQuiet } from '../lib/cli-context.js';
5
- import { provisionRealtime } from '../lib/realtime-provision.js';
6
- export const realtimeCommand = new Command('realtime')
7
- .description('Manage Cloudflare Realtime SFU/TURN integration');
8
- realtimeCommand
9
- .command('provision')
10
- .description('Create or reuse Cloudflare Realtime app and TURN key, then store local/Workers secrets')
11
- .option('--app-name <name>', 'Override the managed Cloudflare Realtime app name')
12
- .option('--turn-name <name>', 'Override the managed Cloudflare TURN key name')
13
- .option('--force-create-app', 'Mint a new Cloudflare Realtime app even if local secrets exist')
14
- .option('--force-create-turn', 'Mint a new Cloudflare TURN key even if local secrets exist')
15
- .option('--skip-workers-secrets', 'Only write local secrets; do not sync Wrangler Workers secrets')
16
- .action(async (options) => {
17
- const projectDir = process.cwd();
18
- if (!isQuiet()) {
19
- console.log(chalk.blue('🎥 Provisioning Cloudflare Realtime...'));
20
- console.log();
21
- }
22
- try {
23
- const result = await provisionRealtime({
24
- projectDir,
25
- appName: options.appName,
26
- turnName: options.turnName,
27
- forceCreateApp: options.forceCreateApp,
28
- forceCreateTurn: options.forceCreateTurn,
29
- syncWorkersSecrets: !options.skipWorkersSecrets,
30
- });
31
- if (isJson()) {
32
- console.log(JSON.stringify({
33
- status: 'success',
34
- projectDir,
35
- app: {
36
- id: result.appId,
37
- name: result.appName,
38
- source: result.appSource,
39
- },
40
- turn: {
41
- keyId: result.turnKeyId,
42
- name: result.turnName,
43
- source: result.turnSource,
44
- },
45
- workersSecretsSynced: !options.skipWorkersSecrets && !(result.warnings?.length),
46
- warnings: result.warnings ?? [],
47
- }));
48
- return;
49
- }
50
- console.log(chalk.green('✓'), `Realtime app (${result.appSource}) → ${result.appName}`);
51
- console.log(chalk.dim(` CF_REALTIME_APP_ID=${result.appId}`));
52
- console.log(chalk.green('✓'), `TURN key (${result.turnSource}) → ${result.turnName}`);
53
- console.log(chalk.dim(` CF_REALTIME_TURN_KEY_ID=${result.turnKeyId}`));
54
- console.log();
55
- console.log(chalk.green('✅ Cloudflare Realtime secrets are ready.'));
56
- console.log(chalk.dim(' Local: .env.development / .dev.vars / .edgebase/secrets.json'));
57
- if (!options.skipWorkersSecrets) {
58
- console.log(chalk.dim(' Workers: synced via `wrangler secret put`'));
59
- }
60
- }
61
- catch (error) {
62
- if (isCliStructuredError(error))
63
- throw error;
64
- raiseCliError({
65
- code: 'realtime_provision_failed',
66
- message: error instanceof Error ? error.message : 'Realtime provisioning failed.',
67
- hint: 'Check your Cloudflare authentication, API token permissions, and project wrangler configuration.',
68
- });
69
- }
70
- });
71
- //# sourceMappingURL=realtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../src/commands/realtime.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- export declare const REALTIME_SECRET_NAMES: readonly ["CF_REALTIME_APP_ID", "CF_REALTIME_APP_SECRET", "CF_REALTIME_TURN_KEY_ID", "CF_REALTIME_TURN_API_TOKEN"];
2
- export interface RealtimeProvisionOptions {
3
- projectDir: string;
4
- appName?: string;
5
- turnName?: string;
6
- forceCreateApp?: boolean;
7
- forceCreateTurn?: boolean;
8
- syncWorkersSecrets?: boolean;
9
- }
10
- export interface RealtimeProvisionResult {
11
- appId: string;
12
- appSecret: string;
13
- appName: string;
14
- appSource: 'local' | 'created';
15
- turnKeyId: string;
16
- turnApiToken: string;
17
- turnName: string;
18
- turnSource: 'local' | 'created';
19
- warnings?: string[];
20
- }
21
- export declare function provisionRealtime(options: RealtimeProvisionOptions): Promise<RealtimeProvisionResult>;
22
- //# sourceMappingURL=realtime-provision.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"realtime-provision.d.ts","sourceRoot":"","sources":["../../src/lib/realtime-provision.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,qBAAqB,oHAKxB,CAAC;AAgCX,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAsLD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,uBAAuB,CAAC,CAmIlC"}
@@ -1,262 +0,0 @@
1
- import { execFileSync } from 'node:child_process';
2
- import { existsSync, readFileSync } from 'node:fs';
3
- import { basename, join } from 'node:path';
4
- import chalk from 'chalk';
5
- import { ensureCloudflareAuth, resolveApiToken } from './cf-auth.js';
6
- import { isQuiet } from './cli-context.js';
7
- import { writeLocalSecrets } from './local-secrets.js';
8
- import { deriveProjectSlug } from './runtime-scaffold.js';
9
- import { npxCommand } from './npx.js';
10
- const CLOUDFLARE_API_BASE = 'https://api.cloudflare.com/client/v4';
11
- export const REALTIME_SECRET_NAMES = [
12
- 'CF_REALTIME_APP_ID',
13
- 'CF_REALTIME_APP_SECRET',
14
- 'CF_REALTIME_TURN_KEY_ID',
15
- 'CF_REALTIME_TURN_API_TOKEN',
16
- ];
17
- function parseEnvFile(filePath) {
18
- if (!existsSync(filePath))
19
- return {};
20
- const values = {};
21
- const raw = readFileSync(filePath, 'utf-8');
22
- for (const line of raw.split('\n')) {
23
- const trimmed = line.trim();
24
- if (!trimmed || trimmed.startsWith('#'))
25
- continue;
26
- const idx = trimmed.indexOf('=');
27
- if (idx <= 0)
28
- continue;
29
- values[trimmed.slice(0, idx).trim()] = trimmed.slice(idx + 1).trim();
30
- }
31
- return values;
32
- }
33
- function readLocalSecretSnapshot(projectDir) {
34
- const fromJson = (() => {
35
- const filePath = join(projectDir, '.edgebase', 'secrets.json');
36
- if (!existsSync(filePath))
37
- return {};
38
- try {
39
- const parsed = JSON.parse(readFileSync(filePath, 'utf-8'));
40
- return parsed;
41
- }
42
- catch {
43
- return {};
44
- }
45
- })();
46
- const merged = {
47
- ...parseEnvFile(join(projectDir, '.env.development')),
48
- ...parseEnvFile(join(projectDir, '.dev.vars')),
49
- ...fromJson,
50
- };
51
- const snapshot = {};
52
- for (const key of REALTIME_SECRET_NAMES) {
53
- if (typeof merged[key] === 'string' && merged[key]) {
54
- snapshot[key] = merged[key];
55
- }
56
- }
57
- return snapshot;
58
- }
59
- function readWranglerName(projectDir) {
60
- const wranglerPath = join(projectDir, 'wrangler.toml');
61
- if (!existsSync(wranglerPath))
62
- return null;
63
- const content = readFileSync(wranglerPath, 'utf-8');
64
- const match = content.match(/^name\s*=\s*"([^"]+)"/m);
65
- return match?.[1] ?? null;
66
- }
67
- function deriveManagedBaseName(projectDir) {
68
- return readWranglerName(projectDir) ?? deriveProjectSlug(projectDir) ?? basename(projectDir);
69
- }
70
- function getDefaultRealtimeNames(projectDir) {
71
- const baseName = deriveManagedBaseName(projectDir);
72
- return {
73
- appName: `${baseName}-realtime`,
74
- turnName: `${baseName}-turn`,
75
- };
76
- }
77
- function toProvisionAuthError(error, tokenSource) {
78
- if (!(error instanceof Error)) {
79
- return new Error('Cloudflare Realtime provisioning failed for an unknown reason.');
80
- }
81
- const msg = error.message.toLowerCase();
82
- // Calls/Realtime not enabled on the account
83
- if (msg.includes('not found') || msg.includes('not enabled') || msg.includes('code: 10042') || msg.includes('code: 7000') || msg.includes('does not have access')) {
84
- return new Error('Cloudflare Calls (Realtime) does not appear to be enabled on your account.\n' +
85
- ' To enable: Cloudflare Dashboard → Calls → Get Started (beta signup may be required).\n' +
86
- ' Or remove "realtime" from edgebase.config.ts if your app doesn\'t need WebSocket/media features.\n' +
87
- ' Docs: https://developers.cloudflare.com/calls/');
88
- }
89
- // Auth token lacks Calls permissions
90
- if (tokenSource === 'wrangler_oauth' && /authentication error/i.test(error.message)) {
91
- return new Error('Cloudflare Calls/Realtime provisioning rejected the current wrangler OAuth token.\n' +
92
- ' Create a Cloudflare API token with Calls Write or Connectivity Admin permissions,\n' +
93
- ' export it as CLOUDFLARE_API_TOKEN, and rerun this command.');
94
- }
95
- // Quota / plan limits
96
- if (msg.includes('quota') || msg.includes('limit') || msg.includes('exceeded')) {
97
- return new Error(`Cloudflare Calls provisioning failed due to account limits: ${error.message}\n` +
98
- ' Check your plan limits: Cloudflare Dashboard → Calls\n' +
99
- ' You may need to upgrade your plan or delete unused apps/keys.');
100
- }
101
- return error;
102
- }
103
- async function cloudflareApi(accountId, apiToken, path, init) {
104
- const response = await fetch(`${CLOUDFLARE_API_BASE}/accounts/${accountId}${path}`, {
105
- ...init,
106
- headers: {
107
- Authorization: `Bearer ${apiToken}`,
108
- 'Content-Type': 'application/json',
109
- ...(init?.headers ?? {}),
110
- },
111
- });
112
- const data = (await response.json().catch(() => ({})));
113
- if (!response.ok || !data.success || data.result === undefined) {
114
- const errorMessage = data.errors?.map((error) => error.message).filter(Boolean).join(', ');
115
- throw new Error(errorMessage || `Cloudflare API request failed (${response.status})`);
116
- }
117
- return data.result;
118
- }
119
- async function listRealtimeApps(accountId, apiToken) {
120
- return cloudflareApi(accountId, apiToken, '/calls/apps');
121
- }
122
- async function createRealtimeApp(accountId, apiToken, name) {
123
- return cloudflareApi(accountId, apiToken, '/calls/apps', {
124
- method: 'POST',
125
- body: JSON.stringify({ name }),
126
- });
127
- }
128
- async function listTurnKeys(accountId, apiToken) {
129
- return cloudflareApi(accountId, apiToken, '/calls/turn_keys');
130
- }
131
- async function createTurnKey(accountId, apiToken, name) {
132
- return cloudflareApi(accountId, apiToken, '/calls/turn_keys', {
133
- method: 'POST',
134
- body: JSON.stringify({ name }),
135
- });
136
- }
137
- function hasCompleteLocalSecrets(snapshot) {
138
- return REALTIME_SECRET_NAMES.every((key) => typeof snapshot[key] === 'string' && snapshot[key]);
139
- }
140
- function putWorkersSecret(projectDir, secretName, value) {
141
- execFileSync(npxCommand(), ['wrangler', 'secret', 'put', secretName], {
142
- cwd: projectDir,
143
- input: value,
144
- stdio: ['pipe', 'pipe', 'pipe'],
145
- });
146
- }
147
- function syncWorkersSecrets(projectDir, secrets) {
148
- for (const [secretName, value] of Object.entries(secrets)) {
149
- putWorkersSecret(projectDir, secretName, value);
150
- }
151
- }
152
- export async function provisionRealtime(options) {
153
- const existingSecrets = readLocalSecretSnapshot(options.projectDir);
154
- const names = getDefaultRealtimeNames(options.projectDir);
155
- const appName = options.appName?.trim() || names.appName;
156
- const turnName = options.turnName?.trim() || names.turnName;
157
- if (hasCompleteLocalSecrets(existingSecrets) &&
158
- !options.forceCreateApp &&
159
- !options.forceCreateTurn) {
160
- return {
161
- appId: existingSecrets.CF_REALTIME_APP_ID,
162
- appSecret: existingSecrets.CF_REALTIME_APP_SECRET,
163
- appName,
164
- appSource: 'local',
165
- turnKeyId: existingSecrets.CF_REALTIME_TURN_KEY_ID,
166
- turnApiToken: existingSecrets.CF_REALTIME_TURN_API_TOKEN,
167
- turnName,
168
- turnSource: 'local',
169
- };
170
- }
171
- const auth = await ensureCloudflareAuth(options.projectDir, process.stdout.isTTY);
172
- const { token: apiToken, source: apiTokenSource } = resolveApiToken();
173
- try {
174
- let appId = existingSecrets.CF_REALTIME_APP_ID;
175
- let appSecret = existingSecrets.CF_REALTIME_APP_SECRET;
176
- let appSource = appId && appSecret ? 'local' : 'created';
177
- if (options.forceCreateApp || !appId || !appSecret) {
178
- if (!options.forceCreateApp) {
179
- const existingApp = (await listRealtimeApps(auth.accountId, apiToken))
180
- .find((candidate) => candidate.name === appName);
181
- if (existingApp && (!appId || !appSecret)) {
182
- throw new Error(`Realtime app '${appName}' already exists in Cloudflare, but its secret is not stored locally. ` +
183
- 'Cloudflare does not return existing app secrets again. Use --force-create-app to mint a new app or restore CF_REALTIME_APP_SECRET locally.');
184
- }
185
- }
186
- const createdApp = await createRealtimeApp(auth.accountId, apiToken, appName);
187
- if (!createdApp.uid || !createdApp.secret) {
188
- throw new Error('Cloudflare returned an incomplete Realtime app response.');
189
- }
190
- appId = createdApp.uid;
191
- appSecret = createdApp.secret;
192
- appSource = 'created';
193
- }
194
- let turnKeyId = existingSecrets.CF_REALTIME_TURN_KEY_ID;
195
- let turnApiToken = existingSecrets.CF_REALTIME_TURN_API_TOKEN;
196
- let turnSource = turnKeyId && turnApiToken ? 'local' : 'created';
197
- if (options.forceCreateTurn || !turnKeyId || !turnApiToken) {
198
- if (!options.forceCreateTurn) {
199
- const existingTurnKey = (await listTurnKeys(auth.accountId, apiToken))
200
- .find((candidate) => candidate.name === turnName);
201
- if (existingTurnKey && (!turnKeyId || !turnApiToken)) {
202
- throw new Error(`TURN key '${turnName}' already exists in Cloudflare, but its API token is not stored locally. ` +
203
- 'Cloudflare does not return existing TURN key tokens again. Use --force-create-turn to mint a new TURN key or restore CF_REALTIME_TURN_API_TOKEN locally.');
204
- }
205
- }
206
- const createdTurnKey = await createTurnKey(auth.accountId, apiToken, turnName);
207
- if (!createdTurnKey.uid || !createdTurnKey.key) {
208
- throw new Error('Cloudflare returned an incomplete TURN key response.');
209
- }
210
- turnKeyId = createdTurnKey.uid;
211
- turnApiToken = createdTurnKey.key;
212
- turnSource = 'created';
213
- }
214
- const secrets = {
215
- CF_REALTIME_APP_ID: appId,
216
- CF_REALTIME_APP_SECRET: appSecret,
217
- CF_REALTIME_TURN_KEY_ID: turnKeyId,
218
- CF_REALTIME_TURN_API_TOKEN: turnApiToken,
219
- };
220
- writeLocalSecrets(options.projectDir, secrets);
221
- if (options.syncWorkersSecrets !== false) {
222
- try {
223
- syncWorkersSecrets(options.projectDir, secrets);
224
- }
225
- catch (err) {
226
- const warning = `Realtime secrets were written locally, but syncing Workers secrets failed: ${err instanceof Error ? err.message : String(err)}`;
227
- if (!isQuiet()) {
228
- console.log(chalk.yellow('⚠'), warning);
229
- console.log(chalk.dim(' You can retry with `npx edgebase realtime provision` or set the secrets manually.'));
230
- }
231
- return {
232
- appId: secrets.CF_REALTIME_APP_ID,
233
- appSecret: secrets.CF_REALTIME_APP_SECRET,
234
- appName,
235
- appSource,
236
- turnKeyId: secrets.CF_REALTIME_TURN_KEY_ID,
237
- turnApiToken: secrets.CF_REALTIME_TURN_API_TOKEN,
238
- turnName,
239
- turnSource,
240
- warnings: [
241
- warning,
242
- 'You can retry with `npx edgebase realtime provision` or set the secrets manually.',
243
- ],
244
- };
245
- }
246
- }
247
- return {
248
- appId: secrets.CF_REALTIME_APP_ID,
249
- appSecret: secrets.CF_REALTIME_APP_SECRET,
250
- appName,
251
- appSource,
252
- turnKeyId: secrets.CF_REALTIME_TURN_KEY_ID,
253
- turnApiToken: secrets.CF_REALTIME_TURN_API_TOKEN,
254
- turnName,
255
- turnSource,
256
- };
257
- }
258
- catch (error) {
259
- throw toProvisionAuthError(error, apiTokenSource);
260
- }
261
- }
262
- //# sourceMappingURL=realtime-provision.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"realtime-provision.js","sourceRoot":"","sources":["../../src/lib/realtime-provision.ts"],"names":[],"mappings":"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"}