@clawapps/cli 0.1.0 → 0.2.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.
- package/dist/auth/payment-server.d.ts +10 -0
- package/dist/auth/payment-server.js +66 -0
- package/dist/auth/payment-server.js.map +1 -0
- package/dist/commands/payment-grant.d.ts +1 -0
- package/dist/commands/payment-grant.js +50 -0
- package/dist/commands/payment-grant.js.map +1 -0
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/types.d.ts +4 -0
- package/package.json +1 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PaymentGrantResult } from '../lib/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Start a local HTTP server that receives payment grant result from the web page redirect.
|
|
4
|
+
* The web page redirects to: http://localhost:{port}/callback?payment_token=xxx&auto_payment=1
|
|
5
|
+
*/
|
|
6
|
+
export declare function startPaymentCallbackServer(): Promise<{
|
|
7
|
+
port: number;
|
|
8
|
+
result: Promise<PaymentGrantResult>;
|
|
9
|
+
close: () => void;
|
|
10
|
+
}>;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { createServer } from 'node:http';
|
|
2
|
+
import { URL } from 'node:url';
|
|
3
|
+
import { CONFIG } from '../lib/config.js';
|
|
4
|
+
import { getSuccessHtml, getErrorHtml } from '../html/callback.js';
|
|
5
|
+
/**
|
|
6
|
+
* Start a local HTTP server that receives payment grant result from the web page redirect.
|
|
7
|
+
* The web page redirects to: http://localhost:{port}/callback?payment_token=xxx&auto_payment=1
|
|
8
|
+
*/
|
|
9
|
+
export function startPaymentCallbackServer() {
|
|
10
|
+
return new Promise((resolveServer, rejectServer) => {
|
|
11
|
+
let resultResolve;
|
|
12
|
+
let resultReject;
|
|
13
|
+
const resultPromise = new Promise((resolve, reject) => {
|
|
14
|
+
resultResolve = resolve;
|
|
15
|
+
resultReject = reject;
|
|
16
|
+
});
|
|
17
|
+
const server = createServer((req, res) => {
|
|
18
|
+
const port = server.address().port;
|
|
19
|
+
const url = new URL(req.url || '/', `http://localhost:${port}`);
|
|
20
|
+
if (url.pathname === '/callback') {
|
|
21
|
+
const paymentToken = url.searchParams.get('payment_token');
|
|
22
|
+
const autoPayment = url.searchParams.get('auto_payment');
|
|
23
|
+
const isAutoPayment = autoPayment === '1';
|
|
24
|
+
if (paymentToken || isAutoPayment) {
|
|
25
|
+
res.writeHead(200, { 'Content-Type': 'text/html' });
|
|
26
|
+
res.end(getSuccessHtml());
|
|
27
|
+
resultResolve({
|
|
28
|
+
payment_token: paymentToken || undefined,
|
|
29
|
+
auto_payment: isAutoPayment,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
res.writeHead(200, { 'Content-Type': 'text/html' });
|
|
34
|
+
res.end(getErrorHtml('Missing payment token. Please try again.'));
|
|
35
|
+
resultReject(new Error('Callback missing payment token'));
|
|
36
|
+
}
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
res.writeHead(404, { 'Content-Type': 'text/plain' });
|
|
40
|
+
res.end('Not found');
|
|
41
|
+
});
|
|
42
|
+
server.listen(0, '127.0.0.1', () => {
|
|
43
|
+
const addr = server.address();
|
|
44
|
+
const timeout = setTimeout(() => {
|
|
45
|
+
resultReject(new Error('Payment grant timed out. Please try again.'));
|
|
46
|
+
server.close();
|
|
47
|
+
}, CONFIG.AUTH_TIMEOUT_MS);
|
|
48
|
+
resultPromise.finally(() => {
|
|
49
|
+
clearTimeout(timeout);
|
|
50
|
+
setTimeout(() => server.close(), 500);
|
|
51
|
+
});
|
|
52
|
+
resolveServer({
|
|
53
|
+
port: addr.port,
|
|
54
|
+
result: resultPromise,
|
|
55
|
+
close: () => {
|
|
56
|
+
clearTimeout(timeout);
|
|
57
|
+
server.close();
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
server.on('error', (err) => {
|
|
62
|
+
rejectServer(err);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=payment-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment-server.js","sourceRoot":"","sources":["../../src/auth/payment-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function paymentGrantCommand(skillId: string): Promise<void>;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import open from 'open';
|
|
4
|
+
import { loadCredentials } from '../lib/credentials.js';
|
|
5
|
+
import { CONFIG } from '../lib/config.js';
|
|
6
|
+
import { ensureValidToken } from './helpers/ensure-token.js';
|
|
7
|
+
import { startPaymentCallbackServer } from '../auth/payment-server.js';
|
|
8
|
+
export async function paymentGrantCommand(skillId) {
|
|
9
|
+
const credentials = await loadCredentials();
|
|
10
|
+
if (!credentials) {
|
|
11
|
+
console.log(chalk.yellow('Not logged in. Run `claw login` first.'));
|
|
12
|
+
process.exit(1);
|
|
13
|
+
}
|
|
14
|
+
const validated = await ensureValidToken(credentials);
|
|
15
|
+
if (!validated) {
|
|
16
|
+
console.log(chalk.red('Session expired. Please run `claw login` again.'));
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
// Start local callback server to receive payment token
|
|
20
|
+
const { port, result, close } = await startPaymentCallbackServer();
|
|
21
|
+
const callbackUrl = `http://localhost:${port}/callback`;
|
|
22
|
+
const url = `${CONFIG.CLAW_WEB_BASE}/payment-grant?skill_id=${encodeURIComponent(skillId)}&token=${encodeURIComponent(validated.access_token)}&callback=${encodeURIComponent(callbackUrl)}`;
|
|
23
|
+
console.log(chalk.gray('\nOpening payment grant page...'));
|
|
24
|
+
console.log(chalk.gray(`If the browser doesn't open, visit:\n${url}\n`));
|
|
25
|
+
try {
|
|
26
|
+
await open(url);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
console.log(chalk.yellow('Could not open browser automatically.'));
|
|
30
|
+
console.log(chalk.yellow('Please open the URL above manually.'));
|
|
31
|
+
}
|
|
32
|
+
const spinner = ora('Waiting for payment confirmation...').start();
|
|
33
|
+
try {
|
|
34
|
+
const payment = await result;
|
|
35
|
+
spinner.stop();
|
|
36
|
+
console.log(chalk.green('\nPayment grant confirmed!'));
|
|
37
|
+
if (payment.payment_token) {
|
|
38
|
+
console.log(chalk.gray(`Payment Token: ${payment.payment_token}`));
|
|
39
|
+
}
|
|
40
|
+
console.log(chalk.gray(`Auto Payment: ${payment.auto_payment ? 'enabled' : 'disabled'}`));
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
spinner.stop();
|
|
44
|
+
close();
|
|
45
|
+
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
46
|
+
console.error(chalk.red(`\nPayment grant failed: ${message}`));
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=payment-grant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment-grant.js","sourceRoot":"","sources":["../../src/commands/payment-grant.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -5,11 +5,12 @@ import { whoamiCommand } from './commands/whoami.js';
|
|
|
5
5
|
import { creditCommand } from './commands/credit.js';
|
|
6
6
|
import { membershipCommand } from './commands/membership.js';
|
|
7
7
|
import { tokenCommand } from './commands/token.js';
|
|
8
|
+
import { paymentGrantCommand } from './commands/payment-grant.js';
|
|
8
9
|
const program = new Command();
|
|
9
10
|
program
|
|
10
11
|
.name('claw')
|
|
11
12
|
.description('ClawApps CLI - Manage your ClawApps account')
|
|
12
|
-
.version('0.1
|
|
13
|
+
.version('0.2.1');
|
|
13
14
|
program
|
|
14
15
|
.command('login')
|
|
15
16
|
.description('Log in to your ClawApps account via Google or Apple')
|
|
@@ -34,5 +35,10 @@ program
|
|
|
34
35
|
.command('token')
|
|
35
36
|
.description('Print current valid access token (refreshes if needed)')
|
|
36
37
|
.action(tokenCommand);
|
|
38
|
+
program
|
|
39
|
+
.command('payment-grant')
|
|
40
|
+
.description('Open payment grant page for a skill')
|
|
41
|
+
.argument('<skill_id>', 'The skill ID to grant payment for')
|
|
42
|
+
.action(paymentGrantCommand);
|
|
37
43
|
program.parse();
|
|
38
44
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,6CAA6C,CAAC;KAC1D,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAE7B,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,wDAAwD,CAAC;KACrE,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,qCAAqC,CAAC;KAClD,QAAQ,CAAC,YAAY,EAAE,mCAAmC,CAAC;KAC3D,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAE/B,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/lib/types.d.ts
CHANGED