gnosys 5.9.4 → 5.10.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/README.md +31 -777
- package/dist/cli.js +114 -4
- package/dist/cli.js.map +1 -1
- package/dist/lib/dashboard.d.ts.map +1 -1
- package/dist/lib/dashboard.js +5 -1
- package/dist/lib/dashboard.js.map +1 -1
- package/dist/lib/db.d.ts +24 -0
- package/dist/lib/db.d.ts.map +1 -1
- package/dist/lib/db.js +122 -8
- package/dist/lib/db.js.map +1 -1
- package/dist/lib/dream.js +1 -1
- package/dist/lib/dream.js.map +1 -1
- package/dist/lib/federated.d.ts +2 -1
- package/dist/lib/federated.d.ts.map +1 -1
- package/dist/lib/federated.js +6 -3
- package/dist/lib/federated.js.map +1 -1
- package/dist/lib/ingest.js +1 -1
- package/dist/lib/ingest.js.map +1 -1
- package/dist/lib/machineConfig.d.ts +87 -0
- package/dist/lib/machineConfig.d.ts.map +1 -0
- package/dist/lib/machineConfig.js +146 -0
- package/dist/lib/machineConfig.js.map +1 -0
- package/dist/lib/machineMigrate.d.ts +39 -0
- package/dist/lib/machineMigrate.d.ts.map +1 -0
- package/dist/lib/machineMigrate.js +103 -0
- package/dist/lib/machineMigrate.js.map +1 -0
- package/dist/lib/paths.d.ts +11 -0
- package/dist/lib/paths.d.ts.map +1 -1
- package/dist/lib/paths.js +13 -0
- package/dist/lib/paths.js.map +1 -1
- package/dist/lib/portfolio.d.ts.map +1 -1
- package/dist/lib/portfolio.js +10 -2
- package/dist/lib/portfolio.js.map +1 -1
- package/dist/lib/projectPaths.d.ts +60 -0
- package/dist/lib/projectPaths.d.ts.map +1 -0
- package/dist/lib/projectPaths.js +100 -0
- package/dist/lib/projectPaths.js.map +1 -0
- package/dist/lib/projectScan.d.ts +40 -0
- package/dist/lib/projectScan.d.ts.map +1 -0
- package/dist/lib/projectScan.js +97 -0
- package/dist/lib/projectScan.js.map +1 -0
- package/dist/lib/remote.d.ts +5 -0
- package/dist/lib/remote.d.ts.map +1 -1
- package/dist/lib/remote.js +29 -5
- package/dist/lib/remote.js.map +1 -1
- package/dist/lib/setup.js +1 -1
- package/dist/lib/setup.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v5.11 one-time migration to machine-portable project paths.
|
|
3
|
+
*
|
|
4
|
+
* Run once per machine. It:
|
|
5
|
+
* 1. Ensures machine.json exists (machineId, hostname).
|
|
6
|
+
* 2. Adopts machine-LOCAL values that were wrongly living in the SYNCED
|
|
7
|
+
* gnosys_meta — `machine_id` (for continuity) and `remote_path` — into
|
|
8
|
+
* machine.json, then deletes them from meta so they stop syncing and
|
|
9
|
+
* clobbering other machines.
|
|
10
|
+
* 3. Sets the `dev` root (explicit --root, else derived from the registry).
|
|
11
|
+
* 4. Scans to backfill machine-independent root_id/rel_path on projects.
|
|
12
|
+
*
|
|
13
|
+
* It operates on the LOCAL DB (GnosysDB.openLocal), never a remote, because it
|
|
14
|
+
* moves machine-local state out of the shared store.
|
|
15
|
+
*/
|
|
16
|
+
import fs from "fs";
|
|
17
|
+
import path from "path";
|
|
18
|
+
import { ensureMachineConfig, writeMachineConfig } from "./machineConfig.js";
|
|
19
|
+
import { getProjectRegistryPath } from "./paths.js";
|
|
20
|
+
import { scanProjects } from "./projectScan.js";
|
|
21
|
+
export async function migrateMachine(localDb, opts = {}) {
|
|
22
|
+
const ens = ensureMachineConfig();
|
|
23
|
+
const machine = ens.config;
|
|
24
|
+
// 1. Adopt machine_id from synced meta (continuity), then remove it so the
|
|
25
|
+
// synced DB stops carrying a per-machine identity.
|
|
26
|
+
let adoptedMachineId = false;
|
|
27
|
+
const metaMachineId = localDb.getMeta("machine_id");
|
|
28
|
+
if (metaMachineId && !/^unknown-/.test(metaMachineId)) {
|
|
29
|
+
machine.machineId = metaMachineId;
|
|
30
|
+
adoptedMachineId = true;
|
|
31
|
+
}
|
|
32
|
+
localDb.deleteMeta("machine_id");
|
|
33
|
+
// 2. Adopt remote_path from synced meta, then remove it.
|
|
34
|
+
let adoptedRemotePath = false;
|
|
35
|
+
const metaRemote = localDb.getMeta("remote_path");
|
|
36
|
+
if (metaRemote && !machine.remote.path) {
|
|
37
|
+
machine.remote = { enabled: true, path: metaRemote };
|
|
38
|
+
adoptedRemotePath = true;
|
|
39
|
+
}
|
|
40
|
+
localDb.deleteMeta("remote_path");
|
|
41
|
+
// 3. Set the dev root.
|
|
42
|
+
const rootName = opts.rootName || "dev";
|
|
43
|
+
if (opts.root) {
|
|
44
|
+
machine.roots[rootName] = path.resolve(opts.root);
|
|
45
|
+
}
|
|
46
|
+
else if (!machine.roots[rootName]) {
|
|
47
|
+
const derived = deriveCommonRoot();
|
|
48
|
+
if (derived)
|
|
49
|
+
machine.roots[rootName] = derived;
|
|
50
|
+
}
|
|
51
|
+
writeMachineConfig(machine);
|
|
52
|
+
// 4. Scan (default on) to backfill machine-portable locations.
|
|
53
|
+
let scan;
|
|
54
|
+
if (opts.scan !== false && Object.keys(machine.roots).length > 0) {
|
|
55
|
+
scan = await scanProjects(localDb, machine);
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
machineId: machine.machineId,
|
|
59
|
+
hostname: machine.hostname,
|
|
60
|
+
rootsConfigured: machine.roots,
|
|
61
|
+
adoptedMachineId,
|
|
62
|
+
adoptedRemotePath,
|
|
63
|
+
regeneratedMachineId: ens.regenerated,
|
|
64
|
+
scan,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Derive the most likely `dev` root: the directory that is the parent of the
|
|
69
|
+
* most registered projects. Picking the most-common parent (rather than the
|
|
70
|
+
* global common prefix) avoids collapsing to `/Users/<name>` when a few
|
|
71
|
+
* outlier projects live elsewhere.
|
|
72
|
+
*/
|
|
73
|
+
export function deriveCommonRoot() {
|
|
74
|
+
let paths;
|
|
75
|
+
try {
|
|
76
|
+
const raw = fs.readFileSync(getProjectRegistryPath(), "utf-8");
|
|
77
|
+
paths = JSON.parse(raw).filter((p) => typeof p === "string" &&
|
|
78
|
+
p.startsWith("/") &&
|
|
79
|
+
!p.startsWith("/tmp/") &&
|
|
80
|
+
!p.startsWith("/private/tmp/") &&
|
|
81
|
+
!p.startsWith("/var/folders/"));
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
if (paths.length === 0)
|
|
87
|
+
return null;
|
|
88
|
+
const counts = new Map();
|
|
89
|
+
for (const p of paths) {
|
|
90
|
+
const parent = path.dirname(p);
|
|
91
|
+
counts.set(parent, (counts.get(parent) ?? 0) + 1);
|
|
92
|
+
}
|
|
93
|
+
let best = null;
|
|
94
|
+
let bestN = 0;
|
|
95
|
+
for (const [dir, n] of counts) {
|
|
96
|
+
if (n > bestN) {
|
|
97
|
+
best = dir;
|
|
98
|
+
bestN = n;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return best;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=machineMigrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machineMigrate.js","sourceRoot":"","sources":["../../src/lib/machineMigrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,YAAY,EAAmB,MAAM,kBAAkB,CAAC;AAYjE,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAiB,EACjB,OAA6D,EAAE;IAE/D,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;IAE3B,2EAA2E;IAC3E,sDAAsD;IACtD,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACpD,IAAI,aAAa,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QACtD,OAAO,CAAC,SAAS,GAAG,aAAa,CAAC;QAClC,gBAAgB,GAAG,IAAI,CAAC;IAC1B,CAAC;IACD,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAEjC,yDAAyD;IACzD,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAClD,IAAI,UAAU,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACvC,OAAO,CAAC,MAAM,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QACrD,iBAAiB,GAAG,IAAI,CAAC;IAC3B,CAAC;IACD,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAElC,uBAAuB;IACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC;IACxC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;SAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;QACnC,IAAI,OAAO;YAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;IACjD,CAAC;IAED,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAE5B,+DAA+D;IAC/D,IAAI,IAA4B,CAAC;IACjC,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjE,IAAI,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,eAAe,EAAE,OAAO,CAAC,KAAK;QAC9B,gBAAgB;QAChB,iBAAiB;QACjB,oBAAoB,EAAE,GAAG,CAAC,WAAW;QACrC,IAAI;KACL,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,sBAAsB,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/D,KAAK,GAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC,MAAM,CAC3C,CAAC,CAAC,EAAe,EAAE,CACjB,OAAO,CAAC,KAAK,QAAQ;YACrB,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YACjB,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;YACtB,CAAC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC;YAC9B,CAAC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,CACjC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;YACd,IAAI,GAAG,GAAG,CAAC;YACX,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/lib/paths.d.ts
CHANGED
|
@@ -35,4 +35,15 @@ export declare function getSandboxDir(): string;
|
|
|
35
35
|
export declare function getConfigDir(): string;
|
|
36
36
|
/** Path to the project registry file (~/.config/gnosys/projects.json). */
|
|
37
37
|
export declare function getProjectRegistryPath(): string;
|
|
38
|
+
/**
|
|
39
|
+
* Path to the machine-local config file (~/.config/gnosys/machine.json).
|
|
40
|
+
*
|
|
41
|
+
* This file holds everything that is specific to THIS physical machine and
|
|
42
|
+
* must NEVER be synced to the shared brain or other machines: the stable
|
|
43
|
+
* machineId, the named project roots (whose absolute paths differ per
|
|
44
|
+
* machine), and the per-machine remote-sync connection. The central DB at
|
|
45
|
+
* ~/.gnosys/gnosys.db is the synced source of truth; machine.json is its
|
|
46
|
+
* machine-local counterpart. See machineConfig.ts.
|
|
47
|
+
*/
|
|
48
|
+
export declare function getMachineConfigPath(): string;
|
|
38
49
|
//# sourceMappingURL=paths.d.ts.map
|
package/dist/lib/paths.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAED,0CAA0C;AAC1C,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,kFAAkF;AAClF,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAIrC;AAED,0EAA0E;AAC1E,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C"}
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAED,0CAA0C;AAC1C,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,kFAAkF;AAClF,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAIrC;AAED,0EAA0E;AAC1E,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C"}
|
package/dist/lib/paths.js
CHANGED
|
@@ -52,4 +52,17 @@ export function getConfigDir() {
|
|
|
52
52
|
export function getProjectRegistryPath() {
|
|
53
53
|
return path.join(getConfigDir(), "projects.json");
|
|
54
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Path to the machine-local config file (~/.config/gnosys/machine.json).
|
|
57
|
+
*
|
|
58
|
+
* This file holds everything that is specific to THIS physical machine and
|
|
59
|
+
* must NEVER be synced to the shared brain or other machines: the stable
|
|
60
|
+
* machineId, the named project roots (whose absolute paths differ per
|
|
61
|
+
* machine), and the per-machine remote-sync connection. The central DB at
|
|
62
|
+
* ~/.gnosys/gnosys.db is the synced source of truth; machine.json is its
|
|
63
|
+
* machine-local counterpart. See machineConfig.ts.
|
|
64
|
+
*/
|
|
65
|
+
export function getMachineConfigPath() {
|
|
66
|
+
return path.join(getConfigDir(), "machine.json");
|
|
67
|
+
}
|
|
55
68
|
//# sourceMappingURL=paths.js.map
|
package/dist/lib/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,UAAU,aAAa;IAC3B,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,MAAM,CAAC;IACnE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACpC,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,WAAW,CAAC,CAAC;AACjD,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,CAAC,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACxE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,MAAM,CAAC;IACnE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,eAAe,CAAC,CAAC;AACpD,CAAC"}
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,UAAU,aAAa;IAC3B,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,MAAM,CAAC;IACnE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACpC,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,WAAW,CAAC,CAAC;AACjD,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,CAAC,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACxE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,MAAM,CAAC;IACnE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,eAAe,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,cAAc,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portfolio.d.ts","sourceRoot":"","sources":["../../src/lib/portfolio.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"portfolio.d.ts","sourceRoot":"","sources":["../../src/lib/portfolio.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAM9C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,SAAS,CAAC;IACnB,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACpC,CAAC;IACF,qDAAqD;IACrD,YAAY,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACtF,8BAA8B;IAC9B,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,4BAA4B;IAC5B,aAAa,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,mCAAmC;IACnC,OAAO,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,oDAAoD;IACpD,cAAc,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzF,sEAAsE;IACtE,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,sCAAsC;IACtC,SAAS,EAAE;QACT,kBAAkB;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,6EAA6E;QAC7E,KAAK,EAAE,MAAM,CAAC;QACd,4CAA4C;QAC5C,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,8BAA8B;QAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,0DAA0D;IAC1D,cAAc,EAAE,UAAU,EAAE,CAAC;CAC9B;AAgUD,yCAAyC;AACzC,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,GAAG,eAAe,CAsC/D;AAID,uCAAuC;AACvC,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAuEvE;AAED,sDAAsD;AACtD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CA2BtE;AAID;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,y0KAyHgL,CAAC;AAElN,0EAA0E;AAC1E,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAQrF"}
|
package/dist/lib/portfolio.js
CHANGED
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
* a formatted dashboard showing blockers, production readiness,
|
|
6
6
|
* open questions, and roadmap status.
|
|
7
7
|
*/
|
|
8
|
+
import { readMachineConfig } from "./machineConfig.js";
|
|
9
|
+
import { effectiveProjectPath } from "./projectPaths.js";
|
|
8
10
|
// ─── Core ───────────────────────────────────────────────────────────────
|
|
9
11
|
/** Parse tags from the DB column (JSON array string or comma-separated) */
|
|
10
12
|
function parseTags(raw) {
|
|
@@ -335,8 +337,14 @@ function buildProjectSnapshot(db, project) {
|
|
|
335
337
|
/** Generate the full portfolio report */
|
|
336
338
|
export function generatePortfolio(db) {
|
|
337
339
|
const projects = db.getAllProjects();
|
|
338
|
-
// Filter out test projects (those in /tmp/
|
|
339
|
-
|
|
340
|
+
// Filter out test projects (those in /tmp/) and projects not present on this
|
|
341
|
+
// machine. Path is resolved per-machine (machine.json) with a legacy
|
|
342
|
+
// fallback to working_directory when machine.json is absent.
|
|
343
|
+
const machine = readMachineConfig();
|
|
344
|
+
const realProjects = projects.filter((p) => {
|
|
345
|
+
const ep = effectiveProjectPath(db, p, machine);
|
|
346
|
+
return ep !== null && !ep.startsWith("/tmp/") && !ep.startsWith("/private/tmp/");
|
|
347
|
+
});
|
|
340
348
|
const snapshots = realProjects.map((p) => buildProjectSnapshot(db, p));
|
|
341
349
|
// Filter out projects with 0 memories
|
|
342
350
|
const activeSnapshots = snapshots.filter((s) => s.memoryCounts.total > 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portfolio.js","sourceRoot":"","sources":["../../src/lib/portfolio.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"portfolio.js","sourceRoot":"","sources":["../../src/lib/portfolio.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Machine-aware project path resolution (v5.11).
|
|
3
|
+
*
|
|
4
|
+
* A project's portable identity is its UUID. Its location is resolved PER
|
|
5
|
+
* MACHINE, in priority order:
|
|
6
|
+
* 1. A per-machine override row (project_locations) — used for projects
|
|
7
|
+
* that live outside any named root.
|
|
8
|
+
* 2. join(machine.roots[root_id], rel_path) — the common, zero-touch case
|
|
9
|
+
* (machine-independent rel_path + this machine's root).
|
|
10
|
+
* 3. null — the project is "not on this machine".
|
|
11
|
+
*
|
|
12
|
+
* Nothing here reads an absolute path that was persisted by another machine,
|
|
13
|
+
* so the same shared brain resolves correctly on the Studio, the MBP, etc.
|
|
14
|
+
*/
|
|
15
|
+
import type { GnosysDB, DbProject } from "./db.js";
|
|
16
|
+
import { type MachineConfig } from "./machineConfig.js";
|
|
17
|
+
export type LocationSource = "override" | "root" | "none";
|
|
18
|
+
export interface ResolvedProject {
|
|
19
|
+
project: DbProject;
|
|
20
|
+
/** Absolute path on this machine, or null when not present here. */
|
|
21
|
+
absPath: string | null;
|
|
22
|
+
source: LocationSource;
|
|
23
|
+
}
|
|
24
|
+
/** Resolve a single project's absolute path on this machine (or null). */
|
|
25
|
+
export declare function resolveProjectPath(db: GnosysDB, machine: MachineConfig, projectId: string): string | null;
|
|
26
|
+
/** Resolve a project with provenance, or null if the project is unknown. */
|
|
27
|
+
export declare function resolveProject(db: GnosysDB, machine: MachineConfig, projectId: string): ResolvedProject | null;
|
|
28
|
+
/** Resolve every known project for this machine (for portfolio/federation). */
|
|
29
|
+
export declare function resolveAllProjects(db: GnosysDB, machine: MachineConfig): ResolvedProject[];
|
|
30
|
+
/**
|
|
31
|
+
* Consumer-facing path for display/use, with a legacy fallback so callers can
|
|
32
|
+
* adopt machine-aware resolution without breaking pre-migration setups:
|
|
33
|
+
*
|
|
34
|
+
* - machine == null (no machine.json yet) → working_directory (legacy)
|
|
35
|
+
* - resolvable via override/root → that path
|
|
36
|
+
* - legacy row not yet scanned but its → working_directory
|
|
37
|
+
* working_directory exists on this disk
|
|
38
|
+
* - otherwise → null ("not on this machine")
|
|
39
|
+
*
|
|
40
|
+
* Pass `machine` as `readMachineConfig()` (which returns null when absent —
|
|
41
|
+
* importantly it does NOT create the file as a display side effect).
|
|
42
|
+
*/
|
|
43
|
+
export declare function effectiveProjectPath(db: GnosysDB, project: DbProject, machine: MachineConfig | null): string | null;
|
|
44
|
+
/**
|
|
45
|
+
* Record where THIS machine keeps a project, choosing the portable storage
|
|
46
|
+
* automatically:
|
|
47
|
+
* - If absPath sits under a named root, store the machine-INDEPENDENT
|
|
48
|
+
* root_id + rel_path on the project row (shared across machines) and
|
|
49
|
+
* drop any now-redundant per-machine override.
|
|
50
|
+
* - Otherwise store a per-machine override row (project_locations).
|
|
51
|
+
*
|
|
52
|
+
* working_directory is updated as a machine-local display cache either way.
|
|
53
|
+
* Used by `gnosys projects scan` and `gnosys init`.
|
|
54
|
+
*/
|
|
55
|
+
export declare function recordLocation(db: GnosysDB, machine: MachineConfig, projectId: string, absPath: string): {
|
|
56
|
+
mode: "root" | "override";
|
|
57
|
+
rootId?: string;
|
|
58
|
+
relPath?: string;
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=projectPaths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectPaths.d.ts","sourceRoot":"","sources":["../../src/lib/projectPaths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,KAAK,aAAa,EAAqC,MAAM,oBAAoB,CAAC;AAE3F,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,SAAS,CAAC;IACnB,oEAAoE;IACpE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,QAAQ,EACZ,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAMf;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,EACZ,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,MAAM,GAChB,eAAe,GAAG,IAAI,CAIxB;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,GAAG,eAAe,EAAE,CAE1F;AASD;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,QAAQ,EACZ,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,aAAa,GAAG,IAAI,GAC5B,MAAM,GAAG,IAAI,CAUf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,EACZ,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd;IAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAgBlE"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Machine-aware project path resolution (v5.11).
|
|
3
|
+
*
|
|
4
|
+
* A project's portable identity is its UUID. Its location is resolved PER
|
|
5
|
+
* MACHINE, in priority order:
|
|
6
|
+
* 1. A per-machine override row (project_locations) — used for projects
|
|
7
|
+
* that live outside any named root.
|
|
8
|
+
* 2. join(machine.roots[root_id], rel_path) — the common, zero-touch case
|
|
9
|
+
* (machine-independent rel_path + this machine's root).
|
|
10
|
+
* 3. null — the project is "not on this machine".
|
|
11
|
+
*
|
|
12
|
+
* Nothing here reads an absolute path that was persisted by another machine,
|
|
13
|
+
* so the same shared brain resolves correctly on the Studio, the MBP, etc.
|
|
14
|
+
*/
|
|
15
|
+
import fsSync from "fs";
|
|
16
|
+
import { absPathFromRoot, relPathUnderRoot } from "./machineConfig.js";
|
|
17
|
+
/** Resolve a single project's absolute path on this machine (or null). */
|
|
18
|
+
export function resolveProjectPath(db, machine, projectId) {
|
|
19
|
+
const override = db.getProjectLocation(projectId, machine.machineId);
|
|
20
|
+
if (override)
|
|
21
|
+
return override.abs_path;
|
|
22
|
+
const project = db.getProject(projectId);
|
|
23
|
+
if (!project)
|
|
24
|
+
return null;
|
|
25
|
+
return absPathFromRoot(machine, project.root_id, project.rel_path);
|
|
26
|
+
}
|
|
27
|
+
/** Resolve a project with provenance, or null if the project is unknown. */
|
|
28
|
+
export function resolveProject(db, machine, projectId) {
|
|
29
|
+
const project = db.getProject(projectId);
|
|
30
|
+
if (!project)
|
|
31
|
+
return null;
|
|
32
|
+
return resolveFor(db, machine, project);
|
|
33
|
+
}
|
|
34
|
+
/** Resolve every known project for this machine (for portfolio/federation). */
|
|
35
|
+
export function resolveAllProjects(db, machine) {
|
|
36
|
+
return db.getAllProjects().map((project) => resolveFor(db, machine, project));
|
|
37
|
+
}
|
|
38
|
+
function resolveFor(db, machine, project) {
|
|
39
|
+
const override = db.getProjectLocation(project.id, machine.machineId);
|
|
40
|
+
if (override)
|
|
41
|
+
return { project, absPath: override.abs_path, source: "override" };
|
|
42
|
+
const fromRoot = absPathFromRoot(machine, project.root_id, project.rel_path);
|
|
43
|
+
return { project, absPath: fromRoot, source: fromRoot ? "root" : "none" };
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Consumer-facing path for display/use, with a legacy fallback so callers can
|
|
47
|
+
* adopt machine-aware resolution without breaking pre-migration setups:
|
|
48
|
+
*
|
|
49
|
+
* - machine == null (no machine.json yet) → working_directory (legacy)
|
|
50
|
+
* - resolvable via override/root → that path
|
|
51
|
+
* - legacy row not yet scanned but its → working_directory
|
|
52
|
+
* working_directory exists on this disk
|
|
53
|
+
* - otherwise → null ("not on this machine")
|
|
54
|
+
*
|
|
55
|
+
* Pass `machine` as `readMachineConfig()` (which returns null when absent —
|
|
56
|
+
* importantly it does NOT create the file as a display side effect).
|
|
57
|
+
*/
|
|
58
|
+
export function effectiveProjectPath(db, project, machine) {
|
|
59
|
+
if (!machine)
|
|
60
|
+
return project.working_directory || null;
|
|
61
|
+
const override = db.getProjectLocation(project.id, machine.machineId);
|
|
62
|
+
if (override)
|
|
63
|
+
return override.abs_path;
|
|
64
|
+
const fromRoot = absPathFromRoot(machine, project.root_id, project.rel_path);
|
|
65
|
+
if (fromRoot)
|
|
66
|
+
return fromRoot;
|
|
67
|
+
if (project.working_directory && fsSync.existsSync(project.working_directory)) {
|
|
68
|
+
return project.working_directory;
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Record where THIS machine keeps a project, choosing the portable storage
|
|
74
|
+
* automatically:
|
|
75
|
+
* - If absPath sits under a named root, store the machine-INDEPENDENT
|
|
76
|
+
* root_id + rel_path on the project row (shared across machines) and
|
|
77
|
+
* drop any now-redundant per-machine override.
|
|
78
|
+
* - Otherwise store a per-machine override row (project_locations).
|
|
79
|
+
*
|
|
80
|
+
* working_directory is updated as a machine-local display cache either way.
|
|
81
|
+
* Used by `gnosys projects scan` and `gnosys init`.
|
|
82
|
+
*/
|
|
83
|
+
export function recordLocation(db, machine, projectId, absPath) {
|
|
84
|
+
const now = new Date().toISOString();
|
|
85
|
+
const under = relPathUnderRoot(machine, absPath);
|
|
86
|
+
if (under) {
|
|
87
|
+
db.updateProject(projectId, {
|
|
88
|
+
root_id: under.rootId,
|
|
89
|
+
rel_path: under.relPath,
|
|
90
|
+
working_directory: absPath,
|
|
91
|
+
modified: now,
|
|
92
|
+
});
|
|
93
|
+
db.deleteProjectLocation(projectId, machine.machineId);
|
|
94
|
+
return { mode: "root", rootId: under.rootId, relPath: under.relPath };
|
|
95
|
+
}
|
|
96
|
+
db.setProjectLocation({ project_id: projectId, machine_id: machine.machineId, abs_path: absPath, modified: now });
|
|
97
|
+
db.updateProject(projectId, { working_directory: absPath, modified: now });
|
|
98
|
+
return { mode: "override" };
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=projectPaths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectPaths.js","sourceRoot":"","sources":["../../src/lib/projectPaths.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project discovery scan (v5.11).
|
|
3
|
+
*
|
|
4
|
+
* Walks each of this machine's named roots for `.gnosys/gnosys.json` files,
|
|
5
|
+
* and for every project found records its machine-portable location
|
|
6
|
+
* (root_id + rel_path) or a per-machine override. This is how a new machine
|
|
7
|
+
* onboards: set its roots in machine.json, then run `gnosys projects scan`.
|
|
8
|
+
*
|
|
9
|
+
* The scan is machine-local — it only ever writes paths derived from THIS
|
|
10
|
+
* machine's roots, so it can run independently on every machine without
|
|
11
|
+
* clobbering the others.
|
|
12
|
+
*/
|
|
13
|
+
import type { GnosysDB } from "./db.js";
|
|
14
|
+
import type { MachineConfig } from "./machineConfig.js";
|
|
15
|
+
export interface ScanEntry {
|
|
16
|
+
projectId: string;
|
|
17
|
+
name: string;
|
|
18
|
+
absPath: string;
|
|
19
|
+
mode: "root" | "override";
|
|
20
|
+
/** True if this scan created the project row (first time seen anywhere). */
|
|
21
|
+
created: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface ScanResult {
|
|
24
|
+
roots: string[];
|
|
25
|
+
entries: ScanEntry[];
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Find every project directory (the parent of a `.gnosys/gnosys.json`) under
|
|
29
|
+
* `root`, skipping build/vendor noise and not descending into `.gnosys`.
|
|
30
|
+
* Nested projects (a monorepo with several `.gnosys` stores) are all found.
|
|
31
|
+
*/
|
|
32
|
+
export declare function findProjectDirs(root: string, maxDepth?: number): Promise<string[]>;
|
|
33
|
+
/**
|
|
34
|
+
* Scan this machine's roots and register every discovered project's location.
|
|
35
|
+
* Creates the project row from its identity file when first seen anywhere.
|
|
36
|
+
*/
|
|
37
|
+
export declare function scanProjects(db: GnosysDB, machine: MachineConfig, opts?: {
|
|
38
|
+
roots?: Record<string, string>;
|
|
39
|
+
}): Promise<ScanResult>;
|
|
40
|
+
//# sourceMappingURL=projectScan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectScan.d.ts","sourceRoot":"","sources":["../../src/lib/projectScan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAUxD,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IAC1B,4EAA4E;IAC5E,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA2BnF;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,EAAE,EAAE,QAAQ,EACZ,OAAO,EAAE,aAAa,EACtB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAO,GAC5C,OAAO,CAAC,UAAU,CAAC,CAsCrB"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project discovery scan (v5.11).
|
|
3
|
+
*
|
|
4
|
+
* Walks each of this machine's named roots for `.gnosys/gnosys.json` files,
|
|
5
|
+
* and for every project found records its machine-portable location
|
|
6
|
+
* (root_id + rel_path) or a per-machine override. This is how a new machine
|
|
7
|
+
* onboards: set its roots in machine.json, then run `gnosys projects scan`.
|
|
8
|
+
*
|
|
9
|
+
* The scan is machine-local — it only ever writes paths derived from THIS
|
|
10
|
+
* machine's roots, so it can run independently on every machine without
|
|
11
|
+
* clobbering the others.
|
|
12
|
+
*/
|
|
13
|
+
import fs from "fs/promises";
|
|
14
|
+
import path from "path";
|
|
15
|
+
import { readProjectIdentity } from "./projectIdentity.js";
|
|
16
|
+
import { recordLocation } from "./projectPaths.js";
|
|
17
|
+
/** Directories never worth descending into when hunting for projects. */
|
|
18
|
+
const SKIP_DIRS = new Set([
|
|
19
|
+
"node_modules", ".git", "dist", "build", "target", "coverage",
|
|
20
|
+
".cache", "vendor", ".next", ".gnosys",
|
|
21
|
+
]);
|
|
22
|
+
/**
|
|
23
|
+
* Find every project directory (the parent of a `.gnosys/gnosys.json`) under
|
|
24
|
+
* `root`, skipping build/vendor noise and not descending into `.gnosys`.
|
|
25
|
+
* Nested projects (a monorepo with several `.gnosys` stores) are all found.
|
|
26
|
+
*/
|
|
27
|
+
export async function findProjectDirs(root, maxDepth = 6) {
|
|
28
|
+
const found = [];
|
|
29
|
+
async function walk(dir, depth) {
|
|
30
|
+
if (depth > maxDepth)
|
|
31
|
+
return;
|
|
32
|
+
let entries;
|
|
33
|
+
try {
|
|
34
|
+
entries = await fs.readdir(dir, { withFileTypes: true });
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (entries.some((e) => e.isDirectory() && e.name === ".gnosys")) {
|
|
40
|
+
try {
|
|
41
|
+
await fs.access(path.join(dir, ".gnosys", "gnosys.json"));
|
|
42
|
+
found.push(dir);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// .gnosys without an identity file — not a registered project
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
for (const e of entries) {
|
|
49
|
+
if (!e.isDirectory() || SKIP_DIRS.has(e.name))
|
|
50
|
+
continue;
|
|
51
|
+
await walk(path.join(dir, e.name), depth + 1);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
await walk(path.resolve(root), 0);
|
|
55
|
+
return found;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Scan this machine's roots and register every discovered project's location.
|
|
59
|
+
* Creates the project row from its identity file when first seen anywhere.
|
|
60
|
+
*/
|
|
61
|
+
export async function scanProjects(db, machine, opts = {}) {
|
|
62
|
+
const roots = opts.roots ?? machine.roots;
|
|
63
|
+
const entries = [];
|
|
64
|
+
for (const rootPath of Object.values(roots)) {
|
|
65
|
+
const dirs = await findProjectDirs(rootPath);
|
|
66
|
+
for (const dir of dirs) {
|
|
67
|
+
const identity = await readProjectIdentity(dir);
|
|
68
|
+
if (!identity)
|
|
69
|
+
continue;
|
|
70
|
+
let created = false;
|
|
71
|
+
if (!db.getProject(identity.projectId)) {
|
|
72
|
+
const now = new Date().toISOString();
|
|
73
|
+
db.insertProject({
|
|
74
|
+
id: identity.projectId,
|
|
75
|
+
name: identity.projectName,
|
|
76
|
+
working_directory: dir,
|
|
77
|
+
user: identity.user || "unknown",
|
|
78
|
+
agent_rules_target: identity.agentRulesTarget ?? null,
|
|
79
|
+
obsidian_vault: identity.obsidianVault ?? null,
|
|
80
|
+
created: identity.createdAt || now,
|
|
81
|
+
modified: now,
|
|
82
|
+
});
|
|
83
|
+
created = true;
|
|
84
|
+
}
|
|
85
|
+
const res = recordLocation(db, machine, identity.projectId, dir);
|
|
86
|
+
entries.push({
|
|
87
|
+
projectId: identity.projectId,
|
|
88
|
+
name: identity.projectName,
|
|
89
|
+
absPath: dir,
|
|
90
|
+
mode: res.mode,
|
|
91
|
+
created,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return { roots: Object.values(roots), entries };
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=projectScan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectScan.js","sourceRoot":"","sources":["../../src/lib/projectScan.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/remote.d.ts
CHANGED
|
@@ -160,6 +160,11 @@ export declare class RemoteSync {
|
|
|
160
160
|
* v5.9.4 Bug 9 — on macOS, neither `HOSTNAME` nor `COMPUTERNAME` are set
|
|
161
161
|
* by default in subshells, which caused identifiers like `unknown-mp9cyh4j`.
|
|
162
162
|
* `os.hostname()` is the reliable fallback before giving up to `unknown`.
|
|
163
|
+
*
|
|
164
|
+
* v5.9.5 — self-heal: when the cached value is a pre-fix `unknown-<rand>`
|
|
165
|
+
* id and `resolveHostname()` now returns a real name, overwrite the cache
|
|
166
|
+
* (and any `dream_machine_id` pointing at the broken id) so users who
|
|
167
|
+
* upgrade past v5.9.4 stop seeing the stale identifier in panels.
|
|
163
168
|
*/
|
|
164
169
|
export declare function getMachineId(localDb: GnosysDB): string;
|
|
165
170
|
/**
|