@rool-dev/cli 0.1.9-dev.ffef516 → 0.1.10-dev.4204061

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 (52) hide show
  1. package/README.md +50 -16
  2. package/dist/app.d.ts +3 -0
  3. package/dist/app.d.ts.map +1 -0
  4. package/dist/app.js +160 -0
  5. package/dist/app.js.map +1 -0
  6. package/dist/chat.d.ts +2 -1
  7. package/dist/chat.d.ts.map +1 -1
  8. package/dist/chat.js +52 -35
  9. package/dist/chat.js.map +1 -1
  10. package/dist/client.d.ts +5 -0
  11. package/dist/client.d.ts.map +1 -0
  12. package/dist/client.js +16 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/constants.d.ts +5 -0
  15. package/dist/constants.d.ts.map +1 -0
  16. package/dist/constants.js +8 -0
  17. package/dist/constants.js.map +1 -0
  18. package/dist/format.d.ts +1 -0
  19. package/dist/format.d.ts.map +1 -1
  20. package/dist/format.js +7 -0
  21. package/dist/format.js.map +1 -1
  22. package/dist/index.js +4 -52
  23. package/dist/index.js.map +1 -1
  24. package/dist/logout.d.ts +2 -1
  25. package/dist/logout.d.ts.map +1 -1
  26. package/dist/logout.js +26 -22
  27. package/dist/logout.js.map +1 -1
  28. package/dist/media.d.ts +2 -1
  29. package/dist/media.d.ts.map +1 -1
  30. package/dist/media.js +69 -98
  31. package/dist/media.js.map +1 -1
  32. package/dist/program.d.ts +3 -0
  33. package/dist/program.d.ts.map +1 -0
  34. package/dist/program.js +23 -0
  35. package/dist/program.js.map +1 -0
  36. package/dist/space.d.ts +2 -1
  37. package/dist/space.d.ts.map +1 -1
  38. package/dist/space.js +94 -98
  39. package/dist/space.js.map +1 -1
  40. package/dist/user.d.ts +2 -1
  41. package/dist/user.d.ts.map +1 -1
  42. package/dist/user.js +28 -25
  43. package/dist/user.js.map +1 -1
  44. package/package.json +5 -2
  45. package/dist/args.d.ts +0 -12
  46. package/dist/args.d.ts.map +0 -1
  47. package/dist/args.js +0 -49
  48. package/dist/args.js.map +0 -1
  49. package/dist/publish.d.ts +0 -2
  50. package/dist/publish.d.ts.map +0 -1
  51. package/dist/publish.js +0 -195
  52. package/dist/publish.js.map +0 -1
package/dist/logout.js CHANGED
@@ -1,24 +1,28 @@
1
- import { RoolClient } from '@rool-dev/sdk';
2
- import { NodeAuthProvider } from '@rool-dev/sdk/node';
3
- import { parseArgs } from './args.js';
4
- export async function logout(args) {
5
- const { url: apiUrl, rest } = parseArgs(args);
6
- if (rest.length > 0) {
7
- console.error('Usage: rool logout [options]');
8
- console.error('');
9
- console.error('Options:');
10
- console.error(' -u, --url <url> API URL (default: https://api.rool.dev)');
11
- process.exit(1);
12
- }
13
- const authProvider = new NodeAuthProvider();
14
- const client = new RoolClient({ baseUrl: apiUrl, authProvider });
15
- if (!await client.isAuthenticated()) {
16
- console.log('Not logged in.');
17
- }
18
- else {
19
- client.logout();
20
- console.log('Logged out.');
21
- }
22
- client.destroy();
1
+ import { getClient } from './client.js';
2
+ import { DEFAULT_API_URL } from './constants.js';
3
+ export function registerLogout(program) {
4
+ program
5
+ .command('logout')
6
+ .description('Log out')
7
+ .option('-u, --url <url>', 'API URL', DEFAULT_API_URL)
8
+ .addHelpText('after', `
9
+ Examples:
10
+ # Log out
11
+ $ rool logout`)
12
+ .action(async (opts) => {
13
+ const client = await getClient(opts.url, { autoLogin: false });
14
+ try {
15
+ if (!await client.isAuthenticated()) {
16
+ console.log('Not logged in.');
17
+ }
18
+ else {
19
+ client.logout();
20
+ console.log('Logged out.');
21
+ }
22
+ }
23
+ finally {
24
+ client.destroy();
25
+ }
26
+ });
23
27
  }
24
28
  //# sourceMappingURL=logout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logout.js","sourceRoot":"","sources":["../src/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAc;IACzC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE9C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC9C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAEjE,IAAI,CAAC,MAAM,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../src/logout.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,SAAS,CAAC;SACtB,MAAM,CAAC,iBAAiB,EAAE,SAAS,EAAE,eAAe,CAAC;SACrD,WAAW,CAAC,OAAO,EAAE;;;gBAGV,CAAC;SACZ,MAAM,CAAC,KAAK,EAAE,IAAqB,EAAE,EAAE;QACtC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
package/dist/media.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- export declare function media(args: string[]): Promise<void>;
1
+ import { type Command } from 'commander';
2
+ export declare function registerMedia(program: Command): void;
2
3
  //# sourceMappingURL=media.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"AAqHA,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CASzD"}
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAazC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6EpD"}
package/dist/media.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import { execSync } from 'node:child_process';
2
2
  import * as fs from 'node:fs';
3
3
  import * as path from 'node:path';
4
- import { RoolClient } from '@rool-dev/sdk';
5
- import { NodeAuthProvider } from '@rool-dev/sdk/node';
6
- import { parseArgs, printCommonOptions } from './args.js';
4
+ import { getClient } from './client.js';
5
+ import { formatBytes } from './format.js';
6
+ import { DEFAULT_API_URL, DEFAULT_SPACE_NAME } from './constants.js';
7
7
  function getContentType(filePath) {
8
8
  try {
9
9
  return execSync(`file --mime-type -b "${filePath}"`, { encoding: 'utf-8' }).trim();
@@ -12,101 +12,72 @@ function getContentType(filePath) {
12
12
  return 'application/octet-stream';
13
13
  }
14
14
  }
15
- function formatSize(bytes) {
16
- if (bytes < 1024)
17
- return `${bytes} B`;
18
- if (bytes < 1024 * 1024)
19
- return `${(bytes / 1024).toFixed(1)} KB`;
20
- return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
21
- }
22
- function printUsage() {
23
- console.error('Usage: rool media upload <file> [options]');
24
- console.error('');
25
- console.error('Upload a file to a space and create an object with the media URL.');
26
- console.error('');
27
- console.error('Options:');
28
- console.error(' -m, --message <text> Optional comment/description');
29
- printCommonOptions();
30
- console.error('');
31
- console.error('Examples:');
32
- console.error(' rool media upload photo.jpg');
33
- console.error(' rool media upload report.pdf -m "Q4 sales report"');
34
- console.error(' rool media upload logo.png -s "My Project"');
35
- }
36
- async function getClient(apiUrl) {
37
- const authProvider = new NodeAuthProvider();
38
- const client = new RoolClient({ baseUrl: apiUrl, authProvider });
39
- if (!await client.isAuthenticated()) {
40
- console.log('Opening browser to authenticate...');
41
- await client.login('Rool CLI');
42
- }
43
- return client;
44
- }
45
- async function getSpace(client, spaceName) {
46
- const spaces = await client.listSpaces();
47
- const spaceInfo = spaces.find(s => s.name === spaceName);
48
- if (spaceInfo) {
49
- return client.openSpace(spaceInfo.id);
50
- }
51
- else {
52
- return client.createSpace(spaceName);
53
- }
54
- }
55
- async function uploadMedia(args) {
56
- const { space: spaceName, url: apiUrl, message, rest } = parseArgs(args);
57
- const filePath = rest[0];
58
- if (!filePath) {
59
- printUsage();
60
- process.exit(1);
61
- }
62
- if (!fs.existsSync(filePath)) {
63
- console.error(`File not found: ${filePath}`);
64
- process.exit(1);
65
- }
66
- const stats = fs.statSync(filePath);
67
- if (!stats.isFile()) {
68
- console.error(`Not a file: ${filePath}`);
69
- process.exit(1);
70
- }
71
- const filename = path.basename(filePath);
72
- const contentType = getContentType(filePath);
73
- const size = stats.size;
74
- const client = await getClient(apiUrl);
75
- const space = await getSpace(client, spaceName);
76
- try {
77
- const fileBuffer = fs.readFileSync(filePath);
78
- const blob = new Blob([fileBuffer], { type: contentType });
79
- console.log(`Uploading ${filename} (${formatSize(size)})...`);
80
- const url = await space.uploadMedia(blob);
81
- const objectData = {
82
- type: 'file',
83
- url,
84
- filename,
85
- contentType,
86
- size,
87
- uploadedAt: new Date().toISOString(),
88
- };
89
- if (message) {
90
- objectData.comment = message;
15
+ export function registerMedia(program) {
16
+ const media = program
17
+ .command('media')
18
+ .description('Manage media files');
19
+ media
20
+ .command('upload')
21
+ .description('Upload a file to a space and create an object with the media URL')
22
+ .argument('<file>', 'file to upload')
23
+ .option('-m, --message <text>', 'optional comment/description')
24
+ .option('-s, --space <name>', 'space name', DEFAULT_SPACE_NAME)
25
+ .option('-u, --url <url>', 'API URL', DEFAULT_API_URL)
26
+ .addHelpText('after', `
27
+ Examples:
28
+ # Upload a file
29
+ $ rool media upload photo.jpg
30
+
31
+ # Upload with a comment
32
+ $ rool media upload report.pdf -m "Q4 sales report"
33
+
34
+ # Upload to a specific space
35
+ $ rool media upload logo.png -s "My Project"`)
36
+ .action(async (filePath, opts) => {
37
+ if (!fs.existsSync(filePath)) {
38
+ console.error(`File not found: ${filePath}`);
39
+ process.exit(1);
91
40
  }
92
- const { object } = await space.createObject({ data: objectData });
93
- console.log(`Uploaded: ${filename} (${formatSize(size)})`);
94
- console.log(`Created object: ${object.id}`);
95
- console.log(`URL: ${url}`);
96
- }
97
- finally {
98
- space.close();
99
- client.destroy();
100
- }
101
- }
102
- export async function media(args) {
103
- const [subcommand, ...subargs] = args;
104
- if (subcommand === 'upload') {
105
- await uploadMedia(subargs);
106
- }
107
- else {
108
- printUsage();
109
- process.exit(1);
110
- }
41
+ const stats = fs.statSync(filePath);
42
+ if (!stats.isFile()) {
43
+ console.error(`Not a file: ${filePath}`);
44
+ process.exit(1);
45
+ }
46
+ const filename = path.basename(filePath);
47
+ const contentType = getContentType(filePath);
48
+ const size = stats.size;
49
+ const client = await getClient(opts.url);
50
+ // Find or create space by name
51
+ const spaces = await client.listSpaces();
52
+ const spaceInfo = spaces.find(s => s.name === opts.space);
53
+ const space = spaceInfo
54
+ ? await client.openSpace(spaceInfo.id)
55
+ : await client.createSpace(opts.space);
56
+ try {
57
+ const fileBuffer = fs.readFileSync(filePath);
58
+ const blob = new Blob([fileBuffer], { type: contentType });
59
+ console.log(`Uploading ${filename} (${formatBytes(size)})...`);
60
+ const url = await space.uploadMedia(blob);
61
+ const objectData = {
62
+ type: 'file',
63
+ url,
64
+ filename,
65
+ contentType,
66
+ size,
67
+ uploadedAt: new Date().toISOString(),
68
+ };
69
+ if (opts.message) {
70
+ objectData.comment = opts.message;
71
+ }
72
+ const { object } = await space.createObject({ data: objectData });
73
+ console.log(`Uploaded: ${filename} (${formatBytes(size)})`);
74
+ console.log(`Created object: ${object.id}`);
75
+ console.log(`URL: ${url}`);
76
+ }
77
+ finally {
78
+ space.close();
79
+ client.destroy();
80
+ }
81
+ });
111
82
  }
112
83
  //# sourceMappingURL=media.js.map
package/dist/media.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"media.js","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createProgram(): Command;
3
+ //# sourceMappingURL=program.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,aAAa,IAAI,OAAO,CAgBvC"}
@@ -0,0 +1,23 @@
1
+ import { Command } from 'commander';
2
+ import { VERSION } from './constants.js';
3
+ import { registerChat } from './chat.js';
4
+ import { registerMedia } from './media.js';
5
+ import { registerSpace } from './space.js';
6
+ import { registerApp } from './app.js';
7
+ import { registerUser } from './user.js';
8
+ import { registerLogout } from './logout.js';
9
+ export function createProgram() {
10
+ const program = new Command();
11
+ program
12
+ .name('rool')
13
+ .version(VERSION)
14
+ .description('Command-line interface for the Rool platform');
15
+ registerChat(program);
16
+ registerMedia(program);
17
+ registerSpace(program);
18
+ registerApp(program);
19
+ registerUser(program);
20
+ registerLogout(program);
21
+ return program;
22
+ }
23
+ //# sourceMappingURL=program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,MAAM,CAAC;SACZ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,8CAA8C,CAAC,CAAC;IAE/D,YAAY,CAAC,OAAO,CAAC,CAAC;IACtB,aAAa,CAAC,OAAO,CAAC,CAAC;IACvB,aAAa,CAAC,OAAO,CAAC,CAAC;IACvB,WAAW,CAAC,OAAO,CAAC,CAAC;IACrB,YAAY,CAAC,OAAO,CAAC,CAAC;IACtB,cAAc,CAAC,OAAO,CAAC,CAAC;IAExB,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/dist/space.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- export declare function space(args: string[]): Promise<void>;
1
+ import { type Command } from 'commander';
2
+ export declare function registerSpace(program: Command): void;
2
3
  //# sourceMappingURL=space.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../src/space.ts"],"names":[],"mappings":"AAkGA,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCzD"}
1
+ {"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../src/space.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBzC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyFpD"}
package/dist/space.js CHANGED
@@ -1,20 +1,7 @@
1
1
  import * as readline from 'node:readline';
2
- import { RoolClient } from '@rool-dev/sdk';
3
- import { NodeAuthProvider } from '@rool-dev/sdk/node';
4
- import { parseArgs } from './args.js';
5
- function printUsage() {
6
- console.error('Usage: rool space <command> [options]');
7
- console.error('');
8
- console.error('Commands:');
9
- console.error(' list List all spaces');
10
- console.error(' create <name> Create a new space');
11
- console.error(' delete <name> [-y] Delete a space');
12
- console.error('');
13
- console.error('Options:');
14
- console.error(' -u, --url <url> API URL (default: https://api.rool.dev)');
15
- console.error(' -y, --yes Skip confirmation prompt');
16
- }
17
- async function confirm(message) {
2
+ import { getClient } from './client.js';
3
+ import { DEFAULT_API_URL } from './constants.js';
4
+ function confirm(message) {
18
5
  const rl = readline.createInterface({
19
6
  input: process.stdin,
20
7
  output: process.stdout,
@@ -26,96 +13,105 @@ async function confirm(message) {
26
13
  });
27
14
  });
28
15
  }
29
- async function getClient(apiUrl) {
30
- const authProvider = new NodeAuthProvider();
31
- const client = new RoolClient({ baseUrl: apiUrl, authProvider });
32
- if (!await client.isAuthenticated()) {
33
- console.log('Opening browser to authenticate...');
34
- await client.login("Rool CLI");
35
- }
36
- return client;
37
- }
38
- async function listSpaces(apiUrl) {
39
- const client = await getClient(apiUrl);
40
- const list = await client.listSpaces();
41
- if (list.length === 0) {
42
- console.log('No spaces found.');
43
- }
44
- else {
45
- for (const s of list) {
46
- console.log(`${s.id} ${s.name} (${s.role})`);
16
+ export function registerSpace(program) {
17
+ const space = program
18
+ .command('space')
19
+ .description('Manage spaces (list, create, delete)');
20
+ // "rool spaces" alias for "rool space list"
21
+ program
22
+ .command('spaces', { hidden: true })
23
+ .description('List all spaces (alias for "space list")')
24
+ .option('-u, --url <url>', 'API URL', DEFAULT_API_URL)
25
+ .action(async (opts) => {
26
+ await listSpaces(opts.url);
27
+ });
28
+ space
29
+ .command('list')
30
+ .description('List all spaces')
31
+ .option('-u, --url <url>', 'API URL', DEFAULT_API_URL)
32
+ .addHelpText('after', `
33
+ Examples:
34
+ # List your spaces
35
+ $ rool space list`)
36
+ .action(async (opts) => {
37
+ await listSpaces(opts.url);
38
+ });
39
+ space
40
+ .command('create')
41
+ .description('Create a new space')
42
+ .argument('<name>', 'space name')
43
+ .option('-u, --url <url>', 'API URL', DEFAULT_API_URL)
44
+ .addHelpText('after', `
45
+ Examples:
46
+ # Create a new space
47
+ $ rool space create "My New Project"`)
48
+ .action(async (name, opts) => {
49
+ const client = await getClient(opts.url);
50
+ try {
51
+ const newSpace = await client.createSpace(name);
52
+ console.log(`Created space: ${newSpace.id} ${newSpace.name}`);
53
+ newSpace.close();
47
54
  }
48
- }
49
- client.destroy();
50
- }
51
- async function createSpace(apiUrl, name) {
52
- const client = await getClient(apiUrl);
53
- const newSpace = await client.createSpace(name);
54
- console.log(`Created space: ${newSpace.id} ${newSpace.name}`);
55
- newSpace.close();
56
- client.destroy();
57
- }
58
- async function deleteSpace(apiUrl, name, skipConfirm) {
59
- const client = await getClient(apiUrl);
60
- const list = await client.listSpaces();
61
- const spaceInfo = list.find(s => s.name === name);
62
- if (!spaceInfo) {
63
- console.error(`Space not found: "${name}"`);
64
- client.destroy();
65
- process.exit(1);
66
- }
67
- if (spaceInfo.role !== 'owner') {
68
- console.error(`Cannot delete space: you are not the owner (role: ${spaceInfo.role})`);
69
- client.destroy();
70
- process.exit(1);
71
- }
72
- if (!skipConfirm) {
73
- const confirmed = await confirm(`Delete space "${name}" (${spaceInfo.id})? This cannot be undone.`);
74
- if (!confirmed) {
75
- console.log('Cancelled.');
55
+ finally {
76
56
  client.destroy();
77
- return;
78
57
  }
79
- }
80
- await client.deleteSpace(spaceInfo.id);
81
- console.log(`Deleted space: ${name}`);
82
- client.destroy();
83
- }
84
- export async function space(args) {
85
- const { url: apiUrl, rest } = parseArgs(args);
86
- const [subcommand, ...subargs] = rest;
87
- // Check for -y/--yes flag in remaining args
88
- const yesIndex = subargs.findIndex(a => a === '-y' || a === '--yes');
89
- const skipConfirm = yesIndex !== -1;
90
- if (skipConfirm) {
91
- subargs.splice(yesIndex, 1);
92
- }
93
- switch (subcommand) {
94
- case 'list':
95
- case undefined:
96
- await listSpaces(apiUrl);
97
- break;
98
- case 'create': {
99
- const name = subargs.join(' ');
100
- if (!name) {
101
- console.error('Usage: rool space create <name>');
58
+ });
59
+ space
60
+ .command('delete')
61
+ .description('Delete a space')
62
+ .argument('<name>', 'space name')
63
+ .option('-y, --yes', 'skip confirmation prompt')
64
+ .option('-u, --url <url>', 'API URL', DEFAULT_API_URL)
65
+ .addHelpText('after', `
66
+ Examples:
67
+ # Delete a space (with confirmation)
68
+ $ rool space delete "Old Project"
69
+
70
+ # Delete without confirmation
71
+ $ rool space delete "Old Project" -y`)
72
+ .action(async (name, opts) => {
73
+ const client = await getClient(opts.url);
74
+ try {
75
+ const list = await client.listSpaces();
76
+ const spaceInfo = list.find(s => s.name === name);
77
+ if (!spaceInfo) {
78
+ console.error(`Space not found: "${name}"`);
102
79
  process.exit(1);
103
80
  }
104
- await createSpace(apiUrl, name);
105
- break;
106
- }
107
- case 'delete': {
108
- const name = subargs.join(' ');
109
- if (!name) {
110
- console.error('Usage: rool space delete <name> [-y]');
81
+ if (spaceInfo.role !== 'owner') {
82
+ console.error(`Cannot delete space: you are not the owner (role: ${spaceInfo.role})`);
111
83
  process.exit(1);
112
84
  }
113
- await deleteSpace(apiUrl, name, skipConfirm);
114
- break;
85
+ if (!opts.yes) {
86
+ const confirmed = await confirm(`Delete space "${name}" (${spaceInfo.id})? This cannot be undone.`);
87
+ if (!confirmed) {
88
+ console.log('Cancelled.');
89
+ return;
90
+ }
91
+ }
92
+ await client.deleteSpace(spaceInfo.id);
93
+ console.log(`Deleted space: ${name}`);
94
+ }
95
+ finally {
96
+ client.destroy();
115
97
  }
116
- default:
117
- printUsage();
118
- process.exit(1);
98
+ });
99
+ }
100
+ async function listSpaces(apiUrl) {
101
+ const client = await getClient(apiUrl);
102
+ try {
103
+ const list = await client.listSpaces();
104
+ if (list.length === 0) {
105
+ console.log('No spaces found.');
106
+ }
107
+ else {
108
+ for (const s of list) {
109
+ console.log(`${s.id} ${s.name} (${s.role})`);
110
+ }
111
+ }
112
+ }
113
+ finally {
114
+ client.destroy();
119
115
  }
120
116
  }
121
117
  //# sourceMappingURL=space.js.map
package/dist/space.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"space.js","sourceRoot":"","sources":["../src/space.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,SAAS,UAAU;IACjB,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACvD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACxD,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC3D,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACvD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;IAChF,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;AACnE,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,OAAe;IACpC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,GAAG,OAAO,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE;YAC1C,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,MAAc;IACrC,MAAM,YAAY,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAEjE,IAAI,CAAC,MAAM,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,MAAc;IACtC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAEvC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,MAAc,EAAE,IAAY;IACrD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/D,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,MAAM,CAAC,OAAO,EAAE,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,MAAc,EAAE,IAAY,EAAE,WAAoB;IAC3E,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IACvC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAElD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,IAAI,GAAG,CAAC,CAAC;QAC5C,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,qDAAqD,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC;QACtF,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,iBAAiB,IAAI,MAAM,SAAS,CAAC,EAAE,2BAA2B,CAAC,CAAC;QACpG,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,CAAC,OAAO,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,IAAc;IACxC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,CAAC,UAAU,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC;IAEtC,4CAA4C;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC;IACpC,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS;YACZ,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;YACzB,MAAM;QAER,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAChC,MAAM;QACR,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;gBACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;YAC7C,MAAM;QACR,CAAC;QAED;YACE,UAAU,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"space.js","sourceRoot":"","sources":["../src/space.ts"],"names":[],"mappings":"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"}
package/dist/user.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- export declare function user(args: string[]): Promise<void>;
1
+ import { type Command } from 'commander';
2
+ export declare function registerUser(program: Command): void;
2
3
  //# sourceMappingURL=user.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../src/user.ts"],"names":[],"mappings":"AAIA,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BxD"}
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../src/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2BnD"}