@nordsym/apiclaw 1.8.3 β 1.8.5
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 +1 -1
- package/dist/bin.js.map +1 -1
- package/dist/cli/commands/demo.d.ts +7 -0
- package/dist/cli/commands/demo.d.ts.map +1 -0
- package/dist/cli/commands/demo.js +83 -0
- package/dist/cli/commands/demo.js.map +1 -0
- package/dist/cli/index.js +13 -1
- package/dist/cli/index.js.map +1 -1
- package/package.json +1 -1
- package/src/bin.ts +1 -1
- package/src/cli/commands/demo.ts +109 -0
- package/src/cli/index.ts +14 -1
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;
|
|
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 @@
|
|
|
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://adventurous-avocet-799.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
|
package/dist/cli/index.js.map
CHANGED
|
@@ -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
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://adventurous-avocet-799.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
|