@deeplake/hivemind 0.7.33 → 0.7.35
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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/bundle/cli.js +126 -116
- package/codex/bundle/session-start.js +40 -31
- package/codex/bundle/skillify-worker.js +26 -18
- package/codex/bundle/stop.js +61 -38
- package/cursor/bundle/capture.js +46 -23
- package/cursor/bundle/session-end.js +43 -20
- package/cursor/bundle/session-start.js +39 -30
- package/cursor/bundle/skillify-worker.js +26 -18
- package/hermes/bundle/capture.js +46 -23
- package/hermes/bundle/session-end.js +43 -20
- package/hermes/bundle/session-start.js +39 -30
- package/hermes/bundle/skillify-worker.js +26 -18
- package/openclaw/dist/index.js +236 -7
- package/openclaw/dist/skillify-worker.js +26 -18
- package/openclaw/openclaw.plugin.json +1 -1
- package/openclaw/package.json +1 -1
- package/package.json +1 -1
- package/pi/extension-source/hivemind.ts +188 -62
package/cursor/bundle/capture.js
CHANGED
|
@@ -1301,7 +1301,7 @@ function createSymlinkAtomic(target, link) {
|
|
|
1301
1301
|
|
|
1302
1302
|
// dist/src/hooks/cursor/capture.js
|
|
1303
1303
|
import { fileURLToPath as fileURLToPath3 } from "node:url";
|
|
1304
|
-
import { dirname as
|
|
1304
|
+
import { dirname as dirname7, join as join20 } from "node:path";
|
|
1305
1305
|
|
|
1306
1306
|
// dist/src/hooks/summary-state.js
|
|
1307
1307
|
import { readFileSync as readFileSync7, writeFileSync as writeFileSync5, writeSync as writeSync2, mkdirSync as mkdirSync6, renameSync as renameSync4, existsSync as existsSync6, unlinkSync as unlinkSync4, openSync as openSync3, closeSync as closeSync3 } from "node:fs";
|
|
@@ -1732,25 +1732,34 @@ function spawnSkillifyWorker(opts) {
|
|
|
1732
1732
|
}
|
|
1733
1733
|
|
|
1734
1734
|
// dist/src/skillify/state.js
|
|
1735
|
-
import { readFileSync as readFileSync9, writeFileSync as writeFileSync8, writeSync as writeSync3, mkdirSync as mkdirSync10, renameSync as renameSync6, existsSync as existsSync9, unlinkSync as unlinkSync5, openSync as openSync4, closeSync as closeSync4 } from "node:fs";
|
|
1735
|
+
import { readFileSync as readFileSync9, writeFileSync as writeFileSync8, writeSync as writeSync3, mkdirSync as mkdirSync10, renameSync as renameSync6, rmdirSync, existsSync as existsSync9, lstatSync as lstatSync2, unlinkSync as unlinkSync5, openSync as openSync4, closeSync as closeSync4 } from "node:fs";
|
|
1736
1736
|
import { execSync as execSync2 } from "node:child_process";
|
|
1737
|
-
import { homedir as homedir14 } from "node:os";
|
|
1738
1737
|
import { createHash } from "node:crypto";
|
|
1739
|
-
import { join as
|
|
1738
|
+
import { join as join18, basename as basename2 } from "node:path";
|
|
1740
1739
|
|
|
1741
1740
|
// dist/src/skillify/legacy-migration.js
|
|
1742
1741
|
import { existsSync as existsSync8, renameSync as renameSync5 } from "node:fs";
|
|
1742
|
+
import { dirname as dirname6, join as join17 } from "node:path";
|
|
1743
|
+
|
|
1744
|
+
// dist/src/skillify/state-dir.js
|
|
1743
1745
|
import { homedir as homedir13 } from "node:os";
|
|
1744
1746
|
import { join as join16 } from "node:path";
|
|
1747
|
+
function getStateDir() {
|
|
1748
|
+
const override = process.env.HIVEMIND_STATE_DIR?.trim();
|
|
1749
|
+
return override && override.length > 0 ? override : join16(homedir13(), ".deeplake", "state", "skillify");
|
|
1750
|
+
}
|
|
1751
|
+
|
|
1752
|
+
// dist/src/skillify/legacy-migration.js
|
|
1745
1753
|
var dlog2 = (msg) => log("skillify-migrate", msg);
|
|
1746
1754
|
var attempted = false;
|
|
1747
1755
|
function migrateLegacyStateDir() {
|
|
1756
|
+
if (process.env.HIVEMIND_STATE_DIR?.trim())
|
|
1757
|
+
return;
|
|
1748
1758
|
if (attempted)
|
|
1749
1759
|
return;
|
|
1750
1760
|
attempted = true;
|
|
1751
|
-
const
|
|
1752
|
-
const legacy =
|
|
1753
|
-
const current = join16(root, "skillify");
|
|
1761
|
+
const current = getStateDir();
|
|
1762
|
+
const legacy = join17(dirname6(current), "skilify");
|
|
1754
1763
|
if (!existsSync8(legacy))
|
|
1755
1764
|
return;
|
|
1756
1765
|
if (existsSync8(current))
|
|
@@ -1760,8 +1769,8 @@ function migrateLegacyStateDir() {
|
|
|
1760
1769
|
dlog2(`migrated ${legacy} -> ${current}`);
|
|
1761
1770
|
} catch (err) {
|
|
1762
1771
|
const code = err.code;
|
|
1763
|
-
if (code === "EXDEV" || code === "EPERM") {
|
|
1764
|
-
dlog2(`migration
|
|
1772
|
+
if (code === "EXDEV" || code === "EPERM" || code === "ENOENT" || code === "EEXIST" || code === "ENOTEMPTY") {
|
|
1773
|
+
dlog2(`migration skipped (${code}); legacy dir left as-is or another process handled it`);
|
|
1765
1774
|
return;
|
|
1766
1775
|
}
|
|
1767
1776
|
throw err;
|
|
@@ -1770,17 +1779,16 @@ function migrateLegacyStateDir() {
|
|
|
1770
1779
|
|
|
1771
1780
|
// dist/src/skillify/state.js
|
|
1772
1781
|
var dlog3 = (msg) => log("skillify-state", msg);
|
|
1773
|
-
var STATE_DIR2 = join17(homedir14(), ".deeplake", "state", "skillify");
|
|
1774
1782
|
var YIELD_BUF2 = new Int32Array(new SharedArrayBuffer(4));
|
|
1775
1783
|
var TRIGGER_THRESHOLD = (() => {
|
|
1776
1784
|
const n = Number(process.env.HIVEMIND_SKILLIFY_EVERY_N_TURNS ?? "");
|
|
1777
1785
|
return Number.isInteger(n) && n > 0 ? n : 20;
|
|
1778
1786
|
})();
|
|
1779
1787
|
function statePath2(projectKey) {
|
|
1780
|
-
return
|
|
1788
|
+
return join18(getStateDir(), `${projectKey}.json`);
|
|
1781
1789
|
}
|
|
1782
1790
|
function lockPath3(projectKey) {
|
|
1783
|
-
return
|
|
1791
|
+
return join18(getStateDir(), `${projectKey}.lock`);
|
|
1784
1792
|
}
|
|
1785
1793
|
var DEFAULT_PORTS = {
|
|
1786
1794
|
http: "80",
|
|
@@ -1836,7 +1844,7 @@ function readState2(projectKey) {
|
|
|
1836
1844
|
}
|
|
1837
1845
|
function writeState2(projectKey, state) {
|
|
1838
1846
|
migrateLegacyStateDir();
|
|
1839
|
-
mkdirSync10(
|
|
1847
|
+
mkdirSync10(getStateDir(), { recursive: true });
|
|
1840
1848
|
const p = statePath2(projectKey);
|
|
1841
1849
|
const tmp = `${p}.${process.pid}.${Date.now()}.tmp`;
|
|
1842
1850
|
writeFileSync8(tmp, JSON.stringify(state, null, 2));
|
|
@@ -1844,7 +1852,7 @@ function writeState2(projectKey, state) {
|
|
|
1844
1852
|
}
|
|
1845
1853
|
function withRmwLock2(projectKey, fn) {
|
|
1846
1854
|
migrateLegacyStateDir();
|
|
1847
|
-
mkdirSync10(
|
|
1855
|
+
mkdirSync10(getStateDir(), { recursive: true });
|
|
1848
1856
|
const rmw = lockPath3(projectKey) + ".rmw";
|
|
1849
1857
|
const deadline = Date.now() + 2e3;
|
|
1850
1858
|
let fd = null;
|
|
@@ -1904,7 +1912,7 @@ function resetCounter(projectKey) {
|
|
|
1904
1912
|
}
|
|
1905
1913
|
function tryAcquireWorkerLock(projectKey, maxAgeMs = 10 * 60 * 1e3) {
|
|
1906
1914
|
migrateLegacyStateDir();
|
|
1907
|
-
mkdirSync10(
|
|
1915
|
+
mkdirSync10(getStateDir(), { recursive: true });
|
|
1908
1916
|
const p = lockPath3(projectKey);
|
|
1909
1917
|
if (existsSync9(p)) {
|
|
1910
1918
|
try {
|
|
@@ -1917,8 +1925,22 @@ function tryAcquireWorkerLock(projectKey, maxAgeMs = 10 * 60 * 1e3) {
|
|
|
1917
1925
|
try {
|
|
1918
1926
|
unlinkSync5(p);
|
|
1919
1927
|
} catch (unlinkErr) {
|
|
1920
|
-
|
|
1921
|
-
|
|
1928
|
+
if (unlinkErr?.code !== "EISDIR" && unlinkErr?.code !== "EPERM" && unlinkErr?.code !== "ENOENT") {
|
|
1929
|
+
dlog3(`could not unlink stale worker lock for ${projectKey}: ${unlinkErr.message}`);
|
|
1930
|
+
return false;
|
|
1931
|
+
}
|
|
1932
|
+
let isDir = false;
|
|
1933
|
+
try {
|
|
1934
|
+
isDir = lstatSync2(p).isDirectory();
|
|
1935
|
+
} catch {
|
|
1936
|
+
}
|
|
1937
|
+
if (isDir) {
|
|
1938
|
+
try {
|
|
1939
|
+
rmdirSync(p);
|
|
1940
|
+
} catch (rmErr) {
|
|
1941
|
+
dlog3(`rmdir stale lock skipped for ${projectKey}: ${rmErr.message}`);
|
|
1942
|
+
}
|
|
1943
|
+
}
|
|
1922
1944
|
}
|
|
1923
1945
|
}
|
|
1924
1946
|
try {
|
|
@@ -1943,13 +1965,14 @@ function releaseWorkerLock(projectKey) {
|
|
|
1943
1965
|
|
|
1944
1966
|
// dist/src/skillify/scope-config.js
|
|
1945
1967
|
import { existsSync as existsSync10, mkdirSync as mkdirSync11, readFileSync as readFileSync10, writeFileSync as writeFileSync9 } from "node:fs";
|
|
1946
|
-
import {
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1968
|
+
import { join as join19 } from "node:path";
|
|
1969
|
+
function configPath() {
|
|
1970
|
+
return join19(getStateDir(), "config.json");
|
|
1971
|
+
}
|
|
1950
1972
|
var DEFAULT = { scope: "me", team: [], install: "project" };
|
|
1951
1973
|
function loadScopeConfig() {
|
|
1952
1974
|
migrateLegacyStateDir();
|
|
1975
|
+
const CONFIG_PATH = configPath();
|
|
1953
1976
|
if (!existsSync10(CONFIG_PATH))
|
|
1954
1977
|
return DEFAULT;
|
|
1955
1978
|
try {
|
|
@@ -2006,9 +2029,9 @@ function tryStopCounterTrigger(opts) {
|
|
|
2006
2029
|
// dist/src/hooks/cursor/capture.js
|
|
2007
2030
|
var log5 = (msg) => log("cursor-capture", msg);
|
|
2008
2031
|
function resolveEmbedDaemonPath() {
|
|
2009
|
-
return
|
|
2032
|
+
return join20(dirname7(fileURLToPath3(import.meta.url)), "embeddings", "embed-daemon.js");
|
|
2010
2033
|
}
|
|
2011
|
-
var __bundleDir =
|
|
2034
|
+
var __bundleDir = dirname7(fileURLToPath3(import.meta.url));
|
|
2012
2035
|
var PLUGIN_VERSION = getInstalledVersion(__bundleDir, ".claude-plugin") ?? "";
|
|
2013
2036
|
if (!embeddingsDisabled()) {
|
|
2014
2037
|
try {
|
|
@@ -406,25 +406,34 @@ function spawnSkillifyWorker(opts) {
|
|
|
406
406
|
}
|
|
407
407
|
|
|
408
408
|
// dist/src/skillify/state.js
|
|
409
|
-
import { readFileSync as readFileSync4, writeFileSync as writeFileSync4, writeSync as writeSync2, mkdirSync as mkdirSync5, renameSync as renameSync3, existsSync as existsSync5, unlinkSync as unlinkSync2, openSync as openSync2, closeSync as closeSync2 } from "node:fs";
|
|
409
|
+
import { readFileSync as readFileSync4, writeFileSync as writeFileSync4, writeSync as writeSync2, mkdirSync as mkdirSync5, renameSync as renameSync3, rmdirSync, existsSync as existsSync5, lstatSync, unlinkSync as unlinkSync2, openSync as openSync2, closeSync as closeSync2 } from "node:fs";
|
|
410
410
|
import { execSync as execSync2 } from "node:child_process";
|
|
411
|
-
import { homedir as homedir8 } from "node:os";
|
|
412
411
|
import { createHash } from "node:crypto";
|
|
413
|
-
import { join as
|
|
412
|
+
import { join as join11, basename } from "node:path";
|
|
414
413
|
|
|
415
414
|
// dist/src/skillify/legacy-migration.js
|
|
416
415
|
import { existsSync as existsSync4, renameSync as renameSync2 } from "node:fs";
|
|
416
|
+
import { dirname as dirname4, join as join10 } from "node:path";
|
|
417
|
+
|
|
418
|
+
// dist/src/skillify/state-dir.js
|
|
417
419
|
import { homedir as homedir7 } from "node:os";
|
|
418
420
|
import { join as join9 } from "node:path";
|
|
421
|
+
function getStateDir() {
|
|
422
|
+
const override = process.env.HIVEMIND_STATE_DIR?.trim();
|
|
423
|
+
return override && override.length > 0 ? override : join9(homedir7(), ".deeplake", "state", "skillify");
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
// dist/src/skillify/legacy-migration.js
|
|
419
427
|
var dlog2 = (msg) => log("skillify-migrate", msg);
|
|
420
428
|
var attempted = false;
|
|
421
429
|
function migrateLegacyStateDir() {
|
|
430
|
+
if (process.env.HIVEMIND_STATE_DIR?.trim())
|
|
431
|
+
return;
|
|
422
432
|
if (attempted)
|
|
423
433
|
return;
|
|
424
434
|
attempted = true;
|
|
425
|
-
const
|
|
426
|
-
const legacy =
|
|
427
|
-
const current = join9(root, "skillify");
|
|
435
|
+
const current = getStateDir();
|
|
436
|
+
const legacy = join10(dirname4(current), "skilify");
|
|
428
437
|
if (!existsSync4(legacy))
|
|
429
438
|
return;
|
|
430
439
|
if (existsSync4(current))
|
|
@@ -434,8 +443,8 @@ function migrateLegacyStateDir() {
|
|
|
434
443
|
dlog2(`migrated ${legacy} -> ${current}`);
|
|
435
444
|
} catch (err) {
|
|
436
445
|
const code = err.code;
|
|
437
|
-
if (code === "EXDEV" || code === "EPERM") {
|
|
438
|
-
dlog2(`migration
|
|
446
|
+
if (code === "EXDEV" || code === "EPERM" || code === "ENOENT" || code === "EEXIST" || code === "ENOTEMPTY") {
|
|
447
|
+
dlog2(`migration skipped (${code}); legacy dir left as-is or another process handled it`);
|
|
439
448
|
return;
|
|
440
449
|
}
|
|
441
450
|
throw err;
|
|
@@ -444,17 +453,16 @@ function migrateLegacyStateDir() {
|
|
|
444
453
|
|
|
445
454
|
// dist/src/skillify/state.js
|
|
446
455
|
var dlog3 = (msg) => log("skillify-state", msg);
|
|
447
|
-
var STATE_DIR2 = join10(homedir8(), ".deeplake", "state", "skillify");
|
|
448
456
|
var YIELD_BUF2 = new Int32Array(new SharedArrayBuffer(4));
|
|
449
457
|
var TRIGGER_THRESHOLD = (() => {
|
|
450
458
|
const n = Number(process.env.HIVEMIND_SKILLIFY_EVERY_N_TURNS ?? "");
|
|
451
459
|
return Number.isInteger(n) && n > 0 ? n : 20;
|
|
452
460
|
})();
|
|
453
461
|
function statePath(projectKey) {
|
|
454
|
-
return
|
|
462
|
+
return join11(getStateDir(), `${projectKey}.json`);
|
|
455
463
|
}
|
|
456
464
|
function lockPath2(projectKey) {
|
|
457
|
-
return
|
|
465
|
+
return join11(getStateDir(), `${projectKey}.lock`);
|
|
458
466
|
}
|
|
459
467
|
var DEFAULT_PORTS = {
|
|
460
468
|
http: "80",
|
|
@@ -510,7 +518,7 @@ function readState(projectKey) {
|
|
|
510
518
|
}
|
|
511
519
|
function writeState(projectKey, state) {
|
|
512
520
|
migrateLegacyStateDir();
|
|
513
|
-
mkdirSync5(
|
|
521
|
+
mkdirSync5(getStateDir(), { recursive: true });
|
|
514
522
|
const p = statePath(projectKey);
|
|
515
523
|
const tmp = `${p}.${process.pid}.${Date.now()}.tmp`;
|
|
516
524
|
writeFileSync4(tmp, JSON.stringify(state, null, 2));
|
|
@@ -518,7 +526,7 @@ function writeState(projectKey, state) {
|
|
|
518
526
|
}
|
|
519
527
|
function withRmwLock(projectKey, fn) {
|
|
520
528
|
migrateLegacyStateDir();
|
|
521
|
-
mkdirSync5(
|
|
529
|
+
mkdirSync5(getStateDir(), { recursive: true });
|
|
522
530
|
const rmw = lockPath2(projectKey) + ".rmw";
|
|
523
531
|
const deadline = Date.now() + 2e3;
|
|
524
532
|
let fd = null;
|
|
@@ -561,7 +569,7 @@ function resetCounter(projectKey) {
|
|
|
561
569
|
}
|
|
562
570
|
function tryAcquireWorkerLock(projectKey, maxAgeMs = 10 * 60 * 1e3) {
|
|
563
571
|
migrateLegacyStateDir();
|
|
564
|
-
mkdirSync5(
|
|
572
|
+
mkdirSync5(getStateDir(), { recursive: true });
|
|
565
573
|
const p = lockPath2(projectKey);
|
|
566
574
|
if (existsSync5(p)) {
|
|
567
575
|
try {
|
|
@@ -574,8 +582,22 @@ function tryAcquireWorkerLock(projectKey, maxAgeMs = 10 * 60 * 1e3) {
|
|
|
574
582
|
try {
|
|
575
583
|
unlinkSync2(p);
|
|
576
584
|
} catch (unlinkErr) {
|
|
577
|
-
|
|
578
|
-
|
|
585
|
+
if (unlinkErr?.code !== "EISDIR" && unlinkErr?.code !== "EPERM" && unlinkErr?.code !== "ENOENT") {
|
|
586
|
+
dlog3(`could not unlink stale worker lock for ${projectKey}: ${unlinkErr.message}`);
|
|
587
|
+
return false;
|
|
588
|
+
}
|
|
589
|
+
let isDir = false;
|
|
590
|
+
try {
|
|
591
|
+
isDir = lstatSync(p).isDirectory();
|
|
592
|
+
} catch {
|
|
593
|
+
}
|
|
594
|
+
if (isDir) {
|
|
595
|
+
try {
|
|
596
|
+
rmdirSync(p);
|
|
597
|
+
} catch (rmErr) {
|
|
598
|
+
dlog3(`rmdir stale lock skipped for ${projectKey}: ${rmErr.message}`);
|
|
599
|
+
}
|
|
600
|
+
}
|
|
579
601
|
}
|
|
580
602
|
}
|
|
581
603
|
try {
|
|
@@ -600,13 +622,14 @@ function releaseWorkerLock(projectKey) {
|
|
|
600
622
|
|
|
601
623
|
// dist/src/skillify/scope-config.js
|
|
602
624
|
import { existsSync as existsSync6, mkdirSync as mkdirSync6, readFileSync as readFileSync5, writeFileSync as writeFileSync5 } from "node:fs";
|
|
603
|
-
import {
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
625
|
+
import { join as join12 } from "node:path";
|
|
626
|
+
function configPath() {
|
|
627
|
+
return join12(getStateDir(), "config.json");
|
|
628
|
+
}
|
|
607
629
|
var DEFAULT = { scope: "me", team: [], install: "project" };
|
|
608
630
|
function loadScopeConfig() {
|
|
609
631
|
migrateLegacyStateDir();
|
|
632
|
+
const CONFIG_PATH = configPath();
|
|
610
633
|
if (!existsSync6(CONFIG_PATH))
|
|
611
634
|
return DEFAULT;
|
|
612
635
|
try {
|
|
@@ -54,7 +54,7 @@ var init_index_marker_store = __esm({
|
|
|
54
54
|
|
|
55
55
|
// dist/src/hooks/cursor/session-start.js
|
|
56
56
|
import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
57
|
-
import { dirname as
|
|
57
|
+
import { dirname as dirname7 } from "node:path";
|
|
58
58
|
|
|
59
59
|
// dist/src/commands/auth.js
|
|
60
60
|
import { execSync } from "node:child_process";
|
|
@@ -969,8 +969,8 @@ async function autoUpdate(creds, opts) {
|
|
|
969
969
|
|
|
970
970
|
// dist/src/skillify/pull.js
|
|
971
971
|
import { existsSync as existsSync10, readFileSync as readFileSync9, writeFileSync as writeFileSync7, mkdirSync as mkdirSync8, renameSync as renameSync4, lstatSync as lstatSync2, readlinkSync, symlinkSync, unlinkSync as unlinkSync5 } from "node:fs";
|
|
972
|
-
import { homedir as
|
|
973
|
-
import { dirname as
|
|
972
|
+
import { homedir as homedir10 } from "node:os";
|
|
973
|
+
import { dirname as dirname6, join as join15 } from "node:path";
|
|
974
974
|
|
|
975
975
|
// dist/src/skillify/skill-writer.js
|
|
976
976
|
import { existsSync as existsSync6, mkdirSync as mkdirSync6, readFileSync as readFileSync7, readdirSync as readdirSync2, statSync as statSync3, writeFileSync as writeFileSync5 } from "node:fs";
|
|
@@ -1042,22 +1042,31 @@ function parseFrontmatter(text) {
|
|
|
1042
1042
|
|
|
1043
1043
|
// dist/src/skillify/manifest.js
|
|
1044
1044
|
import { existsSync as existsSync8, lstatSync, mkdirSync as mkdirSync7, readFileSync as readFileSync8, renameSync as renameSync3, unlinkSync as unlinkSync4, writeFileSync as writeFileSync6 } from "node:fs";
|
|
1045
|
-
import {
|
|
1046
|
-
import { dirname as dirname4, join as join12 } from "node:path";
|
|
1045
|
+
import { dirname as dirname5, join as join13 } from "node:path";
|
|
1047
1046
|
|
|
1048
1047
|
// dist/src/skillify/legacy-migration.js
|
|
1049
1048
|
import { existsSync as existsSync7, renameSync as renameSync2 } from "node:fs";
|
|
1049
|
+
import { dirname as dirname4, join as join12 } from "node:path";
|
|
1050
|
+
|
|
1051
|
+
// dist/src/skillify/state-dir.js
|
|
1050
1052
|
import { homedir as homedir8 } from "node:os";
|
|
1051
1053
|
import { join as join11 } from "node:path";
|
|
1054
|
+
function getStateDir() {
|
|
1055
|
+
const override = process.env.HIVEMIND_STATE_DIR?.trim();
|
|
1056
|
+
return override && override.length > 0 ? override : join11(homedir8(), ".deeplake", "state", "skillify");
|
|
1057
|
+
}
|
|
1058
|
+
|
|
1059
|
+
// dist/src/skillify/legacy-migration.js
|
|
1052
1060
|
var dlog = (msg) => log("skillify-migrate", msg);
|
|
1053
1061
|
var attempted = false;
|
|
1054
1062
|
function migrateLegacyStateDir() {
|
|
1063
|
+
if (process.env.HIVEMIND_STATE_DIR?.trim())
|
|
1064
|
+
return;
|
|
1055
1065
|
if (attempted)
|
|
1056
1066
|
return;
|
|
1057
1067
|
attempted = true;
|
|
1058
|
-
const
|
|
1059
|
-
const legacy =
|
|
1060
|
-
const current = join11(root, "skillify");
|
|
1068
|
+
const current = getStateDir();
|
|
1069
|
+
const legacy = join12(dirname4(current), "skilify");
|
|
1061
1070
|
if (!existsSync7(legacy))
|
|
1062
1071
|
return;
|
|
1063
1072
|
if (existsSync7(current))
|
|
@@ -1067,8 +1076,8 @@ function migrateLegacyStateDir() {
|
|
|
1067
1076
|
dlog(`migrated ${legacy} -> ${current}`);
|
|
1068
1077
|
} catch (err) {
|
|
1069
1078
|
const code = err.code;
|
|
1070
|
-
if (code === "EXDEV" || code === "EPERM") {
|
|
1071
|
-
dlog(`migration
|
|
1079
|
+
if (code === "EXDEV" || code === "EPERM" || code === "ENOENT" || code === "EEXIST" || code === "ENOTEMPTY") {
|
|
1080
|
+
dlog(`migration skipped (${code}); legacy dir left as-is or another process handled it`);
|
|
1072
1081
|
return;
|
|
1073
1082
|
}
|
|
1074
1083
|
throw err;
|
|
@@ -1080,7 +1089,7 @@ function emptyManifest() {
|
|
|
1080
1089
|
return { version: 1, entries: [] };
|
|
1081
1090
|
}
|
|
1082
1091
|
function manifestPath() {
|
|
1083
|
-
return
|
|
1092
|
+
return join13(getStateDir(), "pulled.json");
|
|
1084
1093
|
}
|
|
1085
1094
|
function loadManifest(path = manifestPath()) {
|
|
1086
1095
|
migrateLegacyStateDir();
|
|
@@ -1135,7 +1144,7 @@ function loadManifest(path = manifestPath()) {
|
|
|
1135
1144
|
}
|
|
1136
1145
|
function saveManifest(m, path = manifestPath()) {
|
|
1137
1146
|
migrateLegacyStateDir();
|
|
1138
|
-
mkdirSync7(
|
|
1147
|
+
mkdirSync7(dirname5(path), { recursive: true });
|
|
1139
1148
|
const tmp = `${path}.tmp`;
|
|
1140
1149
|
writeFileSync6(tmp, JSON.stringify(m, null, 2) + "\n", { mode: 384 });
|
|
1141
1150
|
renameSync3(tmp, path);
|
|
@@ -1173,7 +1182,7 @@ function pruneOrphanedEntries(path = manifestPath()) {
|
|
|
1173
1182
|
const live = [];
|
|
1174
1183
|
let pruned = 0;
|
|
1175
1184
|
for (const e of m.entries) {
|
|
1176
|
-
if (existsSync8(
|
|
1185
|
+
if (existsSync8(join13(e.installRoot, e.dirName))) {
|
|
1177
1186
|
live.push(e);
|
|
1178
1187
|
continue;
|
|
1179
1188
|
}
|
|
@@ -1187,25 +1196,25 @@ function pruneOrphanedEntries(path = manifestPath()) {
|
|
|
1187
1196
|
|
|
1188
1197
|
// dist/src/skillify/agent-roots.js
|
|
1189
1198
|
import { existsSync as existsSync9 } from "node:fs";
|
|
1190
|
-
import { homedir as
|
|
1191
|
-
import { join as
|
|
1199
|
+
import { homedir as homedir9 } from "node:os";
|
|
1200
|
+
import { join as join14 } from "node:path";
|
|
1192
1201
|
function resolveDetected(home) {
|
|
1193
1202
|
const out = [];
|
|
1194
|
-
const codexInstalled = existsSync9(
|
|
1195
|
-
const piInstalled = existsSync9(
|
|
1196
|
-
const hermesInstalled = existsSync9(
|
|
1203
|
+
const codexInstalled = existsSync9(join14(home, ".codex"));
|
|
1204
|
+
const piInstalled = existsSync9(join14(home, ".pi", "agent"));
|
|
1205
|
+
const hermesInstalled = existsSync9(join14(home, ".hermes"));
|
|
1197
1206
|
if (codexInstalled || piInstalled) {
|
|
1198
|
-
out.push(
|
|
1207
|
+
out.push(join14(home, ".agents", "skills"));
|
|
1199
1208
|
}
|
|
1200
1209
|
if (hermesInstalled) {
|
|
1201
|
-
out.push(
|
|
1210
|
+
out.push(join14(home, ".hermes", "skills"));
|
|
1202
1211
|
}
|
|
1203
1212
|
if (piInstalled) {
|
|
1204
|
-
out.push(
|
|
1213
|
+
out.push(join14(home, ".pi", "agent", "skills"));
|
|
1205
1214
|
}
|
|
1206
1215
|
return out;
|
|
1207
1216
|
}
|
|
1208
|
-
function detectAgentSkillsRoots(canonicalRoot, home =
|
|
1217
|
+
function detectAgentSkillsRoots(canonicalRoot, home = homedir9()) {
|
|
1209
1218
|
return resolveDetected(home).filter((p) => p !== canonicalRoot);
|
|
1210
1219
|
}
|
|
1211
1220
|
|
|
@@ -1249,15 +1258,15 @@ function isMissingTableError(message) {
|
|
|
1249
1258
|
}
|
|
1250
1259
|
function resolvePullDestination(install, cwd) {
|
|
1251
1260
|
if (install === "global")
|
|
1252
|
-
return
|
|
1261
|
+
return join15(homedir10(), ".claude", "skills");
|
|
1253
1262
|
if (!cwd)
|
|
1254
1263
|
throw new Error("install=project requires a cwd");
|
|
1255
|
-
return
|
|
1264
|
+
return join15(cwd, ".claude", "skills");
|
|
1256
1265
|
}
|
|
1257
1266
|
function fanOutSymlinks(canonicalDir, dirName, agentRoots) {
|
|
1258
1267
|
const out = [];
|
|
1259
1268
|
for (const root of agentRoots) {
|
|
1260
|
-
const link =
|
|
1269
|
+
const link = join15(root, dirName);
|
|
1261
1270
|
let existing;
|
|
1262
1271
|
try {
|
|
1263
1272
|
existing = lstatSync2(link);
|
|
@@ -1285,7 +1294,7 @@ function fanOutSymlinks(canonicalDir, dirName, agentRoots) {
|
|
|
1285
1294
|
}
|
|
1286
1295
|
}
|
|
1287
1296
|
try {
|
|
1288
|
-
mkdirSync8(
|
|
1297
|
+
mkdirSync8(dirname6(link), { recursive: true });
|
|
1289
1298
|
symlinkSync(canonicalDir, link, "dir");
|
|
1290
1299
|
out.push(link);
|
|
1291
1300
|
} catch {
|
|
@@ -1300,7 +1309,7 @@ function backfillSymlinks(installRoot) {
|
|
|
1300
1309
|
return;
|
|
1301
1310
|
const detected = detectAgentSkillsRoots(installRoot);
|
|
1302
1311
|
for (const entry of entries) {
|
|
1303
|
-
const canonical =
|
|
1312
|
+
const canonical = join15(entry.installRoot, entry.dirName);
|
|
1304
1313
|
if (!existsSync10(canonical))
|
|
1305
1314
|
continue;
|
|
1306
1315
|
const fresh = fanOutSymlinks(canonical, entry.dirName, detected);
|
|
@@ -1509,8 +1518,8 @@ async function runPull(opts) {
|
|
|
1509
1518
|
summary.skipped++;
|
|
1510
1519
|
continue;
|
|
1511
1520
|
}
|
|
1512
|
-
const skillDir =
|
|
1513
|
-
const skillFile =
|
|
1521
|
+
const skillDir = join15(root, dirName);
|
|
1522
|
+
const skillFile = join15(skillDir, "SKILL.md");
|
|
1514
1523
|
const remoteVersion = Number(row.version ?? 1);
|
|
1515
1524
|
const localVersion = readLocalVersion(skillFile);
|
|
1516
1525
|
const action = decideAction({
|
|
@@ -1624,7 +1633,7 @@ async function autoPullSkills(deps = {}) {
|
|
|
1624
1633
|
|
|
1625
1634
|
// dist/src/hooks/cursor/session-start.js
|
|
1626
1635
|
var log6 = (msg) => log("cursor-session-start", msg);
|
|
1627
|
-
var __bundleDir =
|
|
1636
|
+
var __bundleDir = dirname7(fileURLToPath2(import.meta.url));
|
|
1628
1637
|
var context = `DEEPLAKE MEMORY: Persistent memory at ~/.deeplake/memory/ shared across sessions, users, and agents.
|
|
1629
1638
|
|
|
1630
1639
|
Structure: index.md (start here) \u2192 summaries/*.md \u2192 sessions/*.jsonl (last resort). Do NOT jump straight to JSONL.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
// dist/src/skillify/skillify-worker.js
|
|
4
4
|
import { readFileSync as readFileSync3, writeFileSync as writeFileSync3, existsSync as existsSync5, appendFileSync as appendFileSync2, rmSync } from "node:fs";
|
|
5
|
-
import { join as
|
|
5
|
+
import { join as join7 } from "node:path";
|
|
6
6
|
|
|
7
7
|
// dist/src/utils/debug.js
|
|
8
8
|
import { appendFileSync } from "node:fs";
|
|
@@ -561,25 +561,34 @@ function resolveRecordScope(args) {
|
|
|
561
561
|
}
|
|
562
562
|
|
|
563
563
|
// dist/src/skillify/state.js
|
|
564
|
-
import { readFileSync as readFileSync2, writeFileSync as writeFileSync2, writeSync, mkdirSync as mkdirSync2, renameSync as renameSync2, existsSync as existsSync4, unlinkSync, openSync, closeSync } from "node:fs";
|
|
564
|
+
import { readFileSync as readFileSync2, writeFileSync as writeFileSync2, writeSync, mkdirSync as mkdirSync2, renameSync as renameSync2, rmdirSync, existsSync as existsSync4, lstatSync, unlinkSync, openSync, closeSync } from "node:fs";
|
|
565
565
|
import { execSync } from "node:child_process";
|
|
566
|
-
import { homedir as homedir5 } from "node:os";
|
|
567
566
|
import { createHash } from "node:crypto";
|
|
568
|
-
import { join as
|
|
567
|
+
import { join as join6, basename } from "node:path";
|
|
569
568
|
|
|
570
569
|
// dist/src/skillify/legacy-migration.js
|
|
571
570
|
import { existsSync as existsSync3, renameSync } from "node:fs";
|
|
571
|
+
import { dirname, join as join5 } from "node:path";
|
|
572
|
+
|
|
573
|
+
// dist/src/skillify/state-dir.js
|
|
572
574
|
import { homedir as homedir4 } from "node:os";
|
|
573
575
|
import { join as join4 } from "node:path";
|
|
576
|
+
function getStateDir() {
|
|
577
|
+
const override = process.env.HIVEMIND_STATE_DIR?.trim();
|
|
578
|
+
return override && override.length > 0 ? override : join4(homedir4(), ".deeplake", "state", "skillify");
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
// dist/src/skillify/legacy-migration.js
|
|
574
582
|
var dlog = (msg) => log("skillify-migrate", msg);
|
|
575
583
|
var attempted = false;
|
|
576
584
|
function migrateLegacyStateDir() {
|
|
585
|
+
if (process.env.HIVEMIND_STATE_DIR?.trim())
|
|
586
|
+
return;
|
|
577
587
|
if (attempted)
|
|
578
588
|
return;
|
|
579
589
|
attempted = true;
|
|
580
|
-
const
|
|
581
|
-
const legacy =
|
|
582
|
-
const current = join4(root, "skillify");
|
|
590
|
+
const current = getStateDir();
|
|
591
|
+
const legacy = join5(dirname(current), "skilify");
|
|
583
592
|
if (!existsSync3(legacy))
|
|
584
593
|
return;
|
|
585
594
|
if (existsSync3(current))
|
|
@@ -589,8 +598,8 @@ function migrateLegacyStateDir() {
|
|
|
589
598
|
dlog(`migrated ${legacy} -> ${current}`);
|
|
590
599
|
} catch (err) {
|
|
591
600
|
const code = err.code;
|
|
592
|
-
if (code === "EXDEV" || code === "EPERM") {
|
|
593
|
-
dlog(`migration
|
|
601
|
+
if (code === "EXDEV" || code === "EPERM" || code === "ENOENT" || code === "EEXIST" || code === "ENOTEMPTY") {
|
|
602
|
+
dlog(`migration skipped (${code}); legacy dir left as-is or another process handled it`);
|
|
594
603
|
return;
|
|
595
604
|
}
|
|
596
605
|
throw err;
|
|
@@ -599,17 +608,16 @@ function migrateLegacyStateDir() {
|
|
|
599
608
|
|
|
600
609
|
// dist/src/skillify/state.js
|
|
601
610
|
var dlog2 = (msg) => log("skillify-state", msg);
|
|
602
|
-
var STATE_DIR = join5(homedir5(), ".deeplake", "state", "skillify");
|
|
603
611
|
var YIELD_BUF = new Int32Array(new SharedArrayBuffer(4));
|
|
604
612
|
var TRIGGER_THRESHOLD = (() => {
|
|
605
613
|
const n = Number(process.env.HIVEMIND_SKILLIFY_EVERY_N_TURNS ?? "");
|
|
606
614
|
return Number.isInteger(n) && n > 0 ? n : 20;
|
|
607
615
|
})();
|
|
608
616
|
function statePath(projectKey) {
|
|
609
|
-
return
|
|
617
|
+
return join6(getStateDir(), `${projectKey}.json`);
|
|
610
618
|
}
|
|
611
619
|
function lockPath(projectKey) {
|
|
612
|
-
return
|
|
620
|
+
return join6(getStateDir(), `${projectKey}.lock`);
|
|
613
621
|
}
|
|
614
622
|
function readState(projectKey) {
|
|
615
623
|
migrateLegacyStateDir();
|
|
@@ -624,7 +632,7 @@ function readState(projectKey) {
|
|
|
624
632
|
}
|
|
625
633
|
function writeState(projectKey, state) {
|
|
626
634
|
migrateLegacyStateDir();
|
|
627
|
-
mkdirSync2(
|
|
635
|
+
mkdirSync2(getStateDir(), { recursive: true });
|
|
628
636
|
const p = statePath(projectKey);
|
|
629
637
|
const tmp = `${p}.${process.pid}.${Date.now()}.tmp`;
|
|
630
638
|
writeFileSync2(tmp, JSON.stringify(state, null, 2));
|
|
@@ -632,7 +640,7 @@ function writeState(projectKey, state) {
|
|
|
632
640
|
}
|
|
633
641
|
function withRmwLock(projectKey, fn) {
|
|
634
642
|
migrateLegacyStateDir();
|
|
635
|
-
mkdirSync2(
|
|
643
|
+
mkdirSync2(getStateDir(), { recursive: true });
|
|
636
644
|
const rmw = lockPath(projectKey) + ".rmw";
|
|
637
645
|
const deadline = Date.now() + 2e3;
|
|
638
646
|
let fd = null;
|
|
@@ -705,8 +713,8 @@ function releaseWorkerLock(projectKey) {
|
|
|
705
713
|
var cfg = JSON.parse(readFileSync3(process.argv[2], "utf-8"));
|
|
706
714
|
globalThis.__hivemind_tuning__ = cfg.tuning ?? {};
|
|
707
715
|
var tmpDir = cfg.tmpDir;
|
|
708
|
-
var verdictPath =
|
|
709
|
-
var promptPath =
|
|
716
|
+
var verdictPath = join7(tmpDir, "verdict.json");
|
|
717
|
+
var promptPath = join7(tmpDir, "prompt.txt");
|
|
710
718
|
var SESSIONS_TO_MINE = 10;
|
|
711
719
|
var PAIR_CHAR_CAP = 2e3;
|
|
712
720
|
var TOTAL_PAIRS_CHAR_CAP = 4e4;
|
|
@@ -953,9 +961,9 @@ async function main() {
|
|
|
953
961
|
timeoutMs: 12e4
|
|
954
962
|
});
|
|
955
963
|
try {
|
|
956
|
-
writeFileSync3(
|
|
964
|
+
writeFileSync3(join7(tmpDir, "gate-stdout.txt"), gate.stdout);
|
|
957
965
|
if (gate.stderr)
|
|
958
|
-
writeFileSync3(
|
|
966
|
+
writeFileSync3(join7(tmpDir, "gate-stderr.txt"), gate.stderr);
|
|
959
967
|
} catch {
|
|
960
968
|
}
|
|
961
969
|
if (gate.errored) {
|