@nordsym/apiclaw 2.7.0 → 2.8.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.
Files changed (42) hide show
  1. package/README.md +8 -2
  2. package/dist/auth-config.d.ts +41 -0
  3. package/dist/auth-config.d.ts.map +1 -0
  4. package/dist/auth-config.js +162 -0
  5. package/dist/auth-config.js.map +1 -0
  6. package/dist/auth-config.test.d.ts +2 -0
  7. package/dist/auth-config.test.d.ts.map +1 -0
  8. package/dist/auth-config.test.js +153 -0
  9. package/dist/auth-config.test.js.map +1 -0
  10. package/dist/bin.js +9 -5
  11. package/dist/bin.js.map +1 -1
  12. package/dist/capability-router.js +1 -1
  13. package/dist/capability-router.js.map +1 -1
  14. package/dist/cli/commands/auth.d.ts +27 -0
  15. package/dist/cli/commands/auth.d.ts.map +1 -0
  16. package/dist/cli/commands/auth.js +340 -0
  17. package/dist/cli/commands/auth.js.map +1 -0
  18. package/dist/cli/commands/doctor.js +1 -1
  19. package/dist/cli/commands/doctor.js.map +1 -1
  20. package/dist/cli/index.js +48 -4
  21. package/dist/cli/index.js.map +1 -1
  22. package/dist/cli.js +1 -1
  23. package/dist/cli.js.map +1 -1
  24. package/dist/execute-dynamic.js +1 -1
  25. package/dist/execute-dynamic.js.map +1 -1
  26. package/dist/gateway-client.d.ts +2 -0
  27. package/dist/gateway-client.d.ts.map +1 -1
  28. package/dist/gateway-client.js.map +1 -1
  29. package/dist/hivr-whitelist.js +1 -1
  30. package/dist/hivr-whitelist.js.map +1 -1
  31. package/dist/index.js +23 -16
  32. package/dist/index.js.map +1 -1
  33. package/dist/product-whitelist.js +1 -1
  34. package/dist/product-whitelist.js.map +1 -1
  35. package/dist/session.d.ts.map +1 -1
  36. package/dist/session.js +18 -0
  37. package/dist/session.js.map +1 -1
  38. package/dist/telemetry.js +1 -1
  39. package/dist/telemetry.js.map +1 -1
  40. package/package.json +2 -2
  41. package/dist/bin.bundled.js +0 -79288
  42. package/dist/index.bundled.js +0 -61263
package/README.md CHANGED
@@ -13,10 +13,16 @@ The API layer for AI agents.
13
13
  ## Install
14
14
 
15
15
  ```bash
16
+ # 1. Install the MCP server
16
17
  curl -fsSL https://apiclaw.cloud/install.sh | bash
18
+
19
+ # 2. Authenticate (browser opens, one tap, ~10 seconds)
20
+ npx @nordsym/apiclaw auth login
17
21
  ```
18
22
 
19
- Adds APIClaw as an MCP server in your Claude, Cursor, or any MCP-compatible agent. Register your email to unlock 25 calls/month.
23
+ Adds APIClaw as an MCP server in your Claude, Cursor, Windsurf, or any MCP-compatible agent. The auth flow opens your browser, signs you in via Clerk (Google one-tap or passwordless email), and writes `~/.apiclaw.toml`. The same workspace then works across MCP, CLI, HTTP gateway, and Remote MCP. Free tier: 25 calls/month.
24
+
25
+ > **Headless server or SSH?** `npx @nordsym/apiclaw auth login --email-fallback` runs the legacy magic-link flow.
20
26
 
21
27
  ---
22
28
 
@@ -174,7 +180,7 @@ The remaining ~6,500 OpenAPI-spec'd providers in the registry have valid integra
174
180
  | `call_api` | Execute through APIClaw proxy |
175
181
  | `list_connected` | See available managed providers |
176
182
  | `check_balance` | Usage and remaining calls |
177
- | `register_owner` | Register email, unlock 25 calls/month |
183
+ | `register_owner` | Legacy auth (email magic-link). Canonical flow: run `npx @nordsym/apiclaw auth login` in the terminal — the MCP server reads `~/.apiclaw.toml` and unlocks 25 calls/month |
178
184
 
179
185
  ## Pricing
180
186
 
@@ -0,0 +1,41 @@
1
+ /**
2
+ * APIClaw auth-config — Modal-style TOML config at ~/.apiclaw.toml
3
+ *
4
+ * Single source of truth for CLI, MCP server, and HTTP runtimes that
5
+ * import @nordsym/apiclaw/auth. Replaces the JSON files in ~/.apiclaw/
6
+ * but reads them as a fallback for back-compat.
7
+ *
8
+ * File permissions: 0o600.
9
+ */
10
+ export interface AuthConfig {
11
+ workspaceId: string;
12
+ email: string;
13
+ sessionToken: string;
14
+ apiKey?: string;
15
+ mcpToken?: string;
16
+ createdAt: number;
17
+ lastUsedAt?: number;
18
+ }
19
+ /**
20
+ * Read auth config. Tries ~/.apiclaw.toml first, then falls back to the
21
+ * legacy JSON files written by older session.ts versions.
22
+ */
23
+ export declare function readAuthConfig(): AuthConfig | null;
24
+ /**
25
+ * Write auth config to ~/.apiclaw.toml with mode 0o600.
26
+ * Best-effort migration: if legacy ~/.apiclaw/session exists, leave it
27
+ * (session.ts continues to read it) so older binaries on the same machine
28
+ * keep working until the next install bump.
29
+ */
30
+ export declare function writeAuthConfig(cfg: AuthConfig): void;
31
+ /**
32
+ * Update only lastUsedAt without rewriting the rest. Useful for the MCP
33
+ * server's session-touch on each call.
34
+ */
35
+ export declare function touchAuthConfig(): void;
36
+ /**
37
+ * Clear ~/.apiclaw.toml (and the legacy files). Used by `apiclaw auth logout`.
38
+ */
39
+ export declare function clearAuthConfig(): void;
40
+ export declare const AUTH_CONFIG_PATH: string;
41
+ //# sourceMappingURL=auth-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-config.d.ts","sourceRoot":"","sources":["../src/auth-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAgED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,UAAU,GAAG,IAAI,CAiClD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAWrD;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAItC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAQtC;AAED,eAAO,MAAM,gBAAgB,QAAY,CAAC"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * APIClaw auth-config — Modal-style TOML config at ~/.apiclaw.toml
3
+ *
4
+ * Single source of truth for CLI, MCP server, and HTTP runtimes that
5
+ * import @nordsym/apiclaw/auth. Replaces the JSON files in ~/.apiclaw/
6
+ * but reads them as a fallback for back-compat.
7
+ *
8
+ * File permissions: 0o600.
9
+ */
10
+ import * as fs from 'fs';
11
+ import * as path from 'path';
12
+ import * as os from 'os';
13
+ const TOML_PATH = path.join(os.homedir(), '.apiclaw.toml');
14
+ // Legacy paths read as fallback (session.ts wrote these)
15
+ const LEGACY_SESSION_DIR = path.join(os.homedir(), '.apiclaw');
16
+ const LEGACY_SESSION_FILE = path.join(LEGACY_SESSION_DIR, 'session');
17
+ const LEGACY_SESSION_JSON = path.join(LEGACY_SESSION_DIR, 'session.json');
18
+ /**
19
+ * Serialize AuthConfig to a Modal-style [default] TOML block.
20
+ * Kept hand-rolled to avoid a runtime dep — schema is fixed and small.
21
+ */
22
+ function serializeToml(cfg) {
23
+ const lines = ['[default]'];
24
+ const escape = (s) => s.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
25
+ lines.push(`workspace_id = "${escape(cfg.workspaceId)}"`);
26
+ lines.push(`email = "${escape(cfg.email)}"`);
27
+ lines.push(`session_token = "${escape(cfg.sessionToken)}"`);
28
+ if (cfg.apiKey)
29
+ lines.push(`api_key = "${escape(cfg.apiKey)}"`);
30
+ if (cfg.mcpToken)
31
+ lines.push(`mcp_token = "${escape(cfg.mcpToken)}"`);
32
+ lines.push(`created_at = "${new Date(cfg.createdAt).toISOString()}"`);
33
+ lines.push(`last_used_at = "${new Date(cfg.lastUsedAt ?? cfg.createdAt).toISOString()}"`);
34
+ return lines.join('\n') + '\n';
35
+ }
36
+ /**
37
+ * Minimal TOML parser for the [default] block. Handles double-quoted strings
38
+ * and ISO-8601 datetime strings. No arrays, no nested tables, no comments.
39
+ */
40
+ function parseToml(text) {
41
+ const out = {};
42
+ let inDefault = false;
43
+ for (const rawLine of text.split(/\r?\n/)) {
44
+ const line = rawLine.trim();
45
+ if (!line || line.startsWith('#'))
46
+ continue;
47
+ if (line.startsWith('[')) {
48
+ inDefault = line === '[default]';
49
+ continue;
50
+ }
51
+ if (!inDefault)
52
+ continue;
53
+ const eq = line.indexOf('=');
54
+ if (eq < 0)
55
+ continue;
56
+ const key = line.slice(0, eq).trim();
57
+ let val = line.slice(eq + 1).trim();
58
+ if (val.startsWith('"') && val.endsWith('"')) {
59
+ val = val.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
60
+ }
61
+ out[key] = val;
62
+ }
63
+ if (!out.workspace_id || !out.email || !out.session_token)
64
+ return null;
65
+ const createdAt = out.created_at ? Date.parse(out.created_at) : Date.now();
66
+ const lastUsedAt = out.last_used_at ? Date.parse(out.last_used_at) : createdAt;
67
+ return {
68
+ workspaceId: out.workspace_id,
69
+ email: out.email,
70
+ sessionToken: out.session_token,
71
+ apiKey: out.api_key,
72
+ mcpToken: out.mcp_token,
73
+ createdAt: Number.isNaN(createdAt) ? Date.now() : createdAt,
74
+ lastUsedAt: Number.isNaN(lastUsedAt) ? createdAt : lastUsedAt,
75
+ };
76
+ }
77
+ /**
78
+ * Read auth config. Tries ~/.apiclaw.toml first, then falls back to the
79
+ * legacy JSON files written by older session.ts versions.
80
+ */
81
+ export function readAuthConfig() {
82
+ try {
83
+ if (fs.existsSync(TOML_PATH)) {
84
+ const text = fs.readFileSync(TOML_PATH, 'utf8');
85
+ const cfg = parseToml(text);
86
+ if (cfg)
87
+ return cfg;
88
+ }
89
+ }
90
+ catch (err) {
91
+ // fall through to legacy
92
+ }
93
+ // Legacy JSON fallbacks (session.ts format)
94
+ for (const legacyPath of [LEGACY_SESSION_FILE, LEGACY_SESSION_JSON]) {
95
+ try {
96
+ if (!fs.existsSync(legacyPath))
97
+ continue;
98
+ const data = JSON.parse(fs.readFileSync(legacyPath, 'utf8'));
99
+ const sessionToken = data.sessionToken;
100
+ const workspaceId = data.workspaceId;
101
+ const email = data.email;
102
+ if (!sessionToken || !workspaceId || !email)
103
+ continue;
104
+ return {
105
+ sessionToken,
106
+ workspaceId,
107
+ email,
108
+ createdAt: data.createdAt ?? Date.now(),
109
+ lastUsedAt: data.lastUsedAt ?? Date.now(),
110
+ };
111
+ }
112
+ catch (err) {
113
+ // try next
114
+ }
115
+ }
116
+ return null;
117
+ }
118
+ /**
119
+ * Write auth config to ~/.apiclaw.toml with mode 0o600.
120
+ * Best-effort migration: if legacy ~/.apiclaw/session exists, leave it
121
+ * (session.ts continues to read it) so older binaries on the same machine
122
+ * keep working until the next install bump.
123
+ */
124
+ export function writeAuthConfig(cfg) {
125
+ const toWrite = {
126
+ ...cfg,
127
+ lastUsedAt: cfg.lastUsedAt ?? Date.now(),
128
+ };
129
+ fs.writeFileSync(TOML_PATH, serializeToml(toWrite), { mode: 0o600 });
130
+ try {
131
+ fs.chmodSync(TOML_PATH, 0o600);
132
+ }
133
+ catch {
134
+ // best-effort
135
+ }
136
+ }
137
+ /**
138
+ * Update only lastUsedAt without rewriting the rest. Useful for the MCP
139
+ * server's session-touch on each call.
140
+ */
141
+ export function touchAuthConfig() {
142
+ const cfg = readAuthConfig();
143
+ if (!cfg)
144
+ return;
145
+ writeAuthConfig({ ...cfg, lastUsedAt: Date.now() });
146
+ }
147
+ /**
148
+ * Clear ~/.apiclaw.toml (and the legacy files). Used by `apiclaw auth logout`.
149
+ */
150
+ export function clearAuthConfig() {
151
+ for (const p of [TOML_PATH, LEGACY_SESSION_FILE, LEGACY_SESSION_JSON]) {
152
+ try {
153
+ if (fs.existsSync(p))
154
+ fs.unlinkSync(p);
155
+ }
156
+ catch {
157
+ // best-effort
158
+ }
159
+ }
160
+ }
161
+ export const AUTH_CONFIG_PATH = TOML_PATH;
162
+ //# sourceMappingURL=auth-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-config.js","sourceRoot":"","sources":["../src/auth-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=auth-config.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-config.test.d.ts","sourceRoot":"","sources":["../src/auth-config.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Tests for ~/.apiclaw.toml read/write helpers.
3
+ * Run: npx tsx src/auth-config.test.ts
4
+ *
5
+ * Uses a temp HOME via mocking — the helpers respect os.homedir() so we
6
+ * temporarily override it via env+setter.
7
+ */
8
+ import { strict as assert } from 'node:assert';
9
+ import * as fs from 'fs';
10
+ import * as path from 'path';
11
+ import * as os from 'os';
12
+ const tmpHome = fs.mkdtempSync(path.join(os.tmpdir(), 'apiclaw-test-'));
13
+ // os.homedir() on POSIX prefers $HOME if set; on win32 it uses $USERPROFILE.
14
+ // Set both BEFORE importing the module so AUTH_CONFIG_PATH resolves under tmp.
15
+ process.env.HOME = tmpHome;
16
+ process.env.USERPROFILE = tmpHome;
17
+ let failed = 0;
18
+ let passed = 0;
19
+ async function test(name, fn) {
20
+ try {
21
+ await fn();
22
+ console.log(`✅ ${name}`);
23
+ passed++;
24
+ }
25
+ catch (err) {
26
+ console.error(`❌ ${name}`);
27
+ console.error(` ${err.message}`);
28
+ failed++;
29
+ }
30
+ }
31
+ async function run() {
32
+ const mod = await import('./auth-config.js');
33
+ const { readAuthConfig, writeAuthConfig, clearAuthConfig, touchAuthConfig, AUTH_CONFIG_PATH } = mod;
34
+ await test('AUTH_CONFIG_PATH resolves under tmp home', () => {
35
+ assert.equal(AUTH_CONFIG_PATH, path.join(tmpHome, '.apiclaw.toml'));
36
+ });
37
+ await test('readAuthConfig returns null when no file exists', () => {
38
+ clearAuthConfig();
39
+ assert.equal(readAuthConfig(), null);
40
+ });
41
+ await test('writeAuthConfig + readAuthConfig roundtrip preserves all fields', () => {
42
+ const now = Date.now();
43
+ writeAuthConfig({
44
+ workspaceId: 'ws_test123',
45
+ email: 'agent@nordsym.com',
46
+ sessionToken: 'st_secret',
47
+ apiKey: 'sk-claw-abc123',
48
+ mcpToken: 'sk-mcp-xyz789',
49
+ createdAt: now,
50
+ lastUsedAt: now,
51
+ });
52
+ const got = readAuthConfig();
53
+ assert(got, 'expected readAuthConfig to return a value');
54
+ assert.equal(got.workspaceId, 'ws_test123');
55
+ assert.equal(got.email, 'agent@nordsym.com');
56
+ assert.equal(got.sessionToken, 'st_secret');
57
+ assert.equal(got.apiKey, 'sk-claw-abc123');
58
+ assert.equal(got.mcpToken, 'sk-mcp-xyz789');
59
+ // Timestamps roundtrip via ISO strings — millisecond-precision tolerated.
60
+ assert(Math.abs(got.createdAt - now) < 1000, 'createdAt should roundtrip within 1s');
61
+ });
62
+ await test('writeAuthConfig sets mode 0o600', () => {
63
+ writeAuthConfig({
64
+ workspaceId: 'ws_perm',
65
+ email: 'p@x.com',
66
+ sessionToken: 'st_perm',
67
+ createdAt: Date.now(),
68
+ });
69
+ const stat = fs.statSync(AUTH_CONFIG_PATH);
70
+ // Mask to permission bits, compare against 0o600.
71
+ assert.equal(stat.mode & 0o777, 0o600);
72
+ });
73
+ await test('writeAuthConfig handles missing optional fields', () => {
74
+ writeAuthConfig({
75
+ workspaceId: 'ws_minimal',
76
+ email: 'm@x.com',
77
+ sessionToken: 'st_minimal',
78
+ createdAt: Date.now(),
79
+ });
80
+ const got = readAuthConfig();
81
+ assert(got);
82
+ assert.equal(got.apiKey, undefined);
83
+ assert.equal(got.mcpToken, undefined);
84
+ });
85
+ await test('touchAuthConfig updates lastUsedAt without losing other fields', async () => {
86
+ const now = Date.now();
87
+ writeAuthConfig({
88
+ workspaceId: 'ws_touch',
89
+ email: 't@x.com',
90
+ sessionToken: 'st_touch',
91
+ apiKey: 'sk-claw-touch',
92
+ createdAt: now,
93
+ lastUsedAt: now - 100000,
94
+ });
95
+ // wait 1.5s so ISO seconds change
96
+ await new Promise((r) => setTimeout(r, 1500));
97
+ touchAuthConfig();
98
+ const got = readAuthConfig();
99
+ assert(got);
100
+ assert.equal(got.workspaceId, 'ws_touch');
101
+ assert.equal(got.apiKey, 'sk-claw-touch');
102
+ assert(got.lastUsedAt && got.lastUsedAt > now - 1000, 'lastUsedAt should be recent');
103
+ });
104
+ await test('clearAuthConfig removes the file', () => {
105
+ writeAuthConfig({
106
+ workspaceId: 'ws_clr',
107
+ email: 'c@x.com',
108
+ sessionToken: 'st_clr',
109
+ createdAt: Date.now(),
110
+ });
111
+ assert(fs.existsSync(AUTH_CONFIG_PATH));
112
+ clearAuthConfig();
113
+ assert(!fs.existsSync(AUTH_CONFIG_PATH));
114
+ });
115
+ await test('readAuthConfig falls back to legacy ~/.apiclaw/session JSON file', () => {
116
+ clearAuthConfig();
117
+ const legacyDir = path.join(tmpHome, '.apiclaw');
118
+ fs.mkdirSync(legacyDir, { recursive: true, mode: 0o700 });
119
+ fs.writeFileSync(path.join(legacyDir, 'session'), JSON.stringify({
120
+ workspaceId: 'ws_legacy',
121
+ email: 'legacy@x.com',
122
+ sessionToken: 'st_legacy',
123
+ createdAt: 1234567890000,
124
+ }), { mode: 0o600 });
125
+ const got = readAuthConfig();
126
+ assert(got, 'legacy fallback should return a value');
127
+ assert.equal(got.workspaceId, 'ws_legacy');
128
+ assert.equal(got.email, 'legacy@x.com');
129
+ // Cleanup
130
+ fs.rmSync(legacyDir, { recursive: true, force: true });
131
+ });
132
+ await test('parseToml handles escaped quotes in values', () => {
133
+ fs.writeFileSync(AUTH_CONFIG_PATH, `[default]\nworkspace_id = "ws_q"\nemail = "with\\"quote@x.com"\nsession_token = "s\\\\\\\\t"\ncreated_at = "2026-05-18T10:00:00.000Z"\nlast_used_at = "2026-05-18T10:00:00.000Z"\n`, { mode: 0o600 });
134
+ const got = readAuthConfig();
135
+ assert(got);
136
+ assert.equal(got.email, 'with"quote@x.com');
137
+ });
138
+ await test('readAuthConfig returns null for malformed TOML missing required fields', () => {
139
+ clearAuthConfig();
140
+ fs.writeFileSync(AUTH_CONFIG_PATH, `[default]\nemail = "only@x.com"\n`, { mode: 0o600 });
141
+ assert.equal(readAuthConfig(), null);
142
+ });
143
+ // Cleanup
144
+ fs.rmSync(tmpHome, { recursive: true, force: true });
145
+ console.log(`\n${passed} passed, ${failed} failed`);
146
+ if (failed > 0)
147
+ process.exit(1);
148
+ }
149
+ run().catch((err) => {
150
+ console.error('Test runner crashed:', err);
151
+ process.exit(1);
152
+ });
153
+ //# sourceMappingURL=auth-config.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-config.test.js","sourceRoot":"","sources":["../src/auth-config.test.ts"],"names":[],"mappings":"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"}
package/dist/bin.js CHANGED
@@ -7,14 +7,18 @@
7
7
  */
8
8
  import { existsSync } from 'fs';
9
9
  import { join } from 'path';
10
- const cliCommands = ['setup', 'login', 'demo', 'mcp-install', 'mcp-uninstall', 'doctor', 'restore', 'uninstall', 'mission', 'discover', 'call', 'details', 'balance', 'help', '--help', '-h', '--version', '-V'];
10
+ const cliCommands = ['auth', 'setup', 'login', 'demo', 'mcp-install', 'mcp-uninstall', 'doctor', 'restore', 'uninstall', 'mission', 'discover', 'call', 'details', 'balance', 'help', '--help', '-h', '--version', '-V'];
11
11
  const firstArg = process.argv[2];
12
12
  if (!firstArg || !cliCommands.includes(firstArg)) {
13
- // First-run nudge: non-blocking hint if no workspace is configured
13
+ // First-run nudge: non-blocking hint if no workspace is configured.
14
+ // Checks both the new ~/.apiclaw.toml (A-22 canonical) and the legacy
15
+ // ~/.apiclaw/session file so existing installs keep their state.
14
16
  try {
15
- const sessionFile = join(process.env.HOME ?? '~', '.apiclaw', 'session');
16
- if (!existsSync(sessionFile)) {
17
- process.stderr.write('\x1b[33m💡 No workspace linked. Run: npx @nordsym/apiclaw login\x1b[0m\n');
17
+ const home = process.env.HOME ?? '~';
18
+ const tomlFile = join(home, '.apiclaw.toml');
19
+ const legacySessionFile = join(home, '.apiclaw', 'session');
20
+ if (!existsSync(tomlFile) && !existsSync(legacySessionFile)) {
21
+ process.stderr.write('\x1b[33m💡 No workspace linked. Run: npx @nordsym/apiclaw auth login\x1b[0m\n');
18
22
  }
19
23
  }
20
24
  catch {
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,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;AAEjN,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,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;AAEzN,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,oEAAoE;IACpE,sEAAsE;IACtE,iEAAiE;IACjE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QAC7C,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,+EAA+E,CAChF,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"}
@@ -5,7 +5,7 @@
5
5
  import { executeAPICall } from './execute.js';
6
6
  import { logAPICall } from './mcp-analytics.js';
7
7
  // Convex HTTP API for capability queries
8
- const CONVEX_URL = process.env.NEXT_PUBLIC_CONVEX_URL || 'https://brilliant-puffin-712.eu-west-1.convex.cloud';
8
+ const CONVEX_URL = process.env.NEXT_PUBLIC_CONVEX_URL || 'https://adventurous-avocet-799.convex.cloud';
9
9
  /**
10
10
  * Query Convex for providers that support a capability
11
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"capability-router.js","sourceRoot":"","sources":["../src/capability-router.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,yCAAyC;AACzC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,qDAAqD,CAAC;AAoC/G;;GAEG;AACH,KAAK,UAAU,yBAAyB,CACtC,YAAoB,EACpB,MAAe;IAEf,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,YAAY,EAAE;YACjD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI,EAAE,2BAA2B;gBACjC,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;aAC/B,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAuD,CAAC;QACnF,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAsB,CAAC;IACjD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,CAAC,CAAC,CAAC;QAC1D,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAChB,MAA+B,EAC/B,OAA+B;IAE/B,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;QACpD,MAAM,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;IAChC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAAC,MAWjC;IACC,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,GAAG,UAAU,eAAe,EAAE;YACxC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI,EAAE,uBAAuB;gBAC7B,IAAI,EAAE,MAAM;aACb,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,YAAoB,EACpB,MAAc,EACd,MAA+B,EAC/B,MAAc,EACd,cAAqC,EAAE;IAEvC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,cAAc,GAAG,WAAW,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,eAAe;IAEtE,oCAAoC;IACpC,MAAM,SAAS,GAAG,MAAM,yBAAyB,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAEpF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,YAAY;YACxB,MAAM;YACN,iBAAiB,EAAE,KAAK;YACxB,KAAK,EAAE,0CAA0C,YAAY,EAAE;SAChE,CAAC;IACJ,CAAC;IAED,mCAAmC;IACnC,IAAI,iBAAiB,GAAG,SAAS,CAAC;IAClC,IAAI,WAAW,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACvC,iBAAiB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,IAAI,WAAW,CAAC,QAAS,CAAC,CAAC;IACrF,CAAC;IAED,wCAAwC;IACxC,IAAI,WAAW,CAAC,iBAAiB,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAC9F,IAAI,SAAS,EAAE,CAAC;YACd,iBAAiB,GAAG,CAAC,SAAS,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACpH,CAAC;IACH,CAAC;IAED,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,YAAY;YACxB,MAAM;YACN,iBAAiB,EAAE,KAAK;YACxB,KAAK,EAAE,oDAAoD;SAC5D,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,SAAS,GAAG,EAAE,CAAC;IAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,cAAc,GAAG,CAAC,KAAK,CAAC,CAAC;QAE/B,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC;YACH,yCAAyC;YACzC,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;YAEpE,sCAAsC;YACtC,MAAM,MAAM,GAAG,MAAM,cAAc,CACjC,QAAQ,CAAC,UAAU,EACnB,MAAM,EACN,YAAY,EACZ,MAAM,CACP,CAAC;YAEF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAEzC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,uBAAuB;gBACvB,kBAAkB,CAAC;oBACjB,YAAY;oBACZ,UAAU,EAAE,QAAQ,CAAC,UAAU;oBAC/B,MAAM;oBACN,MAAM;oBACN,OAAO,EAAE,IAAI;oBACb,YAAY,EAAE,iBAAiB;oBAC/B,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;oBACzD,SAAS;oBACT,IAAI,EAAE,QAAQ,CAAC,YAAY;oBAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;iBAC5B,CAAC,CAAC;gBAEH,mCAAmC;gBACnC,UAAU,CAAC;oBACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,QAAQ,EAAE,QAAQ,CAAC,UAAU;oBAC7B,MAAM;oBACN,IAAI,EAAE,QAAQ;oBACd,MAAM;oBACN,OAAO,EAAE,IAAI;oBACb,SAAS;iBACV,CAAC,CAAC;gBAEH,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,YAAY;oBACxB,MAAM;oBACN,YAAY,EAAE,QAAQ,CAAC,UAAU;oBACjC,iBAAiB;oBACjB,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;oBACzD,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,IAAI,EAAE,QAAQ,CAAC,YAAY;oBAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,SAAS;iBACV,CAAC;YACJ,CAAC;YAED,oCAAoC;YACpC,SAAS,GAAG,MAAM,CAAC,KAAK,IAAI,eAAe,CAAC;YAE5C,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM;YACR,CAAC;QAEH,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,SAAS,GAAG,CAAC,CAAC,OAAO,IAAI,2BAA2B,CAAC;YAErD,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAEzC,kBAAkB,CAAC;QACjB,YAAY;QACZ,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU;QAC3C,MAAM;QACN,MAAM;QACN,OAAO,EAAE,KAAK;QACd,YAAY,EAAE,iBAAiB;QAC/B,cAAc,EAAE,SAAS;QACzB,SAAS;QACT,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,YAAY;QACxB,MAAM;QACN,iBAAiB;QACjB,KAAK,EAAE,qCAAqC,SAAS,EAAE;QACvD,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,YAAY,EAAE;YACjD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,EAAE;aACT,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA+B,CAAC;QAC3D,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAErE,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5B,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACrB,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,YAAoB;IACtD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,YAAY,EAAE;YACjD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI,EAAE,sBAAsB;gBAC5B,IAAI,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE;aAC3B,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QAE1B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAmC,CAAC;QAC/D,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACxD,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QACtB,CAAC;QACD,OAAO,CAAC,CAAC,IAAI,CAAC;IAChB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"capability-router.js","sourceRoot":"","sources":["../src/capability-router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * APIClaw CLI auth — browser-loopback flow (Modal/gh/vercel pattern).
3
+ *
4
+ * `apiclaw auth login`
5
+ * 1. Generate PKCE verifier + challenge, random state.
6
+ * 2. Start ephemeral HTTP listener on an OS-assigned port.
7
+ * 3. POST cliAuth:start to Convex → get {authId, browserUrl}.
8
+ * 4. Open browserUrl in default browser (open / xdg-open / start).
9
+ * 5. Wait for /callback?code=X&state=Y on loopback (max 5 min).
10
+ * 6. Validate state, POST cliAuth:exchange with {code, codeVerifier} → session+key.
11
+ * 7. Write ~/.apiclaw.toml, verify, print success + next-step hints.
12
+ *
13
+ * Email fallback: --email-fallback delegates to the existing magic-link
14
+ * loginCommand for headless/SSH users.
15
+ */
16
+ import { type AuthConfig } from '../../auth-config.js';
17
+ interface AuthLoginOptions {
18
+ emailFallback?: boolean;
19
+ printMcpToken?: boolean;
20
+ force?: boolean;
21
+ noOpen?: boolean;
22
+ }
23
+ export declare function authLoginCommand(options?: AuthLoginOptions): Promise<AuthConfig | null>;
24
+ export declare function authLogoutCommand(): Promise<void>;
25
+ export declare function authWhoamiCommand(): Promise<void>;
26
+ export {};
27
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,OAAO,EAAsE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAW3H,UAAU,gBAAgB;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA6KD,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAqJjG;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQvD;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAcvD"}