@doist/outline-cli 0.0.1 → 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 (67) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +130 -29
  3. package/dist/commands/auth.d.ts +2 -0
  4. package/dist/commands/auth.js +176 -0
  5. package/dist/commands/auth.js.map +1 -0
  6. package/dist/commands/collection.d.ts +2 -0
  7. package/dist/commands/collection.js +106 -0
  8. package/dist/commands/collection.js.map +1 -0
  9. package/dist/commands/document.d.ts +2 -0
  10. package/dist/commands/document.js +191 -0
  11. package/dist/commands/document.js.map +1 -0
  12. package/dist/commands/search.d.ts +2 -0
  13. package/dist/commands/search.js +42 -0
  14. package/dist/commands/search.js.map +1 -0
  15. package/dist/commands/skill.d.ts +2 -0
  16. package/dist/commands/skill.js +80 -0
  17. package/dist/commands/skill.js.map +1 -0
  18. package/dist/index.d.ts +2 -0
  19. package/dist/index.js +27 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/lib/api.d.ts +14 -0
  22. package/dist/lib/api.js +62 -0
  23. package/dist/lib/api.js.map +1 -0
  24. package/dist/lib/auth.d.ts +6 -0
  25. package/dist/lib/auth.js +70 -0
  26. package/dist/lib/auth.js.map +1 -0
  27. package/dist/lib/markdown.d.ts +1 -0
  28. package/dist/lib/markdown.js +7 -0
  29. package/dist/lib/markdown.js.map +1 -0
  30. package/dist/lib/oauth-server.d.ts +14 -0
  31. package/dist/lib/oauth-server.js +203 -0
  32. package/dist/lib/oauth-server.js.map +1 -0
  33. package/dist/lib/oauth.d.ts +17 -0
  34. package/dist/lib/oauth.js +38 -0
  35. package/dist/lib/oauth.js.map +1 -0
  36. package/dist/lib/output.d.ts +11 -0
  37. package/dist/lib/output.js +60 -0
  38. package/dist/lib/output.js.map +1 -0
  39. package/dist/lib/pkce.d.ts +3 -0
  40. package/dist/lib/pkce.js +16 -0
  41. package/dist/lib/pkce.js.map +1 -0
  42. package/dist/lib/refs.d.ts +33 -0
  43. package/dist/lib/refs.js +178 -0
  44. package/dist/lib/refs.js.map +1 -0
  45. package/dist/lib/skills/content.d.ts +3 -0
  46. package/dist/lib/skills/content.js +100 -0
  47. package/dist/lib/skills/content.js.map +1 -0
  48. package/dist/lib/skills/create-installer.d.ts +8 -0
  49. package/dist/lib/skills/create-installer.js +77 -0
  50. package/dist/lib/skills/create-installer.js.map +1 -0
  51. package/dist/lib/skills/index.d.ts +5 -0
  52. package/dist/lib/skills/index.js +40 -0
  53. package/dist/lib/skills/index.js.map +1 -0
  54. package/dist/lib/skills/types.d.ts +10 -0
  55. package/dist/lib/skills/types.js +2 -0
  56. package/dist/lib/skills/types.js.map +1 -0
  57. package/dist/lib/skills/update-installed.d.ts +6 -0
  58. package/dist/lib/skills/update-installed.js +23 -0
  59. package/dist/lib/skills/update-installed.js.map +1 -0
  60. package/dist/lib/spinner.d.ts +13 -0
  61. package/dist/lib/spinner.js +56 -0
  62. package/dist/lib/spinner.js.map +1 -0
  63. package/dist/postinstall.d.ts +1 -0
  64. package/dist/postinstall.js +16 -0
  65. package/dist/postinstall.js.map +1 -0
  66. package/package.json +65 -8
  67. package/scripts/postinstall.js +12 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,22 @@
1
+ ## [1.0.1](https://github.com/Doist/outline-cli/compare/v1.0.0...v1.0.1) (2026-03-25)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * correct skill name and quote YAML description ([#38](https://github.com/Doist/outline-cli/issues/38)) ([e0e4fa4](https://github.com/Doist/outline-cli/commit/e0e4fa435dcfc89b1e29e4b8d02d6ba911dfdb7f))
7
+
8
+ # 1.0.0 (2026-03-25)
9
+
10
+ ### Bug Fixes
11
+
12
+ - broaden CI detection to handle all truthy values ([7dc2806](https://github.com/Doist/outline-cli/commit/7dc2806a344d8be841fb9fae80dce59dc6667fac))
13
+ - exclude dist from biome checks ([0dc49a3](https://github.com/Doist/outline-cli/commit/0dc49a38515ae75005f253413b171c6c6b48e99a))
14
+
15
+ ### Features
16
+
17
+ - add API Spinner Proxy ([#17](https://github.com/Doist/outline-cli/issues/17)) ([a3bc75a](https://github.com/Doist/outline-cli/commit/a3bc75afaf81b684703b0e821d5fec0cf05a29cb))
18
+ - add fuzzy reference resolution ([#19](https://github.com/Doist/outline-cli/issues/19)) ([6c1c6f9](https://github.com/Doist/outline-cli/commit/6c1c6f97762809ddf3e4d912892c3582cf9f8b36))
19
+ - add npm publishing, new agent skills, and skill auto-update ([#36](https://github.com/Doist/outline-cli/issues/36)) ([bcb2e75](https://github.com/Doist/outline-cli/commit/bcb2e7593447ca35069316636cbfda02bb86fb91)), closes [Doist/todoist-cli#176](https://github.com/Doist/todoist-cli/issues/176) [Doist/bob-cli#17](https://github.com/Doist/bob-cli/issues/17) [Doist/twist-cli#101](https://github.com/Doist/twist-cli/issues/101)
20
+ - add structured error formatting with codes and hints ([#18](https://github.com/Doist/outline-cli/issues/18)) ([17658d2](https://github.com/Doist/outline-cli/commit/17658d2a66d30939146b1fb5625782df122ff315))
21
+ - implement OAuth PKCE browser login ([#20](https://github.com/Doist/outline-cli/issues/20)) ([b7f6eec](https://github.com/Doist/outline-cli/commit/b7f6eec84250b6d8ceea5e5f1b282bdb550b8092)), closes [#7](https://github.com/Doist/outline-cli/issues/7) [outline/outline#11254](https://github.com/outline/outline/issues/11254)
22
+ - improve oauth login inputs and callback UX ([#31](https://github.com/Doist/outline-cli/issues/31)) ([3011b28](https://github.com/Doist/outline-cli/commit/3011b28a2f3a0b04460ad8def9ed39426b7a1df3))
package/README.md CHANGED
@@ -1,45 +1,146 @@
1
- # @doist/outline-cli
1
+ # Outline CLI
2
2
 
3
- ## ⚠️ IMPORTANT NOTICE ⚠️
3
+ CLI for the [Outline](https://www.getoutline.com) wiki/knowledge base API.
4
4
 
5
- **This package is created solely for the purpose of setting up OIDC (OpenID Connect) trusted publishing with npm.**
5
+ ## Installation
6
6
 
7
- This is **NOT** a functional package and contains **NO** code or functionality beyond the OIDC setup configuration.
7
+ > ```bash
8
+ > npm install -g @doist/outline-cli
9
+ > ```
8
10
 
9
- ## Purpose
11
+ ### Agent Skills
10
12
 
11
- This package exists to:
12
- 1. Configure OIDC trusted publishing for the package name `@doist/outline-cli`
13
- 2. Enable secure, token-less publishing from CI/CD workflows
14
- 3. Establish provenance for packages published under this name
13
+ Install skills for your coding agent:
15
14
 
16
- ## What is OIDC Trusted Publishing?
15
+ ```bash
16
+ ol skill install claude-code
17
+ ol skill install codex
18
+ ol skill install cursor
19
+ ol skill install gemini
20
+ ol skill install pi
21
+ ol skill install universal
22
+ ```
17
23
 
18
- OIDC trusted publishing allows package maintainers to publish packages directly from their CI/CD workflows without needing to manage npm access tokens. Instead, it uses OpenID Connect to establish trust between the CI/CD provider (like GitHub Actions) and npm.
24
+ Skills are installed to `~/<agent-dir>/skills/outline-cli/SKILL.md` (e.g. `~/.claude/` for claude-code, `~/.agents/` for universal, etc.). When updating the CLI, installed skills are updated automatically. The `universal` agent is compatible with Amp, OpenCode, and other agents that read from `~/.agents/`.
19
25
 
20
- ## Setup Instructions
26
+ ```bash
27
+ ol skill list
28
+ ol skill uninstall <agent>
29
+ ```
21
30
 
22
- To properly configure OIDC trusted publishing for this package:
31
+ ## Uninstallation
23
32
 
24
- 1. Go to [npmjs.com](https://www.npmjs.com/) and navigate to your package settings
25
- 2. Configure the trusted publisher (e.g., GitHub Actions)
26
- 3. Specify the repository and workflow that should be allowed to publish
27
- 4. Use the configured workflow to publish your actual package
33
+ First, remove any installed agent skills:
28
34
 
29
- ## DO NOT USE THIS PACKAGE
35
+ ```bash
36
+ ol skill uninstall <agent>
37
+ ```
30
38
 
31
- This package is a placeholder for OIDC configuration only. It:
32
- - Contains no executable code
33
- - Provides no functionality
34
- - Should not be installed as a dependency
35
- - Exists only for administrative purposes
39
+ Then uninstall the CLI:
36
40
 
37
- ## More Information
41
+ ```bash
42
+ npm uninstall -g @doist/outline-cli
43
+ ```
38
44
 
39
- For more details about npm's trusted publishing feature, see:
40
- - [npm Trusted Publishing Documentation](https://docs.npmjs.com/generating-provenance-statements)
41
- - [GitHub Actions OIDC Documentation](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect)
45
+ ## Local Setup
42
46
 
43
- ---
47
+ ```bash
48
+ git clone https://github.com/Doist/outline-cli.git
49
+ cd outline-cli
50
+ npm install
51
+ npm run build
52
+ npm link
53
+ ```
44
54
 
45
- **Maintained for OIDC setup purposes only**
55
+ ## Setup
56
+
57
+ ### OAuth login (recommended)
58
+
59
+ ```bash
60
+ ol auth login
61
+ ol auth login --base-url <your-outline-url>
62
+ ol auth login --client-id <your-client-id>
63
+ ol auth login --callback-port 54969
64
+ ol auth status
65
+ ol auth logout
66
+ ```
67
+
68
+ **Setup:**
69
+
70
+ 1. Create a public OAuth app in Outline (Settings → Applications)
71
+ 2. Set the redirect URI to `http://localhost:54969/callback`
72
+ 3. Run `ol auth login` and enter your OAuth client ID when prompted
73
+ (or pass it directly with `--client-id <your-client-id>`)
74
+ 4. If needed, pass `--base-url <your-outline-url>` or set `OUTLINE_URL`
75
+ (for self-hosted instances or non-default URLs)
76
+ 5. If needed, pass `--callback-port <port>` or set `OUTLINE_OAUTH_CALLBACK_PORT`
77
+ and register `http://localhost:<port>/callback` in your OAuth app
78
+
79
+ The client ID is saved for future logins. You can also set `OUTLINE_OAUTH_CLIENT_ID`
80
+ for your local environment.
81
+
82
+ ### Manual token login
83
+
84
+ If you prefer using an API token directly:
85
+
86
+ ```bash
87
+ ol auth login --token <your-api-token>
88
+ ```
89
+
90
+ Generate a token in Outline under Settings → API Tokens.
91
+
92
+ ### Configuration
93
+
94
+ Token resolution: `OUTLINE_API_TOKEN` env var → `~/.config/outline-cli/config.json`.
95
+
96
+ Base URL resolution: `OUTLINE_URL` env var → config file → `https://app.getoutline.com`.
97
+
98
+ Callback port resolution for OAuth login:
99
+ `--callback-port` → `OUTLINE_OAUTH_CALLBACK_PORT` → `54969`.
100
+
101
+ Self-hosted instances: pass `--base-url` or set `OUTLINE_URL` (you can still provide it interactively).
102
+
103
+ ## Commands
104
+
105
+ ```bash
106
+ # Search
107
+ ol search "query" --limit 10 --collection <id> --status published
108
+
109
+ # Documents (alias: ol doc)
110
+ ol document list --collection <id> --sort updatedAt --direction DESC
111
+ ol document get <urlId> # renders markdown for terminal
112
+ ol document get <urlId> --raw # outputs raw markdown
113
+ ol document open <urlId> # opens in browser
114
+ ol document create --title "Title" --collection <id> --file doc.md --publish
115
+ ol document update <urlId> --file updated.md
116
+ ol document delete <urlId> --confirm
117
+ ol document move <urlId> --collection <target-id>
118
+ ol document archive <urlId>
119
+ ol document unarchive <urlId>
120
+
121
+ # Collections (alias: ol col)
122
+ ol collection list
123
+ ol collection get <id>
124
+ ol collection create --name "Engineering" --color "#4CAF50"
125
+ ol collection update <id> --name "New Name"
126
+ ol collection delete <id> --confirm
127
+ ```
128
+
129
+ ## Output modes
130
+
131
+ All commands support:
132
+
133
+ - Default: colored human-readable output
134
+ - `--json`: pretty-printed JSON (essential fields)
135
+ - `--json --full`: all fields
136
+ - `--ndjson`: one JSON object per line (for piping)
137
+
138
+ ## Development
139
+
140
+ ```bash
141
+ npm install
142
+ npm run dev # watch mode
143
+ npm run type-check # typecheck without emitting
144
+ npm run test # run tests
145
+ npm run build # compile to dist/
146
+ ```
@@ -0,0 +1,2 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerAuthCommand(program: Command): void;
@@ -0,0 +1,176 @@
1
+ import { createInterface } from 'node:readline/promises';
2
+ import chalk from 'chalk';
3
+ import open from 'open';
4
+ import { apiRequest } from '../lib/api.js';
5
+ import { clearConfig, getBaseUrl, getOAuthClientId, getTokenSource, saveConfig, } from '../lib/auth.js';
6
+ import { DEFAULT_OAUTH_CALLBACK_PORT, startOAuthCallbackServer } from '../lib/oauth-server.js';
7
+ import { buildAuthorizationUrl, exchangeCodeForToken } from '../lib/oauth.js';
8
+ import { formatError } from '../lib/output.js';
9
+ import { generateCodeChallenge, generateCodeVerifier, generateState } from '../lib/pkce.js';
10
+ async function prompt(question) {
11
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
12
+ try {
13
+ return await rl.question(question);
14
+ }
15
+ finally {
16
+ rl.close();
17
+ }
18
+ }
19
+ function parseCallbackPort(rawPort) {
20
+ const parsed = Number(rawPort);
21
+ if (!Number.isInteger(parsed) || parsed < 1 || parsed > 65_535) {
22
+ return null;
23
+ }
24
+ return parsed;
25
+ }
26
+ export function registerAuthCommand(program) {
27
+ const auth = program.command('auth').description('Manage authentication');
28
+ auth.command('login')
29
+ .description('Authenticate with an Outline instance')
30
+ .option('--token <token>', 'Authenticate using a personal API token')
31
+ .option('--base-url <url>', 'Outline base URL to use for this login (saved for future logins)')
32
+ .option('--client-id <clientId>', 'OAuth client ID to use for this login (saved for future logins)')
33
+ .option('--callback-port <port>', `Local OAuth callback port (default: ${DEFAULT_OAUTH_CALLBACK_PORT})`)
34
+ .action(async (options) => {
35
+ const configuredBaseUrl = getBaseUrl();
36
+ const optionBaseUrl = options.baseUrl?.trim();
37
+ const envBaseUrl = process.env.OUTLINE_URL?.trim();
38
+ let url = optionBaseUrl || envBaseUrl;
39
+ if (!url) {
40
+ const baseUrlInput = await prompt(`Base URL (default: ${configuredBaseUrl}): `);
41
+ url = baseUrlInput.trim() || configuredBaseUrl;
42
+ }
43
+ url = url.replace(/\/$/, '');
44
+ const optionClientId = options.clientId?.trim();
45
+ const optionCallbackPort = options.callbackPort?.trim();
46
+ const envCallbackPort = process.env.OUTLINE_OAUTH_CALLBACK_PORT?.trim();
47
+ const rawCallbackPort = optionCallbackPort || envCallbackPort;
48
+ let callbackPort = DEFAULT_OAUTH_CALLBACK_PORT;
49
+ if (rawCallbackPort) {
50
+ const parsedPort = parseCallbackPort(rawCallbackPort);
51
+ if (!parsedPort) {
52
+ console.error(formatError('OAUTH_CALLBACK_PORT_INVALID', `Invalid callback port: ${rawCallbackPort}`, [
53
+ 'Use an integer between 1 and 65535',
54
+ 'Set via --callback-port or OUTLINE_OAUTH_CALLBACK_PORT',
55
+ ]));
56
+ process.exit(1);
57
+ }
58
+ callbackPort = parsedPort;
59
+ }
60
+ if (options.token) {
61
+ saveConfig(options.token.trim(), url, optionClientId);
62
+ try {
63
+ const { data } = await apiRequest('auth.info');
64
+ console.log(chalk.green(`Authenticated to ${data.team.name} as ${data.user.name}`));
65
+ }
66
+ catch (err) {
67
+ console.log(chalk.yellow('Token saved, but could not verify:'), err.message);
68
+ }
69
+ return;
70
+ }
71
+ const existingClientId = getOAuthClientId();
72
+ let clientId = optionClientId || existingClientId;
73
+ if (!clientId) {
74
+ const clientIdInput = await prompt('OAuth Client ID: ');
75
+ clientId = clientIdInput.trim();
76
+ }
77
+ if (!clientId) {
78
+ console.error(formatError('OAUTH_CLIENT_ID_REQUIRED', 'OAuth client ID is required.', [
79
+ 'Create a public OAuth app in Outline settings',
80
+ 'Use --client-id <id> for this login',
81
+ 'Set OUTLINE_OAUTH_CLIENT_ID or enter it here',
82
+ ]));
83
+ process.exit(1);
84
+ }
85
+ const codeVerifier = generateCodeVerifier();
86
+ const codeChallenge = generateCodeChallenge(codeVerifier);
87
+ const state = generateState();
88
+ let callbackServer;
89
+ try {
90
+ callbackServer = await startOAuthCallbackServer({
91
+ state,
92
+ port: callbackPort,
93
+ });
94
+ }
95
+ catch (err) {
96
+ const error = err;
97
+ const hints = [
98
+ `Ensure http://localhost:${callbackPort}/callback is reachable from your browser`,
99
+ "Re-run with 'ol auth login --token <token>' for manual auth",
100
+ ];
101
+ if (error.code === 'EADDRINUSE') {
102
+ hints.unshift(`Port ${callbackPort} is already in use. Close the other process using it.`);
103
+ }
104
+ console.error(formatError('OAUTH_CALLBACK_SERVER_FAILED', `Could not start local OAuth callback server: ${error.message}`, hints));
105
+ process.exit(1);
106
+ }
107
+ const authorizationUrl = buildAuthorizationUrl({
108
+ baseUrl: url,
109
+ clientId,
110
+ redirectUri: callbackServer.redirectUri,
111
+ codeChallenge,
112
+ state,
113
+ });
114
+ try {
115
+ await open(authorizationUrl);
116
+ }
117
+ catch (err) {
118
+ console.log(chalk.yellow('Could not open browser automatically.'), chalk.dim(authorizationUrl));
119
+ console.log(chalk.dim(err.message));
120
+ }
121
+ console.log(chalk.dim('Waiting for OAuth authorization...'));
122
+ try {
123
+ const code = await callbackServer.waitForCode;
124
+ const token = await exchangeCodeForToken({
125
+ baseUrl: url,
126
+ clientId,
127
+ redirectUri: callbackServer.redirectUri,
128
+ codeVerifier,
129
+ code,
130
+ });
131
+ saveConfig(token, url, clientId);
132
+ const { data } = await apiRequest('auth.info');
133
+ console.log(chalk.green(`Authenticated to ${data.team.name} as ${data.user.name}`));
134
+ }
135
+ catch (err) {
136
+ callbackServer.close();
137
+ console.error(formatError('OAUTH_LOGIN_FAILED', `OAuth login failed: ${err.message}`, [
138
+ 'Confirm the OAuth app redirect URI matches the CLI callback',
139
+ 'Verify --base-url or OUTLINE_URL points to your Outline instance',
140
+ "Re-run with 'ol auth login --token' for manual auth",
141
+ ]));
142
+ process.exit(1);
143
+ }
144
+ });
145
+ auth.command('status')
146
+ .description('Show current authentication state')
147
+ .action(async () => {
148
+ const source = getTokenSource();
149
+ if (!source) {
150
+ console.log(chalk.yellow('Not authenticated. Run: ol auth login'));
151
+ return;
152
+ }
153
+ console.log(chalk.dim(`Token source: ${source}`));
154
+ console.log(chalk.dim(`Base URL: ${getBaseUrl()}`));
155
+ try {
156
+ const { data } = await apiRequest('auth.info');
157
+ console.log(`Team: ${chalk.bold(data.team.name)}`);
158
+ console.log(`User: ${data.user.name} (${data.user.email})`);
159
+ }
160
+ catch (err) {
161
+ console.error(formatError('AUTH_VERIFICATION_FAILED', `Could not fetch auth info: ${err.message}`, [
162
+ 'Check that your API token is valid',
163
+ 'Verify the base URL is correct',
164
+ "Run 'ol auth login' to re-authenticate",
165
+ ]));
166
+ process.exit(1);
167
+ }
168
+ });
169
+ auth.command('logout')
170
+ .description('Clear saved authentication')
171
+ .action(() => {
172
+ clearConfig();
173
+ console.log('Logged out.');
174
+ });
175
+ }
176
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerCollectionCommand(program: Command): void;
@@ -0,0 +1,106 @@
1
+ import chalk from 'chalk';
2
+ import { apiRequest } from '../lib/api.js';
3
+ import { formatError, getOutputOptions, outputItem, outputList } from '../lib/output.js';
4
+ import { resolveCollectionId, resolveCollectionRef } from '../lib/refs.js';
5
+ const essentialKeys = ['id', 'name', 'description', 'color', 'documentCount'];
6
+ function formatCollection(col) {
7
+ const name = chalk.bold(col.name);
8
+ const id = chalk.dim(col.id);
9
+ const count = chalk.dim(`${col.documentCount} docs`);
10
+ return `${name} ${id} ${count}`;
11
+ }
12
+ export function registerCollectionCommand(program) {
13
+ const col = program.command('collection').alias('col').description('Manage collections');
14
+ col.command('list')
15
+ .description('List collections')
16
+ .option('--limit <n>', 'Max results', '25')
17
+ .option('--offset <n>', 'Pagination offset', '0')
18
+ .option('--json', 'Output JSON')
19
+ .option('--ndjson', 'Output NDJSON')
20
+ .option('--full', 'Include all fields in JSON output')
21
+ .action(async (opts) => {
22
+ const { data, pagination } = await apiRequest('collections.list', {
23
+ limit: Number(opts.limit),
24
+ offset: Number(opts.offset),
25
+ });
26
+ outputList(data, formatCollection, essentialKeys, getOutputOptions(opts), pagination);
27
+ });
28
+ col.command('get <id>')
29
+ .description('Get collection details by ID or name')
30
+ .option('--json', 'Output JSON')
31
+ .option('--full', 'Include all fields in JSON output')
32
+ .action(async (id, opts) => {
33
+ const resolved = await resolveCollectionRef(id);
34
+ // If resolved from name search (collections.list), some fields may be missing
35
+ let data;
36
+ if (resolved.documentCount !== undefined) {
37
+ data = resolved;
38
+ }
39
+ else {
40
+ const response = await apiRequest('collections.info', {
41
+ id: resolved.id,
42
+ });
43
+ data = response.data;
44
+ }
45
+ outputItem(data, formatCollection, essentialKeys, getOutputOptions(opts));
46
+ });
47
+ col.command('create')
48
+ .description('Create a collection')
49
+ .requiredOption('--name <name>', 'Collection name')
50
+ .option('--description <text>', 'Description')
51
+ .option('--color <hex>', 'Color hex code')
52
+ .option('--private', 'Make private')
53
+ .option('--json', 'Output JSON')
54
+ .action(async (opts) => {
55
+ const body = { name: opts.name };
56
+ if (opts.description)
57
+ body.description = opts.description;
58
+ if (opts.color)
59
+ body.color = opts.color;
60
+ if (opts.private)
61
+ body.permission = '';
62
+ const { data } = await apiRequest('collections.create', body);
63
+ if (opts.json) {
64
+ outputItem(data, formatCollection, essentialKeys, { json: true });
65
+ }
66
+ else {
67
+ console.log(chalk.green(`Created: ${data.name}`), chalk.dim(data.id));
68
+ }
69
+ });
70
+ col.command('update <id>')
71
+ .description('Update a collection')
72
+ .option('--name <name>', 'New name')
73
+ .option('--description <text>', 'New description')
74
+ .option('--color <hex>', 'New color')
75
+ .option('--json', 'Output JSON')
76
+ .action(async (id, opts) => {
77
+ const resolvedId = await resolveCollectionId(id);
78
+ const body = { id: resolvedId };
79
+ if (opts.name)
80
+ body.name = opts.name;
81
+ if (opts.description)
82
+ body.description = opts.description;
83
+ if (opts.color)
84
+ body.color = opts.color;
85
+ const { data } = await apiRequest('collections.update', body);
86
+ if (opts.json) {
87
+ outputItem(data, formatCollection, essentialKeys, { json: true });
88
+ }
89
+ else {
90
+ console.log(chalk.green(`Updated: ${data.name}`), chalk.dim(data.id));
91
+ }
92
+ });
93
+ col.command('delete <id>')
94
+ .description('Delete a collection')
95
+ .option('--confirm', 'Skip confirmation')
96
+ .action(async (id, opts) => {
97
+ if (!opts.confirm) {
98
+ console.error(formatError('CONFIRMATION_REQUIRED', 'Delete operation requires confirmation.', ['Use --confirm flag to proceed with deletion']));
99
+ process.exit(1);
100
+ }
101
+ const resolvedId = await resolveCollectionId(id);
102
+ await apiRequest('collections.delete', { id: resolvedId });
103
+ console.log('Deleted.');
104
+ });
105
+ }
106
+ //# sourceMappingURL=collection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection.js","sourceRoot":"","sources":["../../src/commands/collection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerDocumentCommand(program: Command): void;