@delta-infra/cli 1.0.46 → 1.0.48

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 CHANGED
@@ -1,5 +1,5 @@
1
- 59bb460b869e235317ce8ff941e799be389d62afb9383c7aa7d0b1c86c4f70af delta-cli-darwin-amd64.tar.gz
2
- bdbc5a01dea688f92671fcd66302e8919c252f022f36244a24fa3a2b112b45bf delta-cli-darwin-arm64.tar.gz
3
- 67e3ef153700bc2ac920bac8d349114cdb8e2e2014b08d1f3b22a7c9eb93ff91 delta-cli-linux-amd64.tar.gz
4
- fba11856a6a8e475db2c849292b4c97e0d1ef89b7739eaa71205be0014e32ff8 delta-cli-linux-arm64.tar.gz
5
- 6952018390fc67ef2392d68409c0948773a570aa0176e36582a19766c562d278 delta-cli-windows-amd64.zip
1
+ 915ea8aa85e7cbed2edb47273fa755da58e7e422c2f70f897582a8389a6d1e28 delta-cli-darwin-amd64.tar.gz
2
+ 87dd614dfea3e5a1c8776a874f5c58b767454ca214e1aa0de6920e561c808ddf delta-cli-darwin-arm64.tar.gz
3
+ 43a594728d1047389fdd57b3f12252b73d772a903ef27ff3ce13e804226a2a06 delta-cli-linux-amd64.tar.gz
4
+ 29a7b43babdd8d61f11189762518c513c619a6a9106b02f01460c09c71df2fb2 delta-cli-linux-arm64.tar.gz
5
+ 7f61f034ed7ccd3034bccaf2a891973dc82e4bf71a885124a01ae48c5dc6af60 delta-cli-windows-amd64.zip
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@delta-infra/cli",
3
- "version": "1.0.46",
3
+ "version": "1.0.48",
4
4
  "description": "Delta Sandbox CLI",
5
5
  "bin": {
6
6
  "delta-cli": "scripts/run.js"
@@ -214,12 +214,12 @@ async function stepInstallGlobally(msg) {
214
214
  // Install the npm package (which triggers postinstall → install.js),
215
215
  // then explicitly download the correct version binary in case the
216
216
  // npx cache has stale package.json that misleads install.js.
217
- await runSilentAsync("npm", ["install", "-g", PKG], { timeout: 120000 });
217
+ await runSilentAsync("npm", ["install", "-g", PKG], { timeout: 300000 });
218
218
  if (targetVer) {
219
219
  await runSilentAsync(process.execPath, [
220
220
  path.join(__dirname, "install.js"),
221
221
  ], {
222
- timeout: 120000,
222
+ timeout: 300000,
223
223
  env: { ...process.env, DELTA_CLI_RUN: "true", DELTA_CLI_VERSION: targetVer },
224
224
  });
225
225
  }
@@ -232,12 +232,45 @@ async function stepInstallGlobally(msg) {
232
232
  }
233
233
 
234
234
  async function skillsAlreadyInstalled() {
235
- try {
236
- const out = await runSilentAsync("npx", ["-y", "skills", "ls", "-g"], {
237
- timeout: 120000,
238
- });
239
- return /^delta-/m.test(out.toString());
240
- } catch { return false; }
235
+ const agentsDir = path.join(osHomedir(), ".agents", "skills");
236
+ return fs.existsSync(path.join(agentsDir, "delta-sandbox", "SKILL.md")) &&
237
+ fs.existsSync(path.join(agentsDir, "delta-shared", "SKILL.md"));
238
+ }
239
+
240
+ function installSkillsFromLocalPackage() {
241
+ const npmRoot = runSilent("npm", ["root", "-g"], { timeout: 10000 })
242
+ .toString().trim();
243
+ const pkgSkillsDir = path.join(npmRoot, PKG, "skills");
244
+ if (!fs.existsSync(path.join(pkgSkillsDir, "delta-sandbox", "SKILL.md"))) {
245
+ return false;
246
+ }
247
+
248
+ const home = osHomedir();
249
+ const agentsDir = path.join(home, ".agents", "skills");
250
+ fs.mkdirSync(agentsDir, { recursive: true });
251
+
252
+ for (const skill of ["delta-sandbox", "delta-shared"]) {
253
+ const src = path.join(pkgSkillsDir, skill);
254
+ if (!fs.existsSync(src)) continue;
255
+ const dst = path.join(agentsDir, skill);
256
+ fs.rmSync(dst, { recursive: true, force: true });
257
+ fs.cpSync(src, dst, { recursive: true });
258
+ }
259
+
260
+ const claudeDir = path.join(home, ".claude", "skills");
261
+ if (fs.existsSync(path.dirname(claudeDir))) {
262
+ fs.mkdirSync(claudeDir, { recursive: true });
263
+ for (const skill of ["delta-sandbox", "delta-shared"]) {
264
+ const linkPath = path.join(claudeDir, skill);
265
+ const targetPath = path.join(agentsDir, skill);
266
+ try {
267
+ fs.rmSync(linkPath, { force: true });
268
+ fs.symlinkSync(path.relative(path.dirname(linkPath), targetPath), linkPath);
269
+ } catch { /* symlink may fail on some platforms */ }
270
+ }
271
+ }
272
+
273
+ return true;
241
274
  }
242
275
 
243
276
  async function stepInstallSkills(msg) {
@@ -248,17 +281,24 @@ async function stepInstallSkills(msg) {
248
281
  s.stop(msg.step2Skip);
249
282
  return;
250
283
  }
284
+
285
+ try {
286
+ if (installSkillsFromLocalPackage()) {
287
+ s.stop(msg.step2Done);
288
+ return;
289
+ }
290
+ } catch { }
291
+
251
292
  const GH_PROXY = "https://gh-proxy.com/https://github.com";
252
293
  const urls = [
253
294
  `${GH_PROXY}/${SKILLS_REPO}`,
254
- SKILLS_REPO,
255
295
  `https://github.com/${SKILLS_REPO}`,
256
296
  ];
257
297
  let lastErr;
258
298
  for (const url of urls) {
259
299
  try {
260
300
  await runSilentAsync("npx", ["-y", "skills", "add", url, "-y", "-g"], {
261
- timeout: 120000,
301
+ timeout: 60000,
262
302
  env: { ...process.env, GIT_TERMINAL_PROMPT: "0" },
263
303
  });
264
304
  s.stop(msg.step2Done);
@@ -342,9 +382,28 @@ async function stepAuthLogin(msg) {
342
382
  async function stepUninstallSkills(msg) {
343
383
  const s = createSpinner();
344
384
  s.start("Removing AI skills...");
385
+
386
+ const home = osHomedir();
387
+ const agentsDir = path.join(home, ".agents", "skills");
388
+ const claudeDir = path.join(home, ".claude", "skills");
389
+ let removedLocally = false;
390
+
391
+ for (const skill of ["delta-sandbox", "delta-shared"]) {
392
+ try {
393
+ fs.rmSync(path.join(agentsDir, skill), { recursive: true, force: true });
394
+ fs.rmSync(path.join(claudeDir, skill), { force: true });
395
+ removedLocally = true;
396
+ } catch { }
397
+ }
398
+
399
+ if (removedLocally) {
400
+ s.stop("AI skills removed");
401
+ return;
402
+ }
403
+
345
404
  try {
346
405
  await runSilentAsync("npx", ["-y", "skills", "remove", "delta-sandbox", "delta-shared", "-g"], {
347
- timeout: 120000,
406
+ timeout: 60000,
348
407
  });
349
408
  s.stop("AI skills removed");
350
409
  } catch {
@@ -130,7 +130,7 @@ function probeMirrors(version, cb) {
130
130
  ];
131
131
  var child;
132
132
  try {
133
- child = require("child_process").spawn("curl", args, { stdio: ["ignore", "pipe", "pipe"], timeout: 8000 });
133
+ child = require("child_process").spawn("curl", args, { stdio: ["ignore", "pipe", "pipe"], timeout: 5000 });
134
134
  var stdout = "";
135
135
  var stderr = "";
136
136
  child.stdout.on("data", function(d) { stdout += d; });
@@ -153,7 +153,7 @@ function probeMirrors(version, cb) {
153
153
  })(i);
154
154
  }
155
155
  // Safety timeout: if probes hang, continue without mirrors after 10s
156
- setTimeout(finish, 10000);
156
+ setTimeout(finish, 5000);
157
157
  }
158
158
 
159
159
  function releaseAssetUrls(version, assetName, cb) {
@@ -225,7 +225,9 @@ function download(url, destPath) {
225
225
  assertAllowedHost(url);
226
226
  const args = [
227
227
  "--fail", "--location", "--silent", "--show-error",
228
- "--connect-timeout", "10", "--max-time", "120",
228
+ "--connect-timeout", "10",
229
+ "--max-time", "45",
230
+ "--speed-limit", "50000", "--speed-time", "10",
229
231
  "--max-redirs", "3",
230
232
  "--output", destPath,
231
233
  ];