pdauth 1.0.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 (60) hide show
  1. package/PROXY-SPEC.md +159 -0
  2. package/README.md +142 -0
  3. package/bin/ga.mjs +329 -0
  4. package/dist/cli.d.ts +3 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +88 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/commands/apps.d.ts +8 -0
  9. package/dist/commands/apps.d.ts.map +1 -0
  10. package/dist/commands/apps.js +76 -0
  11. package/dist/commands/apps.js.map +1 -0
  12. package/dist/commands/config.d.ts +5 -0
  13. package/dist/commands/config.d.ts.map +1 -0
  14. package/dist/commands/config.js +58 -0
  15. package/dist/commands/config.js.map +1 -0
  16. package/dist/commands/connect.d.ts +6 -0
  17. package/dist/commands/connect.d.ts.map +1 -0
  18. package/dist/commands/connect.js +67 -0
  19. package/dist/commands/connect.js.map +1 -0
  20. package/dist/commands/index.d.ts +7 -0
  21. package/dist/commands/index.d.ts.map +1 -0
  22. package/dist/commands/index.js +7 -0
  23. package/dist/commands/index.js.map +1 -0
  24. package/dist/commands/proxy.d.ts +12 -0
  25. package/dist/commands/proxy.d.ts.map +1 -0
  26. package/dist/commands/proxy.js +127 -0
  27. package/dist/commands/proxy.js.map +1 -0
  28. package/dist/commands/status.d.ts +10 -0
  29. package/dist/commands/status.d.ts.map +1 -0
  30. package/dist/commands/status.js +117 -0
  31. package/dist/commands/status.js.map +1 -0
  32. package/dist/commands/tools.d.ts +10 -0
  33. package/dist/commands/tools.d.ts.map +1 -0
  34. package/dist/commands/tools.js +123 -0
  35. package/dist/commands/tools.js.map +1 -0
  36. package/dist/config.d.ts +21 -0
  37. package/dist/config.d.ts.map +1 -0
  38. package/dist/config.js +59 -0
  39. package/dist/config.js.map +1 -0
  40. package/dist/index.d.ts +4 -0
  41. package/dist/index.d.ts.map +1 -0
  42. package/dist/index.js +6 -0
  43. package/dist/index.js.map +1 -0
  44. package/dist/pipedream.d.ts +52 -0
  45. package/dist/pipedream.d.ts.map +1 -0
  46. package/dist/pipedream.js +142 -0
  47. package/dist/pipedream.js.map +1 -0
  48. package/package.json +46 -0
  49. package/src/cli.ts +111 -0
  50. package/src/commands/apps.ts +88 -0
  51. package/src/commands/config.ts +68 -0
  52. package/src/commands/connect.ts +76 -0
  53. package/src/commands/index.ts +6 -0
  54. package/src/commands/proxy.ts +155 -0
  55. package/src/commands/status.ts +143 -0
  56. package/src/commands/tools.ts +150 -0
  57. package/src/config.ts +78 -0
  58. package/src/index.ts +6 -0
  59. package/src/pipedream.ts +216 -0
  60. package/tsconfig.json +20 -0
package/dist/cli.js ADDED
@@ -0,0 +1,88 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { configCommand, appsCommand, appInfoCommand, connectCommand, statusCommand, disconnectCommand, toolsCommand, callCommand, proxyCommand, } from './commands/index.js';
4
+ const program = new Command();
5
+ program
6
+ .name('pdauth')
7
+ .description('🔐 Pipedream OAuth CLI - Give AI agents access to 2500+ APIs via dynamic OAuth')
8
+ .version('1.0.0');
9
+ // Config command
10
+ program
11
+ .command('config')
12
+ .description('Configure Pipedream credentials')
13
+ .option('-s, --show', 'Show current configuration')
14
+ .option('--set <key=value>', 'Set a configuration value')
15
+ .action(configCommand);
16
+ // Apps commands
17
+ program
18
+ .command('apps')
19
+ .description('List available apps (2500+ APIs)')
20
+ .option('-s, --search <query>', 'Search for apps')
21
+ .option('-j, --json', 'Output as JSON')
22
+ .action(appsCommand);
23
+ program
24
+ .command('app <slug>')
25
+ .description('Get info about a specific app')
26
+ .option('-j, --json', 'Output as JSON')
27
+ .action(appInfoCommand);
28
+ // Connect command
29
+ program
30
+ .command('connect <app>')
31
+ .description('Generate OAuth link for an app')
32
+ .option('-u, --user <id>', 'User ID (default: "default")')
33
+ .option('-j, --json', 'Output as JSON')
34
+ .option('-c, --copy', 'Copy link to clipboard')
35
+ .action(connectCommand);
36
+ // Status command
37
+ program
38
+ .command('status')
39
+ .description('List connected accounts')
40
+ .option('-u, --user <id>', 'User ID (default: "default")')
41
+ .option('-a, --all', 'Show all users')
42
+ .option('-j, --json', 'Output as JSON')
43
+ .action(statusCommand);
44
+ // Disconnect command
45
+ program
46
+ .command('disconnect <app>')
47
+ .description('Disconnect an app')
48
+ .option('-u, --user <id>', 'User ID')
49
+ .option('-f, --force', 'Skip confirmation')
50
+ .action(disconnectCommand);
51
+ // Tools command
52
+ program
53
+ .command('tools <app>')
54
+ .description('List available MCP tools for an app')
55
+ .option('-u, --user <id>', 'User ID')
56
+ .option('-j, --json', 'Output as JSON')
57
+ .action(toolsCommand);
58
+ // Call command
59
+ program
60
+ .command('call <tool>')
61
+ .description('Invoke an MCP tool (format: app.tool_name)')
62
+ .argument('[args...]', 'Tool arguments as key=value pairs')
63
+ .option('-u, --user <id>', 'User ID')
64
+ .option('-j, --json', 'Output as JSON')
65
+ .option('-a, --args <json>', 'Arguments as JSON')
66
+ .action(callCommand);
67
+ // Proxy command - make authenticated API requests
68
+ program
69
+ .command('proxy <app> <path>')
70
+ .description('Make authenticated API request via Pipedream proxy')
71
+ .option('-X, --method <method>', 'HTTP method (GET|POST|PUT|DELETE|PATCH)', 'GET')
72
+ .option('-u, --user <id>', 'User ID')
73
+ .option('-d, --data <json>', 'Request body as JSON string')
74
+ .option('-H, --header <header>', 'Custom header (repeatable)', (v, p) => p.concat([v]), [])
75
+ .option('-q, --query <param>', 'Query parameter (repeatable)', (v, p) => p.concat([v]), [])
76
+ .option('-j, --json', 'Output response as JSON (compact)')
77
+ .option('-v, --verbose', 'Show request details')
78
+ .action(proxyCommand);
79
+ // Quick auth link helper
80
+ program
81
+ .command('link <app>')
82
+ .description('Alias for connect - generate OAuth link')
83
+ .option('-u, --user <id>', 'User ID')
84
+ .option('-j, --json', 'Output as JSON')
85
+ .option('-c, --copy', 'Copy to clipboard')
86
+ .action(connectCommand);
87
+ program.parse();
88
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,aAAa,EACb,WAAW,EACX,cAAc,EACd,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,YAAY,GACb,MAAM,qBAAqB,CAAC;AAE7B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,gFAAgF,CAAC;KAC7F,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,YAAY,EAAE,4BAA4B,CAAC;KAClD,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;KACxD,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,gBAAgB;AAChB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,sBAAsB,EAAE,iBAAiB,CAAC;KACjD,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;KACtC,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;KACtC,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,kBAAkB;AAClB,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,iBAAiB,EAAE,8BAA8B,CAAC;KACzD,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;KACtC,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC;KAC9C,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,iBAAiB,EAAE,8BAA8B,CAAC;KACzD,MAAM,CAAC,WAAW,EAAE,gBAAgB,CAAC;KACrC,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;KACtC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,qBAAqB;AACrB,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,mBAAmB,CAAC;KAChC,MAAM,CAAC,iBAAiB,EAAE,SAAS,CAAC;KACpC,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC;KAC1C,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAE7B,gBAAgB;AAChB,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,iBAAiB,EAAE,SAAS,CAAC;KACpC,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;KACtC,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,4CAA4C,CAAC;KACzD,QAAQ,CAAC,WAAW,EAAE,mCAAmC,CAAC;KAC1D,MAAM,CAAC,iBAAiB,EAAE,SAAS,CAAC;KACpC,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;KACtC,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;KAChD,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,kDAAkD;AAClD,OAAO;KACJ,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,uBAAuB,EAAE,yCAAyC,EAAE,KAAK,CAAC;KACjF,MAAM,CAAC,iBAAiB,EAAE,SAAS,CAAC;KACpC,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,CAAC;KAC1D,MAAM,CAAC,uBAAuB,EAAE,4BAA4B,EAAE,CAAC,CAAC,EAAE,CAAW,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAc,CAAC;KAChH,MAAM,CAAC,qBAAqB,EAAE,8BAA8B,EAAE,CAAC,CAAC,EAAE,CAAW,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAc,CAAC;KAChH,MAAM,CAAC,YAAY,EAAE,mCAAmC,CAAC;KACzD,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;KAC/C,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,yBAAyB;AACzB,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,iBAAiB,EAAE,SAAS,CAAC;KACpC,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;KACtC,MAAM,CAAC,YAAY,EAAE,mBAAmB,CAAC;KACzC,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare function appsCommand(options: {
2
+ search?: string;
3
+ json?: boolean;
4
+ }): Promise<void>;
5
+ export declare function appInfoCommand(appSlug: string, options: {
6
+ json?: boolean;
7
+ }): Promise<void>;
8
+ //# sourceMappingURL=apps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../../src/commands/apps.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C7F;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsChG"}
@@ -0,0 +1,76 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { searchApps, getApp } from '../pipedream.js';
4
+ import { isConfigured } from '../config.js';
5
+ export async function appsCommand(options) {
6
+ if (!isConfigured()) {
7
+ console.error(chalk.red('Not configured. Run: pdauth config'));
8
+ process.exit(1);
9
+ }
10
+ const spinner = ora('Fetching apps...').start();
11
+ try {
12
+ const apps = await searchApps(options.search);
13
+ spinner.stop();
14
+ if (options.json) {
15
+ console.log(JSON.stringify(apps, null, 2));
16
+ return;
17
+ }
18
+ if (apps.length === 0) {
19
+ console.log(chalk.yellow(`No apps found${options.search ? ` for "${options.search}"` : ''}`));
20
+ return;
21
+ }
22
+ console.log(chalk.bold(`\n📦 Available Apps${options.search ? ` matching "${options.search}"` : ''}\n`));
23
+ for (const app of apps.slice(0, 50)) {
24
+ console.log(` ${chalk.cyan(app.nameSlug.padEnd(30))} ${chalk.gray(app.name)}`);
25
+ if (app.description) {
26
+ console.log(` ${' '.repeat(30)} ${chalk.dim(app.description.slice(0, 60))}${app.description.length > 60 ? '...' : ''}`);
27
+ }
28
+ }
29
+ if (apps.length > 50) {
30
+ console.log(chalk.gray(`\n ... and ${apps.length - 50} more. Use --search to filter.`));
31
+ }
32
+ console.log(chalk.gray(`\n Total: ${apps.length} apps\n`));
33
+ console.log(chalk.gray(' Browse all: https://mcp.pipedream.com\n'));
34
+ }
35
+ catch (error) {
36
+ spinner.fail('Failed to fetch apps');
37
+ console.error(chalk.red(error instanceof Error ? error.message : String(error)));
38
+ process.exit(1);
39
+ }
40
+ }
41
+ export async function appInfoCommand(appSlug, options) {
42
+ if (!isConfigured()) {
43
+ console.error(chalk.red('Not configured. Run: pdauth config'));
44
+ process.exit(1);
45
+ }
46
+ const spinner = ora(`Fetching ${appSlug}...`).start();
47
+ try {
48
+ const app = await getApp(appSlug);
49
+ spinner.stop();
50
+ if (!app) {
51
+ console.error(chalk.red(`App not found: ${appSlug}`));
52
+ process.exit(1);
53
+ }
54
+ if (options.json) {
55
+ console.log(JSON.stringify(app, null, 2));
56
+ return;
57
+ }
58
+ console.log(chalk.bold(`\n📦 ${app.name}\n`));
59
+ console.log(` ${chalk.gray('Slug:')} ${chalk.cyan(app.nameSlug)}`);
60
+ console.log(` ${chalk.gray('Auth:')} ${app.authType}`);
61
+ if (app.description) {
62
+ console.log(` ${chalk.gray('Description:')} ${app.description}`);
63
+ }
64
+ if (app.categories?.length) {
65
+ console.log(` ${chalk.gray('Categories:')} ${app.categories.join(', ')}`);
66
+ }
67
+ console.log(` ${chalk.gray('MCP Server:')} https://mcp.pipedream.com/app/${app.nameSlug}`);
68
+ console.log();
69
+ }
70
+ catch (error) {
71
+ spinner.fail('Failed to fetch app');
72
+ console.error(chalk.red(error instanceof Error ? error.message : String(error)));
73
+ process.exit(1);
74
+ }
75
+ }
76
+ //# sourceMappingURL=apps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/commands/apps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function configCommand(options: {
2
+ show?: boolean;
3
+ set?: string;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAmBA,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgD5F"}
@@ -0,0 +1,58 @@
1
+ import chalk from 'chalk';
2
+ import { getConfig, setConfig, isConfigured, getConfigPath } from '../config.js';
3
+ import { createInterface } from 'readline';
4
+ async function prompt(question, defaultValue) {
5
+ const rl = createInterface({
6
+ input: process.stdin,
7
+ output: process.stdout,
8
+ });
9
+ return new Promise((resolve) => {
10
+ const displayDefault = defaultValue ? ` [${defaultValue}]` : '';
11
+ rl.question(`${question}${displayDefault}: `, (answer) => {
12
+ rl.close();
13
+ resolve(answer.trim() || defaultValue || '');
14
+ });
15
+ });
16
+ }
17
+ export async function configCommand(options) {
18
+ if (options.show) {
19
+ const cfg = getConfig();
20
+ console.log(chalk.bold('\n📋 Current Configuration\n'));
21
+ console.log(` ${chalk.gray('Path:')} ${getConfigPath()}`);
22
+ console.log(` ${chalk.gray('Client ID:')} ${cfg.clientId ? chalk.green(cfg.clientId.slice(0, 8) + '...') : chalk.red('not set')}`);
23
+ console.log(` ${chalk.gray('Client Secret:')} ${cfg.clientSecret ? chalk.green('********') : chalk.red('not set')}`);
24
+ console.log(` ${chalk.gray('Project ID:')} ${cfg.projectId ? chalk.green(cfg.projectId) : chalk.red('not set')}`);
25
+ console.log(` ${chalk.gray('Environment:')} ${chalk.cyan(cfg.environment)}`);
26
+ console.log(` ${chalk.gray('Status:')} ${isConfigured() ? chalk.green('✓ Configured') : chalk.red('✗ Not configured')}\n`);
27
+ return;
28
+ }
29
+ if (options.set) {
30
+ // Format: key=value
31
+ const [key, ...valueParts] = options.set.split('=');
32
+ const value = valueParts.join('=');
33
+ const validKeys = ['clientId', 'clientSecret', 'projectId', 'environment'];
34
+ if (!validKeys.includes(key)) {
35
+ console.error(chalk.red(`Invalid key: ${key}. Valid keys: ${validKeys.join(', ')}`));
36
+ process.exit(1);
37
+ }
38
+ setConfig({ [key]: value });
39
+ console.log(chalk.green(`✓ Set ${key}`));
40
+ return;
41
+ }
42
+ // Interactive configuration
43
+ console.log(chalk.bold('\n🔐 Pipedream OAuth Configuration\n'));
44
+ console.log(chalk.gray('Get your credentials at: https://pipedream.com/settings/api\n'));
45
+ const current = getConfig();
46
+ const clientId = await prompt('Client ID', current.clientId || undefined);
47
+ const clientSecret = await prompt('Client Secret', current.clientSecret ? '********' : undefined);
48
+ const projectId = await prompt('Project ID', current.projectId || undefined);
49
+ const environment = await prompt('Environment (development/production)', current.environment || 'development');
50
+ setConfig({
51
+ clientId,
52
+ clientSecret: clientSecret === '********' ? current.clientSecret : clientSecret,
53
+ projectId,
54
+ environment: environment,
55
+ });
56
+ console.log(chalk.green('\n✓ Configuration saved!\n'));
57
+ }
58
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function connectCommand(appSlug: string, options: {
2
+ user?: string;
3
+ json?: boolean;
4
+ copy?: boolean;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=connect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAKA,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GACzD,OAAO,CAAC,IAAI,CAAC,CAmEf"}
@@ -0,0 +1,67 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { createConnectLink, getApp } from '../pipedream.js';
4
+ import { isConfigured, getDefaultUser, addUser } from '../config.js';
5
+ export async function connectCommand(appSlug, options) {
6
+ if (!isConfigured()) {
7
+ console.error(chalk.red('Not configured. Run: pdauth config'));
8
+ process.exit(1);
9
+ }
10
+ const userId = options.user || getDefaultUser();
11
+ addUser(userId);
12
+ const spinner = ora(`Generating OAuth link for ${appSlug}...`).start();
13
+ try {
14
+ // Verify app exists
15
+ const app = await getApp(appSlug);
16
+ if (!app) {
17
+ spinner.fail(`App not found: ${appSlug}`);
18
+ console.log(chalk.gray('Run: pdauth apps --search <query> to find available apps'));
19
+ process.exit(1);
20
+ }
21
+ const result = await createConnectLink(userId, appSlug);
22
+ spinner.stop();
23
+ if (options.json) {
24
+ console.log(JSON.stringify({
25
+ app: appSlug,
26
+ appName: app.name,
27
+ user: userId,
28
+ connectLinkUrl: result.connectLinkUrl,
29
+ expiresAt: result.expiresAt,
30
+ }, null, 2));
31
+ return;
32
+ }
33
+ console.log(chalk.bold(`\n🔗 OAuth Link for ${chalk.cyan(app.name)}\n`));
34
+ console.log(` ${chalk.gray('User:')} ${userId}`);
35
+ console.log(` ${chalk.gray('Expires:')} ${new Date(result.expiresAt).toLocaleString()}\n`);
36
+ console.log(chalk.bold(' Link:\n'));
37
+ console.log(` ${chalk.underline.blue(result.connectLinkUrl)}\n`);
38
+ console.log(chalk.gray(' Share this link to authorize access.\n'));
39
+ console.log(chalk.gray(' After authorization, run: pdauth status\n'));
40
+ // Try to copy to clipboard (cross-platform)
41
+ if (options.copy) {
42
+ try {
43
+ const { execSync } = await import('child_process');
44
+ const platform = process.platform;
45
+ if (platform === 'darwin') {
46
+ execSync(`echo "${result.connectLinkUrl}" | pbcopy`);
47
+ }
48
+ else if (platform === 'linux') {
49
+ execSync(`echo "${result.connectLinkUrl}" | xclip -selection clipboard 2>/dev/null || echo "${result.connectLinkUrl}" | xsel --clipboard 2>/dev/null`);
50
+ }
51
+ else if (platform === 'win32') {
52
+ execSync(`echo ${result.connectLinkUrl} | clip`);
53
+ }
54
+ console.log(chalk.green(' ✓ Copied to clipboard!\n'));
55
+ }
56
+ catch {
57
+ // Clipboard not available, skip silently
58
+ }
59
+ }
60
+ }
61
+ catch (error) {
62
+ spinner.fail('Failed to generate link');
63
+ console.error(chalk.red(error instanceof Error ? error.message : String(error)));
64
+ process.exit(1);
65
+ }
66
+ }
67
+ //# sourceMappingURL=connect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { configCommand } from './config.js';
2
+ export { appsCommand, appInfoCommand } from './apps.js';
3
+ export { connectCommand } from './connect.js';
4
+ export { statusCommand, disconnectCommand } from './status.js';
5
+ export { toolsCommand, callCommand } from './tools.js';
6
+ export { proxyCommand } from './proxy.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { configCommand } from './config.js';
2
+ export { appsCommand, appInfoCommand } from './apps.js';
3
+ export { connectCommand } from './connect.js';
4
+ export { statusCommand, disconnectCommand } from './status.js';
5
+ export { toolsCommand, callCommand } from './tools.js';
6
+ export { proxyCommand } from './proxy.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,12 @@
1
+ interface ProxyOptions {
2
+ method?: string;
3
+ user?: string;
4
+ data?: string;
5
+ header?: string[];
6
+ query?: string[];
7
+ json?: boolean;
8
+ verbose?: boolean;
9
+ }
10
+ export declare function proxyCommand(app: string, path: string, options: ProxyOptions): Promise<void>;
11
+ export {};
12
+ //# sourceMappingURL=proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/commands/proxy.ts"],"names":[],"mappings":"AAKA,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA0BD,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CA+Gf"}
@@ -0,0 +1,127 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { getClient, listAccounts } from '../pipedream.js';
4
+ import { isConfigured, getDefaultUser } from '../config.js';
5
+ function parseParams(params) {
6
+ const result = {};
7
+ for (const p of params) {
8
+ const [key, ...rest] = p.split('=');
9
+ if (key) {
10
+ result[key] = rest.join('=');
11
+ }
12
+ }
13
+ return result;
14
+ }
15
+ function parseHeaders(headers) {
16
+ const result = {};
17
+ for (const h of headers) {
18
+ const colonIndex = h.indexOf(':');
19
+ if (colonIndex > 0) {
20
+ const key = h.slice(0, colonIndex).trim();
21
+ const value = h.slice(colonIndex + 1).trim();
22
+ result[key] = value;
23
+ }
24
+ }
25
+ return result;
26
+ }
27
+ export async function proxyCommand(app, path, options) {
28
+ if (!isConfigured()) {
29
+ console.error(chalk.red('Not configured. Run: pdauth config'));
30
+ process.exit(1);
31
+ }
32
+ const userId = options.user || getDefaultUser();
33
+ const method = (options.method || 'GET').toUpperCase();
34
+ if (options.verbose) {
35
+ console.log(chalk.gray(`User: ${userId}`));
36
+ console.log(chalk.gray(`App: ${app}`));
37
+ console.log(chalk.gray(`Path: ${path}`));
38
+ console.log(chalk.gray(`Method: ${method}`));
39
+ }
40
+ const spinner = ora('Finding account...').start();
41
+ try {
42
+ // 1. Get account ID for app + user
43
+ const accounts = await listAccounts(userId);
44
+ const account = accounts.find(a => a.app.nameSlug === app);
45
+ if (!account) {
46
+ spinner.fail(`No ${app} account connected for user ${userId}`);
47
+ const connectedApps = accounts.map(a => a.app.nameSlug).join(', ');
48
+ console.log(chalk.gray(`Connected apps: ${connectedApps || 'none'}`));
49
+ console.log(chalk.gray(`\nRun: pdauth connect ${app} --user ${userId}`));
50
+ process.exit(1);
51
+ }
52
+ if (options.verbose) {
53
+ spinner.succeed(`Using account: ${account.name} (${account.id})`);
54
+ }
55
+ // 2. Build request
56
+ const client = getClient();
57
+ const params = parseParams(options.query || []);
58
+ const headers = parseHeaders(options.header || []);
59
+ let body;
60
+ if (options.data) {
61
+ try {
62
+ body = JSON.parse(options.data);
63
+ }
64
+ catch (e) {
65
+ spinner.fail('Invalid JSON in --data');
66
+ process.exit(1);
67
+ }
68
+ }
69
+ const request = {
70
+ url: path,
71
+ externalUserId: userId,
72
+ accountId: account.id,
73
+ params: Object.keys(params).length > 0 ? params : undefined,
74
+ headers: Object.keys(headers).length > 0 ? headers : undefined,
75
+ body,
76
+ };
77
+ if (options.verbose) {
78
+ console.log(chalk.gray('\nRequest:'));
79
+ console.log(chalk.gray(JSON.stringify(request, null, 2)));
80
+ console.log();
81
+ }
82
+ spinner.text = `${method} ${path}...`;
83
+ // 3. Call proxy based on method
84
+ let response;
85
+ switch (method) {
86
+ case 'GET':
87
+ response = await client.proxy.get(request);
88
+ break;
89
+ case 'POST':
90
+ response = await client.proxy.post(request);
91
+ break;
92
+ case 'PUT':
93
+ response = await client.proxy.put(request);
94
+ break;
95
+ case 'DELETE':
96
+ response = await client.proxy.delete(request);
97
+ break;
98
+ case 'PATCH':
99
+ response = await client.proxy.patch(request);
100
+ break;
101
+ default:
102
+ spinner.fail(`Unsupported method: ${method}`);
103
+ process.exit(1);
104
+ }
105
+ spinner.stop();
106
+ // 4. Output response
107
+ if (options.json) {
108
+ console.log(JSON.stringify(response));
109
+ }
110
+ else if (typeof response === 'object' && response !== null) {
111
+ console.log(JSON.stringify(response, null, 2));
112
+ }
113
+ else {
114
+ console.log(response);
115
+ }
116
+ }
117
+ catch (error) {
118
+ spinner.fail('Request failed');
119
+ const message = error instanceof Error ? error.message : String(error);
120
+ console.error(chalk.red(message));
121
+ if (options.verbose && error instanceof Error && error.stack) {
122
+ console.error(chalk.gray(error.stack));
123
+ }
124
+ process.exit(1);
125
+ }
126
+ }
127
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/commands/proxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare function statusCommand(options: {
2
+ user?: string;
3
+ json?: boolean;
4
+ all?: boolean;
5
+ }): Promise<void>;
6
+ export declare function disconnectCommand(appSlugOrAccountId: string, options: {
7
+ user?: string;
8
+ force?: boolean;
9
+ }): Promise<void>;
10
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAKA,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyF5G;AAED,wBAAsB,iBAAiB,CACrC,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1C,OAAO,CAAC,IAAI,CAAC,CA2Cf"}