@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 +59 -0
- package/dist/args.d.ts +11 -0
- package/dist/args.d.ts.map +1 -0
- package/dist/args.js +46 -0
- package/dist/args.js.map +1 -0
- package/dist/chat.d.ts +2 -0
- package/dist/chat.d.ts.map +1 -0
- package/dist/chat.js +38 -0
- package/dist/chat.js.map +1 -0
- package/dist/format.d.ts +2 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +7 -0
- package/dist/format.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/logout.d.ts +2 -0
- package/dist/logout.d.ts.map +1 -0
- package/dist/logout.js +24 -0
- package/dist/logout.js.map +1 -0
- package/dist/spaces.d.ts +2 -0
- package/dist/spaces.d.ts.map +1 -0
- package/dist/spaces.js +29 -0
- package/dist/spaces.js.map +1 -0
- package/dist/user.d.ts +2 -0
- package/dist/user.d.ts.map +1 -0
- package/dist/user.js +27 -0
- package/dist/user.js.map +1 -0
- package/package.json +51 -0
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
|
package/dist/args.js.map
ADDED
|
@@ -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 @@
|
|
|
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
|
package/dist/chat.js.map
ADDED
|
@@ -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"}
|
package/dist/format.d.ts
ADDED
|
@@ -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 @@
|
|
|
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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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"}
|
package/dist/logout.d.ts
ADDED
|
@@ -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"}
|
package/dist/spaces.d.ts
ADDED
|
@@ -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 @@
|
|
|
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
|
package/dist/user.js.map
ADDED
|
@@ -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
|
+
}
|