@delta-infra/cli 1.0.43 → 1.0.45
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/checksums.txt +5 -5
- package/package.json +1 -1
- package/scripts/install-wizard.js +22 -7
- package/skills/delta-sandbox/SKILL.md +2 -2
package/checksums.txt
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
57e1334d81ceffb658b8b7868d9df29d73963ff9534ca49636f982122bda4fc5 delta-cli-darwin-amd64.tar.gz
|
|
2
|
+
68e001e482a5ea0760474bca5d344eac370910a9fa7d920ff5fd6c0f607e5fb9 delta-cli-darwin-arm64.tar.gz
|
|
3
|
+
2864a8670fdb86ac091d58d093b518e5472f92b5832eae4d84774982688d8d73 delta-cli-linux-amd64.tar.gz
|
|
4
|
+
61507fd1bdfa35ef35bb9f6c36d5d331bbae9e7ca5ca24e0e5608325b4b7c0c5 delta-cli-linux-arm64.tar.gz
|
|
5
|
+
36d1cdc11acd621317f882b39dbb144fb3c56656b9cbd0df0b6386cad33da4b0 delta-cli-windows-amd64.zip
|
package/package.json
CHANGED
|
@@ -123,6 +123,21 @@ function osHomedir() {
|
|
|
123
123
|
"/root";
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
+
function isInteractiveEnv() {
|
|
127
|
+
return !!process.stdin.isTTY &&
|
|
128
|
+
!process.env.CI &&
|
|
129
|
+
!process.env.NO_COLOR &&
|
|
130
|
+
process.env.TERM !== "dumb";
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function createSpinner() {
|
|
134
|
+
if (isInteractiveEnv()) return p.spinner();
|
|
135
|
+
return {
|
|
136
|
+
start: (msg) => { if (msg) console.log(msg); },
|
|
137
|
+
stop: (msg) => { if (msg) console.log(msg); },
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
|
|
126
141
|
function whichDeltaCli() {
|
|
127
142
|
try {
|
|
128
143
|
const prefix = execFileSync("npm", ["prefix", "-g"], {
|
|
@@ -189,7 +204,7 @@ async function stepInstallGlobally(msg) {
|
|
|
189
204
|
}
|
|
190
205
|
|
|
191
206
|
const targetVer = latestVer || installedVer;
|
|
192
|
-
const s =
|
|
207
|
+
const s = createSpinner();
|
|
193
208
|
if (needsUpgrade) {
|
|
194
209
|
s.start(fmt(msg.upgrade, PKG, installedVer, latestVer));
|
|
195
210
|
} else {
|
|
@@ -226,7 +241,7 @@ async function skillsAlreadyInstalled() {
|
|
|
226
241
|
}
|
|
227
242
|
|
|
228
243
|
async function stepInstallSkills(msg) {
|
|
229
|
-
const s =
|
|
244
|
+
const s = createSpinner();
|
|
230
245
|
s.start(msg.step2Spinner);
|
|
231
246
|
try {
|
|
232
247
|
if (await skillsAlreadyInstalled()) {
|
|
@@ -260,7 +275,7 @@ async function stepInstallSkills(msg) {
|
|
|
260
275
|
}
|
|
261
276
|
|
|
262
277
|
async function stepConfigInit(msg) {
|
|
263
|
-
const s =
|
|
278
|
+
const s = createSpinner();
|
|
264
279
|
s.start(msg.step3);
|
|
265
280
|
|
|
266
281
|
const deltaCli = whichDeltaCli();
|
|
@@ -325,7 +340,7 @@ async function stepAuthLogin(msg) {
|
|
|
325
340
|
// ── Uninstall steps ─────────────────────────────────────────────────────────
|
|
326
341
|
|
|
327
342
|
async function stepUninstallSkills(msg) {
|
|
328
|
-
const s =
|
|
343
|
+
const s = createSpinner();
|
|
329
344
|
s.start("Removing AI skills...");
|
|
330
345
|
try {
|
|
331
346
|
await runSilentAsync("npx", ["-y", "skills", "remove", "delta-sandbox", "delta-shared", "-g"], {
|
|
@@ -350,7 +365,7 @@ async function stepUninstallPackage(msg) {
|
|
|
350
365
|
if (!installedVer) {
|
|
351
366
|
return;
|
|
352
367
|
}
|
|
353
|
-
const s =
|
|
368
|
+
const s = createSpinner();
|
|
354
369
|
s.start("Removing global package...");
|
|
355
370
|
try {
|
|
356
371
|
await runSilentAsync("npm", ["uninstall", "-g", PKG], { timeout: 60000 });
|
|
@@ -364,7 +379,7 @@ async function stepUninstallPackage(msg) {
|
|
|
364
379
|
// ── Main ────────────────────────────────────────────────────────────────────
|
|
365
380
|
|
|
366
381
|
async function doInstall() {
|
|
367
|
-
const isInteractive =
|
|
382
|
+
const isInteractive = isInteractiveEnv();
|
|
368
383
|
|
|
369
384
|
if (isInteractive) {
|
|
370
385
|
p.intro(messages.zh.setup);
|
|
@@ -382,7 +397,7 @@ async function doInstall() {
|
|
|
382
397
|
}
|
|
383
398
|
|
|
384
399
|
async function doUninstall() {
|
|
385
|
-
const isInteractive =
|
|
400
|
+
const isInteractive = isInteractiveEnv();
|
|
386
401
|
|
|
387
402
|
if (isInteractive) {
|
|
388
403
|
const ok = await p.confirm({
|
|
@@ -33,7 +33,7 @@ metadata:
|
|
|
33
33
|
5. **同步任务一条命令内完成,后台任务可跨轮次**:
|
|
34
34
|
- 同步模式(`sandbox run`):从 `create` 到 `kill` 的完整生命周期必须在同一次执行中完成。不允许跨任务保留。
|
|
35
35
|
- 后台模式(`sandbox run-bg`):允许在当前执行中将 `sandbox_id` 和 `execution_id` 报告给用户,后续轮次通过 `sandbox status` + `sandbox logs` 获取结果。任务完成后仍需 `sandbox kill`。
|
|
36
|
-
6. **禁止重复创建**:同一次任务中只允许存在一个活跃 sandbox。若命令失败需要重试,优先复用已创建的 `sandbox_id`;若确实需要重新创建,必须先 `sandbox kill <旧_sandbox_id>`,确认旧实例销毁后再执行新的 `sandbox create`。可用 `delta-cli sandbox list` 查询当前用户的活跃 sandbox
|
|
36
|
+
6. **禁止重复创建**:同一次任务中只允许存在一个活跃 sandbox。若命令失败需要重试,优先复用已创建的 `sandbox_id`;若确实需要重新创建,必须先 `sandbox kill <旧_sandbox_id>`,确认旧实例销毁后再执行新的 `sandbox create`。可用 `delta-cli sandbox list` 查询当前用户的活跃 sandbox 来**清理残留**(上轮任务异常中断遗留的 sandbox),但 **禁止** 用 list 来绕过“同一次任务只保留一个 sandbox”的规则。
|
|
37
37
|
|
|
38
38
|
7. **长任务必须后台执行**:预计执行时间超过 60 秒的任务(例如下载模型、训练、微调、长推理、大规模数据处理),**必须**使用 `delta-cli sandbox run-bg <id> --command "..." --timeout <秒>` 提交为后台任务,禁止使用同步的 `sandbox run`。
|
|
39
39
|
|
|
@@ -180,7 +180,7 @@ required_outputs:
|
|
|
180
180
|
- **上传目录**:`sandbox upload <id> --source <本地目录> --target <沙箱路径>` — CLI 将本地目录打包为 tar.gz,通过 multipart/form-data 上传,服务端自动解压到 target 目录。返回每个文件的路径、大小、模式。上传后 CLI 自动对比本地和远程文件清单做完整性校验(大小不匹配、多余文件等会告警)。
|
|
181
181
|
- **注意**:`--source` 是**本地目录路径**,`--target` 是**沙箱内的目标目录**,target 目录不存在会自动创建。
|
|
182
182
|
- 支持嵌套目录,空目录也会被创建。
|
|
183
|
-
|
|
183
|
+
- **写后验证(可选)**:`sandbox stat <id> --path <path>` 确认文件存在且 size 符合预期即可。**不要**用 `sandbox ls` + `sandbox read` 把刚写入的文件读回宿主再逐字对比;无异常时不需要读回。
|
|
184
184
|
4. **运行命令**:
|
|
185
185
|
- **短任务(预计 ≤ 60 秒)**:`delta-cli sandbox run <id> --command "<命令>" --timeout <秒>` 同步执行,返回 `stderr` / `exit_code` / `result_file`,完整 `stdout` 在结果文件中,**不要**再调用 `sandbox logs`。可通过 `--result-file <路径>` 自定义结果文件路径;默认值为 `/tmp/delta-result-{execution_id}.json`。根据镜像中的运行时构造命令,常见示例:
|
|
186
186
|
- Python:`python /workspace/train.py`
|