@deeplake/hivemind 0.7.38 → 0.7.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.
@@ -6,18 +6,18 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "Cloud-backed persistent shared memory for AI agents powered by Deeplake",
9
- "version": "0.7.38"
9
+ "version": "0.7.40"
10
10
  },
11
11
  "plugins": [
12
12
  {
13
13
  "name": "hivemind",
14
14
  "description": "Persistent shared memory powered by Deeplake — captures all session activity and provides cross-session, cross-agent memory search",
15
- "version": "0.7.38",
15
+ "version": "0.7.40",
16
16
  "source": {
17
17
  "source": "git-subdir",
18
18
  "url": "https://github.com/activeloopai/hivemind.git",
19
19
  "path": "claude-code",
20
- "sha": "871fcb8d1cca4ab93ad139b93652a161d7bc3a8a"
20
+ "sha": "7ffac5f3ae3eb79b7606f837d1eebd335c58c046"
21
21
  },
22
22
  "homepage": "https://github.com/activeloopai/hivemind"
23
23
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "hivemind",
3
3
  "description": "Cloud-backed persistent memory powered by Deeplake — read, write, and share memory across Claude Code sessions and agents",
4
- "version": "0.7.38",
4
+ "version": "0.7.40",
5
5
  "author": {
6
6
  "name": "Activeloop",
7
7
  "url": "https://deeplake.ai"
package/bundle/cli.js CHANGED
@@ -6914,7 +6914,7 @@ function takeBoolFlag(args, flag) {
6914
6914
  }
6915
6915
  async function runMineLocal(args) {
6916
6916
  let lockReleased = false;
6917
- const releaseLock = () => {
6917
+ const releaseLock2 = () => {
6918
6918
  if (lockReleased)
6919
6919
  return;
6920
6920
  lockReleased = true;
@@ -6923,11 +6923,11 @@ async function runMineLocal(args) {
6923
6923
  } catch {
6924
6924
  }
6925
6925
  };
6926
- process.on("exit", releaseLock);
6926
+ process.on("exit", releaseLock2);
6927
6927
  try {
6928
6928
  return await runMineLocalImpl(args);
6929
6929
  } finally {
6930
- releaseLock();
6930
+ releaseLock2();
6931
6931
  }
6932
6932
  }
6933
6933
  async function runMineLocalImpl(args) {
@@ -7538,8 +7538,9 @@ if (process.argv[1] && process.argv[1].endsWith("skillify.js")) {
7538
7538
 
7539
7539
  // dist/src/cli/update.js
7540
7540
  import { execFileSync as execFileSync4 } from "node:child_process";
7541
- import { existsSync as existsSync27, readFileSync as readFileSync23, realpathSync } from "node:fs";
7542
- import { dirname as dirname10, sep } from "node:path";
7541
+ import { closeSync as closeSync2, existsSync as existsSync27, mkdirSync as mkdirSync13, openSync as openSync2, readFileSync as readFileSync23, realpathSync, unlinkSync as unlinkSync11, writeSync } from "node:fs";
7542
+ import { homedir as homedir19 } from "node:os";
7543
+ import { dirname as dirname10, join as join33, sep } from "node:path";
7543
7544
  import { fileURLToPath as fileURLToPath2 } from "node:url";
7544
7545
 
7545
7546
  // dist/src/utils/version-check.js
@@ -7555,6 +7556,9 @@ function isNewer(latest, current) {
7555
7556
  // dist/src/cli/update.js
7556
7557
  var NPM_REGISTRY_URL = "https://registry.npmjs.org/@deeplake/hivemind/latest";
7557
7558
  var PKG_NAME = "@deeplake/hivemind";
7559
+ function defaultLockPath() {
7560
+ return join33(homedir19(), ".deeplake", "hivemind-update.lock");
7561
+ }
7558
7562
  function detectInstallKind(argv1) {
7559
7563
  const realArgv1 = (() => {
7560
7564
  try {
@@ -7613,6 +7617,58 @@ async function getLatestNpmVersion(timeoutMs = 5e3) {
7613
7617
  var defaultSpawn = (cmd, args) => {
7614
7618
  execFileSync4(cmd, args, { stdio: "inherit" });
7615
7619
  };
7620
+ function tryAcquireLock(path) {
7621
+ mkdirSync13(dirname10(path), { recursive: true, mode: 448 });
7622
+ const claim = () => {
7623
+ const fd = openSync2(path, "wx", 384);
7624
+ writeSync(fd, String(process.pid));
7625
+ return fd;
7626
+ };
7627
+ try {
7628
+ return claim();
7629
+ } catch (e) {
7630
+ if (e.code !== "EEXIST")
7631
+ throw e;
7632
+ }
7633
+ let holderPid = 0;
7634
+ try {
7635
+ holderPid = Number(readFileSync23(path, "utf-8").trim()) || 0;
7636
+ } catch {
7637
+ try {
7638
+ return claim();
7639
+ } catch {
7640
+ return null;
7641
+ }
7642
+ }
7643
+ if (holderPid > 0) {
7644
+ try {
7645
+ process.kill(holderPid, 0);
7646
+ log(`another hivemind update is already running (pid=${holderPid}); skipping.`);
7647
+ return null;
7648
+ } catch {
7649
+ }
7650
+ }
7651
+ try {
7652
+ unlinkSync11(path);
7653
+ } catch {
7654
+ }
7655
+ try {
7656
+ return claim();
7657
+ } catch {
7658
+ log(`another hivemind update is already running; skipping.`);
7659
+ return null;
7660
+ }
7661
+ }
7662
+ function releaseLock(fd, path) {
7663
+ try {
7664
+ closeSync2(fd);
7665
+ } catch {
7666
+ }
7667
+ try {
7668
+ unlinkSync11(path);
7669
+ } catch {
7670
+ }
7671
+ }
7616
7672
  async function runUpdate(opts = {}) {
7617
7673
  const current = opts.currentVersionOverride ?? getVersion();
7618
7674
  const latest = opts.latestVersionOverride !== void 0 ? opts.latestVersionOverride : await getLatestNpmVersion();
@@ -7635,26 +7691,34 @@ async function runUpdate(opts = {}) {
7635
7691
  log(`(dry-run) Would re-run: hivemind install --skip-auth`);
7636
7692
  return 0;
7637
7693
  }
7638
- log(`Upgrading via npm\u2026`);
7639
- try {
7640
- spawn2("npm", ["install", "-g", `${PKG_NAME}@latest`]);
7641
- } catch (e) {
7642
- warn(`npm install failed: ${e.message}`);
7643
- warn(`Try running it manually: npm install -g ${PKG_NAME}@latest`);
7644
- return 1;
7645
- }
7646
- log(``);
7647
- log(`Refreshing agent bundles\u2026`);
7694
+ const lockPath2 = opts.lockPathOverride ?? defaultLockPath();
7695
+ const lockFd = tryAcquireLock(lockPath2);
7696
+ if (lockFd === null)
7697
+ return 0;
7648
7698
  try {
7649
- spawn2("hivemind", ["install", "--skip-auth"]);
7650
- } catch (e) {
7651
- warn(`Agent refresh failed: ${e.message}`);
7652
- warn(`Run manually: hivemind install`);
7653
- return 1;
7699
+ log(`Upgrading via npm\u2026`);
7700
+ try {
7701
+ spawn2("npm", ["install", "-g", `${PKG_NAME}@latest`]);
7702
+ } catch (e) {
7703
+ warn(`npm install failed: ${e.message}`);
7704
+ warn(`Try running it manually: npm install -g ${PKG_NAME}@latest`);
7705
+ return 1;
7706
+ }
7707
+ log(``);
7708
+ log(`Refreshing agent bundles\u2026`);
7709
+ try {
7710
+ spawn2("hivemind", ["install", "--skip-auth"]);
7711
+ } catch (e) {
7712
+ warn(`Agent refresh failed: ${e.message}`);
7713
+ warn(`Run manually: hivemind install`);
7714
+ return 1;
7715
+ }
7716
+ log(``);
7717
+ log(`Updated to ${latest}.`);
7718
+ return 0;
7719
+ } finally {
7720
+ releaseLock(lockFd, lockPath2);
7654
7721
  }
7655
- log(``);
7656
- log(`Updated to ${latest}.`);
7657
- return 0;
7658
7722
  }
7659
7723
  case "npx": {
7660
7724
  if (opts.dryRun) {
@@ -1543,7 +1543,7 @@ function extractLatestVersion(body) {
1543
1543
  return typeof v === "string" && v.length > 0 ? v : null;
1544
1544
  }
1545
1545
  function getInstalledVersion() {
1546
- return "0.7.38".length > 0 ? "0.7.38" : null;
1546
+ return "0.7.40".length > 0 ? "0.7.40" : null;
1547
1547
  }
1548
1548
  function isNewer(latest, current) {
1549
1549
  const parse = (v) => v.replace(/-.*$/, "").split(".").map(Number);
@@ -52,5 +52,5 @@
52
52
  }
53
53
  }
54
54
  },
55
- "version": "0.7.38"
55
+ "version": "0.7.40"
56
56
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hivemind",
3
- "version": "0.7.38",
3
+ "version": "0.7.40",
4
4
  "type": "module",
5
5
  "description": "Hivemind — cloud-backed persistent shared memory for AI agents, powered by DeepLake",
6
6
  "license": "Apache-2.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deeplake/hivemind",
3
- "version": "0.7.38",
3
+ "version": "0.7.40",
4
4
  "description": "Cloud-backed persistent shared memory for AI agents powered by Deeplake",
5
5
  "type": "module",
6
6
  "repository": {