@rool-dev/cli 0.1.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/README.md ADDED
@@ -0,0 +1,59 @@
1
+ # Rool CLI
2
+
3
+ Command-line interface for the [Rool](https://api.rool.dev) platform.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install -g @rool-dev/cli
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```bash
14
+ rool <command> [options]
15
+ ```
16
+
17
+ ### Commands
18
+
19
+ | Command | Description |
20
+ |---------|-------------|
21
+ | `chat <prompt>` | Send a prompt to a space |
22
+ | `spaces` | List all spaces |
23
+ | `user` | Show current user info |
24
+ | `logout` | Log out |
25
+
26
+ ### Options
27
+
28
+ | Option | Description |
29
+ |--------|-------------|
30
+ | `-s, --space <name>` | Space name (default: "Rool CLI") |
31
+ | `-c, --conversation <id>` | Conversation ID (default: "rool-dev") |
32
+ | `-u, --url <url>` | API URL (default: https://api.rool.dev) |
33
+
34
+ ### Examples
35
+
36
+ ```bash
37
+ # Chat with the default space
38
+ rool chat "What is the capital of France?"
39
+
40
+ # Use a specific space
41
+ rool chat -s "My Project" "Summarize the current state"
42
+
43
+ # List your spaces
44
+ rool spaces
45
+
46
+ # Show user info
47
+ rool user
48
+
49
+ # Log out
50
+ rool logout
51
+ ```
52
+
53
+ ## Authentication
54
+
55
+ On first use, the CLI opens your browser to authenticate. Credentials are stored in `~/.config/rool/`.
56
+
57
+ ## License
58
+
59
+ Proprietary - © Rool Limited. All rights reserved.
package/dist/args.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ export interface CommonArgs {
2
+ space: string;
3
+ conversation: string;
4
+ url: string;
5
+ }
6
+ export interface ParsedArgs extends CommonArgs {
7
+ rest: string[];
8
+ }
9
+ export declare function parseArgs(args: string[]): ParsedArgs;
10
+ export declare function printCommonOptions(): void;
11
+ //# sourceMappingURL=args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAW,SAAQ,UAAU;IAC5C,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAWD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA4BpD;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC"}
package/dist/args.js ADDED
@@ -0,0 +1,46 @@
1
+ const DEFAULT_API_URL = 'https://api.rool.dev';
2
+ const DEFAULT_SPACE_NAME = 'Rool CLI';
3
+ const DEFAULT_CONVERSATION_ID = 'rool-dev';
4
+ const FLAG_ALIASES = {
5
+ '-s': 'space',
6
+ '--space': 'space',
7
+ '-c': 'conversation',
8
+ '--conversation': 'conversation',
9
+ '-u': 'url',
10
+ '--url': 'url',
11
+ };
12
+ export function parseArgs(args) {
13
+ const result = {
14
+ space: DEFAULT_SPACE_NAME,
15
+ conversation: DEFAULT_CONVERSATION_ID,
16
+ url: DEFAULT_API_URL,
17
+ rest: [],
18
+ };
19
+ for (let i = 0; i < args.length; i++) {
20
+ const arg = args[i];
21
+ const key = FLAG_ALIASES[arg];
22
+ if (key) {
23
+ const value = args[++i];
24
+ if (!value || value.startsWith('-')) {
25
+ console.error(`Missing value for ${arg}`);
26
+ process.exit(1);
27
+ }
28
+ result[key] = value;
29
+ }
30
+ else if (arg.startsWith('-')) {
31
+ console.error(`Unknown option: ${arg}`);
32
+ process.exit(1);
33
+ }
34
+ else {
35
+ result.rest.push(arg);
36
+ }
37
+ }
38
+ return result;
39
+ }
40
+ export function printCommonOptions() {
41
+ console.error('Options:');
42
+ console.error(` -s, --space <name> Space name (default: "${DEFAULT_SPACE_NAME}")`);
43
+ console.error(` -c, --conversation <id> Conversation ID (default: "${DEFAULT_CONVERSATION_ID}")`);
44
+ console.error(` -u, --url <url> API URL (default: ${DEFAULT_API_URL})`);
45
+ }
46
+ //# sourceMappingURL=args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAC/C,MAAM,kBAAkB,GAAG,UAAU,CAAC;AACtC,MAAM,uBAAuB,GAAG,UAAU,CAAC;AAY3C,MAAM,YAAY,GAAqC;IACrD,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,OAAO;IAClB,IAAI,EAAE,cAAc;IACpB,gBAAgB,EAAE,cAAc;IAChC,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,KAAK;CACf,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,MAAM,GAAe;QACzB,KAAK,EAAE,kBAAkB;QACzB,YAAY,EAAE,uBAAuB;QACrC,GAAG,EAAE,eAAe;QACpB,IAAI,EAAE,EAAE;KACT,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAE9B,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAC,sDAAsD,kBAAkB,IAAI,CAAC,CAAC;IAC5F,OAAO,CAAC,KAAK,CAAC,2DAA2D,uBAAuB,IAAI,CAAC,CAAC;IACtG,OAAO,CAAC,KAAK,CAAC,kDAAkD,eAAe,GAAG,CAAC,CAAC;AACtF,CAAC"}
package/dist/chat.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function chat(args: string[]): Promise<void>;
2
+ //# sourceMappingURL=chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":"AAKA,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCxD"}
package/dist/chat.js ADDED
@@ -0,0 +1,38 @@
1
+ import { RoolClient } from '@rool-dev/client';
2
+ import { NodeAuthProvider } from '@rool-dev/client/node';
3
+ import { parseArgs, printCommonOptions } from './args.js';
4
+ import { formatMarkdown } from './format.js';
5
+ export async function chat(args) {
6
+ const { space: spaceName, conversation: conversationId, url: apiUrl, rest } = parseArgs(args);
7
+ const prompt = rest.join(' ');
8
+ if (!prompt) {
9
+ console.error('Usage: rool chat <prompt> [options]');
10
+ console.error('');
11
+ printCommonOptions();
12
+ process.exit(1);
13
+ }
14
+ const authProvider = new NodeAuthProvider();
15
+ const client = new RoolClient({ baseUrl: apiUrl, authProvider });
16
+ // Login if needed (NodeAuthProvider opens browser and awaits callback)
17
+ if (!await client.isAuthenticated()) {
18
+ console.log('Opening browser to authenticate...');
19
+ await client.login();
20
+ }
21
+ // Find or create space by name
22
+ const spaces = await client.listSpaces();
23
+ const spaceInfo = spaces.find(s => s.name === spaceName);
24
+ let space;
25
+ if (spaceInfo) {
26
+ space = await client.openSpace(spaceInfo.id, { conversationId });
27
+ }
28
+ else {
29
+ space = await client.createSpace(spaceName, { conversationId });
30
+ }
31
+ // Send prompt
32
+ const result = await space.prompt(prompt);
33
+ console.log(formatMarkdown(result.message));
34
+ // Cleanup
35
+ space.close();
36
+ client.destroy();
37
+ }
38
+ //# sourceMappingURL=chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAc;IACvC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9F,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE9B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,kBAAkB,EAAE,CAAC;QACrB,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,uEAAuE;IACvE,IAAI,CAAC,MAAM,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,+BAA+B;IAC/B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAEzD,IAAI,KAAK,CAAC;IACV,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;IACnE,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,cAAc;IACd,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAE5C,UAAU;IACV,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,MAAM,CAAC,OAAO,EAAE,CAAC;AACnB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function formatMarkdown(text: string): string;
2
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAKA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD"}
package/dist/format.js ADDED
@@ -0,0 +1,7 @@
1
+ import { marked } from 'marked';
2
+ import { markedTerminal } from 'marked-terminal';
3
+ marked.use(markedTerminal());
4
+ export function formatMarkdown(text) {
5
+ return marked.parse(text);
6
+ }
7
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAwB,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,CAAC,GAAG,CAAC,cAAc,EAAqB,CAAC,CAAC;AAEhD,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAW,CAAC;AACtC,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env node
2
+ import { chat } from './chat.js';
3
+ import { spaces } from './spaces.js';
4
+ import { user } from './user.js';
5
+ import { logout } from './logout.js';
6
+ import { printCommonOptions } from './args.js';
7
+ function printUsage() {
8
+ console.error('Usage: rool <command> [options]');
9
+ console.error('');
10
+ console.error('Commands:');
11
+ console.error(' chat <prompt> Send a prompt to a space');
12
+ console.error(' spaces List all spaces');
13
+ console.error(' user Show current user info');
14
+ console.error(' logout Log out');
15
+ console.error('');
16
+ printCommonOptions();
17
+ }
18
+ async function main() {
19
+ const [command, ...args] = process.argv.slice(2);
20
+ switch (command) {
21
+ case 'chat':
22
+ await chat(args);
23
+ break;
24
+ case 'spaces':
25
+ await spaces(args);
26
+ break;
27
+ case 'user':
28
+ await user(args);
29
+ break;
30
+ case 'logout':
31
+ await logout(args);
32
+ break;
33
+ default:
34
+ printUsage();
35
+ process.exit(1);
36
+ }
37
+ }
38
+ main().catch(err => {
39
+ console.error(err.message);
40
+ process.exit(1);
41
+ });
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,SAAS,UAAU;IACjB,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACjD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC7D,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACpD,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC3D,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC5C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,kBAAkB,EAAE,CAAC;AACvB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEjD,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM;YACT,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM;QACR,KAAK,MAAM;YACT,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM;QACR;YACE,UAAU,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IACjB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function logout(args: string[]): Promise<void>;
2
+ //# sourceMappingURL=logout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../src/logout.ts"],"names":[],"mappings":"AAIA,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB1D"}
package/dist/logout.js ADDED
@@ -0,0 +1,24 @@
1
+ import { RoolClient } from '@rool-dev/client';
2
+ import { NodeAuthProvider } from '@rool-dev/client/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();
23
+ }
24
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../src/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,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"}
@@ -0,0 +1,2 @@
1
+ export declare function spaces(args: string[]): Promise<void>;
2
+ //# sourceMappingURL=spaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spaces.d.ts","sourceRoot":"","sources":["../src/spaces.ts"],"names":[],"mappings":"AAIA,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B1D"}
package/dist/spaces.js ADDED
@@ -0,0 +1,29 @@
1
+ import { RoolClient } from '@rool-dev/client';
2
+ import { NodeAuthProvider } from '@rool-dev/client/node';
3
+ import { parseArgs, printCommonOptions } from './args.js';
4
+ export async function spaces(args) {
5
+ const { url: apiUrl, rest } = parseArgs(args);
6
+ if (rest.length > 0) {
7
+ console.error('Usage: rool spaces [options]');
8
+ console.error('');
9
+ printCommonOptions();
10
+ process.exit(1);
11
+ }
12
+ const authProvider = new NodeAuthProvider();
13
+ const client = new RoolClient({ baseUrl: apiUrl, authProvider });
14
+ if (!await client.isAuthenticated()) {
15
+ console.log('Opening browser to authenticate...');
16
+ await client.login();
17
+ }
18
+ const list = await client.listSpaces();
19
+ if (list.length === 0) {
20
+ console.log('No spaces found.');
21
+ }
22
+ else {
23
+ for (const space of list) {
24
+ console.log(`${space.id} ${space.name} (${space.role})`);
25
+ }
26
+ }
27
+ client.destroy();
28
+ }
29
+ //# sourceMappingURL=spaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spaces.js","sourceRoot":"","sources":["../src/spaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE1D,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,kBAAkB,EAAE,CAAC;QACrB,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,oCAAoC,CAAC,CAAC;QAClD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,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,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,CAAC;AACnB,CAAC"}
package/dist/user.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function user(args: string[]): Promise<void>;
2
+ //# sourceMappingURL=user.d.ts.map
@@ -0,0 +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"}
package/dist/user.js ADDED
@@ -0,0 +1,27 @@
1
+ import { RoolClient } from '@rool-dev/client';
2
+ import { NodeAuthProvider } from '@rool-dev/client/node';
3
+ import { parseArgs } from './args.js';
4
+ export async function user(args) {
5
+ const { url: apiUrl, rest } = parseArgs(args);
6
+ if (rest.length > 0) {
7
+ console.error('Usage: rool user [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
+ client.destroy();
18
+ process.exit(1);
19
+ }
20
+ const currentUser = await client.getCurrentUser();
21
+ console.log(`Email: ${currentUser.email}`);
22
+ console.log(`Name: ${currentUser.name ?? '(not set)'}`);
23
+ console.log(`Plan: ${currentUser.plan}`);
24
+ console.log(`Credits: ${currentUser.creditsBalance}`);
25
+ client.destroy();
26
+ }
27
+ //# sourceMappingURL=user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../src/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAc;IACvC,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,4BAA4B,CAAC,CAAC;QAC5C,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;QAC9B,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;IAElD,OAAO,CAAC,GAAG,CAAC,YAAY,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,YAAY,WAAW,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,YAAY,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,YAAY,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC;IAEtD,MAAM,CAAC,OAAO,EAAE,CAAC;AACnB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@rool-dev/cli",
3
+ "version": "0.1.0",
4
+ "description": "Command-line interface for the Rool platform",
5
+ "packageManager": "pnpm@10.17.1",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "bin": {
10
+ "rool": "./dist/index.js"
11
+ },
12
+ "files": [
13
+ "dist"
14
+ ],
15
+ "scripts": {
16
+ "build": "tsc",
17
+ "dev": "tsc --watch",
18
+ "typecheck": "tsc --noEmit",
19
+ "clean": "rm -rf dist"
20
+ },
21
+ "publishConfig": {
22
+ "access": "public"
23
+ },
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "git+https://github.com/rool-dev/gcp-backend.git",
27
+ "directory": "rool-cli"
28
+ },
29
+ "keywords": [
30
+ "rool",
31
+ "cli",
32
+ "ai",
33
+ "agent"
34
+ ],
35
+ "author": {
36
+ "name": "Lightpost One",
37
+ "email": "info@lightpost.one",
38
+ "url": "https://lightpost.one"
39
+ },
40
+ "license": "UNLICENSED",
41
+ "dependencies": {
42
+ "@rool-dev/client": "^0.6.8",
43
+ "marked": "^15.0.12",
44
+ "marked-terminal": "^7.3.0"
45
+ },
46
+ "devDependencies": {
47
+ "@types/marked-terminal": "^6.1.1",
48
+ "@types/node": "^25.0.2",
49
+ "typescript": "^5.9.3"
50
+ }
51
+ }