@lovelybunch/cli 1.0.76-alpha.8 → 1.0.76-alpha.9

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.js CHANGED
@@ -22,6 +22,7 @@ import { eventsCommand } from './commands/events.js';
22
22
  import { taskCommand } from './commands/task.js';
23
23
  import { notifyCommand } from './commands/notify.js';
24
24
  import { mailCommand } from './commands/mail.js';
25
+ import { connectCommand } from './commands/connect.js';
25
26
  const __filename = fileURLToPath(import.meta.url);
26
27
  const __dirname = dirname(__filename);
27
28
  // Read version from package.json
@@ -54,6 +55,7 @@ program.addCommand(knowledgeCommand);
54
55
  program.addCommand(eventsCommand);
55
56
  program.addCommand(notifyCommand);
56
57
  program.addCommand(mailCommand);
58
+ program.addCommand(connectCommand);
57
59
  // Deprecated aliases for backward compatibility
58
60
  // These will show a deprecation warning and delegate to the new task command
59
61
  const deprecatedProposeCommand = proposeCommand.hook('preAction', () => {
@@ -72,7 +74,7 @@ program.addCommand(deprecatedShowCommand);
72
74
  program.hook('preAction', async (_thisCommand, actionCommand) => {
73
75
  const commandName = actionCommand.name();
74
76
  // Skip initialization check for 'init', 'config', 'auth', and 'serve' commands
75
- const skipInitCheck = ['init', 'config', 'auth', 'serve', 'notify'];
77
+ const skipInitCheck = ['init', 'config', 'auth', 'serve', 'notify', 'connect'];
76
78
  if (skipInitCheck.includes(commandName)) {
77
79
  return;
78
80
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const connectCommand: Command;
3
+ //# sourceMappingURL=connect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8EpC,eAAO,MAAM,cAAc,SAmBzB,CAAC"}
@@ -0,0 +1,203 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import ora from 'ora';
4
+ import { table } from 'table';
5
+ const DEFAULT_HOST = 'https://app.coconut.dev';
6
+ const BASE_URL_MAP = {
7
+ google_drive: 'https://www.googleapis.com',
8
+ hubspot: 'https://api.hubapi.com',
9
+ slack: 'https://slack.com',
10
+ notion: 'https://api.notion.com',
11
+ github: 'https://api.github.com',
12
+ };
13
+ // Future: convenience shortcuts — e.g. google_drive.list → GET /drive/v3/files
14
+ // const SHORTCUTS: Record<string, Record<string, { method: string; path: string }>> = {};
15
+ function resolveAuth(options) {
16
+ const token = options.token || process.env.COCONUT_CALLBACK_TOKEN;
17
+ const host = options.host || process.env.COCONUT_HOST || DEFAULT_HOST;
18
+ if (!token) {
19
+ console.error(chalk.red('Error: No callback token provided.'));
20
+ console.error(chalk.yellow('\nSet the COCONUT_CALLBACK_TOKEN environment variable:'));
21
+ console.error(chalk.gray(' export COCONUT_CALLBACK_TOKEN=cpt_xxx'));
22
+ console.error(chalk.yellow('\nOr pass it as a flag:'));
23
+ console.error(chalk.gray(' nut connect --token cpt_xxx list'));
24
+ process.exit(1);
25
+ }
26
+ return { token, host };
27
+ }
28
+ async function fetchAccounts(host, token) {
29
+ const url = `${host}/api/connectors/accounts`;
30
+ const res = await fetch(url, {
31
+ headers: { 'X-Callback-Token': token },
32
+ });
33
+ if (!res.ok) {
34
+ const body = await res.text().catch(() => '');
35
+ throw new Error(`Failed to fetch accounts (${res.status}): ${body || res.statusText}`);
36
+ }
37
+ const data = await res.json();
38
+ if (Array.isArray(data))
39
+ return data;
40
+ return data.accounts ?? data.data ?? [];
41
+ }
42
+ function resolveUrl(app, path) {
43
+ if (path.startsWith('https://') || path.startsWith('http://')) {
44
+ return path;
45
+ }
46
+ const baseUrl = BASE_URL_MAP[app];
47
+ if (!baseUrl) {
48
+ console.error(chalk.red(`Error: Unknown app "${app}" and path is not a full URL.`));
49
+ console.error(chalk.yellow('\nEither use a full URL:'));
50
+ console.error(chalk.gray(` nut connect ${app} GET https://api.example.com/path`));
51
+ console.error(chalk.yellow('\nOr use a known app slug:'));
52
+ console.error(chalk.gray(` Known apps: ${Object.keys(BASE_URL_MAP).join(', ')}`));
53
+ process.exit(1);
54
+ }
55
+ const separator = path.startsWith('/') ? '' : '/';
56
+ return `${baseUrl}${separator}${path}`;
57
+ }
58
+ export const connectCommand = new Command('connect')
59
+ .description('Interact with Pipedream-connected services through the control plane proxy')
60
+ .option('-t, --token <token>', 'Callback token (default: $COCONUT_CALLBACK_TOKEN)')
61
+ .option('--host <url>', 'Control plane base URL (default: $COCONUT_HOST or https://app.coconut.dev)')
62
+ .option('-r, --raw', 'Output raw JSON (no pretty-print)')
63
+ .option('--json', 'Output raw JSON (alias for --raw)')
64
+ .addHelpText('after', `
65
+ Examples:
66
+ ${chalk.gray('# List connected services')}
67
+ nut connect list
68
+
69
+ ${chalk.gray('# List Google Drive files')}
70
+ nut connect google_drive GET /drive/v3/files?pageSize=5
71
+
72
+ ${chalk.gray('# Create a Slack message')}
73
+ nut connect slack POST /api/chat.postMessage --body '{"channel":"C123","text":"Hello"}'
74
+
75
+ ${chalk.gray('# Use a full URL for unsupported apps')}
76
+ nut connect my_app GET https://api.example.com/v1/items
77
+ `);
78
+ // --- list subcommand ---
79
+ connectCommand
80
+ .command('list')
81
+ .description('List all connected services')
82
+ .action(async (_options, cmd) => {
83
+ const parentOpts = cmd.parent.opts();
84
+ const { token, host } = resolveAuth(parentOpts);
85
+ const spinner = ora('Fetching connected services...').start();
86
+ try {
87
+ const accounts = await fetchAccounts(host, token);
88
+ if (accounts.length === 0) {
89
+ spinner.info('No connected services found.');
90
+ return;
91
+ }
92
+ spinner.stop();
93
+ if (parentOpts.raw || parentOpts.json) {
94
+ console.log(JSON.stringify(accounts));
95
+ return;
96
+ }
97
+ const header = ['Service', 'Account ID', 'Status'];
98
+ const rows = accounts.map((a) => [
99
+ a.appName || a.appSlug || '—',
100
+ a.accountId || '—',
101
+ a.healthy === false ? chalk.red('Disconnected') : chalk.green('Connected'),
102
+ ]);
103
+ console.log(chalk.bold('\nConnected Services'));
104
+ console.log(table([header, ...rows]));
105
+ }
106
+ catch (error) {
107
+ spinner.fail('Failed to list connected services');
108
+ console.error(chalk.red('Error:'), error.message);
109
+ process.exit(1);
110
+ }
111
+ });
112
+ // --- default proxy command: connect <app> <method> <path> ---
113
+ connectCommand
114
+ .command('proxy', { isDefault: true })
115
+ .argument('<app>', 'App slug (e.g. google_drive, slack, hubspot)')
116
+ .argument('<method>', 'HTTP method (GET, POST, PUT, PATCH, DELETE)')
117
+ .argument('<path>', 'API path or full URL')
118
+ .option('-b, --body <json>', 'JSON request body')
119
+ .option('--headers <json>', 'Extra headers as JSON string')
120
+ .action(async (app, method, path, options, cmd) => {
121
+ const parentOpts = cmd.parent.opts();
122
+ const { token, host } = resolveAuth(parentOpts);
123
+ const rawOutput = parentOpts.raw || parentOpts.json;
124
+ const spinner = ora('Making request...').start();
125
+ try {
126
+ // 1. Fetch accounts and find matching one
127
+ const accounts = await fetchAccounts(host, token);
128
+ const account = accounts.find((a) => a.appSlug === app || a.appName?.toLowerCase() === app.toLowerCase());
129
+ if (!account) {
130
+ spinner.fail(`No connected account found for "${app}"`);
131
+ console.error(chalk.yellow('\nAvailable services:'));
132
+ for (const a of accounts) {
133
+ console.error(chalk.gray(` - ${a.appSlug || a.appName} (${a.accountId})`));
134
+ }
135
+ process.exit(1);
136
+ }
137
+ // 2. Resolve URL
138
+ const url = resolveUrl(app, path);
139
+ // 3. Parse optional body and headers
140
+ let body = undefined;
141
+ if (options.body) {
142
+ try {
143
+ body = JSON.parse(options.body);
144
+ }
145
+ catch {
146
+ spinner.fail('Invalid JSON in --body flag');
147
+ process.exit(1);
148
+ }
149
+ }
150
+ let extraHeaders = {};
151
+ if (options.headers) {
152
+ try {
153
+ extraHeaders = JSON.parse(options.headers);
154
+ }
155
+ catch {
156
+ spinner.fail('Invalid JSON in --headers flag');
157
+ process.exit(1);
158
+ }
159
+ }
160
+ // 4. Call proxy endpoint
161
+ const proxyPayload = {
162
+ accountId: account.accountId,
163
+ url,
164
+ method: method.toUpperCase(),
165
+ };
166
+ if (body !== undefined)
167
+ proxyPayload.body = body;
168
+ if (Object.keys(extraHeaders).length > 0)
169
+ proxyPayload.headers = extraHeaders;
170
+ const proxyRes = await fetch(`${host}/api/connectors/proxy`, {
171
+ method: 'POST',
172
+ headers: {
173
+ 'Content-Type': 'application/json',
174
+ 'X-Callback-Token': token,
175
+ },
176
+ body: JSON.stringify(proxyPayload),
177
+ });
178
+ if (!proxyRes.ok) {
179
+ const errBody = await proxyRes.text().catch(() => '');
180
+ spinner.fail(`Proxy request failed (${proxyRes.status})`);
181
+ console.error(chalk.red('Error:'), errBody || proxyRes.statusText);
182
+ process.exit(1);
183
+ }
184
+ const responseData = await proxyRes.json().catch(async () => {
185
+ // Not JSON — return raw text
186
+ return await proxyRes.text().catch(() => null);
187
+ });
188
+ spinner.stop();
189
+ // 5. Output
190
+ if (rawOutput) {
191
+ console.log(typeof responseData === 'string' ? responseData : JSON.stringify(responseData));
192
+ }
193
+ else {
194
+ console.log(typeof responseData === 'string' ? responseData : JSON.stringify(responseData, null, 2));
195
+ }
196
+ }
197
+ catch (error) {
198
+ spinner.fail('Request failed');
199
+ console.error(chalk.red('Error:'), error.message);
200
+ process.exit(1);
201
+ }
202
+ });
203
+ //# 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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lovelybunch/cli",
3
- "version": "1.0.76-alpha.8",
3
+ "version": "1.0.76-alpha.9",
4
4
  "description": "Command-line interface for Coconut",
5
5
  "type": "module",
6
6
  "main": "./dist/cli.js",
@@ -38,9 +38,9 @@
38
38
  "test:ui": "vitest --ui"
39
39
  },
40
40
  "dependencies": {
41
- "@lovelybunch/api": "^1.0.76-alpha.8",
42
- "@lovelybunch/core": "^1.0.76-alpha.8",
43
- "@lovelybunch/types": "^1.0.76-alpha.8",
41
+ "@lovelybunch/api": "^1.0.76-alpha.9",
42
+ "@lovelybunch/core": "^1.0.76-alpha.9",
43
+ "@lovelybunch/types": "^1.0.76-alpha.9",
44
44
  "adm-zip": "^0.5.16",
45
45
  "chalk": "^5.3.0",
46
46
  "commander": "^11.1.0",