@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
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Agenda Panda
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
package/dist/bin/ap.js
CHANGED
|
@@ -1,7 +1,29 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { CommanderError } from 'commander';
|
|
3
|
+
import { getAliases } from '../src/lib/config.js';
|
|
3
4
|
import { program, earlyJsonMode } from '../src/index.js';
|
|
4
5
|
import { outputError } from '../src/lib/output.js';
|
|
6
|
+
import { checkForUpdate, printUpdateBanner } from '../src/lib/update-check.js';
|
|
7
|
+
/**
|
|
8
|
+
* Expand aliases: if argv[2] matches a known alias, replace it with expanded tokens.
|
|
9
|
+
* Handles quoted arguments in the expansion string (e.g. 'post create --content "hello world"').
|
|
10
|
+
*/
|
|
11
|
+
function expandAlias(argv) {
|
|
12
|
+
const aliases = getAliases();
|
|
13
|
+
const firstArg = argv[2];
|
|
14
|
+
if (!firstArg || !aliases[firstArg])
|
|
15
|
+
return argv;
|
|
16
|
+
const expansion = aliases[firstArg];
|
|
17
|
+
const expandedTokens = expansion.match(/[^\s"']+|"([^"]*)"|'([^']*)'/g) || [];
|
|
18
|
+
// Strip surrounding quotes from matched tokens
|
|
19
|
+
const cleaned = expandedTokens.map((t) => t.startsWith('"') && t.endsWith('"') ? t.slice(1, -1) :
|
|
20
|
+
t.startsWith("'") && t.endsWith("'") ? t.slice(1, -1) : t);
|
|
21
|
+
const remainingArgs = argv.slice(3);
|
|
22
|
+
return [argv[0], argv[1], ...cleaned, ...remainingArgs];
|
|
23
|
+
}
|
|
24
|
+
process.argv = expandAlias(process.argv);
|
|
25
|
+
// Fire off update check without blocking startup
|
|
26
|
+
const updatePromise = checkForUpdate();
|
|
5
27
|
try {
|
|
6
28
|
await program.parseAsync();
|
|
7
29
|
}
|
|
@@ -18,4 +40,14 @@ catch (err) {
|
|
|
18
40
|
throw err;
|
|
19
41
|
}
|
|
20
42
|
}
|
|
43
|
+
// After command completes, check if an update is available
|
|
44
|
+
try {
|
|
45
|
+
const latestVersion = await updatePromise;
|
|
46
|
+
if (latestVersion) {
|
|
47
|
+
printUpdateBanner(latestVersion);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
// Never block exit for update check failures
|
|
52
|
+
}
|
|
21
53
|
//# sourceMappingURL=ap.js.map
|
package/dist/bin/ap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ap.js","sourceRoot":"","sources":["../../bin/ap.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"ap.js","sourceRoot":"","sources":["../../bin/ap.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/E;;;GAGG;AACH,SAAS,WAAW,CAAC,IAAc;IAClC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAEjD,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,+BAA+B,CAAC,IAAI,EAAE,CAAC;IAC9E,+CAA+C;IAC/C,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACxC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACzD,CAAC;IACF,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,aAAa,CAAC,CAAC;AACzD,CAAC;AAED,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAEzC,iDAAiD;AACjD,MAAM,aAAa,GAAG,cAAc,EAAE,CAAC;AAEvC,IAAI,CAAC;IACJ,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;AAC5B,CAAC;AAAC,OAAO,GAAG,EAAE,CAAC;IACd,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;QACnC,yEAAyE;QACzE,+EAA+E;QAC/E,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,aAAa,EAAE,CAAC;YACzC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IACjC,CAAC;SAAM,CAAC;QACP,MAAM,GAAG,CAAC;IACX,CAAC;AACF,CAAC;AAED,2DAA2D;AAC3D,IAAI,CAAC;IACJ,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC;IAC1C,IAAI,aAAa,EAAE,CAAC;QACnB,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAClC,CAAC;AACF,CAAC;AAAC,MAAM,CAAC;IACR,6CAA6C;AAC9C,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { getAliases, setAlias, deleteAlias } from '../lib/config.js';
|
|
3
|
+
import { initJsonMode, isJsonMode, outputJson, outputTable, outputError, } from '../lib/output.js';
|
|
4
|
+
const ALIAS_NAME_RE = /^[a-z0-9_-]+$/;
|
|
5
|
+
// Commands that cannot be shadowed by aliases
|
|
6
|
+
const RESERVED_COMMANDS = [
|
|
7
|
+
'auth', 'projects', 'connections', 'post', 'media', 'calendar',
|
|
8
|
+
'context', 'whoami', 'init', 'completion', 'alias', 'help', 'version',
|
|
9
|
+
];
|
|
10
|
+
export function registerAliasCommands(program) {
|
|
11
|
+
const alias = program.command('alias').description('Manage command aliases');
|
|
12
|
+
// ap alias set <name> <expansion>
|
|
13
|
+
alias
|
|
14
|
+
.command('set <name> <expansion>')
|
|
15
|
+
.description('Create or update an alias')
|
|
16
|
+
.option('--json', 'Output as JSON')
|
|
17
|
+
.addHelpText('after', `
|
|
18
|
+
Examples:
|
|
19
|
+
ap alias set tw "post create --connection abc123 --now"
|
|
20
|
+
ap alias set mypage "post create --connection xyz789"
|
|
21
|
+
ap tw --content "hello" # expands to: ap post create --connection abc123 --now --content "hello"`)
|
|
22
|
+
.action((name, expansion, options) => {
|
|
23
|
+
initJsonMode(options);
|
|
24
|
+
if (!ALIAS_NAME_RE.test(name)) {
|
|
25
|
+
outputError('Alias name must contain only lowercase letters, numbers, hyphens, and underscores.', 'INVALID_ALIAS_NAME');
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
if (RESERVED_COMMANDS.includes(name)) {
|
|
29
|
+
outputError(`"${name}" is a built-in command and cannot be used as an alias.`, 'RESERVED_ALIAS_NAME');
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
const existing = getAliases()[name];
|
|
33
|
+
setAlias(name, expansion);
|
|
34
|
+
if (isJsonMode(options)) {
|
|
35
|
+
outputJson({ success: true, item: { name, expansion, overwritten: !!existing } });
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
if (existing) {
|
|
39
|
+
console.log(chalk.yellow('⚠') + ` Overwrote alias ${chalk.bold(name)} (was: ${chalk.dim(`ap ${existing}`)})`);
|
|
40
|
+
}
|
|
41
|
+
console.log(chalk.green('✓') + ` Alias ${chalk.bold(name)} → ${chalk.dim(`ap ${expansion}`)}`);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
// ap alias list
|
|
45
|
+
alias
|
|
46
|
+
.command('list')
|
|
47
|
+
.description('List all aliases')
|
|
48
|
+
.option('--json', 'Output as JSON')
|
|
49
|
+
.action((options) => {
|
|
50
|
+
initJsonMode(options);
|
|
51
|
+
const aliases = getAliases();
|
|
52
|
+
const entries = Object.entries(aliases);
|
|
53
|
+
if (isJsonMode(options)) {
|
|
54
|
+
outputJson({ items: entries.map(([name, expansion]) => ({ name, expansion })) });
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
if (entries.length === 0) {
|
|
58
|
+
console.log(chalk.dim('No aliases defined. Use `ap alias set <name> "<expansion>"` to create one.'));
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
outputTable(['ALIAS', 'EXPANSION'], entries.map(([name, expansion]) => [name, `ap ${expansion}`]));
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
// ap alias delete <name>
|
|
65
|
+
alias
|
|
66
|
+
.command('delete <name>')
|
|
67
|
+
.description('Delete an alias')
|
|
68
|
+
.option('--json', 'Output as JSON')
|
|
69
|
+
.action((name, options) => {
|
|
70
|
+
initJsonMode(options);
|
|
71
|
+
const removed = deleteAlias(name);
|
|
72
|
+
if (!removed) {
|
|
73
|
+
outputError(`Alias "${name}" not found.`, 'ALIAS_NOT_FOUND');
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
if (isJsonMode(options)) {
|
|
77
|
+
outputJson({ success: true });
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
console.log(chalk.green('✓') + ` Alias ${chalk.bold(name)} deleted.`);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=alias.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alias.js","sourceRoot":"","sources":["../../../src/commands/alias.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,55 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { api, ApiError } from '../lib/api.js';
|
|
3
|
-
import { getApiKey, setApiKey, clearConfig, getConfigPath, getActiveProject, } from '../lib/config.js';
|
|
3
|
+
import { getApiKey, setApiKey, setApiUrl, clearConfig, getConfigPath, getActiveProject, getActiveProfile, setActiveProfile, getProfiles, setProfile, deleteProfile, } from '../lib/config.js';
|
|
4
4
|
import { initJsonMode, isJsonMode, outputJson, outputTable, outputError, outputItems, outputMutation, } from '../lib/output.js';
|
|
5
|
+
import { openInBrowser } from '../lib/utils.js';
|
|
6
|
+
import { API_KEY_URL_SUFFIX } from '../lib/errors.js';
|
|
7
|
+
/** Shared handler for `ap auth status` and `ap whoami` */
|
|
8
|
+
export async function authStatusHandler(options) {
|
|
9
|
+
initJsonMode(options);
|
|
10
|
+
try {
|
|
11
|
+
const me = await api.get('/api/auth/me');
|
|
12
|
+
if (isJsonMode(options)) {
|
|
13
|
+
outputJson({
|
|
14
|
+
user: me.user,
|
|
15
|
+
active_projects_count: me.active_projects_count,
|
|
16
|
+
active_project: getActiveProject() || null,
|
|
17
|
+
active_profile: getActiveProfile() || null,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
console.log(chalk.bold('User:'));
|
|
22
|
+
console.log(` Name: ${me.user.name}`);
|
|
23
|
+
console.log(` Email: ${me.user.email}`);
|
|
24
|
+
console.log(` Plan: ${me.user.plan}`);
|
|
25
|
+
console.log(` Projects: ${me.active_projects_count}`);
|
|
26
|
+
const profile = getActiveProfile();
|
|
27
|
+
if (profile) {
|
|
28
|
+
console.log(` Profile: ${profile}`);
|
|
29
|
+
}
|
|
30
|
+
const proj = getActiveProject();
|
|
31
|
+
if (proj) {
|
|
32
|
+
console.log(` Active project: ${proj}`);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
console.log(chalk.dim(' No active project set. Run `ap projects use <id>`.'));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
if (err instanceof ApiError) {
|
|
41
|
+
let msg = err.message;
|
|
42
|
+
if (err.code === 'INVALID_KEY' || msg.includes('Invalid API key')) {
|
|
43
|
+
msg += API_KEY_URL_SUFFIX;
|
|
44
|
+
}
|
|
45
|
+
outputError(msg, err.code);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
outputError(String(err));
|
|
49
|
+
}
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
5
53
|
export function registerAuthCommands(program) {
|
|
6
54
|
const auth = program.command('auth').description('Authentication and API key management');
|
|
7
55
|
// ap auth login
|
|
@@ -9,10 +57,22 @@ export function registerAuthCommands(program) {
|
|
|
9
57
|
.command('login')
|
|
10
58
|
.description('Store API key for authentication')
|
|
11
59
|
.option('--key <key>', 'API key (or set AP_API_KEY env var)')
|
|
60
|
+
.option('--browser', 'Open agendapanda.com to copy your API key')
|
|
61
|
+
.addHelpText('after', `
|
|
62
|
+
Examples:
|
|
63
|
+
ap auth login --key ap_abc123 # store API key directly
|
|
64
|
+
ap auth login --browser # open browser to copy key, then prompt
|
|
65
|
+
ap auth login # interactive prompt for API key`)
|
|
12
66
|
.action(async (options) => {
|
|
13
67
|
initJsonMode({});
|
|
14
68
|
try {
|
|
15
69
|
let key = options.key;
|
|
70
|
+
if (!key && options.browser) {
|
|
71
|
+
if (process.stdout.isTTY) {
|
|
72
|
+
console.log('Opening agendapanda.com → Settings → Security → API Keys...');
|
|
73
|
+
}
|
|
74
|
+
await openInBrowser('https://agendapanda.com/settings?tab=security');
|
|
75
|
+
}
|
|
16
76
|
if (!key) {
|
|
17
77
|
if (!process.stdin.isTTY) {
|
|
18
78
|
outputError('No --key provided and stdin is not interactive', 'MISSING_KEY');
|
|
@@ -29,7 +89,7 @@ export function registerAuthCommands(program) {
|
|
|
29
89
|
});
|
|
30
90
|
}
|
|
31
91
|
if (!key || !key.startsWith('ap_')) {
|
|
32
|
-
outputError('Invalid API key format. Keys start with "ap_"', 'INVALID_KEY');
|
|
92
|
+
outputError('Invalid API key format. Keys start with "ap_"' + API_KEY_URL_SUFFIX, 'INVALID_KEY');
|
|
33
93
|
process.exit(1);
|
|
34
94
|
}
|
|
35
95
|
// Validate key against API
|
|
@@ -60,7 +120,11 @@ export function registerAuthCommands(program) {
|
|
|
60
120
|
}
|
|
61
121
|
catch (err) {
|
|
62
122
|
if (err instanceof ApiError) {
|
|
63
|
-
|
|
123
|
+
let msg = err.message;
|
|
124
|
+
if (err.code === 'INVALID_KEY' || msg.includes('Invalid API key')) {
|
|
125
|
+
msg += API_KEY_URL_SUFFIX;
|
|
126
|
+
}
|
|
127
|
+
outputError(msg, err.code);
|
|
64
128
|
}
|
|
65
129
|
else {
|
|
66
130
|
outputError(String(err));
|
|
@@ -87,31 +151,171 @@ export function registerAuthCommands(program) {
|
|
|
87
151
|
.command('status')
|
|
88
152
|
.description('Show current user info and active project')
|
|
89
153
|
.option('--json', 'Output as JSON')
|
|
154
|
+
.action(authStatusHandler);
|
|
155
|
+
// ap auth switch
|
|
156
|
+
const switchCmd = auth
|
|
157
|
+
.command('switch')
|
|
158
|
+
.description('Switch between saved API key profiles')
|
|
159
|
+
.option('--add', 'Add a new profile')
|
|
160
|
+
.option('--delete', 'Delete a saved profile')
|
|
161
|
+
.option('--name <name>', 'Profile name')
|
|
162
|
+
.option('--key <key>', 'API key for the profile')
|
|
163
|
+
.option('--list', 'List all saved profiles')
|
|
164
|
+
.option('--json', 'Output as JSON')
|
|
165
|
+
.addHelpText('after', `
|
|
166
|
+
Examples:
|
|
167
|
+
ap auth switch --add --name work --key ap_abc123 # save a new profile
|
|
168
|
+
ap auth switch --name work # switch to a saved profile
|
|
169
|
+
ap auth switch --delete --name work # delete a saved profile
|
|
170
|
+
ap auth switch --list # show all saved profiles
|
|
171
|
+
ap auth switch # interactive profile picker`)
|
|
90
172
|
.action(async (options) => {
|
|
91
173
|
initJsonMode(options);
|
|
92
174
|
try {
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
175
|
+
const profiles = getProfiles();
|
|
176
|
+
// --list: show all profiles
|
|
177
|
+
if (options.list) {
|
|
178
|
+
const entries = Object.entries(profiles);
|
|
179
|
+
if (isJsonMode(options)) {
|
|
180
|
+
const activeProfile = getActiveProfile();
|
|
181
|
+
outputJson({
|
|
182
|
+
items: entries.map(([name, p]) => ({
|
|
183
|
+
name,
|
|
184
|
+
label: p.label,
|
|
185
|
+
url: p.url,
|
|
186
|
+
active: name === activeProfile,
|
|
187
|
+
})),
|
|
188
|
+
});
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
if (entries.length === 0) {
|
|
192
|
+
console.log(chalk.dim('No saved profiles. Use `ap auth switch --add --name <name> --key <key>` to add one.'));
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
const activeProfile = getActiveProfile();
|
|
196
|
+
outputTable(['NAME', 'LABEL', 'URL', 'ACTIVE'], entries.map(([name, p]) => [
|
|
197
|
+
name,
|
|
198
|
+
p.label,
|
|
199
|
+
p.url,
|
|
200
|
+
name === activeProfile ? chalk.green('✓') : '',
|
|
201
|
+
]));
|
|
202
|
+
return;
|
|
100
203
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
204
|
+
// --add: save a new profile
|
|
205
|
+
if (options.add) {
|
|
206
|
+
if (!options.name) {
|
|
207
|
+
outputError('--name is required when adding a profile', 'MISSING_NAME');
|
|
208
|
+
process.exit(1);
|
|
209
|
+
}
|
|
210
|
+
if (!options.key) {
|
|
211
|
+
outputError('--key is required when adding a profile', 'MISSING_KEY');
|
|
212
|
+
process.exit(1);
|
|
213
|
+
}
|
|
214
|
+
if (!options.key.startsWith('ap_')) {
|
|
215
|
+
outputError('Invalid API key format. Keys start with "ap_"' + API_KEY_URL_SUFFIX, 'INVALID_KEY');
|
|
216
|
+
process.exit(1);
|
|
217
|
+
}
|
|
218
|
+
// Validate key by calling the API
|
|
219
|
+
const originalKey = getApiKey();
|
|
220
|
+
setApiKey(options.key);
|
|
221
|
+
let label;
|
|
222
|
+
try {
|
|
223
|
+
const me = await api.get('/api/auth/me');
|
|
224
|
+
label = `${me.user.name} (${me.user.email})`;
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
outputError('Could not validate API key' + API_KEY_URL_SUFFIX, 'INVALID_KEY');
|
|
228
|
+
process.exit(1);
|
|
229
|
+
}
|
|
230
|
+
finally {
|
|
231
|
+
// Restore key — we're just saving, not switching
|
|
232
|
+
setApiKey(originalKey);
|
|
233
|
+
}
|
|
234
|
+
const url = process.env.AP_API_URL || 'https://agendapanda.com';
|
|
235
|
+
setProfile(options.name, { key: options.key, url, label });
|
|
236
|
+
if (process.stdout.isTTY) {
|
|
237
|
+
console.log(chalk.green('✓') + ` Profile ${chalk.bold(options.name)} saved (${label})`);
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
outputJson({ success: true, profile: options.name, label });
|
|
241
|
+
}
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
// --delete: remove a saved profile
|
|
245
|
+
if (options.delete) {
|
|
246
|
+
if (!options.name) {
|
|
247
|
+
outputError('--name is required when deleting a profile', 'MISSING_NAME');
|
|
248
|
+
process.exit(1);
|
|
249
|
+
}
|
|
250
|
+
if (!profiles[options.name]) {
|
|
251
|
+
outputError(`Profile "${options.name}" not found. Run \`ap auth switch --list\` to see saved profiles.`, 'PROFILE_NOT_FOUND');
|
|
252
|
+
process.exit(1);
|
|
253
|
+
}
|
|
254
|
+
deleteProfile(options.name);
|
|
255
|
+
// If the deleted profile was active, clear the active profile
|
|
256
|
+
if (getActiveProfile() === options.name) {
|
|
257
|
+
setActiveProfile('');
|
|
258
|
+
}
|
|
259
|
+
if (process.stdout.isTTY) {
|
|
260
|
+
console.log(chalk.green('✓') + ` Profile ${chalk.bold(options.name)} deleted.`);
|
|
110
261
|
}
|
|
111
262
|
else {
|
|
112
|
-
|
|
263
|
+
outputJson({ success: true });
|
|
113
264
|
}
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
// --name <name>: switch directly to a named profile
|
|
268
|
+
if (options.name) {
|
|
269
|
+
const profile = profiles[options.name];
|
|
270
|
+
if (!profile) {
|
|
271
|
+
outputError(`Profile "${options.name}" not found. Run \`ap auth switch --list\` to see saved profiles.`, 'PROFILE_NOT_FOUND');
|
|
272
|
+
process.exit(1);
|
|
273
|
+
}
|
|
274
|
+
setApiKey(profile.key);
|
|
275
|
+
setApiUrl(profile.url);
|
|
276
|
+
setActiveProfile(options.name);
|
|
277
|
+
if (process.stdout.isTTY) {
|
|
278
|
+
console.log(chalk.green('✓') + ` Switched to profile ${chalk.bold(options.name)} (${profile.label})`);
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
outputJson({ success: true, profile: options.name, label: profile.label });
|
|
282
|
+
}
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
// No flags: interactive menu
|
|
286
|
+
const entries = Object.entries(profiles);
|
|
287
|
+
if (entries.length === 0) {
|
|
288
|
+
console.log(chalk.dim('No saved profiles. Use `ap auth switch --add --name <name> --key <key>` to add one.'));
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
if (!process.stdin.isTTY) {
|
|
292
|
+
outputError('No --name provided and stdin is not interactive. Use `ap auth switch --name <name>`.', 'MISSING_NAME');
|
|
293
|
+
process.exit(1);
|
|
294
|
+
}
|
|
295
|
+
const activeProfile = getActiveProfile();
|
|
296
|
+
console.log(chalk.bold('Select a profile:'));
|
|
297
|
+
entries.forEach(([name, p], i) => {
|
|
298
|
+
const marker = name === activeProfile ? chalk.green(' (active)') : '';
|
|
299
|
+
console.log(` ${i + 1}) ${name} — ${p.label}${marker}`);
|
|
300
|
+
});
|
|
301
|
+
const readline = await import('readline');
|
|
302
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stderr });
|
|
303
|
+
const answer = await new Promise((resolve) => {
|
|
304
|
+
rl.question('Enter number: ', (ans) => {
|
|
305
|
+
rl.close();
|
|
306
|
+
resolve(ans.trim());
|
|
307
|
+
});
|
|
308
|
+
});
|
|
309
|
+
const idx = parseInt(answer, 10) - 1;
|
|
310
|
+
if (isNaN(idx) || idx < 0 || idx >= entries.length) {
|
|
311
|
+
outputError('Invalid selection', 'INVALID_SELECTION');
|
|
312
|
+
process.exit(1);
|
|
114
313
|
}
|
|
314
|
+
const [selectedName, selectedProfile] = entries[idx];
|
|
315
|
+
setApiKey(selectedProfile.key);
|
|
316
|
+
setApiUrl(selectedProfile.url);
|
|
317
|
+
setActiveProfile(selectedName);
|
|
318
|
+
console.log(chalk.green('✓') + ` Switched to profile ${chalk.bold(selectedName)} (${selectedProfile.label})`);
|
|
115
319
|
}
|
|
116
320
|
catch (err) {
|
|
117
321
|
if (err instanceof ApiError) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { api, ApiError } from '../lib/api.js';
|
|
|
5
5
|
import { getActiveProject } from '../lib/config.js';
|
|
6
6
|
import { filenameFromPath, guessMimeTypeFromPath } from '../lib/media.js';
|
|
7
7
|
import { initJsonMode, isJsonMode, outputJson, outputTable, outputError } from '../lib/output.js';
|
|
8
|
+
import { MISSING_PROJECT_MSG } from '../lib/errors.js';
|
|
8
9
|
function computeIdempotencyKey(projectId, connectionId, content, scheduledAt) {
|
|
9
10
|
const normalized = [
|
|
10
11
|
projectId,
|
|
@@ -77,13 +78,17 @@ export function registerCalendarCommands(program) {
|
|
|
77
78
|
.option('--project <id>', 'Override active project')
|
|
78
79
|
.option('--dry-run', 'Show what would be created without actually creating')
|
|
79
80
|
.option('--json', 'Output as JSON')
|
|
81
|
+
.addHelpText('after', `
|
|
82
|
+
Examples:
|
|
83
|
+
ap calendar import --file posts.json # import posts from file
|
|
84
|
+
ap calendar import --file posts.json --dry-run # preview without creating`)
|
|
80
85
|
.action(async (options) => {
|
|
81
86
|
initJsonMode(options);
|
|
82
87
|
try {
|
|
83
88
|
// Resolve project
|
|
84
89
|
const projectId = options.project || getActiveProject();
|
|
85
90
|
if (!projectId) {
|
|
86
|
-
outputError(
|
|
91
|
+
outputError(MISSING_PROJECT_MSG, 'MISSING_PROJECT');
|
|
87
92
|
process.exit(1);
|
|
88
93
|
}
|
|
89
94
|
// Read and parse file
|
|
@@ -268,7 +273,7 @@ export function registerCalendarCommands(program) {
|
|
|
268
273
|
// Resolve project
|
|
269
274
|
const projectId = options.project || getActiveProject();
|
|
270
275
|
if (!projectId) {
|
|
271
|
-
outputError(
|
|
276
|
+
outputError(MISSING_PROJECT_MSG, 'MISSING_PROJECT');
|
|
272
277
|
process.exit(1);
|
|
273
278
|
}
|
|
274
279
|
// Permission check — fetch project and verify editor+ role
|
|
@@ -818,7 +823,7 @@ export function registerCalendarCommands(program) {
|
|
|
818
823
|
try {
|
|
819
824
|
const projectId = options.project || getActiveProject();
|
|
820
825
|
if (!projectId) {
|
|
821
|
-
outputError(
|
|
826
|
+
outputError(MISSING_PROJECT_MSG, 'MISSING_PROJECT');
|
|
822
827
|
process.exit(1);
|
|
823
828
|
}
|
|
824
829
|
// Validate date filters
|