@elaraai/e3-cli 0.0.2-beta.8 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +4 -0
- package/README.md +169 -46
- package/dist/src/cli.js +197 -73
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/auth.d.ts +23 -0
- package/dist/src/commands/auth.d.ts.map +1 -0
- package/dist/src/commands/auth.js +200 -0
- package/dist/src/commands/auth.js.map +1 -0
- package/dist/src/commands/complete.d.ts +14 -0
- package/dist/src/commands/complete.d.ts.map +1 -0
- package/dist/src/commands/complete.js +166 -0
- package/dist/src/commands/complete.js.map +1 -0
- package/dist/src/commands/complete.spec.d.ts +6 -0
- package/dist/src/commands/complete.spec.d.ts.map +1 -0
- package/dist/src/commands/complete.spec.js +63 -0
- package/dist/src/commands/complete.spec.js.map +1 -0
- package/dist/src/commands/completion-install.d.ts +47 -0
- package/dist/src/commands/completion-install.d.ts.map +1 -0
- package/dist/src/commands/completion-install.js +141 -0
- package/dist/src/commands/completion-install.js.map +1 -0
- package/dist/src/commands/completion-install.spec.d.ts +6 -0
- package/dist/src/commands/completion-install.spec.d.ts.map +1 -0
- package/dist/src/commands/completion-install.spec.js +136 -0
- package/dist/src/commands/completion-install.spec.js.map +1 -0
- package/dist/src/commands/completion.d.ts +12 -0
- package/dist/src/commands/completion.d.ts.map +1 -0
- package/dist/src/commands/completion.js +75 -0
- package/dist/src/commands/completion.js.map +1 -0
- package/dist/src/commands/completion.spec.d.ts +6 -0
- package/dist/src/commands/completion.spec.d.ts.map +1 -0
- package/dist/src/commands/completion.spec.js +48 -0
- package/dist/src/commands/completion.spec.js.map +1 -0
- package/dist/src/commands/convert.impl.spec.d.ts +6 -0
- package/dist/src/commands/convert.impl.spec.d.ts.map +1 -0
- package/dist/src/commands/convert.impl.spec.js +245 -0
- package/dist/src/commands/convert.impl.spec.js.map +1 -0
- package/dist/src/commands/dataset-status.d.ts +9 -0
- package/dist/src/commands/dataset-status.d.ts.map +1 -0
- package/dist/src/commands/dataset-status.js +77 -0
- package/dist/src/commands/dataset-status.js.map +1 -0
- package/dist/src/commands/find.d.ts +17 -0
- package/dist/src/commands/find.d.ts.map +1 -0
- package/dist/src/commands/find.js +59 -0
- package/dist/src/commands/find.js.map +1 -0
- package/dist/src/commands/find.spec.d.ts +6 -0
- package/dist/src/commands/find.spec.d.ts.map +1 -0
- package/dist/src/commands/find.spec.js +43 -0
- package/dist/src/commands/find.spec.js.map +1 -0
- package/dist/src/commands/get.d.ts +3 -0
- package/dist/src/commands/get.d.ts.map +1 -1
- package/dist/src/commands/get.js +43 -20
- package/dist/src/commands/get.js.map +1 -1
- package/dist/src/commands/get.spec.d.ts +6 -0
- package/dist/src/commands/get.spec.d.ts.map +1 -0
- package/dist/src/commands/get.spec.js +28 -0
- package/dist/src/commands/get.spec.js.map +1 -0
- package/dist/src/commands/list.d.ts +6 -2
- package/dist/src/commands/list.d.ts.map +1 -1
- package/dist/src/commands/list.js +189 -30
- package/dist/src/commands/list.js.map +1 -1
- package/dist/src/commands/logs.d.ts.map +1 -1
- package/dist/src/commands/logs.js +96 -70
- package/dist/src/commands/logs.js.map +1 -1
- package/dist/src/commands/package.d.ts.map +1 -1
- package/dist/src/commands/package.js +78 -18
- package/dist/src/commands/package.js.map +1 -1
- package/dist/src/commands/repo.d.ts +44 -0
- package/dist/src/commands/repo.d.ts.map +1 -0
- package/dist/src/commands/repo.js +278 -0
- package/dist/src/commands/repo.js.map +1 -0
- package/dist/src/commands/run.d.ts +12 -0
- package/dist/src/commands/run.d.ts.map +1 -1
- package/dist/src/commands/run.js +21 -13
- package/dist/src/commands/run.js.map +1 -1
- package/dist/src/commands/run.spec.d.ts +6 -0
- package/dist/src/commands/run.spec.d.ts.map +1 -0
- package/dist/src/commands/run.spec.js +39 -0
- package/dist/src/commands/run.spec.js.map +1 -0
- package/dist/src/commands/set.d.ts +1 -0
- package/dist/src/commands/set.d.ts.map +1 -1
- package/dist/src/commands/set.js +33 -32
- package/dist/src/commands/set.js.map +1 -1
- package/dist/src/commands/start.d.ts.map +1 -1
- package/dist/src/commands/start.js +270 -52
- package/dist/src/commands/start.js.map +1 -1
- package/dist/src/commands/watch.d.ts +5 -2
- package/dist/src/commands/watch.d.ts.map +1 -1
- package/dist/src/commands/watch.js +32 -26
- package/dist/src/commands/watch.js.map +1 -1
- package/dist/src/commands/workspace.d.ts +12 -1
- package/dist/src/commands/workspace.d.ts.map +1 -1
- package/dist/src/commands/workspace.js +332 -38
- package/dist/src/commands/workspace.js.map +1 -1
- package/dist/src/credentials.d.ts +123 -0
- package/dist/src/credentials.d.ts.map +1 -0
- package/dist/src/credentials.js +213 -0
- package/dist/src/credentials.js.map +1 -0
- package/dist/src/format.d.ts +18 -0
- package/dist/src/format.d.ts.map +1 -0
- package/dist/src/format.js +43 -0
- package/dist/src/format.js.map +1 -0
- package/dist/src/path-resolver.d.ts +86 -0
- package/dist/src/path-resolver.d.ts.map +1 -0
- package/dist/src/path-resolver.js +241 -0
- package/dist/src/path-resolver.js.map +1 -0
- package/dist/src/path-resolver.spec.d.ts +6 -0
- package/dist/src/path-resolver.spec.d.ts.map +1 -0
- package/dist/src/path-resolver.spec.js +247 -0
- package/dist/src/path-resolver.spec.js.map +1 -0
- package/dist/src/utils.d.ts +76 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +104 -1
- package/dist/src/utils.js.map +1 -1
- package/dist/src/utils.spec.d.ts +6 -0
- package/dist/src/utils.spec.d.ts.map +1 -0
- package/dist/src/utils.spec.js +199 -0
- package/dist/src/utils.spec.js.map +1 -0
- package/package.json +22 -18
- package/scripts/postinstall.cjs +26 -0
- package/dist/src/commands/gc.d.ts +0 -12
- package/dist/src/commands/gc.d.ts.map +0 -1
- package/dist/src/commands/gc.js +0 -44
- package/dist/src/commands/gc.js.map +0 -1
- package/dist/src/commands/init.d.ts +0 -9
- package/dist/src/commands/init.d.ts.map +0 -1
- package/dist/src/commands/init.js +0 -33
- package/dist/src/commands/init.js.map +0 -1
- package/dist/src/commands/status.d.ts +0 -9
- package/dist/src/commands/status.d.ts.map +0 -1
- package/dist/src/commands/status.js +0 -157
- package/dist/src/commands/status.js.map +0 -1
- package/dist/src/commands/tree.d.ts +0 -14
- package/dist/src/commands/tree.d.ts.map +0 -1
- package/dist/src/commands/tree.js +0 -77
- package/dist/src/commands/tree.js.map +0 -1
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Tests for CLI utility functions.
|
|
7
|
+
*
|
|
8
|
+
* formatError is the single point where all CLI error messages are produced.
|
|
9
|
+
* It must handle every error shape the API client and core library can throw,
|
|
10
|
+
* and always produce a clear, actionable message — never a bare "Error".
|
|
11
|
+
*/
|
|
12
|
+
import { describe, it } from 'node:test';
|
|
13
|
+
import assert from 'node:assert/strict';
|
|
14
|
+
import { ApiError } from '@elaraai/e3-api-client';
|
|
15
|
+
import { formatError, defaultRepoArg, shortHash, HASH_DISPLAY_WIDTH } from './utils.js';
|
|
16
|
+
describe('formatError', () => {
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
// ApiError — code humanization
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
describe('ApiError code humanization', () => {
|
|
21
|
+
it('humanizes a single-word code', () => {
|
|
22
|
+
const err = new ApiError('unauthorized');
|
|
23
|
+
assert.strictEqual(formatError(err), 'Unauthorized');
|
|
24
|
+
});
|
|
25
|
+
it('humanizes a multi-word snake_case code', () => {
|
|
26
|
+
const err = new ApiError('execution_not_found');
|
|
27
|
+
assert.strictEqual(formatError(err), 'Execution not found');
|
|
28
|
+
});
|
|
29
|
+
it('humanizes the internal_server_error code', () => {
|
|
30
|
+
const err = new ApiError('internal_server_error');
|
|
31
|
+
assert.strictEqual(formatError(err), 'Internal server error');
|
|
32
|
+
});
|
|
33
|
+
it('humanizes an http status fallback code', () => {
|
|
34
|
+
const err = new ApiError('http_502');
|
|
35
|
+
assert.strictEqual(formatError(err), 'Http 502');
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
// ---------------------------------------------------------------------------
|
|
39
|
+
// ApiError — details inclusion
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
describe('ApiError with details', () => {
|
|
42
|
+
it('appends string details after the humanized code', () => {
|
|
43
|
+
const err = new ApiError('package_invalid', 'zip archive is corrupt');
|
|
44
|
+
assert.strictEqual(formatError(err), 'Package invalid: zip archive is corrupt');
|
|
45
|
+
});
|
|
46
|
+
it('appends object details as JSON', () => {
|
|
47
|
+
const err = new ApiError('package_not_found', { packageName: 'acme', version: '1.0.0' });
|
|
48
|
+
const result = formatError(err);
|
|
49
|
+
assert.match(result, /^Package not found: /);
|
|
50
|
+
assert.ok(result.includes('"packageName":"acme"'));
|
|
51
|
+
assert.ok(result.includes('"version":"1.0.0"'));
|
|
52
|
+
});
|
|
53
|
+
it('appends structured error details from BEAST2 error variants', () => {
|
|
54
|
+
// Simulates the { message: '...' } shape from InternalErrorType
|
|
55
|
+
const err = new ApiError('internal', { message: 'unexpected null in tree' });
|
|
56
|
+
const result = formatError(err);
|
|
57
|
+
assert.strictEqual(result, 'Internal: {"message":"unexpected null in tree"}');
|
|
58
|
+
});
|
|
59
|
+
it('omits details section when details is undefined', () => {
|
|
60
|
+
const err = new ApiError('bad_request', undefined);
|
|
61
|
+
assert.strictEqual(formatError(err), 'Bad request');
|
|
62
|
+
});
|
|
63
|
+
it('omits details section when details is null', () => {
|
|
64
|
+
const err = new ApiError('dataflow_aborted', null);
|
|
65
|
+
assert.strictEqual(formatError(err), 'Dataflow aborted');
|
|
66
|
+
});
|
|
67
|
+
it('includes empty string details', () => {
|
|
68
|
+
// Empty string is falsy but not null/undefined — should still show the colon
|
|
69
|
+
const err = new ApiError('bad_request', '');
|
|
70
|
+
assert.strictEqual(formatError(err), 'Bad request: ');
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
// ---------------------------------------------------------------------------
|
|
74
|
+
// Standard Error
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
describe('standard Error', () => {
|
|
77
|
+
it('returns the error message', () => {
|
|
78
|
+
const err = new Error('ENOENT: no such file or directory');
|
|
79
|
+
assert.strictEqual(formatError(err), 'ENOENT: no such file or directory');
|
|
80
|
+
});
|
|
81
|
+
it('handles TypeError', () => {
|
|
82
|
+
const err = new TypeError('fetch failed');
|
|
83
|
+
assert.strictEqual(formatError(err), 'fetch failed');
|
|
84
|
+
});
|
|
85
|
+
it('handles Error subclasses', () => {
|
|
86
|
+
class CustomError extends Error {
|
|
87
|
+
constructor() { super('custom problem'); this.name = 'CustomError'; }
|
|
88
|
+
}
|
|
89
|
+
assert.strictEqual(formatError(new CustomError()), 'custom problem');
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
// ---------------------------------------------------------------------------
|
|
93
|
+
// Non-Error values
|
|
94
|
+
// ---------------------------------------------------------------------------
|
|
95
|
+
// ---------------------------------------------------------------------------
|
|
96
|
+
// defaultRepoArg — positional > E3_REPO > "."
|
|
97
|
+
// ---------------------------------------------------------------------------
|
|
98
|
+
describe('defaultRepoArg', () => {
|
|
99
|
+
it('returns the positional argument when provided', () => {
|
|
100
|
+
const prev = process.env.E3_REPO;
|
|
101
|
+
try {
|
|
102
|
+
process.env.E3_REPO = '/from/env';
|
|
103
|
+
assert.strictEqual(defaultRepoArg('./explicit'), './explicit');
|
|
104
|
+
}
|
|
105
|
+
finally {
|
|
106
|
+
if (prev === undefined)
|
|
107
|
+
delete process.env.E3_REPO;
|
|
108
|
+
else
|
|
109
|
+
process.env.E3_REPO = prev;
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
it('falls back to E3_REPO when positional is undefined', () => {
|
|
113
|
+
const prev = process.env.E3_REPO;
|
|
114
|
+
try {
|
|
115
|
+
process.env.E3_REPO = '/from/env';
|
|
116
|
+
assert.strictEqual(defaultRepoArg(undefined), '/from/env');
|
|
117
|
+
}
|
|
118
|
+
finally {
|
|
119
|
+
if (prev === undefined)
|
|
120
|
+
delete process.env.E3_REPO;
|
|
121
|
+
else
|
|
122
|
+
process.env.E3_REPO = prev;
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
it('falls back to E3_REPO when positional is the empty string', () => {
|
|
126
|
+
const prev = process.env.E3_REPO;
|
|
127
|
+
try {
|
|
128
|
+
process.env.E3_REPO = '/from/env';
|
|
129
|
+
assert.strictEqual(defaultRepoArg(''), '/from/env');
|
|
130
|
+
}
|
|
131
|
+
finally {
|
|
132
|
+
if (prev === undefined)
|
|
133
|
+
delete process.env.E3_REPO;
|
|
134
|
+
else
|
|
135
|
+
process.env.E3_REPO = prev;
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
it('defaults to "." when neither positional nor E3_REPO are set', () => {
|
|
139
|
+
const prev = process.env.E3_REPO;
|
|
140
|
+
try {
|
|
141
|
+
delete process.env.E3_REPO;
|
|
142
|
+
assert.strictEqual(defaultRepoArg(undefined), '.');
|
|
143
|
+
}
|
|
144
|
+
finally {
|
|
145
|
+
if (prev !== undefined)
|
|
146
|
+
process.env.E3_REPO = prev;
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
it('observes the order: positional > env > default', () => {
|
|
150
|
+
const prev = process.env.E3_REPO;
|
|
151
|
+
try {
|
|
152
|
+
delete process.env.E3_REPO;
|
|
153
|
+
assert.strictEqual(defaultRepoArg('explicit'), 'explicit');
|
|
154
|
+
process.env.E3_REPO = '/env';
|
|
155
|
+
assert.strictEqual(defaultRepoArg('explicit'), 'explicit');
|
|
156
|
+
assert.strictEqual(defaultRepoArg(undefined), '/env');
|
|
157
|
+
delete process.env.E3_REPO;
|
|
158
|
+
assert.strictEqual(defaultRepoArg(undefined), '.');
|
|
159
|
+
}
|
|
160
|
+
finally {
|
|
161
|
+
if (prev === undefined)
|
|
162
|
+
delete process.env.E3_REPO;
|
|
163
|
+
else
|
|
164
|
+
process.env.E3_REPO = prev;
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
// ---------------------------------------------------------------------------
|
|
169
|
+
// shortHash
|
|
170
|
+
// ---------------------------------------------------------------------------
|
|
171
|
+
describe('shortHash', () => {
|
|
172
|
+
it('truncates to HASH_DISPLAY_WIDTH chars with an ellipsis', () => {
|
|
173
|
+
const hash = 'a'.repeat(64);
|
|
174
|
+
assert.strictEqual(shortHash(hash), `${'a'.repeat(HASH_DISPLAY_WIDTH)}...`);
|
|
175
|
+
});
|
|
176
|
+
it('does not truncate shorter strings, still appends ellipsis', () => {
|
|
177
|
+
// documented behaviour: always appends `...`; callers control input
|
|
178
|
+
assert.strictEqual(shortHash('abc'), 'abc...');
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
describe('non-Error values', () => {
|
|
182
|
+
it('converts a string to itself', () => {
|
|
183
|
+
assert.strictEqual(formatError('something went wrong'), 'something went wrong');
|
|
184
|
+
});
|
|
185
|
+
it('converts a number to string', () => {
|
|
186
|
+
assert.strictEqual(formatError(42), '42');
|
|
187
|
+
});
|
|
188
|
+
it('converts undefined to string', () => {
|
|
189
|
+
assert.strictEqual(formatError(undefined), 'undefined');
|
|
190
|
+
});
|
|
191
|
+
it('converts null to string', () => {
|
|
192
|
+
assert.strictEqual(formatError(null), 'null');
|
|
193
|
+
});
|
|
194
|
+
it('converts an object to string', () => {
|
|
195
|
+
assert.strictEqual(formatError({ code: 'oops' }), '[object Object]');
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
//# sourceMappingURL=utils.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.spec.js","sourceRoot":"","sources":["../../src/utils.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elaraai/e3-cli",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "East Execution Engine CLI - Command-line tool for managing e3 repositories and tasks",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
@@ -11,43 +11,47 @@
|
|
|
11
11
|
"files": [
|
|
12
12
|
"dist/src",
|
|
13
13
|
"!dist/src/**/*.spec.*",
|
|
14
|
+
"scripts/postinstall.cjs",
|
|
14
15
|
"README.md",
|
|
15
16
|
"LICENSE"
|
|
16
17
|
],
|
|
17
|
-
"scripts": {
|
|
18
|
-
"build": "tsc --build",
|
|
19
|
-
"test": "npm run build && node --enable-source-maps --test 'dist/src/**/*.spec.js'",
|
|
20
|
-
"lint": "eslint .",
|
|
21
|
-
"lint:fix": "eslint . --fix",
|
|
22
|
-
"dev": "npm run build && node --enable-source-maps dist/src/cli.js"
|
|
23
|
-
},
|
|
24
18
|
"keywords": [
|
|
25
19
|
"east",
|
|
26
20
|
"e3",
|
|
27
21
|
"cli",
|
|
28
22
|
"execution-engine"
|
|
29
23
|
],
|
|
30
|
-
"license": "
|
|
24
|
+
"license": "BUSL-1.1",
|
|
31
25
|
"repository": {
|
|
32
26
|
"type": "git",
|
|
33
|
-
"url": "https://github.com/elaraai/
|
|
34
|
-
"directory": "packages/e3-cli"
|
|
27
|
+
"url": "git+https://github.com/elaraai/east-workspace.git",
|
|
28
|
+
"directory": "libs/e3/packages/e3-cli"
|
|
35
29
|
},
|
|
36
30
|
"dependencies": {
|
|
37
|
-
"@elaraai/e3": "*",
|
|
38
|
-
"@elaraai/e3-core": "^0.0.2-beta.8",
|
|
39
|
-
"@elaraai/e3-types": "^0.0.2-beta.8",
|
|
40
31
|
"commander": "^12.0.0",
|
|
41
|
-
"esbuild": "^0.
|
|
32
|
+
"esbuild": "^0.27.2",
|
|
33
|
+
"@elaraai/e3": "1.0.0",
|
|
34
|
+
"@elaraai/e3-api-client": "1.0.0",
|
|
35
|
+
"@elaraai/e3-types": "1.0.0",
|
|
36
|
+
"@elaraai/e3-core": "1.0.0"
|
|
42
37
|
},
|
|
43
38
|
"peerDependencies": {
|
|
44
|
-
"@elaraai/east": "
|
|
39
|
+
"@elaraai/east": "1.0.0"
|
|
45
40
|
},
|
|
46
41
|
"devDependencies": {
|
|
47
42
|
"@types/node": "^22.0.0",
|
|
48
43
|
"@typescript-eslint/eslint-plugin": "^8.47.0",
|
|
49
44
|
"@typescript-eslint/parser": "^8.47.0",
|
|
50
45
|
"eslint": "^9.0.0",
|
|
51
|
-
"eslint-plugin-headers": "^1.3.3"
|
|
46
|
+
"eslint-plugin-headers": "^1.3.3",
|
|
47
|
+
"typescript": "~5.9.2"
|
|
48
|
+
},
|
|
49
|
+
"scripts": {
|
|
50
|
+
"build": "tsc",
|
|
51
|
+
"test": "npm run build && node --enable-source-maps --test-reporter=spec --test 'dist/src/**/*.spec.js'",
|
|
52
|
+
"lint": "eslint .",
|
|
53
|
+
"lint:fix": "eslint . --fix",
|
|
54
|
+
"dev": "pnpm run build && node --enable-source-maps dist/src/cli.js",
|
|
55
|
+
"postinstall": "node scripts/postinstall.cjs"
|
|
52
56
|
}
|
|
53
|
-
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Postinstall hint for `npm install -g @elaraai/e3-cli`.
|
|
8
|
+
*
|
|
9
|
+
* Does NOT mutate the user's dotfiles. Just prints a one-liner pointing at
|
|
10
|
+
* `e3 completion install` so they can opt in if they want tab completion.
|
|
11
|
+
*
|
|
12
|
+
* Silent in CI, on local (non-global) installs, and when E3_NO_HINT is set.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
'use strict';
|
|
16
|
+
|
|
17
|
+
if (process.env.CI) return;
|
|
18
|
+
if (process.env.E3_NO_HINT) return;
|
|
19
|
+
if (process.env.npm_config_global !== 'true') return;
|
|
20
|
+
|
|
21
|
+
process.stdout.write(
|
|
22
|
+
'\n' +
|
|
23
|
+
'e3 installed.\n' +
|
|
24
|
+
'To enable tab completion: e3 completion install\n' +
|
|
25
|
+
'\n',
|
|
26
|
+
);
|
|
@@ -1,12 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/src/commands/gc.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,33 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
-
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Show repository or workspace status.
|
|
7
|
-
*/
|
|
8
|
-
export declare function statusCommand(repoArg: string, workspace?: string): Promise<void>;
|
|
9
|
-
//# sourceMappingURL=status.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmBH;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYtF"}
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
-
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* e3 status command - Show repository or workspace status
|
|
7
|
-
*
|
|
8
|
-
* Usage:
|
|
9
|
-
* e3 status . # Show repository status
|
|
10
|
-
* e3 status . production # Show detailed workspace status
|
|
11
|
-
*/
|
|
12
|
-
import { packageList, workspaceList, workspaceGetState, workspaceStatus, } from '@elaraai/e3-core';
|
|
13
|
-
import { resolveRepo, formatError, exitError } from '../utils.js';
|
|
14
|
-
/**
|
|
15
|
-
* Show repository or workspace status.
|
|
16
|
-
*/
|
|
17
|
-
export async function statusCommand(repoArg, workspace) {
|
|
18
|
-
try {
|
|
19
|
-
const repoPath = resolveRepo(repoArg);
|
|
20
|
-
if (workspace) {
|
|
21
|
-
await showWorkspaceStatus(repoPath, workspace);
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
await showRepoStatus(repoPath);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
catch (err) {
|
|
28
|
-
exitError(formatError(err));
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Show repository-level status.
|
|
33
|
-
*/
|
|
34
|
-
async function showRepoStatus(repoPath) {
|
|
35
|
-
console.log(`Repository: ${repoPath}`);
|
|
36
|
-
console.log('');
|
|
37
|
-
// List packages
|
|
38
|
-
const packages = await packageList(repoPath);
|
|
39
|
-
console.log('Packages:');
|
|
40
|
-
if (packages.length === 0) {
|
|
41
|
-
console.log(' (none)');
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
for (const pkg of packages) {
|
|
45
|
-
console.log(` ${pkg.name}@${pkg.version}`);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
console.log('');
|
|
49
|
-
// List workspaces with status
|
|
50
|
-
const workspaces = await workspaceList(repoPath);
|
|
51
|
-
console.log('Workspaces:');
|
|
52
|
-
if (workspaces.length === 0) {
|
|
53
|
-
console.log(' (none)');
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
for (const ws of workspaces) {
|
|
57
|
-
const state = await workspaceGetState(repoPath, ws);
|
|
58
|
-
if (state) {
|
|
59
|
-
console.log(` ${ws}`);
|
|
60
|
-
console.log(` Package: ${state.packageName}@${state.packageVersion}`);
|
|
61
|
-
console.log(` Deployed: ${state.deployedAt.toISOString()}`);
|
|
62
|
-
console.log(` Updated: ${state.rootUpdatedAt.toISOString()}`);
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
console.log(` ${ws} (not deployed)`);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Show detailed workspace status.
|
|
72
|
-
*/
|
|
73
|
-
async function showWorkspaceStatus(repoPath, ws) {
|
|
74
|
-
const status = await workspaceStatus(repoPath, ws);
|
|
75
|
-
console.log(`Workspace: ${status.workspace}`);
|
|
76
|
-
console.log('');
|
|
77
|
-
// Lock status
|
|
78
|
-
if (status.lock) {
|
|
79
|
-
console.log('Lock:');
|
|
80
|
-
console.log(` Held by PID ${status.lock.pid}`);
|
|
81
|
-
console.log(` Since: ${status.lock.acquiredAt}`);
|
|
82
|
-
if (status.lock.command) {
|
|
83
|
-
console.log(` Command: ${status.lock.command}`);
|
|
84
|
-
}
|
|
85
|
-
console.log('');
|
|
86
|
-
}
|
|
87
|
-
// Summary
|
|
88
|
-
console.log('Summary:');
|
|
89
|
-
console.log(` Datasets: ${status.summary.datasets.upToDate} up-to-date, ${status.summary.datasets.stale} stale, ${status.summary.datasets.unset} unset`);
|
|
90
|
-
// Build task summary line - only include non-zero counts
|
|
91
|
-
const taskParts = [];
|
|
92
|
-
if (status.summary.tasks.upToDate > 0)
|
|
93
|
-
taskParts.push(`${status.summary.tasks.upToDate} up-to-date`);
|
|
94
|
-
if (status.summary.tasks.ready > 0)
|
|
95
|
-
taskParts.push(`${status.summary.tasks.ready} ready`);
|
|
96
|
-
if (status.summary.tasks.waiting > 0)
|
|
97
|
-
taskParts.push(`${status.summary.tasks.waiting} waiting`);
|
|
98
|
-
if (status.summary.tasks.inProgress > 0)
|
|
99
|
-
taskParts.push(`${status.summary.tasks.inProgress} in-progress`);
|
|
100
|
-
if (status.summary.tasks.failed > 0)
|
|
101
|
-
taskParts.push(`${status.summary.tasks.failed} failed`);
|
|
102
|
-
if (status.summary.tasks.error > 0)
|
|
103
|
-
taskParts.push(`${status.summary.tasks.error} error`);
|
|
104
|
-
if (status.summary.tasks.staleRunning > 0)
|
|
105
|
-
taskParts.push(`${status.summary.tasks.staleRunning} stale-running`);
|
|
106
|
-
console.log(` Tasks: ${taskParts.join(', ') || 'none'}`);
|
|
107
|
-
console.log('');
|
|
108
|
-
// Tasks section
|
|
109
|
-
if (status.tasks.length > 0) {
|
|
110
|
-
console.log('Tasks:');
|
|
111
|
-
for (const task of status.tasks) {
|
|
112
|
-
const statusStr = formatTaskStatus(task.status);
|
|
113
|
-
console.log(` ${task.name}: ${statusStr}`);
|
|
114
|
-
if (task.dependsOn.length > 0) {
|
|
115
|
-
console.log(` depends on: ${task.dependsOn.join(', ')}`);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
console.log('');
|
|
119
|
-
}
|
|
120
|
-
// Datasets section (only show non-up-to-date ones for brevity)
|
|
121
|
-
const nonUpToDate = status.datasets.filter(d => d.status.type !== 'up-to-date');
|
|
122
|
-
if (nonUpToDate.length > 0) {
|
|
123
|
-
console.log('Datasets needing attention:');
|
|
124
|
-
for (const dataset of nonUpToDate) {
|
|
125
|
-
const statusStr = dataset.status.type === 'unset' ? 'unset' : 'stale';
|
|
126
|
-
const producer = dataset.producedBy ? ` (from ${dataset.producedBy})` : ' (input)';
|
|
127
|
-
console.log(` ${dataset.path}: ${statusStr}${producer}`);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
else if (status.datasets.length > 0) {
|
|
131
|
-
console.log('All datasets up-to-date');
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Format task status for display.
|
|
136
|
-
*/
|
|
137
|
-
function formatTaskStatus(status) {
|
|
138
|
-
switch (status.type) {
|
|
139
|
-
case 'up-to-date':
|
|
140
|
-
return status.cached ? 'up-to-date (cached)' : 'up-to-date';
|
|
141
|
-
case 'ready':
|
|
142
|
-
return 'ready to run';
|
|
143
|
-
case 'waiting':
|
|
144
|
-
return `waiting (${status.reason})`;
|
|
145
|
-
case 'in-progress':
|
|
146
|
-
return status.pid ? `in-progress (PID ${status.pid})` : 'in-progress';
|
|
147
|
-
case 'failed':
|
|
148
|
-
return `FAILED (exit code ${status.exitCode})`;
|
|
149
|
-
case 'error':
|
|
150
|
-
return `ERROR: ${status.message}`;
|
|
151
|
-
case 'stale-running':
|
|
152
|
-
return `stale-running (PID ${status.pid} no longer exists)`;
|
|
153
|
-
default:
|
|
154
|
-
return 'unknown';
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
//# sourceMappingURL=status.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
-
* Licensed under BSL 1.1. See LICENSE for details.
|
|
4
|
-
*/
|
|
5
|
-
interface TreeOptions {
|
|
6
|
-
depth?: string;
|
|
7
|
-
types?: boolean;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Show full tree structure of a workspace.
|
|
11
|
-
*/
|
|
12
|
-
export declare function treeCommand(repoArg: string, pathSpec: string, options: TreeOptions): Promise<void>;
|
|
13
|
-
export {};
|
|
14
|
-
//# sourceMappingURL=tree.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../src/commands/tree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmBH,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAoCD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA6Bf"}
|