oblien 2.0.1 → 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.
Files changed (101) hide show
  1. package/dist/cli/auth.d.ts +13 -0
  2. package/dist/cli/auth.d.ts.map +1 -0
  3. package/dist/cli/auth.js +30 -0
  4. package/dist/cli/auth.js.map +1 -0
  5. package/dist/cli/commands/api-access.d.ts +3 -0
  6. package/dist/cli/commands/api-access.d.ts.map +1 -0
  7. package/dist/cli/commands/api-access.js +87 -0
  8. package/dist/cli/commands/api-access.js.map +1 -0
  9. package/dist/cli/commands/config.d.ts +3 -0
  10. package/dist/cli/commands/config.d.ts.map +1 -0
  11. package/dist/cli/commands/config.js +63 -0
  12. package/dist/cli/commands/config.js.map +1 -0
  13. package/dist/cli/commands/exec.d.ts +3 -0
  14. package/dist/cli/commands/exec.d.ts.map +1 -0
  15. package/dist/cli/commands/exec.js +173 -0
  16. package/dist/cli/commands/exec.js.map +1 -0
  17. package/dist/cli/commands/files.d.ts +3 -0
  18. package/dist/cli/commands/files.d.ts.map +1 -0
  19. package/dist/cli/commands/files.js +168 -0
  20. package/dist/cli/commands/files.js.map +1 -0
  21. package/dist/cli/commands/images.d.ts +3 -0
  22. package/dist/cli/commands/images.d.ts.map +1 -0
  23. package/dist/cli/commands/images.js +43 -0
  24. package/dist/cli/commands/images.js.map +1 -0
  25. package/dist/cli/commands/lifecycle.d.ts +3 -0
  26. package/dist/cli/commands/lifecycle.d.ts.map +1 -0
  27. package/dist/cli/commands/lifecycle.js +88 -0
  28. package/dist/cli/commands/lifecycle.js.map +1 -0
  29. package/dist/cli/commands/logs.d.ts +3 -0
  30. package/dist/cli/commands/logs.d.ts.map +1 -0
  31. package/dist/cli/commands/logs.js +104 -0
  32. package/dist/cli/commands/logs.js.map +1 -0
  33. package/dist/cli/commands/metadata.d.ts +3 -0
  34. package/dist/cli/commands/metadata.d.ts.map +1 -0
  35. package/dist/cli/commands/metadata.js +73 -0
  36. package/dist/cli/commands/metadata.js.map +1 -0
  37. package/dist/cli/commands/metrics.d.ts +3 -0
  38. package/dist/cli/commands/metrics.d.ts.map +1 -0
  39. package/dist/cli/commands/metrics.js +57 -0
  40. package/dist/cli/commands/metrics.js.map +1 -0
  41. package/dist/cli/commands/network.d.ts +3 -0
  42. package/dist/cli/commands/network.d.ts.map +1 -0
  43. package/dist/cli/commands/network.js +88 -0
  44. package/dist/cli/commands/network.js.map +1 -0
  45. package/dist/cli/commands/public-access.d.ts +3 -0
  46. package/dist/cli/commands/public-access.d.ts.map +1 -0
  47. package/dist/cli/commands/public-access.js +92 -0
  48. package/dist/cli/commands/public-access.js.map +1 -0
  49. package/dist/cli/commands/search.d.ts +3 -0
  50. package/dist/cli/commands/search.d.ts.map +1 -0
  51. package/dist/cli/commands/search.js +134 -0
  52. package/dist/cli/commands/search.js.map +1 -0
  53. package/dist/cli/commands/skills.d.ts +3 -0
  54. package/dist/cli/commands/skills.d.ts.map +1 -0
  55. package/dist/cli/commands/skills.js +156 -0
  56. package/dist/cli/commands/skills.js.map +1 -0
  57. package/dist/cli/commands/snapshots.d.ts +3 -0
  58. package/dist/cli/commands/snapshots.d.ts.map +1 -0
  59. package/dist/cli/commands/snapshots.js +100 -0
  60. package/dist/cli/commands/snapshots.js.map +1 -0
  61. package/dist/cli/commands/ssh.d.ts +3 -0
  62. package/dist/cli/commands/ssh.d.ts.map +1 -0
  63. package/dist/cli/commands/ssh.js +81 -0
  64. package/dist/cli/commands/ssh.js.map +1 -0
  65. package/dist/cli/commands/terminal.d.ts +3 -0
  66. package/dist/cli/commands/terminal.d.ts.map +1 -0
  67. package/dist/cli/commands/terminal.js +109 -0
  68. package/dist/cli/commands/terminal.js.map +1 -0
  69. package/dist/cli/commands/types.d.ts +8 -0
  70. package/dist/cli/commands/types.d.ts.map +1 -0
  71. package/dist/cli/commands/types.js +2 -0
  72. package/dist/cli/commands/types.js.map +1 -0
  73. package/dist/cli/commands/usage.d.ts +3 -0
  74. package/dist/cli/commands/usage.d.ts.map +1 -0
  75. package/dist/cli/commands/usage.js +98 -0
  76. package/dist/cli/commands/usage.js.map +1 -0
  77. package/dist/cli/commands/watcher.d.ts +3 -0
  78. package/dist/cli/commands/watcher.d.ts.map +1 -0
  79. package/dist/cli/commands/watcher.js +108 -0
  80. package/dist/cli/commands/watcher.js.map +1 -0
  81. package/dist/cli/commands/workloads.d.ts +3 -0
  82. package/dist/cli/commands/workloads.d.ts.map +1 -0
  83. package/dist/cli/commands/workloads.js +232 -0
  84. package/dist/cli/commands/workloads.js.map +1 -0
  85. package/dist/cli/commands/workspaces.d.ts +3 -0
  86. package/dist/cli/commands/workspaces.d.ts.map +1 -0
  87. package/dist/cli/commands/workspaces.js +255 -0
  88. package/dist/cli/commands/workspaces.js.map +1 -0
  89. package/dist/cli/config-store.d.ts +10 -0
  90. package/dist/cli/config-store.d.ts.map +1 -0
  91. package/dist/cli/config-store.js +28 -0
  92. package/dist/cli/config-store.js.map +1 -0
  93. package/dist/cli/index.d.ts +12 -0
  94. package/dist/cli/index.d.ts.map +1 -0
  95. package/dist/cli/index.js +199 -0
  96. package/dist/cli/index.js.map +1 -0
  97. package/dist/cli/output.d.ts +21 -0
  98. package/dist/cli/output.d.ts.map +1 -0
  99. package/dist/cli/output.js +108 -0
  100. package/dist/cli/output.js.map +1 -0
  101. package/package.json +6 -2
@@ -0,0 +1,13 @@
1
+ import { Oblien } from '../client.js';
2
+ /**
3
+ * Build an Oblien client from (in priority order):
4
+ * 1. Explicit flags (--client-id, --client-secret)
5
+ * 2. Environment variables (OBLIEN_CLIENT_ID, OBLIEN_CLIENT_SECRET)
6
+ * 3. Config file (~/.oblien/credentials.json)
7
+ */
8
+ export declare function buildClient(flags?: {
9
+ clientId?: string;
10
+ clientSecret?: string;
11
+ baseUrl?: string;
12
+ }): Oblien;
13
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAItC;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,CA4BT"}
@@ -0,0 +1,30 @@
1
+ import { Oblien } from '../client.js';
2
+ import { loadConfig } from './config-store.js';
3
+ /**
4
+ * Build an Oblien client from (in priority order):
5
+ * 1. Explicit flags (--client-id, --client-secret)
6
+ * 2. Environment variables (OBLIEN_CLIENT_ID, OBLIEN_CLIENT_SECRET)
7
+ * 3. Config file (~/.oblien/credentials.json)
8
+ */
9
+ export function buildClient(flags) {
10
+ const clientId = flags?.clientId ??
11
+ process.env.OBLIEN_CLIENT_ID ??
12
+ loadConfig()?.clientId;
13
+ const clientSecret = flags?.clientSecret ??
14
+ process.env.OBLIEN_CLIENT_SECRET ??
15
+ loadConfig()?.clientSecret;
16
+ if (!clientId || !clientSecret) {
17
+ console.error('Error: Missing credentials.\n\n' +
18
+ 'Provide credentials via:\n' +
19
+ ' 1. oblien config set\n' +
20
+ ' 2. Environment: OBLIEN_CLIENT_ID + OBLIEN_CLIENT_SECRET\n' +
21
+ ' 3. Flags: --client-id <id> --client-secret <secret>\n');
22
+ process.exit(1);
23
+ }
24
+ const opts = { clientId, clientSecret };
25
+ if (flags?.baseUrl ?? process.env.OBLIEN_BASE_URL ?? loadConfig()?.baseUrl) {
26
+ opts.baseUrl = flags?.baseUrl ?? process.env.OBLIEN_BASE_URL ?? loadConfig()?.baseUrl;
27
+ }
28
+ return new Oblien(opts);
29
+ }
30
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,KAI3B;IACC,MAAM,QAAQ,GACZ,KAAK,EAAE,QAAQ;QACf,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAC5B,UAAU,EAAE,EAAE,QAAQ,CAAC;IAEzB,MAAM,YAAY,GAChB,KAAK,EAAE,YAAY;QACnB,OAAO,CAAC,GAAG,CAAC,oBAAoB;QAChC,UAAU,EAAE,EAAE,YAAY,CAAC;IAE7B,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CACX,iCAAiC;YACjC,4BAA4B;YAC5B,0BAA0B;YAC1B,6DAA6D;YAC7D,yDAAyD,CAC1D,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAkB,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;IACvD,IAAI,KAAK,EAAE,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC;QAC3E,IAAI,CAAC,OAAO,GAAG,KAAK,EAAE,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,UAAU,EAAE,EAAE,OAAO,CAAC;IACxF,CAAC;IAED,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CliFlags } from './types.js';
2
+ export declare function apiAccessCmd(args: string[], flags: CliFlags): Promise<void>;
3
+ //# sourceMappingURL=api-access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-access.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/api-access.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BjF"}
@@ -0,0 +1,87 @@
1
+ import { buildClient } from '../auth.js';
2
+ import { printResult, printSuccess } from '../output.js';
3
+ export async function apiAccessCmd(args, flags) {
4
+ const sub = args[0];
5
+ switch (sub) {
6
+ case 'enable': return aaEnable(args[1], flags);
7
+ case 'disable': return aaDisable(args[1], flags);
8
+ case 'status': return aaStatus(args[1], flags);
9
+ case 'token': return aaToken(args[1], flags);
10
+ case 'raw-token': return aaRawToken(args[1], flags);
11
+ case 'rotate': return aaRotate(args[1], flags);
12
+ default:
13
+ console.log(`
14
+ oblien api-access — Manage Internal API access
15
+
16
+ Usage:
17
+ oblien api-access enable <ws-id> Enable Internal API (returns JWT)
18
+ oblien api-access disable <ws-id> Disable Internal API
19
+ oblien api-access status <ws-id> Check status
20
+ oblien api-access token <ws-id> Get gateway JWT
21
+ oblien api-access raw-token <ws-id> Get raw connection token + IP
22
+ oblien api-access rotate <ws-id> Rotate token
23
+
24
+ Examples:
25
+ oblien api-access enable ws_abc123
26
+ oblien api-access token ws_abc123 --json
27
+ oblien api-access raw-token ws_abc123
28
+ `);
29
+ }
30
+ }
31
+ function requireId(id, cmd) {
32
+ if (!id || id.startsWith('-')) {
33
+ console.error(`Usage: oblien api-access ${cmd} <workspace-id>`);
34
+ process.exit(1);
35
+ }
36
+ return id;
37
+ }
38
+ async function aaEnable(id, flags) {
39
+ const wsId = requireId(id, 'enable');
40
+ const client = buildClient(flags);
41
+ const res = await client.workspaces.apiAccess.enable(wsId);
42
+ if (flags.json) {
43
+ printResult(res, true);
44
+ }
45
+ else {
46
+ printSuccess(`Internal API enabled for ${wsId}`);
47
+ if (res.token) {
48
+ console.log(`\nGateway JWT:\n${res.token}\n`);
49
+ }
50
+ }
51
+ }
52
+ async function aaDisable(id, flags) {
53
+ const wsId = requireId(id, 'disable');
54
+ const client = buildClient(flags);
55
+ await client.workspaces.apiAccess.disable(wsId);
56
+ printSuccess(`Internal API disabled for ${wsId}`);
57
+ }
58
+ async function aaStatus(id, flags) {
59
+ const wsId = requireId(id, 'status');
60
+ const client = buildClient(flags);
61
+ const res = await client.workspaces.apiAccess.status(wsId);
62
+ printResult(res, flags.json);
63
+ }
64
+ async function aaToken(id, flags) {
65
+ const wsId = requireId(id, 'token');
66
+ const client = buildClient(flags);
67
+ const res = await client.workspaces.apiAccess.getToken(wsId);
68
+ if (flags.json) {
69
+ printResult(res, true);
70
+ }
71
+ else {
72
+ console.log(res.token ?? JSON.stringify(res));
73
+ }
74
+ }
75
+ async function aaRawToken(id, flags) {
76
+ const wsId = requireId(id, 'raw-token');
77
+ const client = buildClient(flags);
78
+ const res = await client.workspaces.apiAccess.rawToken(wsId);
79
+ printResult(res, flags.json);
80
+ }
81
+ async function aaRotate(id, flags) {
82
+ const wsId = requireId(id, 'rotate');
83
+ const client = buildClient(flags);
84
+ const res = await client.workspaces.apiAccess.rotateToken(wsId);
85
+ printResult(res, flags.json);
86
+ }
87
+ //# sourceMappingURL=api-access.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-access.js","sourceRoot":"","sources":["../../../src/cli/commands/api-access.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGzD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc,EAAE,KAAe;IAChE,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAEpB,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,QAAQ,CAAC,CAAM,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACpD,KAAK,SAAS,CAAC,CAAK,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACrD,KAAK,QAAQ,CAAC,CAAM,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACpD,KAAK,OAAO,CAAC,CAAO,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACnD,KAAK,WAAW,CAAC,CAAG,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACtD,KAAK,QAAQ,CAAC,CAAM,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACpD;YACE,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;CAejB,CAAC,CAAC;IACD,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,EAAsB,EAAE,GAAW;IACpD,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,4BAA4B,GAAG,iBAAiB,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,EAAsB,EAAE,KAAe;IAC7D,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3D,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,YAAY,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;QACjD,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,EAAsB,EAAE,KAAe;IAC9D,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,YAAY,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,EAAsB,EAAE,KAAe;IAC7D,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3D,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,EAAsB,EAAE,KAAe;IAC5D,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,EAAsB,EAAE,KAAe;IAC/D,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7D,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,EAAsB,EAAE,KAAe;IAC7D,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChE,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CliFlags } from './types.js';
2
+ export declare function configCmd(args: string[], _flags: CliFlags): Promise<void>;
3
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B/E"}
@@ -0,0 +1,63 @@
1
+ import { saveConfig, loadConfig, clearConfig, configPath } from '../config-store.js';
2
+ import { printSuccess, printKeyValue } from '../output.js';
3
+ export async function configCmd(args, _flags) {
4
+ const sub = args[0];
5
+ switch (sub) {
6
+ case 'set':
7
+ return configSet(args.slice(1));
8
+ case 'show':
9
+ return configShow();
10
+ case 'path':
11
+ console.log(configPath());
12
+ return;
13
+ case 'clear':
14
+ clearConfig();
15
+ printSuccess('Credentials cleared.');
16
+ return;
17
+ default:
18
+ console.log(`
19
+ oblien config — Manage credentials
20
+
21
+ Usage:
22
+ oblien config set --client-id <id> --client-secret <secret>
23
+ oblien config show
24
+ oblien config path
25
+ oblien config clear
26
+
27
+ Credentials are stored in ${configPath()}
28
+ `);
29
+ }
30
+ }
31
+ function configSet(args) {
32
+ let clientId;
33
+ let clientSecret;
34
+ let baseUrl;
35
+ for (let i = 0; i < args.length; i++) {
36
+ if (args[i] === '--client-id' && i + 1 < args.length)
37
+ clientId = args[++i];
38
+ else if (args[i] === '--client-secret' && i + 1 < args.length)
39
+ clientSecret = args[++i];
40
+ else if (args[i] === '--base-url' && i + 1 < args.length)
41
+ baseUrl = args[++i];
42
+ }
43
+ if (!clientId || !clientSecret) {
44
+ console.error('Usage: oblien config set --client-id <id> --client-secret <secret> [--base-url <url>]');
45
+ process.exit(1);
46
+ }
47
+ saveConfig({ clientId, clientSecret, baseUrl });
48
+ printSuccess(`Credentials saved to ${configPath()}`);
49
+ }
50
+ function configShow() {
51
+ const config = loadConfig();
52
+ if (!config || !config.clientId) {
53
+ console.log('No credentials configured.\n\nRun: oblien config set --client-id <id> --client-secret <secret>');
54
+ return;
55
+ }
56
+ printKeyValue({
57
+ clientId: config.clientId,
58
+ clientSecret: config.clientSecret.slice(0, 8) + '…',
59
+ baseUrl: config.baseUrl ?? 'https://api.oblien.com (default)',
60
+ path: configPath(),
61
+ });
62
+ }
63
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG3D,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAc,EAAE,MAAgB;IAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAEpB,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,KAAK;YACR,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,KAAK,MAAM;YACT,OAAO,UAAU,EAAE,CAAC;QACtB,KAAK,MAAM;YACT,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;YAC1B,OAAO;QACT,KAAK,OAAO;YACV,WAAW,EAAE,CAAC;YACd,YAAY,CAAC,sBAAsB,CAAC,CAAC;YACrC,OAAO;QACT;YACE,OAAO,CAAC,GAAG,CAAC;;;;;;;;;8BASY,UAAU,EAAE;CACzC,CAAC,CAAC;IACD,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAc;IAC/B,IAAI,QAA4B,CAAC;IACjC,IAAI,YAAgC,CAAC;IACrC,IAAI,OAA2B,CAAC;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,aAAa,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM;YAAE,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aACtE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,iBAAiB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM;YAAE,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aACnF,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM;YAAE,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,uFAAuF,CAAC,CAAC;QACvG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,UAAU,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;IAChD,YAAY,CAAC,wBAAwB,UAAU,EAAE,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,UAAU;IACjB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,gGAAgG,CAAC,CAAC;QAC9G,OAAO;IACT,CAAC;IAED,aAAa,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG;QACnD,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,kCAAkC;QAC7D,IAAI,EAAE,UAAU,EAAE;KACnB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CliFlags } from './types.js';
2
+ export declare function execCmd(rawArgs: string[], flags: CliFlags): Promise<void>;
3
+ //# sourceMappingURL=exec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/exec.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAkF/E"}
@@ -0,0 +1,173 @@
1
+ import { buildClient } from '../auth.js';
2
+ import { printResult } from '../output.js';
3
+ export async function execCmd(rawArgs, flags) {
4
+ // Parse: oblien exec <ws-id> [--stream] [--json] -- <cmd...>
5
+ // Or: oblien exec <ws-id> <cmd...>
6
+ // Strip global flags first
7
+ const args = rawArgs.filter((a, i) => {
8
+ if (a === '--json')
9
+ return false;
10
+ if (a === '--client-id' || a === '--client-secret' || a === '--base-url') {
11
+ rawArgs[i + 1] = ''; // mark next as consumed
12
+ return false;
13
+ }
14
+ return a !== '';
15
+ });
16
+ const wsId = args[0];
17
+ // Subcommands that don't run a command
18
+ if (wsId === 'list')
19
+ return execList(args[1], flags);
20
+ if (wsId === 'get')
21
+ return execGet(args[1], args[2], flags);
22
+ if (wsId === 'kill')
23
+ return execKill(args[1], args[2], flags);
24
+ if (wsId === 'delete-all')
25
+ return execDeleteAll(args[1], flags);
26
+ if (wsId === 'input')
27
+ return execInput(args[1], args[2], args.slice(3), flags);
28
+ if (wsId === 'subscribe')
29
+ return execSubscribe(args[1], args[2], flags);
30
+ if (!wsId || wsId.startsWith('-')) {
31
+ console.log(`
32
+ oblien exec — Execute commands in a workspace
33
+
34
+ Usage:
35
+ oblien exec <workspace-id> -- <command...> Run a command
36
+ oblien exec <workspace-id> --stream -- <cmd> Stream output (SSE)
37
+ oblien exec list <ws-id> List running tasks
38
+ oblien exec get <ws-id> <task-id> Get task info
39
+ oblien exec kill <ws-id> <task-id> Kill a task
40
+ oblien exec delete-all <ws-id> Delete all tasks
41
+ oblien exec input <ws-id> <task-id> <data> Send stdin to task
42
+ oblien exec subscribe <ws-id> <task-id> Stream task output
43
+
44
+ Examples:
45
+ oblien exec ws_abc123 -- npm test
46
+ oblien exec ws_abc123 -- ls -la /app
47
+ oblien exec ws_abc123 --stream -- npm run dev
48
+ oblien exec list ws_abc123
49
+ oblien exec kill ws_abc123 task_def456
50
+ oblien exec subscribe ws_abc123 task_def456
51
+ `);
52
+ return;
53
+ }
54
+ const stream = args.includes('--stream');
55
+ // Find everything after --
56
+ const dashIdx = args.indexOf('--');
57
+ let cmd;
58
+ if (dashIdx >= 0) {
59
+ cmd = args.slice(dashIdx + 1);
60
+ }
61
+ else {
62
+ // No -- separator, take everything after wsId and flags
63
+ cmd = args.slice(1).filter(a => a !== '--stream');
64
+ }
65
+ if (cmd.length === 0) {
66
+ console.error('Error: No command specified.\n\nUsage: oblien exec <ws-id> -- <command...>');
67
+ process.exit(1);
68
+ }
69
+ const client = buildClient(flags);
70
+ const rt = await client.workspaces.runtime(wsId);
71
+ if (stream) {
72
+ for await (const event of rt.exec.stream(cmd)) {
73
+ if ('data' in event) {
74
+ process.stdout.write(String(event.data));
75
+ }
76
+ else if (flags.json) {
77
+ printResult(event, true);
78
+ }
79
+ }
80
+ }
81
+ else {
82
+ const result = await rt.exec.run(cmd);
83
+ printResult(result, flags.json);
84
+ }
85
+ }
86
+ async function execList(wsId, flags) {
87
+ if (!wsId || wsId.startsWith('-')) {
88
+ console.error('Usage: oblien exec list <ws-id>');
89
+ process.exit(1);
90
+ }
91
+ const client = buildClient(flags);
92
+ const rt = await client.workspaces.runtime(wsId);
93
+ const res = await rt.exec.list();
94
+ printResult(res, flags.json);
95
+ }
96
+ async function execGet(wsId, taskId, flags) {
97
+ if (!wsId) {
98
+ console.error('Usage: oblien exec get <ws-id> <task-id>');
99
+ process.exit(1);
100
+ }
101
+ if (!taskId) {
102
+ console.error('Usage: oblien exec get <ws-id> <task-id>');
103
+ process.exit(1);
104
+ }
105
+ const client = buildClient(flags);
106
+ const rt = await client.workspaces.runtime(wsId);
107
+ const res = await rt.exec.get(taskId);
108
+ printResult(res, flags.json);
109
+ }
110
+ async function execKill(wsId, taskId, flags) {
111
+ if (!wsId) {
112
+ console.error('Usage: oblien exec kill <ws-id> <task-id>');
113
+ process.exit(1);
114
+ }
115
+ if (!taskId) {
116
+ console.error('Usage: oblien exec kill <ws-id> <task-id>');
117
+ process.exit(1);
118
+ }
119
+ const client = buildClient(flags);
120
+ const rt = await client.workspaces.runtime(wsId);
121
+ const res = await rt.exec.kill(taskId);
122
+ printResult(res, flags.json);
123
+ }
124
+ async function execDeleteAll(wsId, flags) {
125
+ if (!wsId || wsId.startsWith('-')) {
126
+ console.error('Usage: oblien exec delete-all <ws-id>');
127
+ process.exit(1);
128
+ }
129
+ const client = buildClient(flags);
130
+ const rt = await client.workspaces.runtime(wsId);
131
+ const res = await rt.exec.deleteAll();
132
+ printResult(res, flags.json);
133
+ }
134
+ async function execInput(wsId, taskId, rest, flags) {
135
+ if (!wsId) {
136
+ console.error('Usage: oblien exec input <ws-id> <task-id> <data>');
137
+ process.exit(1);
138
+ }
139
+ if (!taskId) {
140
+ console.error('Usage: oblien exec input <ws-id> <task-id> <data>');
141
+ process.exit(1);
142
+ }
143
+ const data = rest.join(' ');
144
+ if (!data) {
145
+ console.error('Usage: oblien exec input <ws-id> <task-id> <data>');
146
+ process.exit(1);
147
+ }
148
+ const client = buildClient(flags);
149
+ const rt = await client.workspaces.runtime(wsId);
150
+ const res = await rt.exec.input(taskId, data);
151
+ printResult(res, flags.json);
152
+ }
153
+ async function execSubscribe(wsId, taskId, flags) {
154
+ if (!wsId) {
155
+ console.error('Usage: oblien exec subscribe <ws-id> <task-id>');
156
+ process.exit(1);
157
+ }
158
+ if (!taskId) {
159
+ console.error('Usage: oblien exec subscribe <ws-id> <task-id>');
160
+ process.exit(1);
161
+ }
162
+ const client = buildClient(flags);
163
+ const rt = await client.workspaces.runtime(wsId);
164
+ for await (const event of rt.exec.subscribe(taskId)) {
165
+ if ('data' in event) {
166
+ process.stdout.write(String(event.data));
167
+ }
168
+ else if (flags.json) {
169
+ printResult(event, true);
170
+ }
171
+ }
172
+ }
173
+ //# sourceMappingURL=exec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../src/cli/commands/exec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CliFlags } from './types.js';
2
+ export declare function filesCmd(args: string[], flags: CliFlags): Promise<void>;
3
+ //# sourceMappingURL=files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/files.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC7E"}
@@ -0,0 +1,168 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { buildClient } from '../auth.js';
3
+ import { printResult, printTable, printSuccess } from '../output.js';
4
+ export async function filesCmd(args, flags) {
5
+ const sub = args[0];
6
+ switch (sub) {
7
+ case 'ls':
8
+ case 'list': return filesList(args[1], args.slice(2), flags);
9
+ case 'stream-ls': return filesStreamLs(args[1], args.slice(2), flags);
10
+ case 'cat':
11
+ case 'read': return filesRead(args[1], args[2], flags);
12
+ case 'write': return filesWrite(args[1], args[2], args.slice(3), flags);
13
+ case 'rm':
14
+ case 'delete': return filesDelete(args[1], args[2], flags);
15
+ case 'stat': return filesStat(args[1], args[2], flags);
16
+ case 'mkdir': return filesMkdir(args[1], args[2], flags);
17
+ default:
18
+ console.log(`
19
+ oblien files — Manage workspace files
20
+
21
+ Usage:
22
+ oblien files ls <ws-id> [path] List files
23
+ oblien files stream-ls <ws-id> [path] Stream file listing (NDJSON)
24
+ oblien files cat <ws-id> <path> Read a file
25
+ oblien files write <ws-id> <path> [--content <text> | --file <local-path>]
26
+ Write a file
27
+ oblien files rm <ws-id> <path> Delete file/directory
28
+ oblien files stat <ws-id> <path> Get file info
29
+ oblien files mkdir <ws-id> <path> Create directory
30
+
31
+ Examples:
32
+ oblien files ls ws_abc123 /app
33
+ oblien files cat ws_abc123 /app/index.js
34
+ oblien files write ws_abc123 /app/config.json --content '{"port": 3000}'
35
+ oblien files write ws_abc123 /app/main.py --file ./main.py
36
+ echo "hello" | oblien files write ws_abc123 /app/hello.txt
37
+ oblien files rm ws_abc123 /app/tmp
38
+ oblien files mkdir ws_abc123 /app/logs
39
+ `);
40
+ }
41
+ }
42
+ function requireArgs(wsId, cmd) {
43
+ if (!wsId || wsId.startsWith('-')) {
44
+ console.error(`Usage: oblien files ${cmd} <workspace-id> ...`);
45
+ process.exit(1);
46
+ }
47
+ return wsId;
48
+ }
49
+ async function filesList(wsId, args, flags) {
50
+ const id = requireArgs(wsId, 'ls');
51
+ const client = buildClient(flags);
52
+ const rt = await client.workspaces.runtime(id);
53
+ const dirPath = args[0] || '/';
54
+ const res = await rt.files.list({ dirPath });
55
+ if (flags.json) {
56
+ printResult(res, true);
57
+ }
58
+ else {
59
+ const entries = res.entries ?? res;
60
+ if (Array.isArray(entries)) {
61
+ printTable(entries.map((f) => ({
62
+ name: f.name + (f.type === 'directory' ? '/' : ''),
63
+ size: f.size ?? '-',
64
+ modified: f.modified?.slice(0, 19) ?? '-',
65
+ })), ['name', 'size', 'modified']);
66
+ }
67
+ else {
68
+ printResult(res, false);
69
+ }
70
+ }
71
+ }
72
+ async function filesRead(wsId, filePath, flags) {
73
+ const id = requireArgs(wsId, 'cat');
74
+ if (!filePath) {
75
+ console.error('Usage: oblien files cat <ws-id> <file-path>');
76
+ process.exit(1);
77
+ }
78
+ const client = buildClient(flags);
79
+ const rt = await client.workspaces.runtime(id);
80
+ const res = await rt.files.read({ filePath });
81
+ if (flags.json) {
82
+ printResult(res, true);
83
+ }
84
+ else {
85
+ // Print raw content for piping
86
+ process.stdout.write(res.content ?? JSON.stringify(res));
87
+ }
88
+ }
89
+ async function filesWrite(wsId, filePath, args, flags) {
90
+ const id = requireArgs(wsId, 'write');
91
+ if (!filePath) {
92
+ console.error('Usage: oblien files write <ws-id> <path> [--content <text> | --file <local>]');
93
+ process.exit(1);
94
+ }
95
+ let content;
96
+ const contentFlag = args.indexOf('--content');
97
+ const fileFlag = args.indexOf('--file');
98
+ if (contentFlag >= 0 && contentFlag + 1 < args.length) {
99
+ content = args[contentFlag + 1];
100
+ }
101
+ else if (fileFlag >= 0 && fileFlag + 1 < args.length) {
102
+ content = readFileSync(args[fileFlag + 1], 'utf-8');
103
+ }
104
+ else {
105
+ // Read from stdin
106
+ const chunks = [];
107
+ for await (const chunk of process.stdin) {
108
+ chunks.push(chunk);
109
+ }
110
+ content = Buffer.concat(chunks).toString('utf-8');
111
+ }
112
+ const client = buildClient(flags);
113
+ const rt = await client.workspaces.runtime(id);
114
+ const res = await rt.files.write({ fullPath: filePath, content, createDirs: true });
115
+ printResult(res, flags.json);
116
+ }
117
+ async function filesDelete(wsId, filePath, flags) {
118
+ const id = requireArgs(wsId, 'rm');
119
+ if (!filePath) {
120
+ console.error('Usage: oblien files rm <ws-id> <path>');
121
+ process.exit(1);
122
+ }
123
+ const client = buildClient(flags);
124
+ const rt = await client.workspaces.runtime(id);
125
+ await rt.files.delete({ path: filePath });
126
+ printSuccess(`Deleted: ${filePath}`);
127
+ }
128
+ async function filesStat(wsId, filePath, flags) {
129
+ const id = requireArgs(wsId, 'stat');
130
+ if (!filePath) {
131
+ console.error('Usage: oblien files stat <ws-id> <path>');
132
+ process.exit(1);
133
+ }
134
+ const client = buildClient(flags);
135
+ const rt = await client.workspaces.runtime(id);
136
+ const res = await rt.files.stat({ path: filePath });
137
+ printResult(res, flags.json);
138
+ }
139
+ async function filesMkdir(wsId, dirPath, flags) {
140
+ const id = requireArgs(wsId, 'mkdir');
141
+ if (!dirPath) {
142
+ console.error('Usage: oblien files mkdir <ws-id> <path>');
143
+ process.exit(1);
144
+ }
145
+ const client = buildClient(flags);
146
+ const rt = await client.workspaces.runtime(id);
147
+ await rt.files.mkdir({ path: dirPath });
148
+ printSuccess(`Created: ${dirPath}`);
149
+ }
150
+ async function filesStreamLs(wsId, args, flags) {
151
+ const id = requireArgs(wsId, 'stream-ls');
152
+ const dirPath = args.find(a => !a.startsWith('-')) ?? '/';
153
+ const client = buildClient(flags);
154
+ const rt = await client.workspaces.runtime(id);
155
+ const params = { path: dirPath };
156
+ if (args.includes('--recursive'))
157
+ params.recursive = true;
158
+ for await (const entry of rt.files.stream(params)) {
159
+ if (flags.json) {
160
+ printResult(entry, true);
161
+ }
162
+ else {
163
+ const name = entry.name ?? entry.path ?? JSON.stringify(entry);
164
+ process.stdout.write(`${name}\n`);
165
+ }
166
+ }
167
+ }
168
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/cli/commands/files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CliFlags } from './types.js';
2
+ export declare function imagesCmd(args: string[], flags: CliFlags): Promise<void>;
3
+ //# sourceMappingURL=images.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/images.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB9E"}