oblien 2.0.0 → 2.0.2
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 +634 -0
- package/dist/cli/auth.d.ts +13 -0
- package/dist/cli/auth.d.ts.map +1 -0
- package/dist/cli/auth.js +30 -0
- package/dist/cli/auth.js.map +1 -0
- package/dist/cli/commands/api-access.d.ts +3 -0
- package/dist/cli/commands/api-access.d.ts.map +1 -0
- package/dist/cli/commands/api-access.js +87 -0
- package/dist/cli/commands/api-access.js.map +1 -0
- package/dist/cli/commands/config.d.ts +3 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +63 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/exec.d.ts +3 -0
- package/dist/cli/commands/exec.d.ts.map +1 -0
- package/dist/cli/commands/exec.js +173 -0
- package/dist/cli/commands/exec.js.map +1 -0
- package/dist/cli/commands/files.d.ts +3 -0
- package/dist/cli/commands/files.d.ts.map +1 -0
- package/dist/cli/commands/files.js +168 -0
- package/dist/cli/commands/files.js.map +1 -0
- package/dist/cli/commands/images.d.ts +3 -0
- package/dist/cli/commands/images.d.ts.map +1 -0
- package/dist/cli/commands/images.js +43 -0
- package/dist/cli/commands/images.js.map +1 -0
- package/dist/cli/commands/lifecycle.d.ts +3 -0
- package/dist/cli/commands/lifecycle.d.ts.map +1 -0
- package/dist/cli/commands/lifecycle.js +88 -0
- package/dist/cli/commands/lifecycle.js.map +1 -0
- package/dist/cli/commands/logs.d.ts +3 -0
- package/dist/cli/commands/logs.d.ts.map +1 -0
- package/dist/cli/commands/logs.js +104 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/metadata.d.ts +3 -0
- package/dist/cli/commands/metadata.d.ts.map +1 -0
- package/dist/cli/commands/metadata.js +73 -0
- package/dist/cli/commands/metadata.js.map +1 -0
- package/dist/cli/commands/metrics.d.ts +3 -0
- package/dist/cli/commands/metrics.d.ts.map +1 -0
- package/dist/cli/commands/metrics.js +57 -0
- package/dist/cli/commands/metrics.js.map +1 -0
- package/dist/cli/commands/network.d.ts +3 -0
- package/dist/cli/commands/network.d.ts.map +1 -0
- package/dist/cli/commands/network.js +88 -0
- package/dist/cli/commands/network.js.map +1 -0
- package/dist/cli/commands/public-access.d.ts +3 -0
- package/dist/cli/commands/public-access.d.ts.map +1 -0
- package/dist/cli/commands/public-access.js +92 -0
- package/dist/cli/commands/public-access.js.map +1 -0
- package/dist/cli/commands/search.d.ts +3 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +134 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/skills.d.ts +3 -0
- package/dist/cli/commands/skills.d.ts.map +1 -0
- package/dist/cli/commands/skills.js +156 -0
- package/dist/cli/commands/skills.js.map +1 -0
- package/dist/cli/commands/snapshots.d.ts +3 -0
- package/dist/cli/commands/snapshots.d.ts.map +1 -0
- package/dist/cli/commands/snapshots.js +100 -0
- package/dist/cli/commands/snapshots.js.map +1 -0
- package/dist/cli/commands/ssh.d.ts +3 -0
- package/dist/cli/commands/ssh.d.ts.map +1 -0
- package/dist/cli/commands/ssh.js +81 -0
- package/dist/cli/commands/ssh.js.map +1 -0
- package/dist/cli/commands/terminal.d.ts +3 -0
- package/dist/cli/commands/terminal.d.ts.map +1 -0
- package/dist/cli/commands/terminal.js +109 -0
- package/dist/cli/commands/terminal.js.map +1 -0
- package/dist/cli/commands/types.d.ts +8 -0
- package/dist/cli/commands/types.d.ts.map +1 -0
- package/dist/cli/commands/types.js +2 -0
- package/dist/cli/commands/types.js.map +1 -0
- package/dist/cli/commands/usage.d.ts +3 -0
- package/dist/cli/commands/usage.d.ts.map +1 -0
- package/dist/cli/commands/usage.js +98 -0
- package/dist/cli/commands/usage.js.map +1 -0
- package/dist/cli/commands/watcher.d.ts +3 -0
- package/dist/cli/commands/watcher.d.ts.map +1 -0
- package/dist/cli/commands/watcher.js +108 -0
- package/dist/cli/commands/watcher.js.map +1 -0
- package/dist/cli/commands/workloads.d.ts +3 -0
- package/dist/cli/commands/workloads.d.ts.map +1 -0
- package/dist/cli/commands/workloads.js +232 -0
- package/dist/cli/commands/workloads.js.map +1 -0
- package/dist/cli/commands/workspaces.d.ts +3 -0
- package/dist/cli/commands/workspaces.d.ts.map +1 -0
- package/dist/cli/commands/workspaces.js +255 -0
- package/dist/cli/commands/workspaces.js.map +1 -0
- package/dist/cli/config-store.d.ts +10 -0
- package/dist/cli/config-store.d.ts.map +1 -0
- package/dist/cli/config-store.js +28 -0
- package/dist/cli/config-store.js.map +1 -0
- package/dist/cli/index.d.ts +12 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +199 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/output.d.ts +21 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +108 -0
- package/dist/cli/output.js.map +1 -0
- package/package.json +6 -2
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { buildClient } from '../auth.js';
|
|
2
|
+
import { printResult, printSuccess, printTable } from '../output.js';
|
|
3
|
+
export async function workspacesCmd(args, flags) {
|
|
4
|
+
const sub = args[0];
|
|
5
|
+
switch (sub) {
|
|
6
|
+
case 'create': return wsCreate(args.slice(1), flags);
|
|
7
|
+
case 'list':
|
|
8
|
+
case 'ls': return wsList(args.slice(1), flags);
|
|
9
|
+
case 'get': return wsGet(args[1], flags);
|
|
10
|
+
case 'update': return wsUpdate(args[1], args.slice(2), flags);
|
|
11
|
+
case 'delete':
|
|
12
|
+
case 'rm': return wsDelete(args[1], flags);
|
|
13
|
+
case 'start': return wsPower('start', args[1], flags);
|
|
14
|
+
case 'stop': return wsPower('stop', args[1], flags);
|
|
15
|
+
case 'restart': return wsPower('restart', args[1], flags);
|
|
16
|
+
case 'pause': return wsPower('pause', args[1], flags);
|
|
17
|
+
case 'resume': return wsPower('resume', args[1], flags);
|
|
18
|
+
case 'ping': return wsPing(args[1], args.slice(2), flags);
|
|
19
|
+
case 'quota': return wsQuota(flags);
|
|
20
|
+
case 'estimate': return wsEstimate(args.slice(1), flags);
|
|
21
|
+
case 'health': return wsHealth(args[1], flags);
|
|
22
|
+
case 'details': return wsDetails(args[1], flags);
|
|
23
|
+
case 'resources': return wsResources(args[1], args.slice(2), flags);
|
|
24
|
+
default:
|
|
25
|
+
console.log(`
|
|
26
|
+
oblien ws — Manage workspaces
|
|
27
|
+
|
|
28
|
+
Usage:
|
|
29
|
+
oblien ws create [flags] Create a workspace
|
|
30
|
+
oblien ws list List workspaces
|
|
31
|
+
oblien ws get <id> Get workspace details
|
|
32
|
+
oblien ws update <id> [flags] Update workspace
|
|
33
|
+
oblien ws delete <id> Delete workspace
|
|
34
|
+
oblien ws start <id> Start workspace
|
|
35
|
+
oblien ws stop <id> Stop workspace
|
|
36
|
+
oblien ws restart <id> Restart workspace
|
|
37
|
+
oblien ws pause <id> Pause workspace
|
|
38
|
+
oblien ws resume <id> Resume paused workspace
|
|
39
|
+
oblien ws ping <id> Keep-alive ping (renew TTL)
|
|
40
|
+
oblien ws quota Show resource quota
|
|
41
|
+
oblien ws estimate [flags] Estimate cost
|
|
42
|
+
oblien ws health <id> Check runtime health
|
|
43
|
+
oblien ws details <id> Get aggregated details
|
|
44
|
+
oblien ws resources <id> Get/update resources (--patch for partial)
|
|
45
|
+
|
|
46
|
+
Create flags:
|
|
47
|
+
--image <image> Base image (e.g., node-20, python-3, ubuntu)
|
|
48
|
+
--name <name> Workspace name
|
|
49
|
+
--cpus <n> CPU cores
|
|
50
|
+
--memory <mb> Memory in MB
|
|
51
|
+
--disk <mb> Disk in MB
|
|
52
|
+
--mode <mode> permanent or temporary
|
|
53
|
+
--namespace <ns> Namespace
|
|
54
|
+
--type <type> Workspace type
|
|
55
|
+
|
|
56
|
+
Examples:
|
|
57
|
+
oblien ws create --image node-20 --name my-app --cpus 2 --memory 2048
|
|
58
|
+
oblien ws list --status running --limit 10
|
|
59
|
+
oblien ws start ws_abc123
|
|
60
|
+
oblien ws stop ws_abc123
|
|
61
|
+
oblien ws resources ws_abc123 --cpus 4 --memory 4096
|
|
62
|
+
`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// ── Helpers ─────────────────────────────────────────────────────────
|
|
66
|
+
function parseFlag(args, flag) {
|
|
67
|
+
const idx = args.indexOf(flag);
|
|
68
|
+
return idx >= 0 && idx + 1 < args.length ? args[idx + 1] : undefined;
|
|
69
|
+
}
|
|
70
|
+
function requireId(id, cmd) {
|
|
71
|
+
if (!id || id.startsWith('-')) {
|
|
72
|
+
console.error(`Usage: oblien ws ${cmd} <workspace-id>`);
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
return id;
|
|
76
|
+
}
|
|
77
|
+
// ── Commands ────────────────────────────────────────────────────────
|
|
78
|
+
async function wsCreate(args, flags) {
|
|
79
|
+
const client = buildClient(flags);
|
|
80
|
+
const params = {};
|
|
81
|
+
const image = parseFlag(args, '--image');
|
|
82
|
+
const name = parseFlag(args, '--name');
|
|
83
|
+
const cpus = parseFlag(args, '--cpus');
|
|
84
|
+
const memory = parseFlag(args, '--memory');
|
|
85
|
+
const disk = parseFlag(args, '--disk');
|
|
86
|
+
const mode = parseFlag(args, '--mode');
|
|
87
|
+
const namespace = parseFlag(args, '--namespace');
|
|
88
|
+
const type = parseFlag(args, '--type');
|
|
89
|
+
if (image)
|
|
90
|
+
params.image = image;
|
|
91
|
+
if (name)
|
|
92
|
+
params.name = name;
|
|
93
|
+
if (mode)
|
|
94
|
+
params.mode = mode;
|
|
95
|
+
if (namespace)
|
|
96
|
+
params.namespace = namespace;
|
|
97
|
+
if (type)
|
|
98
|
+
params.type = type;
|
|
99
|
+
if (cpus || memory || disk) {
|
|
100
|
+
params.resources = {
|
|
101
|
+
...(cpus ? { cpus: Number(cpus) } : {}),
|
|
102
|
+
...(memory ? { memory_mb: Number(memory) } : {}),
|
|
103
|
+
...(disk ? { writable_size_mb: Number(disk) } : {}),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
const ws = await client.workspaces.create(params);
|
|
107
|
+
printResult(ws, flags.json);
|
|
108
|
+
}
|
|
109
|
+
async function wsList(args, flags) {
|
|
110
|
+
const client = buildClient(flags);
|
|
111
|
+
const params = {};
|
|
112
|
+
const status = parseFlag(args, '--status');
|
|
113
|
+
const limit = parseFlag(args, '--limit');
|
|
114
|
+
const page = parseFlag(args, '--page');
|
|
115
|
+
if (status)
|
|
116
|
+
params.status = status;
|
|
117
|
+
if (limit)
|
|
118
|
+
params.limit = Number(limit);
|
|
119
|
+
if (page)
|
|
120
|
+
params.page = Number(page);
|
|
121
|
+
const res = await client.workspaces.list(params);
|
|
122
|
+
if (flags.json) {
|
|
123
|
+
printResult(res, true);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
const rows = res.workspaces.map(w => ({
|
|
127
|
+
id: w.id,
|
|
128
|
+
name: w.name ?? '-',
|
|
129
|
+
status: w.status,
|
|
130
|
+
image: w.image,
|
|
131
|
+
created: w.created_at?.slice(0, 10) ?? '-',
|
|
132
|
+
}));
|
|
133
|
+
printTable(rows, ['id', 'name', 'status', 'image', 'created']);
|
|
134
|
+
console.log(`\n${res.total} workspace(s) total`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
async function wsGet(id, flags) {
|
|
138
|
+
const wsId = requireId(id, 'get');
|
|
139
|
+
const client = buildClient(flags);
|
|
140
|
+
const ws = await client.workspaces.get(wsId);
|
|
141
|
+
printResult(ws, flags.json);
|
|
142
|
+
}
|
|
143
|
+
async function wsUpdate(id, args, flags) {
|
|
144
|
+
const wsId = requireId(id, 'update');
|
|
145
|
+
const client = buildClient(flags);
|
|
146
|
+
// Collect all --key value pairs as update params
|
|
147
|
+
const params = {};
|
|
148
|
+
for (let i = 0; i < args.length; i++) {
|
|
149
|
+
if (args[i].startsWith('--') && i + 1 < args.length) {
|
|
150
|
+
const key = args[i].slice(2).replace(/-/g, '_');
|
|
151
|
+
params[key] = args[++i];
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
const ws = await client.workspaces.update(wsId, params);
|
|
155
|
+
printResult(ws, flags.json);
|
|
156
|
+
}
|
|
157
|
+
async function wsDelete(id, flags) {
|
|
158
|
+
const wsId = requireId(id, 'delete');
|
|
159
|
+
const client = buildClient(flags);
|
|
160
|
+
await client.workspaces.delete(wsId);
|
|
161
|
+
printSuccess(`Deleted workspace ${wsId}`);
|
|
162
|
+
}
|
|
163
|
+
async function wsPower(action, id, flags) {
|
|
164
|
+
const wsId = requireId(id, action);
|
|
165
|
+
const client = buildClient(flags);
|
|
166
|
+
switch (action) {
|
|
167
|
+
case 'start':
|
|
168
|
+
await client.workspaces.start(wsId);
|
|
169
|
+
break;
|
|
170
|
+
case 'stop':
|
|
171
|
+
await client.workspaces.stop(wsId);
|
|
172
|
+
break;
|
|
173
|
+
case 'restart':
|
|
174
|
+
await client.workspaces.restart(wsId);
|
|
175
|
+
break;
|
|
176
|
+
case 'pause':
|
|
177
|
+
await client.workspaces.pause(wsId);
|
|
178
|
+
break;
|
|
179
|
+
case 'resume':
|
|
180
|
+
await client.workspaces.resume(wsId);
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
printSuccess(`${action}: ${wsId}`);
|
|
184
|
+
}
|
|
185
|
+
async function wsPing(id, args, flags) {
|
|
186
|
+
const wsId = requireId(id, 'ping');
|
|
187
|
+
const client = buildClient(flags);
|
|
188
|
+
const ttl = parseFlag(args, '--ttl');
|
|
189
|
+
await client.workspaces.ping(wsId, ttl ? { ttl_seconds: Number(ttl) } : undefined);
|
|
190
|
+
printSuccess(`Pinged ${wsId}${ttl ? ` (TTL: ${ttl}s)` : ''}`);
|
|
191
|
+
}
|
|
192
|
+
async function wsQuota(flags) {
|
|
193
|
+
const client = buildClient(flags);
|
|
194
|
+
const res = await client.workspaces.getQuota();
|
|
195
|
+
printResult(res, flags.json);
|
|
196
|
+
}
|
|
197
|
+
async function wsEstimate(args, flags) {
|
|
198
|
+
const client = buildClient(flags);
|
|
199
|
+
const params = {};
|
|
200
|
+
const cpus = parseFlag(args, '--cpus');
|
|
201
|
+
const ram = parseFlag(args, '--memory');
|
|
202
|
+
const disk = parseFlag(args, '--disk');
|
|
203
|
+
if (cpus)
|
|
204
|
+
params.cpu = Number(cpus);
|
|
205
|
+
if (ram)
|
|
206
|
+
params.ram_mb = Number(ram);
|
|
207
|
+
if (disk)
|
|
208
|
+
params.disk_mb = Number(disk);
|
|
209
|
+
const res = await client.workspaces.getEstimate(params);
|
|
210
|
+
printResult(res, flags.json);
|
|
211
|
+
}
|
|
212
|
+
async function wsHealth(id, flags) {
|
|
213
|
+
const wsId = requireId(id, 'health');
|
|
214
|
+
const client = buildClient(flags);
|
|
215
|
+
const rt = await client.workspaces.runtime(wsId);
|
|
216
|
+
const ok = await rt.health();
|
|
217
|
+
if (flags.json) {
|
|
218
|
+
printResult({ healthy: ok }, true);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
console.log(ok ? '✓ Healthy' : '✗ Unhealthy');
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
async function wsDetails(id, flags) {
|
|
225
|
+
const wsId = requireId(id, 'details');
|
|
226
|
+
const client = buildClient(flags);
|
|
227
|
+
const res = await client.workspaces.getDetails(wsId);
|
|
228
|
+
printResult(res, flags.json);
|
|
229
|
+
}
|
|
230
|
+
async function wsResources(id, args, flags) {
|
|
231
|
+
const wsId = requireId(id, 'resources');
|
|
232
|
+
const client = buildClient(flags);
|
|
233
|
+
const patch = args.includes('--patch');
|
|
234
|
+
// If any flags provided — update; otherwise — get
|
|
235
|
+
const cpus = parseFlag(args, '--cpus');
|
|
236
|
+
const memory = parseFlag(args, '--memory');
|
|
237
|
+
const disk = parseFlag(args, '--disk');
|
|
238
|
+
if (cpus || memory || disk) {
|
|
239
|
+
const params = {};
|
|
240
|
+
if (cpus)
|
|
241
|
+
params.cpus = Number(cpus);
|
|
242
|
+
if (memory)
|
|
243
|
+
params.memory_mb = Number(memory);
|
|
244
|
+
if (disk)
|
|
245
|
+
params.writable_size_mb = Number(disk);
|
|
246
|
+
const method = patch ? 'patch' : 'update';
|
|
247
|
+
const res = await client.workspaces.resources[method](wsId, params);
|
|
248
|
+
printResult(res, flags.json);
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
const res = await client.workspaces.resources.get(wsId);
|
|
252
|
+
printResult(res, flags.json);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=workspaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../../../src/cli/commands/workspaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface StoredCredentials {
|
|
2
|
+
clientId: string;
|
|
3
|
+
clientSecret: string;
|
|
4
|
+
baseUrl?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function configPath(): string;
|
|
7
|
+
export declare function loadConfig(): StoredCredentials | null;
|
|
8
|
+
export declare function saveConfig(creds: StoredCredentials): void;
|
|
9
|
+
export declare function clearConfig(): void;
|
|
10
|
+
//# sourceMappingURL=config-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-store.d.ts","sourceRoot":"","sources":["../../src/cli/config-store.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,UAAU,IAAI,iBAAiB,GAAG,IAAI,CAOrD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAGzD;AAED,wBAAgB,WAAW,IAAI,IAAI,CAIlC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
const CONFIG_DIR = join(homedir(), '.oblien');
|
|
5
|
+
const CONFIG_FILE = join(CONFIG_DIR, 'credentials.json');
|
|
6
|
+
export function configPath() {
|
|
7
|
+
return CONFIG_FILE;
|
|
8
|
+
}
|
|
9
|
+
export function loadConfig() {
|
|
10
|
+
if (!existsSync(CONFIG_FILE))
|
|
11
|
+
return null;
|
|
12
|
+
try {
|
|
13
|
+
return JSON.parse(readFileSync(CONFIG_FILE, 'utf-8'));
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export function saveConfig(creds) {
|
|
20
|
+
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
21
|
+
writeFileSync(CONFIG_FILE, JSON.stringify(creds, null, 2) + '\n', { mode: 0o600 });
|
|
22
|
+
}
|
|
23
|
+
export function clearConfig() {
|
|
24
|
+
if (existsSync(CONFIG_FILE)) {
|
|
25
|
+
writeFileSync(CONFIG_FILE, '{}', { mode: 0o600 });
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=config-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-store.js","sourceRoot":"","sources":["../../src/cli/config-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;AAQzD,MAAM,UAAU,UAAU;IACxB,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAwB;IACjD,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* oblien CLI — manage workspaces, skills, and interact with the Oblien API from the command line.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* oblien <command> [subcommand] [args] [flags]
|
|
7
|
+
*
|
|
8
|
+
* This is a thin wrapper around the oblien SDK. Every command maps directly
|
|
9
|
+
* to an SDK method — no extra logic, no magic.
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* oblien CLI — manage workspaces, skills, and interact with the Oblien API from the command line.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* oblien <command> [subcommand] [args] [flags]
|
|
7
|
+
*
|
|
8
|
+
* This is a thin wrapper around the oblien SDK. Every command maps directly
|
|
9
|
+
* to an SDK method — no extra logic, no magic.
|
|
10
|
+
*/
|
|
11
|
+
import { extractGlobalFlags } from './output.js';
|
|
12
|
+
import { configCmd } from './commands/config.js';
|
|
13
|
+
import { skillsCmd } from './commands/skills.js';
|
|
14
|
+
import { workspacesCmd } from './commands/workspaces.js';
|
|
15
|
+
import { execCmd } from './commands/exec.js';
|
|
16
|
+
import { filesCmd } from './commands/files.js';
|
|
17
|
+
import { searchCmd } from './commands/search.js';
|
|
18
|
+
import { networkCmd } from './commands/network.js';
|
|
19
|
+
import { apiAccessCmd } from './commands/api-access.js';
|
|
20
|
+
import { lifecycleCmd } from './commands/lifecycle.js';
|
|
21
|
+
import { imagesCmd } from './commands/images.js';
|
|
22
|
+
import { logsCmd } from './commands/logs.js';
|
|
23
|
+
import { snapshotsCmd } from './commands/snapshots.js';
|
|
24
|
+
import { sshCmd } from './commands/ssh.js';
|
|
25
|
+
import { publicAccessCmd } from './commands/public-access.js';
|
|
26
|
+
import { workloadsCmd } from './commands/workloads.js';
|
|
27
|
+
import { metricsCmd } from './commands/metrics.js';
|
|
28
|
+
import { usageCmd } from './commands/usage.js';
|
|
29
|
+
import { metadataCmd } from './commands/metadata.js';
|
|
30
|
+
import { terminalCmd } from './commands/terminal.js';
|
|
31
|
+
import { watcherCmd } from './commands/watcher.js';
|
|
32
|
+
// ── Version ─────────────────────────────────────────────────────────
|
|
33
|
+
function version() {
|
|
34
|
+
// Read from package.json at build time isn't worth it — just hardcode.
|
|
35
|
+
console.log('oblien/2.0.1');
|
|
36
|
+
}
|
|
37
|
+
// ── Help ────────────────────────────────────────────────────────────
|
|
38
|
+
function help() {
|
|
39
|
+
console.log(`
|
|
40
|
+
oblien — Oblien CLI
|
|
41
|
+
|
|
42
|
+
Usage:
|
|
43
|
+
oblien <command> [subcommand] [args] [flags]
|
|
44
|
+
|
|
45
|
+
Commands:
|
|
46
|
+
config Manage credentials (~/.oblien/credentials.json)
|
|
47
|
+
skills Install, list, and remove agent skills
|
|
48
|
+
|
|
49
|
+
ws, workspaces Create, list, start, stop, delete workspaces
|
|
50
|
+
exec Execute commands inside a workspace
|
|
51
|
+
files Read, write, list, delete files in a workspace
|
|
52
|
+
search Search code and filenames in a workspace
|
|
53
|
+
|
|
54
|
+
network View and update workspace network config
|
|
55
|
+
api-access Enable/disable Internal API, get tokens
|
|
56
|
+
lifecycle Manage permanent/temporary mode and TTL
|
|
57
|
+
snapshots Create and manage snapshots and archives
|
|
58
|
+
images Browse available workspace images
|
|
59
|
+
logs View and stream workspace logs
|
|
60
|
+
|
|
61
|
+
ssh Manage SSH access (enable, keys, passwords)
|
|
62
|
+
public-access Expose and revoke public ports
|
|
63
|
+
workloads Manage workloads (containers/processes)
|
|
64
|
+
metrics View workspace resource metrics
|
|
65
|
+
usage View usage, credits, and tracking
|
|
66
|
+
metadata Manage workspace key-value metadata
|
|
67
|
+
terminal Manage runtime terminal sessions
|
|
68
|
+
watcher Manage file system watchers
|
|
69
|
+
|
|
70
|
+
Global flags:
|
|
71
|
+
--json Output as JSON
|
|
72
|
+
--client-id <id> Override client ID
|
|
73
|
+
--client-secret <s> Override client secret
|
|
74
|
+
--base-url <url> Override API base URL
|
|
75
|
+
-v, --version Show version
|
|
76
|
+
-h, --help Show this help
|
|
77
|
+
|
|
78
|
+
Auth (in priority order):
|
|
79
|
+
1. --client-id / --client-secret flags
|
|
80
|
+
2. OBLIEN_CLIENT_ID / OBLIEN_CLIENT_SECRET env vars
|
|
81
|
+
3. ~/.oblien/credentials.json (set via: oblien config set)
|
|
82
|
+
|
|
83
|
+
Examples:
|
|
84
|
+
oblien config set
|
|
85
|
+
oblien skills install oblien-runtime --agent claude
|
|
86
|
+
oblien ws create --image node-20 --name my-app
|
|
87
|
+
oblien ws list
|
|
88
|
+
oblien ws start ws_abc123
|
|
89
|
+
oblien exec ws_abc123 -- npm test
|
|
90
|
+
oblien files ls ws_abc123 /app
|
|
91
|
+
oblien files cat ws_abc123 /app/index.js
|
|
92
|
+
oblien search ws_abc123 "TODO"
|
|
93
|
+
oblien api-access enable ws_abc123
|
|
94
|
+
oblien logs boot ws_abc123
|
|
95
|
+
oblien images list
|
|
96
|
+
oblien ssh enable ws_abc123
|
|
97
|
+
oblien public-access expose ws_abc123 --port 3000
|
|
98
|
+
oblien workloads list ws_abc123
|
|
99
|
+
oblien metrics stats ws_abc123
|
|
100
|
+
oblien usage global
|
|
101
|
+
oblien metadata get ws_abc123
|
|
102
|
+
oblien terminal list ws_abc123
|
|
103
|
+
oblien watcher create ws_abc123 --path /app/src
|
|
104
|
+
`.trimStart());
|
|
105
|
+
}
|
|
106
|
+
// ── Main ────────────────────────────────────────────────────────────
|
|
107
|
+
async function main() {
|
|
108
|
+
const raw = process.argv.slice(2);
|
|
109
|
+
if (raw.length === 0 || raw[0] === '-h' || raw[0] === '--help') {
|
|
110
|
+
help();
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
if (raw[0] === '-v' || raw[0] === '--version') {
|
|
114
|
+
version();
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
const command = raw[0];
|
|
118
|
+
const rest = raw.slice(1);
|
|
119
|
+
const globals = extractGlobalFlags(rest);
|
|
120
|
+
const args = globals.remaining;
|
|
121
|
+
const flags = { json: globals.json, clientId: globals.clientId, clientSecret: globals.clientSecret, baseUrl: globals.baseUrl };
|
|
122
|
+
try {
|
|
123
|
+
switch (command) {
|
|
124
|
+
case 'config':
|
|
125
|
+
await configCmd(args, flags);
|
|
126
|
+
break;
|
|
127
|
+
case 'skills':
|
|
128
|
+
await skillsCmd(args, flags);
|
|
129
|
+
break;
|
|
130
|
+
case 'ws':
|
|
131
|
+
case 'workspaces':
|
|
132
|
+
await workspacesCmd(args, flags);
|
|
133
|
+
break;
|
|
134
|
+
case 'exec':
|
|
135
|
+
await execCmd(rest, flags); // pass full rest — exec needs -- handling
|
|
136
|
+
break;
|
|
137
|
+
case 'files':
|
|
138
|
+
await filesCmd(args, flags);
|
|
139
|
+
break;
|
|
140
|
+
case 'search':
|
|
141
|
+
await searchCmd(args, flags);
|
|
142
|
+
break;
|
|
143
|
+
case 'network':
|
|
144
|
+
await networkCmd(args, flags);
|
|
145
|
+
break;
|
|
146
|
+
case 'api-access':
|
|
147
|
+
await apiAccessCmd(args, flags);
|
|
148
|
+
break;
|
|
149
|
+
case 'lifecycle':
|
|
150
|
+
await lifecycleCmd(args, flags);
|
|
151
|
+
break;
|
|
152
|
+
case 'snapshots':
|
|
153
|
+
await snapshotsCmd(args, flags);
|
|
154
|
+
break;
|
|
155
|
+
case 'images':
|
|
156
|
+
await imagesCmd(args, flags);
|
|
157
|
+
break;
|
|
158
|
+
case 'logs':
|
|
159
|
+
await logsCmd(args, flags);
|
|
160
|
+
break;
|
|
161
|
+
case 'ssh':
|
|
162
|
+
await sshCmd(args, flags);
|
|
163
|
+
break;
|
|
164
|
+
case 'public-access':
|
|
165
|
+
await publicAccessCmd(args, flags);
|
|
166
|
+
break;
|
|
167
|
+
case 'workloads':
|
|
168
|
+
await workloadsCmd(args, flags);
|
|
169
|
+
break;
|
|
170
|
+
case 'metrics':
|
|
171
|
+
await metricsCmd(args, flags);
|
|
172
|
+
break;
|
|
173
|
+
case 'usage':
|
|
174
|
+
await usageCmd(args, flags);
|
|
175
|
+
break;
|
|
176
|
+
case 'metadata':
|
|
177
|
+
await metadataCmd(args, flags);
|
|
178
|
+
break;
|
|
179
|
+
case 'terminal':
|
|
180
|
+
await terminalCmd(args, flags);
|
|
181
|
+
break;
|
|
182
|
+
case 'watcher':
|
|
183
|
+
await watcherCmd(args, flags);
|
|
184
|
+
break;
|
|
185
|
+
default:
|
|
186
|
+
console.error(`Unknown command: ${command}\n`);
|
|
187
|
+
help();
|
|
188
|
+
process.exit(1);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
catch (err) {
|
|
192
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
193
|
+
const code = err.status;
|
|
194
|
+
console.error(`✗ ${msg}${code ? ` (HTTP ${code})` : ''}`);
|
|
195
|
+
process.exit(1);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
main();
|
|
199
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Output utilities — JSON by default, table when --table is passed.
|
|
3
|
+
*/
|
|
4
|
+
export declare function printJson(data: unknown): void;
|
|
5
|
+
export declare function printTable(rows: Record<string, unknown>[], columns?: string[]): void;
|
|
6
|
+
export declare function printSuccess(message: string): void;
|
|
7
|
+
export declare function printError(message: string): void;
|
|
8
|
+
export declare function printKeyValue(data: Record<string, unknown>, indent?: number): void;
|
|
9
|
+
/**
|
|
10
|
+
* Parse global flags from args, return remaining args.
|
|
11
|
+
*/
|
|
12
|
+
export declare function extractGlobalFlags(args: string[]): {
|
|
13
|
+
json: boolean;
|
|
14
|
+
clientId?: string;
|
|
15
|
+
clientSecret?: string;
|
|
16
|
+
baseUrl?: string;
|
|
17
|
+
remaining: string[];
|
|
18
|
+
};
|
|
19
|
+
/** Print a result — JSON if --json flag, otherwise key-value. */
|
|
20
|
+
export declare function printResult(data: unknown, json: boolean): void;
|
|
21
|
+
//# sourceMappingURL=output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAE7C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAwBpF;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,SAAI,GAAG,IAAI,CAa7E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAClD,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CA8BA;AAED,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAgB9D"}
|