@agendapanda/cli 0.3.1 → 0.4.0
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/LICENSE +21 -0
- package/README.md +1 -1
- package/dist/bin/ap.js +32 -0
- package/dist/bin/ap.js.map +1 -1
- package/dist/src/commands/alias.d.ts +2 -0
- package/dist/src/commands/alias.js +84 -0
- package/dist/src/commands/alias.js.map +1 -0
- package/dist/src/commands/auth.d.ts +4 -0
- package/dist/src/commands/auth.js +224 -20
- package/dist/src/commands/auth.js.map +1 -1
- package/dist/src/commands/calendar.js +8 -3
- package/dist/src/commands/calendar.js.map +1 -1
- package/dist/src/commands/completion.d.ts +2 -0
- package/dist/src/commands/completion.js +197 -0
- package/dist/src/commands/completion.js.map +1 -0
- package/dist/src/commands/connections.js +171 -26
- package/dist/src/commands/connections.js.map +1 -1
- package/dist/src/commands/context.js +10 -2
- package/dist/src/commands/context.js.map +1 -1
- package/dist/src/commands/init.d.ts +2 -0
- package/dist/src/commands/init.js +249 -0
- package/dist/src/commands/init.js.map +1 -0
- package/dist/src/commands/post.js +253 -9
- package/dist/src/commands/post.js.map +1 -1
- package/dist/src/commands/projects.js +8 -2
- package/dist/src/commands/projects.js.map +1 -1
- package/dist/src/index.js +24 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib/config.d.ts +18 -0
- package/dist/src/lib/config.js +48 -0
- package/dist/src/lib/config.js.map +1 -1
- package/dist/src/lib/errors.d.ts +4 -0
- package/dist/src/lib/errors.js +5 -0
- package/dist/src/lib/errors.js.map +1 -0
- package/dist/src/lib/platform-rules.js +2 -0
- package/dist/src/lib/platform-rules.js.map +1 -1
- package/dist/src/lib/poll.d.ts +11 -0
- package/dist/src/lib/poll.js +42 -0
- package/dist/src/lib/poll.js.map +1 -0
- package/dist/src/lib/update-check.d.ts +2 -0
- package/dist/src/lib/update-check.js +66 -0
- package/dist/src/lib/update-check.js.map +1 -0
- package/dist/src/lib/utils.d.ts +2 -0
- package/dist/src/lib/utils.js +27 -0
- package/dist/src/lib/utils.js.map +1 -0
- package/package.json +25 -2
|
@@ -3,6 +3,7 @@ import { api, ApiError } from '../lib/api.js';
|
|
|
3
3
|
import { getActiveProject } from '../lib/config.js';
|
|
4
4
|
import { PLATFORM_RULES } from '../lib/platform-rules.js';
|
|
5
5
|
import { initJsonMode, outputJson, outputError } from '../lib/output.js';
|
|
6
|
+
import { MISSING_PROJECT_MSG } from '../lib/errors.js';
|
|
6
7
|
function formatNumber(n) {
|
|
7
8
|
return n.toLocaleString('en-US');
|
|
8
9
|
}
|
|
@@ -15,7 +16,12 @@ function mediaDesc(rule) {
|
|
|
15
16
|
export function registerContextCommand(program) {
|
|
16
17
|
program
|
|
17
18
|
.command('context')
|
|
18
|
-
.description('Dump brand context, connections, and platform rules
|
|
19
|
+
.description('Dump brand context, connections, and platform rules — pipe into AI tools for zero-setup content generation')
|
|
20
|
+
.addHelpText('after', `
|
|
21
|
+
Examples:
|
|
22
|
+
ap context # markdown for humans
|
|
23
|
+
ap context --json | claude "Write 5 posts for this week"
|
|
24
|
+
ap context --verbose # include connection IDs`)
|
|
19
25
|
.option('--project <id>', 'Override active project')
|
|
20
26
|
.option('--format <format>', 'Output format: markdown or json', 'markdown')
|
|
21
27
|
.option('--verbose', 'Include connection IDs in markdown output')
|
|
@@ -26,7 +32,7 @@ export function registerContextCommand(program) {
|
|
|
26
32
|
try {
|
|
27
33
|
const projectId = options.project || getActiveProject();
|
|
28
34
|
if (!projectId) {
|
|
29
|
-
outputError(
|
|
35
|
+
outputError(MISSING_PROJECT_MSG, 'MISSING_PROJECT');
|
|
30
36
|
process.exit(1);
|
|
31
37
|
}
|
|
32
38
|
// Fetch project details
|
|
@@ -147,6 +153,8 @@ export function registerContextCommand(program) {
|
|
|
147
153
|
lines.push('- Instagram: 11 AM-1 PM, 7-9 PM daily');
|
|
148
154
|
lines.push('- Facebook: 1-4 PM weekdays');
|
|
149
155
|
lines.push('- Threads: 7-9 AM, 12-3 PM daily');
|
|
156
|
+
lines.push('- Bluesky: 8-10 AM, 12-2 PM weekdays');
|
|
157
|
+
lines.push('- TikTok: 7-9 AM, 12-3 PM, 7-11 PM daily');
|
|
150
158
|
lines.push('');
|
|
151
159
|
// Soul
|
|
152
160
|
lines.push('## Soul (Brand Voice & Tone)');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/commands/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAc,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/commands/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { createInterface } from 'readline';
|
|
3
|
+
import { api, ApiError } from '../lib/api.js';
|
|
4
|
+
import { getApiKey, setApiKey, getActiveProject, setActiveProject, getActiveConnection, setActiveConnection, getConfigPath, } from '../lib/config.js';
|
|
5
|
+
import { outputError } from '../lib/output.js';
|
|
6
|
+
import { openInBrowser } from '../lib/utils.js';
|
|
7
|
+
import { pollForNewConnection } from '../lib/poll.js';
|
|
8
|
+
const PLATFORMS = [
|
|
9
|
+
{ id: 'twitter', label: 'X (Twitter)' },
|
|
10
|
+
{ id: 'linkedin', label: 'LinkedIn' },
|
|
11
|
+
{ id: 'facebook', label: 'Facebook Pages' },
|
|
12
|
+
{ id: 'instagram', label: 'Instagram' },
|
|
13
|
+
{ id: 'threads', label: 'Threads' },
|
|
14
|
+
{ id: 'bluesky', label: 'Bluesky' },
|
|
15
|
+
{ id: 'tiktok', label: 'TikTok' },
|
|
16
|
+
];
|
|
17
|
+
function prompt(rl, question) {
|
|
18
|
+
return new Promise((resolve) => {
|
|
19
|
+
rl.question(question, (answer) => resolve(answer.trim()));
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
export function registerInitCommand(program) {
|
|
23
|
+
program
|
|
24
|
+
.command('init')
|
|
25
|
+
.description('Guided first-run setup wizard')
|
|
26
|
+
.addHelpText('after', `
|
|
27
|
+
Examples:
|
|
28
|
+
ap init # start the interactive setup wizard`)
|
|
29
|
+
.action(async () => {
|
|
30
|
+
if (!process.stdin.isTTY) {
|
|
31
|
+
outputError('ap init requires an interactive terminal', 'NOT_INTERACTIVE');
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
const rl = createInterface({ input: process.stdin, output: process.stderr });
|
|
35
|
+
try {
|
|
36
|
+
// Welcome
|
|
37
|
+
console.log('');
|
|
38
|
+
console.log(chalk.bold('Welcome to Agenda Panda CLI'));
|
|
39
|
+
console.log(chalk.dim("Let's get you set up in 4 quick steps."));
|
|
40
|
+
console.log('');
|
|
41
|
+
// ── Step 1/4: Auth ──
|
|
42
|
+
console.log(chalk.bold('Step 1/4 — Authentication'));
|
|
43
|
+
let apiKey = getApiKey();
|
|
44
|
+
let authenticated = false;
|
|
45
|
+
if (apiKey) {
|
|
46
|
+
try {
|
|
47
|
+
const me = await api.get('/api/auth/me');
|
|
48
|
+
console.log(chalk.green('✓') + ` Already logged in as ${chalk.bold(me.user.name)} (${me.user.email})`);
|
|
49
|
+
authenticated = true;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
console.log(chalk.yellow('Stored key is invalid. Let\'s re-authenticate.'));
|
|
53
|
+
apiKey = '';
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (!authenticated) {
|
|
57
|
+
const hasKey = await prompt(rl, 'Do you have an API key? (y/N) ');
|
|
58
|
+
if (hasKey.toLowerCase() !== 'y') {
|
|
59
|
+
console.log(chalk.dim('Opening agendapanda.com to get your API key...'));
|
|
60
|
+
await openInBrowser('https://agendapanda.com/settings?tab=security');
|
|
61
|
+
console.log(chalk.dim('Copy your API key from Settings > Security > API Keys'));
|
|
62
|
+
}
|
|
63
|
+
let valid = false;
|
|
64
|
+
while (!valid) {
|
|
65
|
+
const key = await prompt(rl, 'Enter your API key: ');
|
|
66
|
+
if (!key || !key.startsWith('ap_')) {
|
|
67
|
+
console.log(chalk.red('Invalid key format. Keys start with "ap_". Try again.'));
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
const originalKey = getApiKey();
|
|
71
|
+
setApiKey(key);
|
|
72
|
+
try {
|
|
73
|
+
const me = await api.get('/api/auth/me');
|
|
74
|
+
console.log(chalk.green('✓') + ` Authenticated as ${chalk.bold(me.user.name)} (${me.user.email})`);
|
|
75
|
+
valid = true;
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
setApiKey(originalKey);
|
|
79
|
+
console.log(chalk.red('Key validation failed. Check your key and try again.'));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
console.log('');
|
|
84
|
+
// ── Step 2/4: Workspace ──
|
|
85
|
+
console.log(chalk.bold('Step 2/4 — Workspace'));
|
|
86
|
+
let activeProject = getActiveProject();
|
|
87
|
+
if (activeProject) {
|
|
88
|
+
try {
|
|
89
|
+
const data = await api.get(`/api/projects/${activeProject}`);
|
|
90
|
+
console.log(chalk.green('✓') + ` Active workspace: ${chalk.bold(data.project.name)}`);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
console.log(chalk.yellow('Stored project not found. Let\'s pick one.'));
|
|
94
|
+
activeProject = '';
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (!activeProject) {
|
|
98
|
+
let projects = [];
|
|
99
|
+
try {
|
|
100
|
+
const data = await api.get('/api/projects');
|
|
101
|
+
projects = data.projects || [];
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
const msg = err instanceof ApiError ? err.message : String(err);
|
|
105
|
+
console.log(chalk.red(`Could not fetch workspaces: ${msg}`));
|
|
106
|
+
}
|
|
107
|
+
if (projects.length === 0) {
|
|
108
|
+
console.log(chalk.dim('No workspaces found. Opening browser to create one...'));
|
|
109
|
+
await openInBrowser('https://agendapanda.com');
|
|
110
|
+
console.log(chalk.dim('Create a workspace, then run `ap init` again.'));
|
|
111
|
+
rl.close();
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
console.log('Your workspaces:');
|
|
115
|
+
projects.forEach((p, i) => {
|
|
116
|
+
console.log(` ${i + 1}) ${p.name} ${chalk.dim(`(${p.id.slice(0, 8)}...)`)}`);
|
|
117
|
+
});
|
|
118
|
+
let chosen;
|
|
119
|
+
while (!chosen) {
|
|
120
|
+
const answer = await prompt(rl, 'Select a workspace (number): ');
|
|
121
|
+
const idx = parseInt(answer, 10) - 1;
|
|
122
|
+
if (idx >= 0 && idx < projects.length) {
|
|
123
|
+
chosen = projects[idx];
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
console.log(chalk.red('Invalid selection. Try again.'));
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
setActiveProject(chosen.id);
|
|
130
|
+
console.log(chalk.green('✓') + ` Active workspace set to ${chalk.bold(chosen.name)}`);
|
|
131
|
+
}
|
|
132
|
+
console.log('');
|
|
133
|
+
// ── Step 3/4: Connect Platform ──
|
|
134
|
+
console.log(chalk.bold('Step 3/4 — Connect a Platform'));
|
|
135
|
+
console.log('Which platform would you like to connect?');
|
|
136
|
+
PLATFORMS.forEach((p, i) => {
|
|
137
|
+
console.log(` ${i + 1}) ${p.label}`);
|
|
138
|
+
});
|
|
139
|
+
console.log(` ${PLATFORMS.length + 1}) ${chalk.dim('Skip for now')}`);
|
|
140
|
+
const platformAnswer = await prompt(rl, 'Select (number): ');
|
|
141
|
+
const platformIdx = parseInt(platformAnswer, 10) - 1;
|
|
142
|
+
let newConnection;
|
|
143
|
+
if (platformIdx >= 0 && platformIdx < PLATFORMS.length) {
|
|
144
|
+
const platform = PLATFORMS[platformIdx];
|
|
145
|
+
try {
|
|
146
|
+
// Snapshot existing connections
|
|
147
|
+
let existingIds;
|
|
148
|
+
try {
|
|
149
|
+
const before = await api.get('/api/connections');
|
|
150
|
+
existingIds = new Set(before.connections.filter((c) => c.platform === platform.id).map((c) => c.id));
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
existingIds = new Set();
|
|
154
|
+
}
|
|
155
|
+
const authUrl = await api.getRedirect(`/api/connections/connect/${encodeURIComponent(platform.id)}`);
|
|
156
|
+
await openInBrowser(authUrl);
|
|
157
|
+
console.log(chalk.dim(`Opened ${platform.label} authorization in browser...`));
|
|
158
|
+
console.log(chalk.dim('Waiting for connection... (press Ctrl+C to skip)'));
|
|
159
|
+
const { connection: conn, cancelled } = await pollForNewConnection(platform.id, existingIds);
|
|
160
|
+
if (cancelled) {
|
|
161
|
+
console.log(chalk.yellow('\nPolling cancelled. Run `ap connections add` later.'));
|
|
162
|
+
}
|
|
163
|
+
else if (conn) {
|
|
164
|
+
newConnection = conn;
|
|
165
|
+
const username = conn.platform_username || conn.platform_display_name || platform.id;
|
|
166
|
+
console.log(chalk.green('✓') + ` Connected as @${username} on ${platform.label}`);
|
|
167
|
+
setActiveConnection(conn.id);
|
|
168
|
+
console.log(chalk.dim(` Set as default connection (${conn.id.slice(0, 8)}...)`));
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
console.log(chalk.yellow('Connection not detected within 60s. Run `ap connections add` later.'));
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch (err) {
|
|
175
|
+
const msg = err instanceof ApiError ? err.message : String(err);
|
|
176
|
+
console.log(chalk.red(`Could not start OAuth: ${msg}`));
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
console.log(chalk.dim('Skipped. Run `ap connections add <platform>` when ready.'));
|
|
181
|
+
}
|
|
182
|
+
console.log('');
|
|
183
|
+
// ── Step 4/4: Test Post ──
|
|
184
|
+
console.log(chalk.bold('Step 4/4 — Test Post'));
|
|
185
|
+
const connectionId = getActiveConnection();
|
|
186
|
+
if (newConnection && connectionId) {
|
|
187
|
+
const sendTest = await prompt(rl, 'Send a test post to the connected platform? (y/N) ');
|
|
188
|
+
if (sendTest.toLowerCase() === 'y') {
|
|
189
|
+
const projectId = getActiveProject();
|
|
190
|
+
if (!projectId) {
|
|
191
|
+
console.log(chalk.yellow('No active project. Skipping test post.'));
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
try {
|
|
195
|
+
const data = await api.post(`/api/projects/${projectId}/posts`, {
|
|
196
|
+
content: 'Hello from Agenda Panda CLI! This is a test post.',
|
|
197
|
+
scheduled_at: new Date().toISOString(),
|
|
198
|
+
social_connection_id: connectionId,
|
|
199
|
+
post_now: true,
|
|
200
|
+
});
|
|
201
|
+
if (data.post.posted) {
|
|
202
|
+
console.log(chalk.green('✓') + ' Test post published successfully!');
|
|
203
|
+
}
|
|
204
|
+
else if (data.post.error) {
|
|
205
|
+
console.log(chalk.yellow('⚠') + ` Post created but failed: ${data.post.error}`);
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
console.log(chalk.green('✓') + ' Test post scheduled.');
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
catch (err) {
|
|
212
|
+
const msg = err instanceof ApiError ? err.message : String(err);
|
|
213
|
+
console.log(chalk.red(`Test post failed: ${msg}`));
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
console.log(chalk.dim('Skipped.'));
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
console.log(chalk.dim('No connection set — skipping test post.'));
|
|
223
|
+
}
|
|
224
|
+
console.log('');
|
|
225
|
+
// ── Summary ──
|
|
226
|
+
console.log(chalk.bold('Setup complete! Here are some next steps:'));
|
|
227
|
+
console.log('');
|
|
228
|
+
console.log(` ${chalk.dim('$')} ap whoami ${chalk.dim('# check your auth status')}`);
|
|
229
|
+
console.log(` ${chalk.dim('$')} ap connections list ${chalk.dim('# see connected platforms')}`);
|
|
230
|
+
console.log(` ${chalk.dim('$')} ap post create --content "..." ${chalk.dim('# create a post')}`);
|
|
231
|
+
console.log(` ${chalk.dim('$')} ap calendar import --file cal.json ${chalk.dim('# bulk import posts')}`);
|
|
232
|
+
console.log(` ${chalk.dim('$')} ap context | claude "Write posts" ${chalk.dim('# AI-powered content')}`);
|
|
233
|
+
console.log('');
|
|
234
|
+
console.log(chalk.dim(`Config stored at ${getConfigPath()}`));
|
|
235
|
+
rl.close();
|
|
236
|
+
}
|
|
237
|
+
catch (err) {
|
|
238
|
+
rl.close();
|
|
239
|
+
if (err instanceof ApiError) {
|
|
240
|
+
outputError(err.message, err.code);
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
outputError(String(err));
|
|
244
|
+
}
|
|
245
|
+
process.exit(1);
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"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"}
|