@fold-run/cli 0.1.2 → 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.
Files changed (82) hide show
  1. package/dist/commands/completions.d.ts +1 -0
  2. package/dist/commands/completions.js +195 -0
  3. package/dist/commands/completions.js.map +1 -0
  4. package/dist/commands/config.d.ts +4 -0
  5. package/dist/commands/config.js +75 -0
  6. package/dist/commands/config.js.map +1 -0
  7. package/dist/commands/delete.d.ts +1 -0
  8. package/dist/commands/delete.js +8 -0
  9. package/dist/commands/delete.js.map +1 -1
  10. package/dist/commands/deploy.d.ts +1 -0
  11. package/dist/commands/deploy.js +59 -17
  12. package/dist/commands/deploy.js.map +1 -1
  13. package/dist/commands/dev.d.ts +1 -0
  14. package/dist/commands/dev.js +53 -34
  15. package/dist/commands/dev.js.map +1 -1
  16. package/dist/commands/doctor.d.ts +1 -0
  17. package/dist/commands/doctor.js +138 -0
  18. package/dist/commands/doctor.js.map +1 -0
  19. package/dist/commands/domains.d.ts +11 -0
  20. package/dist/commands/domains.js +111 -0
  21. package/dist/commands/domains.js.map +1 -0
  22. package/dist/commands/env-vars.d.ts +1 -0
  23. package/dist/commands/env-vars.js +8 -1
  24. package/dist/commands/env-vars.js.map +1 -1
  25. package/dist/commands/init.d.ts +1 -0
  26. package/dist/commands/init.js +104 -6
  27. package/dist/commands/init.js.map +1 -1
  28. package/dist/commands/invoke.d.ts +9 -0
  29. package/dist/commands/invoke.js +89 -0
  30. package/dist/commands/invoke.js.map +1 -0
  31. package/dist/commands/link.d.ts +4 -0
  32. package/dist/commands/link.js +77 -0
  33. package/dist/commands/link.js.map +1 -0
  34. package/dist/commands/login.js +8 -6
  35. package/dist/commands/login.js.map +1 -1
  36. package/dist/commands/logs.js +31 -1
  37. package/dist/commands/logs.js.map +1 -1
  38. package/dist/commands/schedules.d.ts +3 -1
  39. package/dist/commands/schedules.js +41 -21
  40. package/dist/commands/schedules.js.map +1 -1
  41. package/dist/commands/secrets.d.ts +3 -1
  42. package/dist/commands/secrets.js +9 -2
  43. package/dist/commands/secrets.js.map +1 -1
  44. package/dist/commands/status.js +48 -28
  45. package/dist/commands/status.js.map +1 -1
  46. package/dist/commands/templates.js +24 -17
  47. package/dist/commands/templates.js.map +1 -1
  48. package/dist/commands/tenant.d.ts +4 -0
  49. package/dist/commands/tenant.js +82 -0
  50. package/dist/commands/tenant.js.map +1 -0
  51. package/dist/commands/webhooks.d.ts +3 -1
  52. package/dist/commands/webhooks.js +31 -18
  53. package/dist/commands/webhooks.js.map +1 -1
  54. package/dist/commands/whoami.d.ts +1 -0
  55. package/dist/commands/whoami.js +39 -0
  56. package/dist/commands/whoami.js.map +1 -0
  57. package/dist/index.js +107 -34
  58. package/dist/index.js.map +1 -1
  59. package/dist/lib/api.d.ts +1 -0
  60. package/dist/lib/api.js +30 -0
  61. package/dist/lib/api.js.map +1 -1
  62. package/dist/lib/bundler.js +124 -18
  63. package/dist/lib/bundler.js.map +1 -1
  64. package/dist/lib/colorize.d.ts +5 -0
  65. package/dist/lib/colorize.js +28 -0
  66. package/dist/lib/colorize.js.map +1 -0
  67. package/dist/lib/cron.d.ts +13 -0
  68. package/dist/lib/cron.js +107 -0
  69. package/dist/lib/cron.js.map +1 -0
  70. package/dist/lib/manifest.d.ts +31 -0
  71. package/dist/lib/manifest.js +195 -0
  72. package/dist/lib/manifest.js.map +1 -0
  73. package/dist/lib/prompt.d.ts +27 -0
  74. package/dist/lib/prompt.js +160 -0
  75. package/dist/lib/prompt.js.map +1 -1
  76. package/dist/lib/spinner.d.ts +14 -0
  77. package/dist/lib/spinner.js +52 -0
  78. package/dist/lib/spinner.js.map +1 -0
  79. package/dist/lib/version-check.d.ts +9 -0
  80. package/dist/lib/version-check.js +54 -0
  81. package/dist/lib/version-check.js.map +1 -0
  82. package/package.json +10 -11
@@ -0,0 +1,82 @@
1
+ import { apiFetch } from '../lib/api.js';
2
+ import { loadConfig, saveConfig } from '../lib/config.js';
3
+ import { output } from '../lib/output.js';
4
+ export async function tenantSetCommand(tenantId) {
5
+ const config = loadConfig();
6
+ if (!config) {
7
+ console.error('Not logged in. Run `fold login` first.');
8
+ process.exit(1);
9
+ }
10
+ // Verify the tenant exists and user has access
11
+ try {
12
+ const tenant = (await apiFetch(config, `/tenants/${tenantId}`));
13
+ config.tenantId = tenant.id;
14
+ saveConfig(config);
15
+ output(tenant, () => {
16
+ console.log(`Default tenant set to: ${tenant.name} (${tenant.id})`);
17
+ });
18
+ }
19
+ catch (err) {
20
+ console.error(`Failed to set tenant: ${err}`);
21
+ process.exit(1);
22
+ }
23
+ }
24
+ export function tenantGetCommand() {
25
+ const config = loadConfig();
26
+ if (!config) {
27
+ console.error('Not logged in. Run `fold login` first.');
28
+ process.exit(1);
29
+ }
30
+ output({ tenant_id: config.tenantId ?? null }, () => {
31
+ if (config.tenantId) {
32
+ console.log(config.tenantId);
33
+ }
34
+ else {
35
+ console.log('No default tenant set. Use `fold tenant set <id>` or --tenant flag.');
36
+ }
37
+ });
38
+ }
39
+ export async function tenantListCommand() {
40
+ const config = loadConfig();
41
+ if (!config) {
42
+ console.error('Not logged in. Run `fold login` first.');
43
+ process.exit(1);
44
+ }
45
+ try {
46
+ const data = (await apiFetch(config, '/tenants'));
47
+ output(data.tenants, () => {
48
+ if (data.tenants.length === 0) {
49
+ console.log('No tenants found.');
50
+ return;
51
+ }
52
+ console.log('\nTenants:\n');
53
+ for (const t of data.tenants) {
54
+ const current = t.id === config.tenantId ? ' (current)' : '';
55
+ console.log(` ${t.name}${current}`);
56
+ console.log(` ID: ${t.id}`);
57
+ console.log(` Slug: ${t.slug}`);
58
+ console.log(` Plan: ${t.plan}`);
59
+ console.log();
60
+ }
61
+ });
62
+ }
63
+ catch (err) {
64
+ console.error(`Failed to list tenants: ${err}`);
65
+ process.exit(1);
66
+ }
67
+ }
68
+ export function tenantClearCommand() {
69
+ const config = loadConfig();
70
+ if (!config) {
71
+ console.error('Not logged in. Run `fold login` first.');
72
+ process.exit(1);
73
+ }
74
+ if (!config.tenantId) {
75
+ console.log('No default tenant set.');
76
+ return;
77
+ }
78
+ delete config.tenantId;
79
+ saveConfig(config);
80
+ console.log('Default tenant cleared.');
81
+ }
82
+ //# sourceMappingURL=tenant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant.js","sourceRoot":"","sources":["../../src/commands/tenant.ts"],"names":[],"mappings":"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"}
@@ -5,4 +5,6 @@ export declare function webhooksCreateCommand(functionId: string, path: string,
5
5
  tenant?: string;
6
6
  secret?: string;
7
7
  }): Promise<void>;
8
- export declare function webhooksDeleteCommand(id: string): Promise<void>;
8
+ export declare function webhooksDeleteCommand(id: string, opts: {
9
+ yes?: boolean;
10
+ }): Promise<void>;
@@ -1,22 +1,26 @@
1
1
  import { apiFetch } from '../lib/api.js';
2
2
  import { requireConfig } from '../lib/config.js';
3
+ import { output } from '../lib/output.js';
4
+ import { confirm } from '../lib/prompt.js';
3
5
  export async function webhooksListCommand(opts) {
4
6
  const config = requireConfig();
5
7
  const qs = opts.tenant ? `?tenant_id=${opts.tenant}` : '';
6
8
  const data = (await apiFetch(config, `/webhook-configs${qs}`));
7
- if (data.webhook_configs.length === 0) {
8
- console.log('No webhook endpoints configured.');
9
- return;
10
- }
11
- console.log(`\n Webhook Endpoints\n`);
12
- for (const w of data.webhook_configs) {
13
- console.log(` ${w.function_name}`);
14
- console.log(` URL: ${w.webhook_url}`);
15
- console.log(` Path: /_hooks/${w.path}`);
16
- console.log(` Secret: ${w.secret ? 'configured' : 'none'}`);
17
- console.log(` ID: ${w.id}`);
18
- console.log();
19
- }
9
+ output(data.webhook_configs, () => {
10
+ if (data.webhook_configs.length === 0) {
11
+ console.log('No webhook endpoints configured.');
12
+ return;
13
+ }
14
+ console.log(`\n Webhook Endpoints\n`);
15
+ for (const w of data.webhook_configs) {
16
+ console.log(` ${w.function_name}`);
17
+ console.log(` URL: ${w.webhook_url}`);
18
+ console.log(` Path: /_hooks/${w.path}`);
19
+ console.log(` Secret: ${w.secret ? 'configured' : 'none'}`);
20
+ console.log(` ID: ${w.id}`);
21
+ console.log();
22
+ }
23
+ });
20
24
  }
21
25
  export async function webhooksCreateCommand(functionId, path, opts) {
22
26
  const config = requireConfig();
@@ -25,13 +29,22 @@ export async function webhooksCreateCommand(functionId, path, opts) {
25
29
  if (opts.secret)
26
30
  body.secret = opts.secret;
27
31
  const data = (await apiFetch(config, `/webhook-configs${qs}`, { body }));
28
- console.log(`\n Webhook created!`);
29
- console.log(` Function: ${data.function_name}`);
30
- console.log(` URL: ${data.webhook_url}`);
31
- console.log(` ID: ${data.id}\n`);
32
+ output(data, () => {
33
+ console.log(`\n Webhook created!`);
34
+ console.log(` Function: ${data.function_name}`);
35
+ console.log(` URL: ${data.webhook_url}`);
36
+ console.log(` ID: ${data.id}\n`);
37
+ });
32
38
  }
33
- export async function webhooksDeleteCommand(id) {
39
+ export async function webhooksDeleteCommand(id, opts) {
34
40
  const config = requireConfig();
41
+ if (!opts.yes) {
42
+ const confirmed = await confirm(`Delete webhook "${id}"?`);
43
+ if (!confirmed) {
44
+ console.log('Aborted.');
45
+ return;
46
+ }
47
+ }
35
48
  await apiFetch(config, `/webhook-configs/${id}`, { method: 'DELETE' });
36
49
  console.log('Webhook config deleted.');
37
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/commands/webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAajD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAyB;IACjE,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAyC,CAAC;IAEvG,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,UAAkB,EAClB,IAAY,EACZ,IAA0C;IAE1C,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAE1D,MAAM,IAAI,GAA2B,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACvE,IAAI,IAAI,CAAC,MAAM;QAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAE3C,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAkB,CAAC;IAE1F,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,EAAU;IACpD,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,MAAM,QAAQ,CAAC,MAAM,EAAE,oBAAoB,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/commands/webhooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function whoamiCommand(): void;
@@ -0,0 +1,39 @@
1
+ import { loadConfig } from '../lib/config.js';
2
+ import { output } from '../lib/output.js';
3
+ export function whoamiCommand() {
4
+ const config = loadConfig();
5
+ if (!config) {
6
+ output({ logged_in: false }, () => {
7
+ console.log('Not logged in. Run `fold login` first.');
8
+ });
9
+ return;
10
+ }
11
+ const data = {
12
+ logged_in: true,
13
+ api_url: config.apiUrl,
14
+ };
15
+ if (config.tenantId)
16
+ data.tenant_id = config.tenantId;
17
+ try {
18
+ const payload = JSON.parse(Buffer.from(config.token.split('.')[1], 'base64url').toString());
19
+ if (payload.role)
20
+ data.role = payload.role;
21
+ if (payload.tenant_id)
22
+ data.jwt_tenant_id = payload.tenant_id;
23
+ }
24
+ catch {
25
+ // Not a JWT — that's fine
26
+ }
27
+ output(data, () => {
28
+ console.log(`API: ${data.api_url}`);
29
+ if (data.tenant_id)
30
+ console.log(`Tenant: ${data.tenant_id}`);
31
+ if (data.role)
32
+ console.log(`Role: ${data.role}`);
33
+ if (data.jwt_tenant_id)
34
+ console.log(`JWT tenant: ${data.jwt_tenant_id}`);
35
+ if (!data.role && !data.jwt_tenant_id)
36
+ console.log('Token: (not a JWT)');
37
+ });
38
+ }
39
+ //# sourceMappingURL=whoami.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAU1C,MAAM,UAAU,aAAa;IAC3B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAe;QACvB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,MAAM,CAAC,MAAM;KACvB,CAAC;IACF,IAAI,MAAM,CAAC,QAAQ;QAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;IAEtD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5F,IAAI,OAAO,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC3C,IAAI,OAAO,CAAC,SAAS;YAAE,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,0BAA0B;IAC5B,CAAC;IAED,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QAChB,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACvC,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC"}
package/dist/index.js CHANGED
@@ -1,13 +1,19 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { Command } from 'commander';
4
+ import { completionsCommand } from './commands/completions.js';
5
+ import { configGetCommand, configListCommand, configPathCommand, configSetCommand } from './commands/config.js';
4
6
  import { createToolCommand, toolsListCommand } from './commands/create-tool.js';
5
7
  import { deleteCommand } from './commands/delete.js';
6
8
  import { deployCommand } from './commands/deploy.js';
7
9
  import { devCommand } from './commands/dev.js';
10
+ import { doctorCommand } from './commands/doctor.js';
11
+ import { domainsAddCommand, domainsListCommand, domainsRemoveCommand, domainsVerifyCommand, } from './commands/domains.js';
8
12
  import { envDeleteCommand, envListCommand, envSetCommand } from './commands/env-vars.js';
9
13
  import { functionsCommand } from './commands/functions.js';
10
14
  import { initCommand } from './commands/init.js';
15
+ import { invokeCommand } from './commands/invoke.js';
16
+ import { linkCommand } from './commands/link.js';
11
17
  import { loginCommand } from './commands/login.js';
12
18
  import { logsCommand } from './commands/logs.js';
13
19
  import { openCommand } from './commands/open.js';
@@ -17,8 +23,10 @@ import { secretsDeleteCommand, secretsListCommand, secretsSetCommand } from './c
17
23
  import { statusCommand } from './commands/status.js';
18
24
  import { tailCommand } from './commands/tail.js';
19
25
  import { templatesDeployCommand, templatesGetCommand, templatesListCommand } from './commands/templates.js';
26
+ import { tenantClearCommand, tenantGetCommand, tenantListCommand, tenantSetCommand } from './commands/tenant.js';
20
27
  import { webhooksCreateCommand, webhooksDeleteCommand, webhooksListCommand } from './commands/webhooks.js';
21
- import { deleteConfig, loadConfig } from './lib/config.js';
28
+ import { whoamiCommand } from './commands/whoami.js';
29
+ import { deleteConfig } from './lib/config.js';
22
30
  import { setJsonMode } from './lib/output.js';
23
31
  const require = createRequire(import.meta.url);
24
32
  const { version } = require('../package.json');
@@ -40,20 +48,30 @@ program
40
48
  .addHelpText('beforeAll', `\n\x1b[1mfold.run\x1b[0m v${version}\n`)
41
49
  .addHelpText('after', `
42
50
  Examples:
43
- $ fold init my-function Scaffold a new project
51
+ $ fold init my-function Scaffold a new project (interactive)
52
+ $ fold init my-fn --yes Scaffold with defaults (non-interactive)
53
+ $ fold link Link local dir to deployed function
44
54
  $ fold deploy Deploy using fold.json
45
55
  $ fold deploy function.ts Deploy a specific file
56
+ $ fold deploy --dry-run Preview deploy without sending
57
+ $ fold invoke my-fn -d '{}' Invoke a function directly
46
58
  $ fold dev Start local dev server (auto-reloads)
59
+ $ fold dev --mode production Use .env.production vars
60
+ $ fold domains add example.com Add a custom domain
47
61
  $ fold open my-function Open function URL in browser
48
62
  $ fold tail -f fn-1 Stream activations in real-time
49
- $ fold logs -F Poll activation logs
63
+ $ fold logs -F -v Follow logs with colored JSON
50
64
  $ fold functions --json List functions as JSON
51
- $ fold secrets set API_KEY Set a secret (masked input)`);
65
+ $ fold secrets set API_KEY Set a secret (masked input)
66
+ $ fold config set apiUrl ... Change API URL
67
+ $ fold doctor Diagnose common issues
68
+ $ fold completions zsh Generate shell completions`);
52
69
  // ── Getting started ──────────────────────────────────────────────
53
70
  program
54
71
  .command('init [name]')
55
- .description('Scaffold a new fold project')
56
- .action((name) => initCommand({ name }));
72
+ .description('Scaffold a new fold project (interactive)')
73
+ .option('-y, --yes', 'Skip prompts and use defaults')
74
+ .action((name, opts) => initCommand({ name, yes: opts.yes }));
57
75
  program
58
76
  .command('login')
59
77
  .description('Authenticate with the fold.run API')
@@ -70,48 +88,52 @@ program
70
88
  console.log('No credentials found.');
71
89
  }
72
90
  });
73
- program
74
- .command('whoami')
75
- .description('Show current login info')
76
- .action(() => {
77
- const config = loadConfig();
78
- if (!config) {
79
- console.log('Not logged in. Run `fold login` first.');
80
- return;
81
- }
82
- console.log(`API: ${config.apiUrl}`);
83
- if (config.tenantId)
84
- console.log(`Tenant: ${config.tenantId}`);
85
- try {
86
- const payload = JSON.parse(Buffer.from(config.token.split('.')[1], 'base64url').toString());
87
- if (payload.role)
88
- console.log(`Role: ${payload.role}`);
89
- if (payload.tenant_id)
90
- console.log(`JWT tenant: ${payload.tenant_id}`);
91
- }
92
- catch {
93
- console.log('Token: (not a JWT)');
94
- }
95
- });
91
+ program.command('whoami').description('Show current login info').action(whoamiCommand);
96
92
  program
97
93
  .command('status')
98
94
  .description('Show current config and deployed functions')
99
95
  .option('-t, --tenant <id>', 'Tenant ID')
100
96
  .action(statusCommand);
97
+ program.command('doctor').description('Diagnose common issues (auth, API, esbuild, manifest)').action(doctorCommand);
98
+ // ── Tenant ──────────────────────────────────────────────────────
99
+ const tenant = program.command('tenant').description('Manage default tenant');
100
+ tenant.command('set <tenant-id>').description('Set the default tenant for all commands').action(tenantSetCommand);
101
+ tenant.command('get').description('Show the current default tenant').action(tenantGetCommand);
102
+ tenant.command('list').description('List all accessible tenants').action(tenantListCommand);
103
+ tenant.command('clear').description('Clear the default tenant').action(tenantClearCommand);
101
104
  // ── Deploy & manage ──────────────────────────────────────────────
105
+ program
106
+ .command('link')
107
+ .description('Link local directory to an existing deployed function')
108
+ .option('-t, --tenant <id>', 'Tenant ID')
109
+ .option('-y, --yes', 'Overwrite existing fold.json without confirming')
110
+ .action(linkCommand);
102
111
  program
103
112
  .command('deploy [file]')
104
113
  .description('Deploy a function (reads fold.json if no file given)')
105
114
  .option('-n, --name <name>', 'Function name (defaults to filename)')
106
115
  .option('-t, --tenant <id>', 'Tenant ID')
107
116
  .option('--no-bundle', 'Skip esbuild bundling for .ts files')
117
+ .option('--dry-run', 'Bundle and validate without deploying')
108
118
  .action(deployCommand);
119
+ program
120
+ .command('invoke <function>')
121
+ .description('Invoke a deployed function directly')
122
+ .option('-d, --data <json>', 'Request body (JSON string)')
123
+ .option('-f, --file <path>', 'Read request body from file')
124
+ .option('-X, --method <method>', 'HTTP method (default: GET, or POST if body given)')
125
+ .option('-p, --path <path>', 'Request path (default: /)')
126
+ .option('-H, --header <key:value>', 'Custom header (can be repeated)', (v, a) => [...a, v], [])
127
+ .option('-s, --stream', 'Print streaming response body as-is')
128
+ .option('-t, --tenant <id>', 'Tenant ID')
129
+ .action(invokeCommand);
109
130
  program
110
131
  .command('dev [file]')
111
132
  .description('Start a local dev server with auto-reload')
112
- .option('-p, --port <port>', 'Port to listen on', '8787')
133
+ .option('-p, --port <port>', 'Port to listen on', '8000')
113
134
  .option('--no-bundle', 'Skip esbuild bundling for .ts files')
114
135
  .option('--no-watch', 'Disable file watching and auto-reload')
136
+ .option('--mode <mode>', 'Environment mode for .env file loading (default: development)')
115
137
  .option('-e, --env <KEY=VALUE>', 'Set an env var (can be repeated; also auto-loads .env)', (v, a) => [...a, v], [])
116
138
  .action(devCommand);
117
139
  program
@@ -123,6 +145,7 @@ program
123
145
  .command('delete <function-id>')
124
146
  .description('Delete a deployed function')
125
147
  .option('-t, --tenant <id>', 'Tenant ID')
148
+ .option('-y, --yes', 'Skip confirmation prompt')
126
149
  .action(deleteCommand);
127
150
  program
128
151
  .command('rollback <function-id> <version>')
@@ -149,6 +172,11 @@ program
149
172
  .option('-v, --verbose', 'Show request details and console logs')
150
173
  .action(logsCommand);
151
174
  // ── Configuration ────────────────────────────────────────────────
175
+ const configCmd = program.command('config').description('View and update CLI configuration');
176
+ configCmd.command('get <key>').description('Get a config value (apiUrl, tenantId)').action(configGetCommand);
177
+ configCmd.command('set <key> <value>').description('Set a config value').action(configSetCommand);
178
+ configCmd.command('list').description('List all config values').action(configListCommand);
179
+ configCmd.command('path').description('Print config file path').action(configPathCommand);
152
180
  const secrets = program.command('secrets').description('Manage tenant secrets');
153
181
  secrets
154
182
  .command('set <name>')
@@ -160,7 +188,11 @@ secrets
160
188
  .description('List secrets (names only)')
161
189
  .option('-t, --tenant <id>', 'Tenant ID')
162
190
  .action(secretsListCommand);
163
- secrets.command('delete <id>').description('Delete a secret by ID').action(secretsDeleteCommand);
191
+ secrets
192
+ .command('delete <id>')
193
+ .description('Delete a secret by ID')
194
+ .option('-y, --yes', 'Skip confirmation prompt')
195
+ .action(secretsDeleteCommand);
164
196
  const env = program.command('env').description('Manage function environment variables');
165
197
  env
166
198
  .command('set <name>')
@@ -177,8 +209,27 @@ env
177
209
  .command('delete <name>')
178
210
  .description('Delete an environment variable')
179
211
  .requiredOption('-f, --function-id <id>', 'Function ID')
212
+ .option('-y, --yes', 'Skip confirmation prompt')
180
213
  .action(envDeleteCommand);
181
214
  // ── Integrations ─────────────────────────────────────────────────
215
+ const domains = program.command('domains').description('Manage custom domains');
216
+ domains
217
+ .command('list')
218
+ .description('List custom domains')
219
+ .option('-t, --tenant <id>', 'Tenant ID')
220
+ .action(domainsListCommand);
221
+ domains
222
+ .command('add <hostname>')
223
+ .description('Add a custom domain')
224
+ .option('-t, --tenant <id>', 'Tenant ID')
225
+ .option('-f, --function-id <id>', 'Route to specific function')
226
+ .action(domainsAddCommand);
227
+ domains
228
+ .command('remove <domain-id>')
229
+ .description('Remove a custom domain')
230
+ .option('-y, --yes', 'Skip confirmation prompt')
231
+ .action(domainsRemoveCommand);
232
+ domains.command('verify <domain-id>').description('Verify DNS ownership of a domain').action(domainsVerifyCommand);
182
233
  const webhooks = program.command('webhooks').description('Manage webhook ingress endpoints');
183
234
  webhooks
184
235
  .command('list')
@@ -191,7 +242,11 @@ webhooks
191
242
  .option('-t, --tenant <id>', 'Tenant ID')
192
243
  .option('-s, --secret <secret>', 'Webhook secret for X-Webhook-Secret verification')
193
244
  .action(webhooksCreateCommand);
194
- webhooks.command('delete <id>').description('Delete a webhook endpoint').action(webhooksDeleteCommand);
245
+ webhooks
246
+ .command('delete <id>')
247
+ .description('Delete a webhook endpoint')
248
+ .option('-y, --yes', 'Skip confirmation prompt')
249
+ .action(webhooksDeleteCommand);
195
250
  const schedules = program.command('schedules').description('Manage scheduled triggers');
196
251
  schedules
197
252
  .command('list')
@@ -209,7 +264,11 @@ schedules
209
264
  .option('--enable', 'Enable the schedule')
210
265
  .option('--disable', 'Disable the schedule')
211
266
  .action(schedulesToggleCommand);
212
- schedules.command('delete <function-id>').description('Delete a scheduled trigger').action(schedulesDeleteCommand);
267
+ schedules
268
+ .command('delete <id>')
269
+ .description('Delete a scheduled trigger')
270
+ .option('-y, --yes', 'Skip confirmation prompt')
271
+ .action(schedulesDeleteCommand);
213
272
  // ── AI & templates ───────────────────────────────────────────────
214
273
  program
215
274
  .command('create-tool <name> <description>')
@@ -237,7 +296,21 @@ templates
237
296
  .option('-n, --name <name>', 'Function name (defaults to template name)')
238
297
  .option('-t, --tenant <id>', 'Tenant ID')
239
298
  .action(templatesDeployCommand);
240
- program.parseAsync().catch((err) => {
299
+ // ── Utilities ───────────────────────────────────────────────────
300
+ program
301
+ .command('completions <shell>')
302
+ .description('Generate shell completions (bash, zsh, fish)')
303
+ .action(completionsCommand);
304
+ // Start version check early (non-blocking)
305
+ import { checkForUpdate, printUpdateNotice } from './lib/version-check.js';
306
+ const updateCheck = checkForUpdate();
307
+ program
308
+ .parseAsync()
309
+ .then(async () => {
310
+ // Print update notice after command completes
311
+ printUpdateNotice(await updateCheck);
312
+ })
313
+ .catch((err) => {
241
314
  const msg = err.message || String(err);
242
315
  if (msg.includes('fetch failed') || msg.includes('ECONNREFUSED')) {
243
316
  console.error(`Connection error: could not reach the API. Check your network or API URL.`);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/lib/api.d.ts CHANGED
@@ -9,4 +9,5 @@ export declare function apiFetch(config: FoldConfig, path: string, opts?: {
9
9
  method?: string;
10
10
  body?: unknown;
11
11
  timeout?: number;
12
+ retries?: number;
12
13
  }): Promise<unknown>;
package/dist/lib/api.js CHANGED
@@ -1,4 +1,34 @@
1
+ /** Status codes that are safe to retry (transient server/gateway errors). */
2
+ const RETRYABLE_STATUS = new Set([502, 503, 504]);
1
3
  export async function apiFetch(config, path, opts) {
4
+ const maxRetries = opts?.retries ?? 0;
5
+ let lastError;
6
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
7
+ if (attempt > 0) {
8
+ // Exponential backoff: 1s, 2s
9
+ await new Promise((r) => setTimeout(r, 1000 * attempt));
10
+ }
11
+ try {
12
+ return await _apiFetchOnce(config, path, opts);
13
+ }
14
+ catch (err) {
15
+ lastError = err instanceof Error ? err : new Error(String(err));
16
+ // Only retry on transient errors (502/503/504 or network failures)
17
+ const isRetryable = RETRYABLE_STATUS.has(statusFromError(lastError)) ||
18
+ lastError.message.includes('fetch failed') ||
19
+ lastError.message.includes('ECONNREFUSED');
20
+ if (!isRetryable || attempt === maxRetries) {
21
+ throw lastError;
22
+ }
23
+ }
24
+ }
25
+ throw lastError;
26
+ }
27
+ function statusFromError(err) {
28
+ const match = err.message.match(/^\[(\d{3})\]/);
29
+ return match ? Number.parseInt(match[1], 10) : 0;
30
+ }
31
+ async function _apiFetchOnce(config, path, opts) {
2
32
  const url = `${config.apiUrl}${path}`;
3
33
  const headers = {
4
34
  Authorization: `Bearer ${config.token}`,
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAAkB,EAClB,IAAY,EACZ,IAA4D;IAE5D,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;IACtC,MAAM,OAAO,GAA2B;QACtC,aAAa,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE;KACxC,CAAC;IACF,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;IAC/C,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QACrD,OAAO;QACP,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QACxD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,MAAM,CAAC;KACrD,CAAC,CAAC;IAEH,wDAAwD;IACxD,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC1D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAY,CAAC;IAE3C,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,IAAgB,CAAC;QAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}