@nordsym/apiclaw 1.3.5 → 1.3.6
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/cli.d.ts.map +1 -1
- package/dist/cli.js +38 -7
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/src/cli.ts +57 -7
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG;AA+QH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CA8F9C"}
|
package/dist/cli.js
CHANGED
|
@@ -7,7 +7,7 @@ import * as readline from 'readline';
|
|
|
7
7
|
import { ConvexHttpClient } from 'convex/browser';
|
|
8
8
|
import { discoverAPIs } from './discovery.js';
|
|
9
9
|
import { executeAPICall, getConnectedProviders } from './execute.js';
|
|
10
|
-
import { readSession, clearSession, getMachineFingerprint } from './session.js';
|
|
10
|
+
import { readSession, writeSession, clearSession, getMachineFingerprint } from './session.js';
|
|
11
11
|
const CONVEX_URL = process.env.CONVEX_URL || 'https://adventurous-avocet-799.convex.cloud';
|
|
12
12
|
const convex = new ConvexHttpClient(CONVEX_URL);
|
|
13
13
|
// Colors for terminal
|
|
@@ -63,23 +63,54 @@ async function registerOwner(email) {
|
|
|
63
63
|
info(`Sending magic link to ${email}...`);
|
|
64
64
|
try {
|
|
65
65
|
const fingerprint = getMachineFingerprint();
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
// Use HTTP endpoint for magic link
|
|
67
|
+
const response = await fetch(`${CONVEX_URL.replace('.cloud', '.site')}/workspace/magic-link`, {
|
|
68
|
+
method: 'POST',
|
|
69
|
+
headers: { 'Content-Type': 'application/json' },
|
|
70
|
+
body: JSON.stringify({ email, fingerprint }),
|
|
69
71
|
});
|
|
70
|
-
|
|
72
|
+
const result = await response.json();
|
|
73
|
+
if (result?.success && result?.token) {
|
|
71
74
|
success(`Magic link sent to ${email}`);
|
|
72
75
|
log(`\n📧 Check your email and click the link to authenticate.`);
|
|
73
|
-
|
|
76
|
+
// Start polling for verification
|
|
77
|
+
log(`\n⏳ Waiting for you to click the link...`);
|
|
78
|
+
log(` (Press Ctrl+C to cancel)\n`);
|
|
79
|
+
await pollForVerification(result.token, fingerprint);
|
|
74
80
|
}
|
|
75
81
|
else {
|
|
76
|
-
error(`Failed
|
|
82
|
+
error(`Failed: ${result?.error || 'Unknown error'}`);
|
|
77
83
|
}
|
|
78
84
|
}
|
|
79
85
|
catch (err) {
|
|
80
86
|
error(`Failed: ${err instanceof Error ? err.message : 'Unknown error'}`);
|
|
81
87
|
}
|
|
82
88
|
}
|
|
89
|
+
async function pollForVerification(token, fingerprint) {
|
|
90
|
+
const maxAttempts = 60; // 5 minutes
|
|
91
|
+
for (let i = 0; i < maxAttempts; i++) {
|
|
92
|
+
await new Promise(r => setTimeout(r, 5000)); // Poll every 5 seconds
|
|
93
|
+
try {
|
|
94
|
+
const response = await fetch(`${CONVEX_URL.replace('.cloud', '.site')}/workspace/poll?token=${token}`);
|
|
95
|
+
const result = await response.json();
|
|
96
|
+
if (result?.verified && result?.sessionToken) {
|
|
97
|
+
// Save the real session
|
|
98
|
+
writeSession(result.sessionToken, result.workspaceId || '', result.email || '');
|
|
99
|
+
success(`Authenticated as ${result.email}!`);
|
|
100
|
+
// Reload workspace context
|
|
101
|
+
await validateSession();
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// Continue polling
|
|
107
|
+
}
|
|
108
|
+
// Show progress dot
|
|
109
|
+
process.stdout.write('.');
|
|
110
|
+
}
|
|
111
|
+
log('\n');
|
|
112
|
+
error('Verification timed out. Please try again.');
|
|
113
|
+
}
|
|
83
114
|
async function showStatus() {
|
|
84
115
|
const valid = await validateSession();
|
|
85
116
|
log(`\n${colors.bright}APIClaw Status${colors.reset}`);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAgC,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/cli.ts
CHANGED
|
@@ -83,23 +83,73 @@ async function registerOwner(email: string): Promise<void> {
|
|
|
83
83
|
|
|
84
84
|
try {
|
|
85
85
|
const fingerprint = getMachineFingerprint();
|
|
86
|
-
const result = await convex.mutation("workspaces:requestMagicLink" as any, {
|
|
87
|
-
email,
|
|
88
|
-
fingerprint,
|
|
89
|
-
}) as any;
|
|
90
86
|
|
|
91
|
-
|
|
87
|
+
// Use HTTP endpoint for magic link
|
|
88
|
+
const response = await fetch(`${CONVEX_URL.replace('.cloud', '.site')}/workspace/magic-link`, {
|
|
89
|
+
method: 'POST',
|
|
90
|
+
headers: { 'Content-Type': 'application/json' },
|
|
91
|
+
body: JSON.stringify({ email, fingerprint }),
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
const result = await response.json() as { success?: boolean; token?: string; error?: string };
|
|
95
|
+
|
|
96
|
+
if (result?.success && result?.token) {
|
|
92
97
|
success(`Magic link sent to ${email}`);
|
|
93
98
|
log(`\n📧 Check your email and click the link to authenticate.`);
|
|
94
|
-
|
|
99
|
+
|
|
100
|
+
// Start polling for verification
|
|
101
|
+
log(`\n⏳ Waiting for you to click the link...`);
|
|
102
|
+
log(` (Press Ctrl+C to cancel)\n`);
|
|
103
|
+
|
|
104
|
+
await pollForVerification(result.token, fingerprint);
|
|
95
105
|
} else {
|
|
96
|
-
error(`Failed
|
|
106
|
+
error(`Failed: ${result?.error || 'Unknown error'}`);
|
|
97
107
|
}
|
|
98
108
|
} catch (err) {
|
|
99
109
|
error(`Failed: ${err instanceof Error ? err.message : 'Unknown error'}`);
|
|
100
110
|
}
|
|
101
111
|
}
|
|
102
112
|
|
|
113
|
+
async function pollForVerification(token: string, fingerprint: string): Promise<void> {
|
|
114
|
+
const maxAttempts = 60; // 5 minutes
|
|
115
|
+
for (let i = 0; i < maxAttempts; i++) {
|
|
116
|
+
await new Promise(r => setTimeout(r, 5000)); // Poll every 5 seconds
|
|
117
|
+
|
|
118
|
+
try {
|
|
119
|
+
const response = await fetch(`${CONVEX_URL.replace('.cloud', '.site')}/workspace/poll?token=${token}`);
|
|
120
|
+
const result = await response.json() as {
|
|
121
|
+
verified?: boolean;
|
|
122
|
+
sessionToken?: string;
|
|
123
|
+
workspaceId?: string;
|
|
124
|
+
email?: string;
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
if (result?.verified && result?.sessionToken) {
|
|
128
|
+
// Save the real session
|
|
129
|
+
writeSession(
|
|
130
|
+
result.sessionToken,
|
|
131
|
+
result.workspaceId || '',
|
|
132
|
+
result.email || ''
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
success(`Authenticated as ${result.email}!`);
|
|
136
|
+
|
|
137
|
+
// Reload workspace context
|
|
138
|
+
await validateSession();
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
} catch {
|
|
142
|
+
// Continue polling
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Show progress dot
|
|
146
|
+
process.stdout.write('.');
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
log('\n');
|
|
150
|
+
error('Verification timed out. Please try again.');
|
|
151
|
+
}
|
|
152
|
+
|
|
103
153
|
async function showStatus(): Promise<void> {
|
|
104
154
|
const valid = await validateSession();
|
|
105
155
|
|