@nordsym/apiclaw 1.8.3 β†’ 1.8.4

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.
package/dist/bin.js CHANGED
@@ -7,7 +7,7 @@
7
7
  */
8
8
  import { existsSync } from 'fs';
9
9
  import { join } from 'path';
10
- const cliCommands = ['setup', 'login', 'mcp-install', 'mcp-uninstall', 'doctor', 'restore', 'uninstall', 'help', '--help', '-h', '--version', '-V'];
10
+ const cliCommands = ['setup', 'login', 'demo', 'mcp-install', 'mcp-uninstall', 'doctor', 'restore', 'uninstall', 'help', '--help', '-h', '--version', '-V'];
11
11
  const firstArg = process.argv[2];
12
12
  if (!firstArg || !cliCommands.includes(firstArg)) {
13
13
  // First-run nudge: non-blocking hint if no workspace is configured
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;AAEpJ,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEjC,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IACjD,mEAAmE;IACnE,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QACzE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,0EAA0E,CAC3E,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sCAAsC;IACxC,CAAC;IAED,iBAAiB;IACjB,MAAM,CAAC,YAAY,CAAC,CAAC;AACvB,CAAC;KAAM,CAAC;IACN,UAAU;IACV,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;AAE5J,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEjC,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IACjD,mEAAmE;IACnE,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QACzE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,0EAA0E,CAC3E,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sCAAsC;IACxC,CAAC;IAED,iBAAiB;IACjB,MAAM,CAAC,YAAY,CAAC,CAAC;AACvB,CAAC;KAAM,CAAC;IACN,UAAU;IACV,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * APIClaw CLI Demo
3
+ * Fires a real API call right in the terminal after login.
4
+ * Shows the value in 5 seconds flat.
5
+ */
6
+ export declare function demoCommand(): Promise<void>;
7
+ //# sourceMappingURL=demo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/demo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA+DH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAyCjD"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * APIClaw CLI Demo
3
+ * Fires a real API call right in the terminal after login.
4
+ * Shows the value in 5 seconds flat.
5
+ */
6
+ import ora from 'ora';
7
+ import chalk from 'chalk';
8
+ import { readSession } from '../../session.js';
9
+ import { loginCommand } from './login.js';
10
+ const CONVEX_SITE = 'https://brilliant-puffin-712.eu-west-1.convex.site';
11
+ async function convertCurrency() {
12
+ const res = await fetch(`${CONVEX_SITE}/proxy/apilayer`, {
13
+ method: 'POST',
14
+ headers: { 'Content-Type': 'application/json' },
15
+ body: JSON.stringify({
16
+ service: 'exchangerates_data',
17
+ endpoint: '/latest',
18
+ params: { base: 'USD', symbols: 'SEK,EUR,GBP,JPY,NOK,DKK' },
19
+ }),
20
+ });
21
+ if (!res.ok)
22
+ throw new Error(`HTTP ${res.status}`);
23
+ const data = await res.json();
24
+ if (!data.success)
25
+ throw new Error(data.message || 'API error');
26
+ const rates = data.rates;
27
+ const base = data.base;
28
+ const date = data.date;
29
+ console.log('');
30
+ console.log(chalk.bold(` πŸ’± Live exchange rates Β· ${date}`));
31
+ console.log(chalk.dim(` Base: 1 ${base}\n`));
32
+ const pairs = [
33
+ { code: 'SEK', flag: 'πŸ‡ΈπŸ‡ͺ', name: 'Swedish Krona' },
34
+ { code: 'EUR', flag: 'πŸ‡ͺπŸ‡Ί', name: 'Euro' },
35
+ { code: 'GBP', flag: 'πŸ‡¬πŸ‡§', name: 'British Pound' },
36
+ { code: 'JPY', flag: 'πŸ‡―πŸ‡΅', name: 'Japanese Yen' },
37
+ { code: 'NOK', flag: 'πŸ‡³πŸ‡΄', name: 'Norwegian Krone' },
38
+ { code: 'DKK', flag: 'πŸ‡©πŸ‡°', name: 'Danish Krone' },
39
+ ];
40
+ for (const { code, flag, name } of pairs) {
41
+ if (rates[code]) {
42
+ const val = rates[code].toFixed(2);
43
+ console.log(` ${flag} ${chalk.bold((val + ' ' + code).padEnd(14))}${chalk.dim(name)}`);
44
+ }
45
+ }
46
+ console.log('');
47
+ console.log(chalk.dim(' Powered by APIClaw Direct Call Β· exchangerates_data via APILayer'));
48
+ console.log(chalk.dim(` No API key needed. Your agent can call this too.\n`));
49
+ console.log(chalk.cyan(` Dashboard: https://apiclaw.nordsym.com/workspace`) + '\n');
50
+ }
51
+ export async function demoCommand() {
52
+ console.log('');
53
+ // Ensure logged in
54
+ let session = readSession();
55
+ if (!session) {
56
+ console.log(chalk.yellow(' Sign in first to run the demo:\n'));
57
+ const result = await loginCommand({});
58
+ if (!result) {
59
+ console.error(chalk.red('\n Login failed. Run: npx @nordsym/apiclaw login\n'));
60
+ process.exit(1);
61
+ }
62
+ session = readSession();
63
+ console.log('');
64
+ }
65
+ console.log(chalk.bold(' 🦞 APIClaw Demo') +
66
+ chalk.dim(' β€” a real API call, right now, no config needed\n'));
67
+ const spinner = ora('Calling exchangerates_data via APIClaw...').start();
68
+ try {
69
+ await convertCurrency();
70
+ spinner.stop();
71
+ console.log(chalk.green(' βœ“ That was a live Direct Call through APIClaw.'));
72
+ console.log(chalk.dim(' 19 providers, hundreds of APIs. Zero API keys needed.\n'));
73
+ console.log(chalk.bold(' Next step:') +
74
+ chalk.dim(' add APIClaw to your AI agent:\n'));
75
+ console.log(' ' + chalk.cyan('npx @nordsym/apiclaw setup') +
76
+ chalk.dim(' auto-detects Claude, Cursor, Windsurf\n'));
77
+ }
78
+ catch (err) {
79
+ spinner.fail('Demo failed: ' + err.message);
80
+ console.log(chalk.dim('\n Try again or check https://apiclaw.nordsym.com\n'));
81
+ }
82
+ }
83
+ //# sourceMappingURL=demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo.js","sourceRoot":"","sources":["../../../src/cli/commands/demo.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -11,6 +11,7 @@ import { doctorCommand } from './commands/doctor.js';
11
11
  import { restoreCommand } from './commands/restore.js';
12
12
  import { uninstallCommand } from './commands/uninstall.js';
13
13
  import { loginCommand } from './commands/login.js';
14
+ import { demoCommand } from './commands/demo.js';
14
15
  import { generateScript } from '../enterprise/script-generator.js';
15
16
  const VERSION = '1.0.0';
16
17
  const program = new Command();
@@ -103,8 +104,19 @@ program
103
104
  .description('Sign in or create a free APIClaw workspace (no browser needed)')
104
105
  .option('-e, --email <email>', 'Email address to use')
105
106
  .option('-f, --force', 'Force re-login even if already signed in')
107
+ .option('--no-demo', 'Skip the demo after login')
106
108
  .action(async (options) => {
107
- await loginCommand({ email: options.email, force: options.force });
109
+ const result = await loginCommand({ email: options.email, force: options.force });
110
+ if (result && options.demo !== false) {
111
+ await demoCommand();
112
+ }
113
+ });
114
+ // Demo command β€” fire a live API call in the terminal
115
+ program
116
+ .command('demo')
117
+ .description('Run a live API call to see APIClaw in action')
118
+ .action(async () => {
119
+ await demoCommand();
108
120
  });
109
121
  // MCP Uninstall alias - same as uninstall but for consistency with mcp-install
110
122
  program
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nordsym/apiclaw",
3
- "version": "1.8.3",
3
+ "version": "1.8.4",
4
4
  "description": "The API layer for AI agents. Dashboard + 22K APIs + 18 Direct Call providers. MCP native.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/bin.ts CHANGED
@@ -9,7 +9,7 @@
9
9
  import { existsSync } from 'fs';
10
10
  import { join } from 'path';
11
11
 
12
- const cliCommands = ['setup', 'login', 'mcp-install', 'mcp-uninstall', 'doctor', 'restore', 'uninstall', 'help', '--help', '-h', '--version', '-V'];
12
+ const cliCommands = ['setup', 'login', 'demo', 'mcp-install', 'mcp-uninstall', 'doctor', 'restore', 'uninstall', 'help', '--help', '-h', '--version', '-V'];
13
13
 
14
14
  const firstArg = process.argv[2];
15
15
 
@@ -0,0 +1,109 @@
1
+ /**
2
+ * APIClaw CLI Demo
3
+ * Fires a real API call right in the terminal after login.
4
+ * Shows the value in 5 seconds flat.
5
+ */
6
+
7
+ import ora from 'ora';
8
+ import chalk from 'chalk';
9
+ import { readSession } from '../../session.js';
10
+ import { loginCommand } from './login.js';
11
+
12
+ const CONVEX_SITE = 'https://brilliant-puffin-712.eu-west-1.convex.site';
13
+
14
+ async function convertCurrency(): Promise<void> {
15
+ const res = await fetch(`${CONVEX_SITE}/proxy/apilayer`, {
16
+ method: 'POST',
17
+ headers: { 'Content-Type': 'application/json' },
18
+ body: JSON.stringify({
19
+ service: 'exchangerates_data',
20
+ endpoint: '/latest',
21
+ params: { base: 'USD', symbols: 'SEK,EUR,GBP,JPY,NOK,DKK' },
22
+ }),
23
+ });
24
+
25
+ if (!res.ok) throw new Error(`HTTP ${res.status}`);
26
+ const data = await res.json() as any;
27
+
28
+ if (!data.success) throw new Error(data.message || 'API error');
29
+
30
+ const rates = data.rates as Record<string, number>;
31
+ const base = data.base;
32
+ const date = data.date;
33
+
34
+ console.log('');
35
+ console.log(chalk.bold(` πŸ’± Live exchange rates Β· ${date}`));
36
+ console.log(chalk.dim(` Base: 1 ${base}\n`));
37
+
38
+ const pairs = [
39
+ { code: 'SEK', flag: 'πŸ‡ΈπŸ‡ͺ', name: 'Swedish Krona' },
40
+ { code: 'EUR', flag: 'πŸ‡ͺπŸ‡Ί', name: 'Euro' },
41
+ { code: 'GBP', flag: 'πŸ‡¬πŸ‡§', name: 'British Pound' },
42
+ { code: 'JPY', flag: 'πŸ‡―πŸ‡΅', name: 'Japanese Yen' },
43
+ { code: 'NOK', flag: 'πŸ‡³πŸ‡΄', name: 'Norwegian Krone' },
44
+ { code: 'DKK', flag: 'πŸ‡©πŸ‡°', name: 'Danish Krone' },
45
+ ];
46
+
47
+ for (const { code, flag, name } of pairs) {
48
+ if (rates[code]) {
49
+ const val = rates[code].toFixed(2);
50
+ console.log(
51
+ ` ${flag} ${chalk.bold((val + ' ' + code).padEnd(14))}${chalk.dim(name)}`
52
+ );
53
+ }
54
+ }
55
+
56
+ console.log('');
57
+ console.log(
58
+ chalk.dim(' Powered by APIClaw Direct Call Β· exchangerates_data via APILayer')
59
+ );
60
+ console.log(
61
+ chalk.dim(` No API key needed. Your agent can call this too.\n`)
62
+ );
63
+ console.log(
64
+ chalk.cyan(` Dashboard: https://apiclaw.nordsym.com/workspace`) + '\n'
65
+ );
66
+ }
67
+
68
+ export async function demoCommand(): Promise<void> {
69
+ console.log('');
70
+
71
+ // Ensure logged in
72
+ let session = readSession();
73
+ if (!session) {
74
+ console.log(chalk.yellow(' Sign in first to run the demo:\n'));
75
+ const result = await loginCommand({});
76
+ if (!result) {
77
+ console.error(chalk.red('\n Login failed. Run: npx @nordsym/apiclaw login\n'));
78
+ process.exit(1);
79
+ }
80
+ session = readSession();
81
+ console.log('');
82
+ }
83
+
84
+ console.log(
85
+ chalk.bold(' 🦞 APIClaw Demo') +
86
+ chalk.dim(' β€” a real API call, right now, no config needed\n')
87
+ );
88
+
89
+ const spinner = ora('Calling exchangerates_data via APIClaw...').start();
90
+
91
+ try {
92
+ await convertCurrency();
93
+ spinner.stop();
94
+
95
+ console.log(chalk.green(' βœ“ That was a live Direct Call through APIClaw.'));
96
+ console.log(chalk.dim(' 19 providers, hundreds of APIs. Zero API keys needed.\n'));
97
+ console.log(
98
+ chalk.bold(' Next step:') +
99
+ chalk.dim(' add APIClaw to your AI agent:\n')
100
+ );
101
+ console.log(
102
+ ' ' + chalk.cyan('npx @nordsym/apiclaw setup') +
103
+ chalk.dim(' auto-detects Claude, Cursor, Windsurf\n')
104
+ );
105
+ } catch (err: any) {
106
+ spinner.fail('Demo failed: ' + err.message);
107
+ console.log(chalk.dim('\n Try again or check https://apiclaw.nordsym.com\n'));
108
+ }
109
+ }
package/src/cli/index.ts CHANGED
@@ -12,6 +12,7 @@ import { doctorCommand } from './commands/doctor.js';
12
12
  import { restoreCommand } from './commands/restore.js';
13
13
  import { uninstallCommand } from './commands/uninstall.js';
14
14
  import { loginCommand } from './commands/login.js';
15
+ import { demoCommand } from './commands/demo.js';
15
16
  import { generateScript } from '../enterprise/script-generator.js';
16
17
  import { detectOS, getOSDisplayName } from '../utils/os.js';
17
18
 
@@ -114,8 +115,20 @@ program
114
115
  .description('Sign in or create a free APIClaw workspace (no browser needed)')
115
116
  .option('-e, --email <email>', 'Email address to use')
116
117
  .option('-f, --force', 'Force re-login even if already signed in')
118
+ .option('--no-demo', 'Skip the demo after login')
117
119
  .action(async (options) => {
118
- await loginCommand({ email: options.email, force: options.force });
120
+ const result = await loginCommand({ email: options.email, force: options.force });
121
+ if (result && options.demo !== false) {
122
+ await demoCommand();
123
+ }
124
+ });
125
+
126
+ // Demo command β€” fire a live API call in the terminal
127
+ program
128
+ .command('demo')
129
+ .description('Run a live API call to see APIClaw in action')
130
+ .action(async () => {
131
+ await demoCommand();
119
132
  });
120
133
 
121
134
  // MCP Uninstall alias - same as uninstall but for consistency with mcp-install