@elaraai/e3-cli 0.0.1-alpha.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 (71) hide show
  1. package/LICENSE.md +50 -0
  2. package/README.md +121 -0
  3. package/dist/src/cli-test-helpers.d.ts +17 -0
  4. package/dist/src/cli-test-helpers.d.ts.map +1 -0
  5. package/dist/src/cli-test-helpers.js +48 -0
  6. package/dist/src/cli-test-helpers.js.map +1 -0
  7. package/dist/src/cli.d.ts +7 -0
  8. package/dist/src/cli.d.ts.map +1 -0
  9. package/dist/src/cli.js +144 -0
  10. package/dist/src/cli.js.map +1 -0
  11. package/dist/src/commands/convert.d.ts +11 -0
  12. package/dist/src/commands/convert.d.ts.map +1 -0
  13. package/dist/src/commands/convert.impl.d.ts +31 -0
  14. package/dist/src/commands/convert.impl.d.ts.map +1 -0
  15. package/dist/src/commands/convert.impl.js +197 -0
  16. package/dist/src/commands/convert.impl.js.map +1 -0
  17. package/dist/src/commands/convert.js +11 -0
  18. package/dist/src/commands/convert.js.map +1 -0
  19. package/dist/src/commands/gc.d.ts +12 -0
  20. package/dist/src/commands/gc.d.ts.map +1 -0
  21. package/dist/src/commands/gc.js +44 -0
  22. package/dist/src/commands/gc.js.map +1 -0
  23. package/dist/src/commands/get.d.ts +11 -0
  24. package/dist/src/commands/get.d.ts.map +1 -0
  25. package/dist/src/commands/get.js +60 -0
  26. package/dist/src/commands/get.js.map +1 -0
  27. package/dist/src/commands/init.d.ts +9 -0
  28. package/dist/src/commands/init.d.ts.map +1 -0
  29. package/dist/src/commands/init.js +33 -0
  30. package/dist/src/commands/init.js.map +1 -0
  31. package/dist/src/commands/list.d.ts +9 -0
  32. package/dist/src/commands/list.d.ts.map +1 -0
  33. package/dist/src/commands/list.js +54 -0
  34. package/dist/src/commands/list.js.map +1 -0
  35. package/dist/src/commands/logs.d.ts +11 -0
  36. package/dist/src/commands/logs.d.ts.map +1 -0
  37. package/dist/src/commands/logs.js +179 -0
  38. package/dist/src/commands/logs.js.map +1 -0
  39. package/dist/src/commands/package.d.ts +23 -0
  40. package/dist/src/commands/package.d.ts.map +1 -0
  41. package/dist/src/commands/package.js +78 -0
  42. package/dist/src/commands/package.js.map +1 -0
  43. package/dist/src/commands/run.d.ts +12 -0
  44. package/dist/src/commands/run.d.ts.map +1 -0
  45. package/dist/src/commands/run.js +99 -0
  46. package/dist/src/commands/run.js.map +1 -0
  47. package/dist/src/commands/set.d.ts +11 -0
  48. package/dist/src/commands/set.d.ts.map +1 -0
  49. package/dist/src/commands/set.js +129 -0
  50. package/dist/src/commands/set.js.map +1 -0
  51. package/dist/src/commands/start.d.ts +13 -0
  52. package/dist/src/commands/start.d.ts.map +1 -0
  53. package/dist/src/commands/start.js +111 -0
  54. package/dist/src/commands/start.js.map +1 -0
  55. package/dist/src/commands/status.d.ts +9 -0
  56. package/dist/src/commands/status.d.ts.map +1 -0
  57. package/dist/src/commands/status.js +157 -0
  58. package/dist/src/commands/status.js.map +1 -0
  59. package/dist/src/commands/workspace.d.ts +30 -0
  60. package/dist/src/commands/workspace.d.ts.map +1 -0
  61. package/dist/src/commands/workspace.js +106 -0
  62. package/dist/src/commands/workspace.js.map +1 -0
  63. package/dist/src/index.d.ts +6 -0
  64. package/dist/src/index.d.ts.map +1 -0
  65. package/dist/src/index.js +6 -0
  66. package/dist/src/index.js.map +1 -0
  67. package/dist/src/utils.d.ts +28 -0
  68. package/dist/src/utils.d.ts.map +1 -0
  69. package/dist/src/utils.js +45 -0
  70. package/dist/src/utils.js.map +1 -0
  71. package/package.json +50 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.impl.js","sourceRoot":"","sources":["../../../src/commands/convert.impl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ /**
6
+ * e3 convert command - Transform data between .east, .json, and .beast2 formats
7
+ *
8
+ * Re-exports the existing convert logic.
9
+ */
10
+ export { convertFile as convertCommand } from './convert.impl.js';
11
+ //# sourceMappingURL=convert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/commands/convert.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ /**
6
+ * Run garbage collection.
7
+ */
8
+ export declare function gcCommand(repoArg: string, options: {
9
+ dryRun?: boolean;
10
+ minAge?: string;
11
+ }): Promise<void>;
12
+ //# sourceMappingURL=gc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gc.d.ts","sourceRoot":"","sources":["../../../src/commands/gc.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH;;GAEG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C,OAAO,CAAC,IAAI,CAAC,CA6Bf"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ /**
6
+ * e3 gc command - Garbage collection
7
+ *
8
+ * Usage:
9
+ * e3 gc .
10
+ * e3 gc . --dry-run
11
+ */
12
+ import { repoGc } from '@elaraai/e3-core';
13
+ import { resolveRepo, formatError, exitError } from '../utils.js';
14
+ /**
15
+ * Run garbage collection.
16
+ */
17
+ export async function gcCommand(repoArg, options) {
18
+ try {
19
+ const repoPath = resolveRepo(repoArg);
20
+ const minAge = options.minAge ? parseInt(options.minAge, 10) : 60000;
21
+ if (options.dryRun) {
22
+ console.log('Dry run - no files will be deleted');
23
+ }
24
+ console.log(`Minimum age: ${minAge}ms`);
25
+ console.log('');
26
+ const result = await repoGc(repoPath, {
27
+ dryRun: options.dryRun,
28
+ minAge,
29
+ });
30
+ console.log('Garbage collection complete:');
31
+ console.log(` Objects retained: ${result.retainedObjects}`);
32
+ console.log(` Objects deleted: ${result.deletedObjects}`);
33
+ console.log(` Partials deleted: ${result.deletedPartials}`);
34
+ console.log(` Skipped (young): ${result.skippedYoung}`);
35
+ if (result.bytesFreed > 0) {
36
+ const mb = (result.bytesFreed / 1024 / 1024).toFixed(2);
37
+ console.log(` Space reclaimed: ${mb} MB`);
38
+ }
39
+ }
40
+ catch (err) {
41
+ exitError(formatError(err));
42
+ }
43
+ }
44
+ //# sourceMappingURL=gc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gc.js","sourceRoot":"","sources":["../../../src/commands/gc.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAElE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAe,EACf,OAA8C;IAE9C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAErE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,IAAI,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE;YACpC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM;SACP,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QAE1D,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ /**
6
+ * Get dataset value at a path.
7
+ */
8
+ export declare function getCommand(repoArg: string, pathSpec: string, options: {
9
+ format?: string;
10
+ }): Promise<void>;
11
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/commands/get.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH;;GAEG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3B,OAAO,CAAC,IAAI,CAAC,CA+Cf"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ /**
6
+ * e3 get command - Get dataset value
7
+ *
8
+ * Usage:
9
+ * e3 get . ws.path.to.dataset
10
+ * e3 get . ws.path.to.dataset -f json
11
+ */
12
+ import { workspaceGetDatasetHash, datasetRead } from '@elaraai/e3-core';
13
+ import { printFor, toJSONFor } from '@elaraai/east';
14
+ import { resolveRepo, parseDatasetPath, formatError, exitError } from '../utils.js';
15
+ /**
16
+ * Get dataset value at a path.
17
+ */
18
+ export async function getCommand(repoArg, pathSpec, options) {
19
+ try {
20
+ const repoPath = resolveRepo(repoArg);
21
+ const { ws, path } = parseDatasetPath(pathSpec);
22
+ if (path.length === 0) {
23
+ exitError('Path must include at least one field (e.g., ws.field)');
24
+ }
25
+ // Get the hash first, then read with type info
26
+ const { refType, hash } = await workspaceGetDatasetHash(repoPath, ws, path);
27
+ if (refType === 'unassigned') {
28
+ exitError('Dataset is unassigned (pending task output)');
29
+ }
30
+ if (refType === 'null' || hash === null) {
31
+ console.log('null');
32
+ return;
33
+ }
34
+ // Read the dataset to get both value and type
35
+ const { type, value } = await datasetRead(repoPath, hash);
36
+ const format = options.format ?? 'east';
37
+ switch (format) {
38
+ case 'east': {
39
+ const printer = printFor(type);
40
+ console.log(printer(value));
41
+ break;
42
+ }
43
+ case 'json': {
44
+ const toJSON = toJSONFor(type);
45
+ const jsonValue = toJSON(value);
46
+ console.log(JSON.stringify(jsonValue, null, 2));
47
+ break;
48
+ }
49
+ case 'beast2':
50
+ exitError('beast2 output format not yet implemented for get command');
51
+ break;
52
+ default:
53
+ exitError(`Unknown format: ${format}. Use: east, json, beast2`);
54
+ }
55
+ }
56
+ catch (err) {
57
+ exitError(formatError(err));
58
+ }
59
+ }
60
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/get.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AAEH,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEpF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAe,EACf,QAAgB,EAChB,OAA4B;IAE5B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEhD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,SAAS,CAAC,uDAAuD,CAAC,CAAC;QACrE,CAAC;QAED,+CAA+C;QAC/C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAE5E,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;YAC7B,SAAS,CAAC,6CAA6C,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,OAAO,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QAED,8CAA8C;QAC9C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAE1D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC;QAExC,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC5B,MAAM;YACR,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAChD,MAAM;YACR,CAAC;YACD,KAAK,QAAQ;gBACX,SAAS,CAAC,0DAA0D,CAAC,CAAC;gBACtE,MAAM;YACR;gBACE,SAAS,CAAC,mBAAmB,MAAM,2BAA2B,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ /**
6
+ * Initialize a new e3 repository.
7
+ */
8
+ export declare function initCommand(repoArg: string): void;
9
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAoBjD"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ /**
6
+ * e3 init command - Initialize a new e3 repository
7
+ */
8
+ import { resolve } from 'path';
9
+ import { repoInit } from '@elaraai/e3-core';
10
+ import { formatError, exitError } from '../utils.js';
11
+ /**
12
+ * Initialize a new e3 repository.
13
+ */
14
+ export function initCommand(repoArg) {
15
+ const absolutePath = resolve(repoArg);
16
+ const result = repoInit(absolutePath);
17
+ if (!result.success) {
18
+ if (result.alreadyExists) {
19
+ exitError(`e3 repository already exists at ${result.e3Dir}`);
20
+ }
21
+ else {
22
+ exitError(`Failed to create repository: ${formatError(result.error)}`);
23
+ }
24
+ }
25
+ console.log(`Initialized e3 repository at ${result.e3Dir}`);
26
+ console.log('');
27
+ console.log('Created:');
28
+ console.log(' objects/ Content-addressable storage');
29
+ console.log(' packages/ Package references');
30
+ console.log(' workspaces/ Workspace state');
31
+ console.log(' executions/ Task execution cache');
32
+ }
33
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAErD;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtC,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,SAAS,CAAC,mCAAmC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,gCAAgC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gCAAgC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ /**
6
+ * List workspaces or tree contents at a path.
7
+ */
8
+ export declare function listCommand(repoArg: string, pathSpec?: string): Promise<void>;
9
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/list.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuCnF"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ /**
6
+ * e3 list command - List workspaces or tree contents
7
+ *
8
+ * Usage:
9
+ * e3 list . # List all workspaces
10
+ * e3 list . ws # List root tree of workspace
11
+ * e3 list . ws.inputs # List fields under inputs
12
+ */
13
+ import { workspaceList, workspaceListTree, workspaceGetState, } from '@elaraai/e3-core';
14
+ import { resolveRepo, parseDatasetPath, formatError, exitError } from '../utils.js';
15
+ /**
16
+ * List workspaces or tree contents at a path.
17
+ */
18
+ export async function listCommand(repoArg, pathSpec) {
19
+ try {
20
+ const repoPath = resolveRepo(repoArg);
21
+ // If no path, list workspaces
22
+ if (!pathSpec) {
23
+ const workspaces = await workspaceList(repoPath);
24
+ if (workspaces.length === 0) {
25
+ console.log('No workspaces');
26
+ return;
27
+ }
28
+ for (const ws of workspaces) {
29
+ const state = await workspaceGetState(repoPath, ws);
30
+ if (state) {
31
+ console.log(`${ws} (${state.packageName}@${state.packageVersion})`);
32
+ }
33
+ else {
34
+ console.log(`${ws} (not deployed)`);
35
+ }
36
+ }
37
+ return;
38
+ }
39
+ // Parse path and list tree contents
40
+ const { ws, path } = parseDatasetPath(pathSpec);
41
+ const fields = await workspaceListTree(repoPath, ws, path);
42
+ if (fields.length === 0) {
43
+ console.log('(empty)');
44
+ return;
45
+ }
46
+ for (const field of fields) {
47
+ console.log(field);
48
+ }
49
+ }
50
+ catch (err) {
51
+ exitError(formatError(err));
52
+ }
53
+ }
54
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/list.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AAEH,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEpF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAe,EAAE,QAAiB;IAClE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QAEtC,8BAA8B;QAC9B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;YAEjD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBAC7B,OAAO;YACT,CAAC;YAED,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACpD,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;gBACvE,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YACD,OAAO;QACT,CAAC;QAED,oCAAoC;QACpC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAE3D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ /**
6
+ * View execution logs for workspace tasks.
7
+ */
8
+ export declare function logsCommand(repoArg: string, pathSpec?: string, options?: {
9
+ follow?: boolean;
10
+ }): Promise<void>;
11
+ //# sourceMappingURL=logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/commands/logs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8LH;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC,IAAI,CAAC,CAgCf"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ /**
6
+ * e3 logs command - View execution logs for workspace tasks
7
+ *
8
+ * Usage:
9
+ * e3 logs . ws # List tasks in workspace
10
+ * e3 logs . ws.taskName # Show logs for task's latest execution
11
+ * e3 logs . ws.taskName --follow # Follow log output
12
+ */
13
+ import { workspaceListTasks, workspaceGetTaskHash, executionListForTask, executionReadLog, executionGet, inputsHash, workspaceGetDatasetHash, workspaceGetTask, } from '@elaraai/e3-core';
14
+ import { resolveRepo, formatError, exitError } from '../utils.js';
15
+ /**
16
+ * Format a hash for display (abbreviated).
17
+ */
18
+ function abbrev(hash) {
19
+ return hash.slice(0, 8);
20
+ }
21
+ /**
22
+ * Parse task path: ws.taskName
23
+ */
24
+ function parseTaskPath(pathSpec) {
25
+ const dotIndex = pathSpec.indexOf('.');
26
+ if (dotIndex === -1) {
27
+ return { ws: pathSpec };
28
+ }
29
+ return {
30
+ ws: pathSpec.slice(0, dotIndex),
31
+ taskName: pathSpec.slice(dotIndex + 1),
32
+ };
33
+ }
34
+ /**
35
+ * List tasks in a workspace with their execution status.
36
+ */
37
+ async function listWorkspaceTasks(repoPath, ws) {
38
+ const tasks = await workspaceListTasks(repoPath, ws);
39
+ if (tasks.length === 0) {
40
+ console.log(`No tasks in workspace: ${ws}`);
41
+ return;
42
+ }
43
+ console.log(`Tasks in workspace: ${ws}`);
44
+ console.log('');
45
+ for (const taskName of tasks) {
46
+ const taskHash = await workspaceGetTaskHash(repoPath, ws, taskName);
47
+ const executions = await executionListForTask(repoPath, taskHash);
48
+ if (executions.length === 0) {
49
+ console.log(` ${taskName} (no executions)`);
50
+ }
51
+ else {
52
+ // Get status of the most recent execution
53
+ const latestInHash = executions[0];
54
+ const status = await executionGet(repoPath, taskHash, latestInHash);
55
+ const state = status?.type ?? 'unknown';
56
+ console.log(` ${taskName} [${state}] (${executions.length} execution(s))`);
57
+ }
58
+ }
59
+ console.log('');
60
+ console.log(`Use "e3 logs . ${ws}.<taskName>" to view logs.`);
61
+ }
62
+ /**
63
+ * Find the inputs hash for the current workspace state of a task.
64
+ * This matches the execution that corresponds to the current input values.
65
+ */
66
+ async function findCurrentExecution(repoPath, ws, taskName) {
67
+ const taskHash = await workspaceGetTaskHash(repoPath, ws, taskName);
68
+ const task = await workspaceGetTask(repoPath, ws, taskName);
69
+ // Get the current input hashes from the workspace
70
+ const currentInputHashes = [];
71
+ for (const inputPath of task.inputs) {
72
+ const { refType, hash } = await workspaceGetDatasetHash(repoPath, ws, inputPath);
73
+ if (refType !== 'value' || hash === null) {
74
+ // Input not assigned - can't find matching execution
75
+ return null;
76
+ }
77
+ currentInputHashes.push(hash);
78
+ }
79
+ const inHash = inputsHash(currentInputHashes);
80
+ // Check if this execution exists
81
+ const executions = await executionListForTask(repoPath, taskHash);
82
+ if (executions.includes(inHash)) {
83
+ return { taskHash, inHash };
84
+ }
85
+ // Fall back to the most recent execution if current inputs don't match
86
+ if (executions.length > 0) {
87
+ return { taskHash, inHash: executions[0] };
88
+ }
89
+ return null;
90
+ }
91
+ /**
92
+ * Show logs for a specific execution.
93
+ */
94
+ async function showLogs(repoPath, taskHash, inHash, follow) {
95
+ // Read stdout and stderr
96
+ const stdout = await executionReadLog(repoPath, taskHash, inHash, 'stdout');
97
+ const stderr = await executionReadLog(repoPath, taskHash, inHash, 'stderr');
98
+ if (stdout.totalSize === 0 && stderr.totalSize === 0) {
99
+ console.log('No log output.');
100
+ return;
101
+ }
102
+ if (stdout.totalSize > 0) {
103
+ console.log('=== STDOUT ===');
104
+ console.log(stdout.data);
105
+ }
106
+ if (stderr.totalSize > 0) {
107
+ if (stdout.totalSize > 0) {
108
+ console.log('');
109
+ }
110
+ console.log('=== STDERR ===');
111
+ console.log(stderr.data);
112
+ }
113
+ if (follow) {
114
+ // Follow mode: poll for new content
115
+ let stdoutOffset = stdout.offset + stdout.size;
116
+ let stderrOffset = stderr.offset + stderr.size;
117
+ console.log('');
118
+ console.log('[Following... press Ctrl+C to stop]');
119
+ const pollInterval = 500; // ms
120
+ const poll = async () => {
121
+ const newStdout = await executionReadLog(repoPath, taskHash, inHash, 'stdout', {
122
+ offset: stdoutOffset,
123
+ });
124
+ const newStderr = await executionReadLog(repoPath, taskHash, inHash, 'stderr', {
125
+ offset: stderrOffset,
126
+ });
127
+ if (newStdout.size > 0) {
128
+ process.stdout.write(newStdout.data);
129
+ stdoutOffset += newStdout.size;
130
+ }
131
+ if (newStderr.size > 0) {
132
+ process.stderr.write(newStderr.data);
133
+ stderrOffset += newStderr.size;
134
+ }
135
+ };
136
+ // Keep polling until interrupted
137
+ const intervalId = setInterval(() => void poll(), pollInterval);
138
+ process.on('SIGINT', () => {
139
+ clearInterval(intervalId);
140
+ console.log('\n[Stopped]');
141
+ process.exit(0);
142
+ });
143
+ // Keep the process alive
144
+ await new Promise(() => {
145
+ // Never resolves - will be interrupted by Ctrl+C
146
+ });
147
+ }
148
+ }
149
+ /**
150
+ * View execution logs for workspace tasks.
151
+ */
152
+ export async function logsCommand(repoArg, pathSpec, options = {}) {
153
+ try {
154
+ const repoPath = resolveRepo(repoArg);
155
+ if (!pathSpec) {
156
+ exitError('Usage: e3 logs <repo> <ws> or e3 logs <repo> <ws.taskName>');
157
+ }
158
+ // Parse the path: ws or ws.taskName
159
+ const { ws, taskName } = parseTaskPath(pathSpec);
160
+ if (!taskName) {
161
+ // No task specified - list tasks in workspace
162
+ await listWorkspaceTasks(repoPath, ws);
163
+ return;
164
+ }
165
+ // Find the execution for this task
166
+ const execution = await findCurrentExecution(repoPath, ws, taskName);
167
+ if (!execution) {
168
+ exitError(`No executions found for task: ${ws}.${taskName}`);
169
+ }
170
+ console.log(`Task: ${ws}.${taskName}`);
171
+ console.log(`Execution: ${abbrev(execution.taskHash)}/${abbrev(execution.inHash)}`);
172
+ console.log('');
173
+ await showLogs(repoPath, execution.taskHash, execution.inHash, options.follow ?? false);
174
+ }
175
+ catch (err) {
176
+ exitError(formatError(err));
177
+ }
178
+ }
179
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/commands/logs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ export declare const packageCommand: {
6
+ /**
7
+ * Import a package from a .zip file.
8
+ */
9
+ import(repoArg: string, zipPath: string): Promise<void>;
10
+ /**
11
+ * Export a package to a .zip file.
12
+ */
13
+ export(repoArg: string, pkgSpec: string, zipPath: string): Promise<void>;
14
+ /**
15
+ * List installed packages.
16
+ */
17
+ list(repoArg: string): Promise<void>;
18
+ /**
19
+ * Remove a package.
20
+ */
21
+ remove(repoArg: string, pkgSpec: string): Promise<void>;
22
+ };
23
+ //# sourceMappingURL=package.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../../src/commands/package.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,eAAO,MAAM,cAAc;IACzB;;OAEG;oBACmB,MAAM,WAAW,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa7D;;OAEG;oBACmB,MAAM,WAAW,MAAM,WAAW,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe9E;;OAEG;kBACiB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB1C;;OAEG;oBACmB,MAAM,WAAW,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAa9D,CAAC"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ /**
6
+ * e3 package commands - Package management
7
+ */
8
+ import { packageImport, packageExport, packageList, packageRemove, } from '@elaraai/e3-core';
9
+ import { resolveRepo, parsePackageSpec, formatError, exitError } from '../utils.js';
10
+ export const packageCommand = {
11
+ /**
12
+ * Import a package from a .zip file.
13
+ */
14
+ async import(repoArg, zipPath) {
15
+ try {
16
+ const repoPath = resolveRepo(repoArg);
17
+ const result = await packageImport(repoPath, zipPath);
18
+ console.log(`Imported ${result.name}@${result.version}`);
19
+ console.log(` Package hash: ${result.packageHash.slice(0, 12)}...`);
20
+ console.log(` Objects: ${result.objectCount}`);
21
+ }
22
+ catch (err) {
23
+ exitError(formatError(err));
24
+ }
25
+ },
26
+ /**
27
+ * Export a package to a .zip file.
28
+ */
29
+ async export(repoArg, pkgSpec, zipPath) {
30
+ try {
31
+ const repoPath = resolveRepo(repoArg);
32
+ const { name, version } = parsePackageSpec(pkgSpec);
33
+ const result = await packageExport(repoPath, name, version, zipPath);
34
+ console.log(`Exported ${name}@${version} to ${zipPath}`);
35
+ console.log(` Package hash: ${result.packageHash.slice(0, 12)}...`);
36
+ console.log(` Objects: ${result.objectCount}`);
37
+ }
38
+ catch (err) {
39
+ exitError(formatError(err));
40
+ }
41
+ },
42
+ /**
43
+ * List installed packages.
44
+ */
45
+ async list(repoArg) {
46
+ try {
47
+ const repoPath = resolveRepo(repoArg);
48
+ const packages = await packageList(repoPath);
49
+ if (packages.length === 0) {
50
+ console.log('No packages installed');
51
+ return;
52
+ }
53
+ console.log('Packages:');
54
+ for (const pkg of packages) {
55
+ console.log(` ${pkg.name}@${pkg.version}`);
56
+ }
57
+ }
58
+ catch (err) {
59
+ exitError(formatError(err));
60
+ }
61
+ },
62
+ /**
63
+ * Remove a package.
64
+ */
65
+ async remove(repoArg, pkgSpec) {
66
+ try {
67
+ const repoPath = resolveRepo(repoArg);
68
+ const { name, version } = parsePackageSpec(pkgSpec);
69
+ await packageRemove(repoPath, name, version);
70
+ console.log(`Removed ${name}@${version}`);
71
+ console.log('Run `e3 gc` to reclaim disk space');
72
+ }
73
+ catch (err) {
74
+ exitError(formatError(err));
75
+ }
76
+ },
77
+ };
78
+ //# sourceMappingURL=package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.js","sourceRoot":"","sources":["../../../src/commands/package.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ /**
6
+ * Run a task ad-hoc with file inputs and output.
7
+ */
8
+ export declare function runCommand(repoArg: string, taskSpec: string, inputs: string[], options: {
9
+ output?: string;
10
+ force?: boolean;
11
+ }): Promise<void>;
12
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA6CH;;GAEG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5C,OAAO,CAAC,IAAI,CAAC,CAuEf"}