@elaraai/e3-cli 0.0.2-beta.4 → 0.0.2-beta.40

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 (69) hide show
  1. package/README.md +33 -9
  2. package/dist/src/cli.js +50 -15
  3. package/dist/src/cli.js.map +1 -1
  4. package/dist/src/commands/auth.d.ts +21 -0
  5. package/dist/src/commands/auth.d.ts.map +1 -0
  6. package/dist/src/commands/auth.js +196 -0
  7. package/dist/src/commands/auth.js.map +1 -0
  8. package/dist/src/commands/dataset-status.d.ts +9 -0
  9. package/dist/src/commands/dataset-status.d.ts.map +1 -0
  10. package/dist/src/commands/dataset-status.js +77 -0
  11. package/dist/src/commands/dataset-status.js.map +1 -0
  12. package/dist/src/commands/get.d.ts.map +1 -1
  13. package/dist/src/commands/get.js +32 -14
  14. package/dist/src/commands/get.js.map +1 -1
  15. package/dist/src/commands/list.d.ts +6 -1
  16. package/dist/src/commands/list.d.ts.map +1 -1
  17. package/dist/src/commands/list.js +259 -17
  18. package/dist/src/commands/list.js.map +1 -1
  19. package/dist/src/commands/logs.d.ts.map +1 -1
  20. package/dist/src/commands/logs.js +105 -69
  21. package/dist/src/commands/logs.js.map +1 -1
  22. package/dist/src/commands/package.d.ts.map +1 -1
  23. package/dist/src/commands/package.js +55 -18
  24. package/dist/src/commands/package.js.map +1 -1
  25. package/dist/src/commands/repo.d.ts +35 -0
  26. package/dist/src/commands/repo.d.ts.map +1 -0
  27. package/dist/src/commands/repo.js +242 -0
  28. package/dist/src/commands/repo.js.map +1 -0
  29. package/dist/src/commands/run.d.ts.map +1 -1
  30. package/dist/src/commands/run.js +4 -3
  31. package/dist/src/commands/run.js.map +1 -1
  32. package/dist/src/commands/set.d.ts.map +1 -1
  33. package/dist/src/commands/set.js +16 -10
  34. package/dist/src/commands/set.js.map +1 -1
  35. package/dist/src/commands/start.d.ts.map +1 -1
  36. package/dist/src/commands/start.js +188 -52
  37. package/dist/src/commands/start.js.map +1 -1
  38. package/dist/src/commands/watch.d.ts.map +1 -1
  39. package/dist/src/commands/watch.js +26 -16
  40. package/dist/src/commands/watch.js.map +1 -1
  41. package/dist/src/commands/workspace.d.ts +8 -0
  42. package/dist/src/commands/workspace.d.ts.map +1 -1
  43. package/dist/src/commands/workspace.js +325 -37
  44. package/dist/src/commands/workspace.js.map +1 -1
  45. package/dist/src/credentials.d.ts +123 -0
  46. package/dist/src/credentials.d.ts.map +1 -0
  47. package/dist/src/credentials.js +213 -0
  48. package/dist/src/credentials.js.map +1 -0
  49. package/dist/src/format.d.ts +15 -0
  50. package/dist/src/format.d.ts.map +1 -0
  51. package/dist/src/format.js +29 -0
  52. package/dist/src/format.js.map +1 -0
  53. package/dist/src/utils.d.ts +60 -1
  54. package/dist/src/utils.d.ts.map +1 -1
  55. package/dist/src/utils.js +80 -1
  56. package/dist/src/utils.js.map +1 -1
  57. package/package.json +7 -6
  58. package/dist/src/commands/gc.d.ts +0 -12
  59. package/dist/src/commands/gc.d.ts.map +0 -1
  60. package/dist/src/commands/gc.js +0 -44
  61. package/dist/src/commands/gc.js.map +0 -1
  62. package/dist/src/commands/init.d.ts +0 -9
  63. package/dist/src/commands/init.d.ts.map +0 -1
  64. package/dist/src/commands/init.js +0 -33
  65. package/dist/src/commands/init.js.map +0 -1
  66. package/dist/src/commands/status.d.ts +0 -9
  67. package/dist/src/commands/status.d.ts.map +0 -1
  68. package/dist/src/commands/status.js +0 -157
  69. package/dist/src/commands/status.js.map +0 -1
@@ -1 +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"}
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/get.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AAEH,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,EAAsB,MAAM,eAAe,CAAC;AAClH,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE1F;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAe,EACf,QAAgB,EAChB,OAA4B;IAE5B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAClD,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,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC;QAExC,IAAI,IAAmB,CAAC;QACxB,IAAI,KAAc,CAAC;QAEnB,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;YAEnC,+CAA+C;YAC/C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAE1F,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;gBAC7B,SAAS,CAAC,6CAA6C,CAAC,CAAC;YAC3D,CAAC;YAED,IAAI,OAAO,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACpB,OAAO;YACT,CAAC;YAED,8CAA8C;YAC9C,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAChE,iDAAiD;YACjD,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAqB,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/F,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,0CAA0C;YAC1C,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,gBAAgB,CACjD,QAAQ,CAAC,OAAO,EAChB,QAAQ,CAAC,IAAI,EACb,EAAE,EACF,IAAI,EACJ,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAC1B,CAAC;YAEF,sCAAsC;YACtC,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;YACzC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YACpB,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QACxB,CAAC;QAED,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"}
@@ -2,8 +2,13 @@
2
2
  * Copyright (c) 2025 Elara AI Pty Ltd
3
3
  * Licensed under BSL 1.1. See LICENSE for details.
4
4
  */
5
+ interface ListOptions {
6
+ recursive?: boolean;
7
+ long?: boolean;
8
+ }
5
9
  /**
6
10
  * List workspaces or tree contents at a path.
7
11
  */
8
- export declare function listCommand(repoArg: string, pathSpec?: string): Promise<void>;
12
+ export declare function listCommand(repoArg: string, pathSpec: string | undefined, options: ListOptions): Promise<void>;
13
+ export {};
9
14
  //# sourceMappingURL=list.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/list.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqCH,UAAU,WAAW;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAiJD;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAkKpH"}
@@ -8,37 +8,279 @@
8
8
  * Usage:
9
9
  * e3 list . # List all workspaces
10
10
  * e3 list . ws # List root tree of workspace
11
- * e3 list . ws.inputs # List fields under inputs
11
+ * e3 list . ws -r # All descendant dataset paths
12
+ * e3 list . ws -l # Immediate children with type/status/size
13
+ * e3 list . ws -r -l # All descendants with type/status/size
12
14
  */
13
- import { workspaceList, workspaceListTree, workspaceGetState, } from '@elaraai/e3-core';
14
- import { resolveRepo, parseDatasetPath, formatError, exitError } from '../utils.js';
15
+ import { workspaceList, workspaceListTree, workspaceGetState, workspaceGetTree, LocalStorage, } from '@elaraai/e3-core';
16
+ import { workspaceList as workspaceListRemote, datasetList as datasetListRemote, datasetListAt as datasetListAtRemote, datasetListRecursive as datasetListRecursiveRemote, datasetListRecursivePaths as datasetListRecursivePathsRemote, datasetListWithStatus as datasetListWithStatusRemote, } from '@elaraai/e3-api-client';
17
+ import { printFor, EastTypeType } from '@elaraai/east';
18
+ import { parseRepoLocation, parseDatasetPath, formatError, exitError } from '../utils.js';
19
+ import { formatSize } from '../format.js';
20
+ const printTypeValue = printFor(EastTypeType);
21
+ /** Flatten tree nodes to collect leaf paths. */
22
+ function collectPaths(nodes, prefix, result) {
23
+ for (const node of nodes) {
24
+ const path = prefix ? `${prefix}.${node.name}` : `.${node.name}`;
25
+ if (node.kind === 'dataset') {
26
+ result.push(path);
27
+ }
28
+ else if (node.kind === 'tree') {
29
+ collectPaths(node.children, path, result);
30
+ }
31
+ }
32
+ }
33
+ /** Derive status string from a tree leaf node. */
34
+ function leafStatus(node) {
35
+ if (node.refType === undefined)
36
+ return '-';
37
+ if (node.refType === 'unassigned')
38
+ return 'unset';
39
+ if (node.refType === 'null')
40
+ return 'null';
41
+ return 'set';
42
+ }
43
+ /** Derive size string from a tree leaf node. */
44
+ function leafSize(node) {
45
+ if (node.refType === 'unassigned')
46
+ return '-';
47
+ if (node.refType === 'null')
48
+ return '0 B';
49
+ if (node.size !== undefined)
50
+ return formatSize(node.size);
51
+ return '-';
52
+ }
53
+ /** Format type from a tree leaf node. */
54
+ function leafType(node) {
55
+ if (!node.datasetType)
56
+ return '-';
57
+ try {
58
+ return printTypeValue(node.datasetType);
59
+ }
60
+ catch {
61
+ return '?';
62
+ }
63
+ }
64
+ /** Flatten tree to table rows (recursive), including tree entries. */
65
+ function collectRows(nodes, prefix, result) {
66
+ for (const node of nodes) {
67
+ const path = prefix ? `${prefix}.${node.name}` : `.${node.name}`;
68
+ if (node.kind === 'dataset') {
69
+ result.push({
70
+ name: path,
71
+ type: leafType(node),
72
+ status: leafStatus(node),
73
+ size: leafSize(node),
74
+ });
75
+ }
76
+ else if (node.kind === 'tree') {
77
+ result.push({ name: path, type: '(tree)', status: '-', size: '-' });
78
+ collectRows(node.children, path, result);
79
+ }
80
+ }
81
+ }
82
+ /** Collect immediate children as rows (both datasets and trees). */
83
+ function collectImmediateRows(nodes, prefix, result) {
84
+ for (const node of nodes) {
85
+ if (node.kind === 'dataset') {
86
+ result.push({
87
+ name: node.name,
88
+ type: leafType(node),
89
+ status: leafStatus(node),
90
+ size: leafSize(node),
91
+ });
92
+ }
93
+ else if (node.kind === 'tree') {
94
+ result.push({ name: node.name, type: '(tree)', status: '-', size: '-' });
95
+ }
96
+ }
97
+ }
98
+ /** Convert a ListEntry variant to a table row. */
99
+ function entryToRow(entry, usePath) {
100
+ if (entry.type === 'tree') {
101
+ const name = usePath ? entry.value.path : entry.value.path.split('.').pop();
102
+ return { name, type: '(tree)', status: '-', size: '-' };
103
+ }
104
+ // entry.type === 'dataset'
105
+ const item = entry.value;
106
+ let typeStr;
107
+ try {
108
+ typeStr = printTypeValue(item.type);
109
+ }
110
+ catch {
111
+ typeStr = '?';
112
+ }
113
+ let status;
114
+ let size;
115
+ if (item.hash.type === 'none' && item.size.type === 'none') {
116
+ status = 'unset';
117
+ size = '-';
118
+ }
119
+ else if (item.size.type === 'some' && item.size.value === 0n) {
120
+ status = 'null';
121
+ size = '0 B';
122
+ }
123
+ else {
124
+ status = 'set';
125
+ size = item.size.type === 'some' ? formatSize(Number(item.size.value)) : '-';
126
+ }
127
+ return {
128
+ name: usePath ? item.path : item.path.split('.').pop(),
129
+ type: typeStr,
130
+ status,
131
+ size,
132
+ };
133
+ }
134
+ /** Print rows as a padded table. */
135
+ function printTable(rows, nameHeader) {
136
+ if (rows.length === 0) {
137
+ console.log('(empty)');
138
+ return;
139
+ }
140
+ // Calculate column widths
141
+ const nameWidth = Math.max(nameHeader.length, ...rows.map(r => r.name.length));
142
+ const typeWidth = Math.max(4, ...rows.map(r => r.type.length));
143
+ const statusWidth = Math.max(6, ...rows.map(r => r.status.length));
144
+ const sizeWidth = Math.max(4, ...rows.map(r => r.size.length));
145
+ // Print header
146
+ console.log(`${nameHeader.padEnd(nameWidth)} ${('TYPE').padEnd(typeWidth)} ${('STATUS').padEnd(statusWidth)} ${('SIZE').padEnd(sizeWidth)}`);
147
+ // Print rows
148
+ for (const row of rows) {
149
+ console.log(`${row.name.padEnd(nameWidth)} ${row.type.padEnd(typeWidth)} ${row.status.padEnd(statusWidth)} ${row.size.padEnd(sizeWidth)}`);
150
+ }
151
+ }
15
152
  /**
16
153
  * List workspaces or tree contents at a path.
17
154
  */
18
- export async function listCommand(repoArg, pathSpec) {
155
+ export async function listCommand(repoArg, pathSpec, options) {
19
156
  try {
20
- const repoPath = resolveRepo(repoArg);
157
+ const location = await parseRepoLocation(repoArg);
158
+ const recursive = options.recursive ?? false;
159
+ const long = options.long ?? false;
21
160
  // If no path, list workspaces
22
161
  if (!pathSpec) {
23
- const workspaces = await workspaceList(repoPath);
24
- if (workspaces.length === 0) {
25
- console.log('No workspaces');
26
- return;
162
+ if (location.type === 'local') {
163
+ const storage = new LocalStorage();
164
+ const workspaces = await workspaceList(storage, location.path);
165
+ if (workspaces.length === 0) {
166
+ console.log('No workspaces');
167
+ return;
168
+ }
169
+ for (const ws of workspaces) {
170
+ const state = await workspaceGetState(storage, location.path, ws);
171
+ if (state) {
172
+ console.log(`${ws} (${state.packageName}@${state.packageVersion})`);
173
+ }
174
+ else {
175
+ console.log(`${ws} (not deployed)`);
176
+ }
177
+ }
27
178
  }
28
- for (const ws of workspaces) {
29
- const state = await workspaceGetState(repoPath, ws);
30
- if (state) {
31
- console.log(`${ws} (${state.packageName}@${state.packageVersion})`);
179
+ else {
180
+ // Remote: list workspaces
181
+ const workspaces = await workspaceListRemote(location.baseUrl, location.repo, { token: location.token });
182
+ if (workspaces.length === 0) {
183
+ console.log('No workspaces');
184
+ return;
32
185
  }
33
- else {
34
- console.log(`${ws} (not deployed)`);
186
+ for (const ws of workspaces) {
187
+ if (ws.deployed && ws.packageName.type === 'some' && ws.packageVersion.type === 'some') {
188
+ console.log(`${ws.name} (${ws.packageName.value}@${ws.packageVersion.value})`);
189
+ }
190
+ else {
191
+ console.log(`${ws.name} (not deployed)`);
192
+ }
35
193
  }
36
194
  }
37
195
  return;
38
196
  }
39
- // Parse path and list tree contents
197
+ // Parse path
40
198
  const { ws, path } = parseDatasetPath(pathSpec);
41
- const fields = await workspaceListTree(repoPath, ws, path);
199
+ // -r -l: recursive with details
200
+ if (recursive && long) {
201
+ if (location.type === 'local') {
202
+ const storage = new LocalStorage();
203
+ const nodes = await workspaceGetTree(storage, location.path, ws, path, {
204
+ includeTypes: true,
205
+ includeStatus: true,
206
+ });
207
+ const rows = [];
208
+ const prefix = path.length > 0 ? '.' + path.map(s => s.value).join('.') : '';
209
+ collectRows(nodes, prefix, rows);
210
+ printTable(rows, 'PATH');
211
+ }
212
+ else {
213
+ const items = await datasetListRecursiveRemote(location.baseUrl, location.repo, ws, path, { token: location.token });
214
+ const rows = items.map(item => entryToRow(item, true));
215
+ printTable(rows, 'PATH');
216
+ }
217
+ return;
218
+ }
219
+ // -r: recursive paths only
220
+ if (recursive) {
221
+ if (location.type === 'local') {
222
+ const storage = new LocalStorage();
223
+ const nodes = await workspaceGetTree(storage, location.path, ws, path, {
224
+ includeTypes: false,
225
+ includeStatus: false,
226
+ });
227
+ const paths = [];
228
+ const prefix = path.length > 0 ? '.' + path.map(s => s.value).join('.') : '';
229
+ collectPaths(nodes, prefix, paths);
230
+ if (paths.length === 0) {
231
+ console.log('(empty)');
232
+ return;
233
+ }
234
+ for (const p of paths) {
235
+ console.log(p);
236
+ }
237
+ }
238
+ else {
239
+ const paths = await datasetListRecursivePathsRemote(location.baseUrl, location.repo, ws, path, { token: location.token });
240
+ if (paths.length === 0) {
241
+ console.log('(empty)');
242
+ return;
243
+ }
244
+ for (const p of paths) {
245
+ console.log(p);
246
+ }
247
+ }
248
+ return;
249
+ }
250
+ // -l: immediate children with details
251
+ if (long) {
252
+ if (location.type === 'local') {
253
+ const storage = new LocalStorage();
254
+ const nodes = await workspaceGetTree(storage, location.path, ws, path, {
255
+ maxDepth: 0,
256
+ includeTypes: true,
257
+ includeStatus: true,
258
+ });
259
+ const rows = [];
260
+ collectImmediateRows(nodes, '', rows);
261
+ printTable(rows, 'NAME');
262
+ }
263
+ else {
264
+ const items = await datasetListWithStatusRemote(location.baseUrl, location.repo, ws, path, { token: location.token });
265
+ const rows = items.map(item => entryToRow(item, false));
266
+ printTable(rows, 'NAME');
267
+ }
268
+ return;
269
+ }
270
+ // Default: list field names (unchanged)
271
+ let fields;
272
+ if (location.type === 'local') {
273
+ const storage = new LocalStorage();
274
+ fields = await workspaceListTree(storage, location.path, ws, path);
275
+ }
276
+ else {
277
+ if (path.length === 0) {
278
+ fields = await datasetListRemote(location.baseUrl, location.repo, ws, { token: location.token });
279
+ }
280
+ else {
281
+ fields = await datasetListAtRemote(location.baseUrl, location.repo, ws, path, { token: location.token });
282
+ }
283
+ }
42
284
  if (fields.length === 0) {
43
285
  console.log('(empty)');
44
286
  return;
@@ -1 +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"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/list.ts"],"names":[],"mappings":"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"}
@@ -1 +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"}
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/commands/logs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA0NH;;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,CAqEf"}
@@ -10,8 +10,9 @@
10
10
  * e3 logs . ws.taskName # Show logs for task's latest execution
11
11
  * e3 logs . ws.taskName --follow # Follow log output
12
12
  */
13
- import { workspaceListTasks, workspaceGetTaskHash, executionListForTask, executionReadLog, executionGet, inputsHash, workspaceGetDatasetHash, workspaceGetTask, } from '@elaraai/e3-core';
14
- import { resolveRepo, formatError, exitError } from '../utils.js';
13
+ import { workspaceListTasks, workspaceGetTaskHash, executionListForTask, executionReadLog, executionGetLatest, executionFindCurrent, isProcessAlive, LocalStorage, } from '@elaraai/e3-core';
14
+ import { taskList as taskListRemote, taskExecutionList as taskExecutionListRemote, taskLogs as taskLogsRemote, ApiError, } from '@elaraai/e3-api-client';
15
+ import { parseRepoLocation, formatError, exitError } from '../utils.js';
15
16
  /**
16
17
  * Format a hash for display (abbreviated).
17
18
  */
@@ -34,8 +35,8 @@ function parseTaskPath(pathSpec) {
34
35
  /**
35
36
  * List tasks in a workspace with their execution status.
36
37
  */
37
- async function listWorkspaceTasks(repoPath, ws) {
38
- const tasks = await workspaceListTasks(repoPath, ws);
38
+ async function listWorkspaceTasks(storage, repoPath, ws) {
39
+ const tasks = await workspaceListTasks(storage, repoPath, ws);
39
40
  if (tasks.length === 0) {
40
41
  console.log(`No tasks in workspace: ${ws}`);
41
42
  return;
@@ -43,16 +44,26 @@ async function listWorkspaceTasks(repoPath, ws) {
43
44
  console.log(`Tasks in workspace: ${ws}`);
44
45
  console.log('');
45
46
  for (const taskName of tasks) {
46
- const taskHash = await workspaceGetTaskHash(repoPath, ws, taskName);
47
- const executions = await executionListForTask(repoPath, taskHash);
47
+ const taskHash = await workspaceGetTaskHash(storage, repoPath, ws, taskName);
48
+ const executions = await executionListForTask(storage, repoPath, taskHash);
48
49
  if (executions.length === 0) {
49
50
  console.log(` ${taskName} (no executions)`);
50
51
  }
51
52
  else {
52
53
  // Get status of the most recent execution
53
54
  const latestInHash = executions[0];
54
- const status = await executionGet(repoPath, taskHash, latestInHash);
55
- const state = status?.type ?? 'unknown';
55
+ const status = await executionGetLatest(storage, repoPath, taskHash, latestInHash);
56
+ let state = status?.type ?? 'unknown';
57
+ // Check if running process is actually alive
58
+ if (status?.type === 'running') {
59
+ const pid = Number(status.value.pid);
60
+ const pidStartTime = Number(status.value.pidStartTime);
61
+ const bootId = status.value.bootId;
62
+ const alive = await isProcessAlive(pid, pidStartTime, bootId);
63
+ if (!alive) {
64
+ state = 'stale-running';
65
+ }
66
+ }
56
67
  console.log(` ${taskName} [${state}] (${executions.length} execution(s))`);
57
68
  }
58
69
  }
@@ -60,41 +71,9 @@ async function listWorkspaceTasks(repoPath, ws) {
60
71
  console.log(`Use "e3 logs . ${ws}.<taskName>" to view logs.`);
61
72
  }
62
73
  /**
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.
74
+ * Display logs and optionally follow for new output.
93
75
  */
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');
76
+ async function displayLogs(stdout, stderr, follow, poll) {
98
77
  if (stdout.totalSize === 0 && stderr.totalSize === 0) {
99
78
  console.log('No log output.');
100
79
  return;
@@ -111,19 +90,14 @@ async function showLogs(repoPath, taskHash, inHash, follow) {
111
90
  console.log(stderr.data);
112
91
  }
113
92
  if (follow) {
114
- // Follow mode: poll for new content
115
93
  let stdoutOffset = stdout.offset + stdout.size;
116
94
  let stderrOffset = stderr.offset + stderr.size;
117
95
  console.log('');
118
96
  console.log('[Following... press Ctrl+C to stop]');
119
97
  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
- });
98
+ const tick = async () => {
99
+ const newStdout = await poll('stdout', stdoutOffset);
100
+ const newStderr = await poll('stderr', stderrOffset);
127
101
  if (newStdout.size > 0) {
128
102
  process.stdout.write(newStdout.data);
129
103
  stdoutOffset += newStdout.size;
@@ -133,44 +107,106 @@ async function showLogs(repoPath, taskHash, inHash, follow) {
133
107
  stderrOffset += newStderr.size;
134
108
  }
135
109
  };
136
- // Keep polling until interrupted
137
- const intervalId = setInterval(() => void poll(), pollInterval);
110
+ const intervalId = setInterval(() => void tick(), pollInterval);
138
111
  process.on('SIGINT', () => {
139
112
  clearInterval(intervalId);
140
113
  console.log('\n[Stopped]');
141
114
  process.exit(0);
142
115
  });
143
- // Keep the process alive
144
- await new Promise(() => {
145
- // Never resolves - will be interrupted by Ctrl+C
146
- });
116
+ // Keep the process alive — interrupted by Ctrl+C
117
+ await new Promise(() => { });
147
118
  }
148
119
  }
120
+ /**
121
+ * List tasks in a workspace (remote).
122
+ */
123
+ async function listWorkspaceTasksRemote(baseUrl, repo, ws, token) {
124
+ const tasks = await taskListRemote(baseUrl, repo, ws, { token });
125
+ if (tasks.length === 0) {
126
+ console.log(`No tasks in workspace: ${ws}`);
127
+ return;
128
+ }
129
+ console.log(`Tasks in workspace: ${ws}`);
130
+ console.log('');
131
+ for (const task of tasks) {
132
+ const executions = await taskExecutionListRemote(baseUrl, repo, ws, task.name, { token });
133
+ if (executions.length === 0) {
134
+ console.log(` ${task.name} (no executions)`);
135
+ }
136
+ else {
137
+ // Get status of the most recent execution
138
+ const latest = executions[0];
139
+ const state = latest.status.type;
140
+ console.log(` ${task.name} [${state}] (${executions.length} execution(s))`);
141
+ }
142
+ }
143
+ console.log('');
144
+ console.log(`Use "e3 logs <repo> ${ws}.<taskName>" to view logs.`);
145
+ }
146
+ /** Convert a remote LogChunk (bigint fields) to LogData. */
147
+ function toLogData(chunk) {
148
+ return {
149
+ data: chunk.data,
150
+ offset: Number(chunk.offset),
151
+ size: Number(chunk.size),
152
+ totalSize: Number(chunk.totalSize),
153
+ complete: chunk.complete,
154
+ };
155
+ }
149
156
  /**
150
157
  * View execution logs for workspace tasks.
151
158
  */
152
159
  export async function logsCommand(repoArg, pathSpec, options = {}) {
153
160
  try {
154
- const repoPath = resolveRepo(repoArg);
161
+ const location = await parseRepoLocation(repoArg);
155
162
  if (!pathSpec) {
156
163
  exitError('Usage: e3 logs <repo> <ws> or e3 logs <repo> <ws.taskName>');
157
164
  }
158
165
  // Parse the path: ws or ws.taskName
159
166
  const { ws, taskName } = parseTaskPath(pathSpec);
160
- if (!taskName) {
161
- // No task specified - list tasks in workspace
162
- await listWorkspaceTasks(repoPath, ws);
163
- return;
167
+ if (location.type === 'local') {
168
+ const storage = new LocalStorage();
169
+ if (!taskName) {
170
+ // No task specified - list tasks in workspace
171
+ await listWorkspaceTasks(storage, location.path, ws);
172
+ return;
173
+ }
174
+ // Find the execution for this task
175
+ const execution = await executionFindCurrent(storage, location.path, ws, taskName);
176
+ if (!execution) {
177
+ exitError(`No executions found for task: ${ws}.${taskName}`);
178
+ }
179
+ const { taskHash, inputsHash, executionId } = execution;
180
+ console.log(`Task: ${ws}.${taskName}`);
181
+ console.log(`Execution: ${abbrev(taskHash)}/${abbrev(inputsHash)}/${abbrev(executionId)}`);
182
+ console.log('');
183
+ const stdout = await executionReadLog(storage, location.path, taskHash, inputsHash, executionId, 'stdout');
184
+ const stderr = await executionReadLog(storage, location.path, taskHash, inputsHash, executionId, 'stderr');
185
+ await displayLogs(stdout, stderr, options.follow ?? false, (stream, offset) => executionReadLog(storage, location.path, taskHash, inputsHash, executionId, stream, { offset }));
164
186
  }
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}`);
187
+ else {
188
+ // Remote
189
+ if (!taskName) {
190
+ // No task specified - list tasks in workspace
191
+ await listWorkspaceTasksRemote(location.baseUrl, location.repo, ws, location.token);
192
+ return;
193
+ }
194
+ console.log(`Task: ${ws}.${taskName}`);
195
+ console.log('');
196
+ const { baseUrl, repo, token } = location;
197
+ let stdout, stderr;
198
+ try {
199
+ stdout = toLogData(await taskLogsRemote(baseUrl, repo, ws, taskName, { stream: 'stdout' }, { token }));
200
+ stderr = toLogData(await taskLogsRemote(baseUrl, repo, ws, taskName, { stream: 'stderr' }, { token }));
201
+ }
202
+ catch (err) {
203
+ if (err instanceof ApiError && err.code === 'execution_not_found') {
204
+ exitError(`No executions found for task: ${ws}.${taskName}`);
205
+ }
206
+ throw err;
207
+ }
208
+ await displayLogs(stdout, stderr, options.follow ?? false, async (stream, offset) => toLogData(await taskLogsRemote(baseUrl, repo, ws, taskName, { stream, offset }, { token })));
169
209
  }
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
210
  }
175
211
  catch (err) {
176
212
  exitError(formatError(err));
@@ -1 +1 @@
1
- {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/commands/logs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/commands/logs.ts"],"names":[],"mappings":"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"}