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.
Files changed (48) hide show
  1. package/README.md +31 -777
  2. package/dist/cli.js +114 -4
  3. package/dist/cli.js.map +1 -1
  4. package/dist/lib/dashboard.d.ts.map +1 -1
  5. package/dist/lib/dashboard.js +5 -1
  6. package/dist/lib/dashboard.js.map +1 -1
  7. package/dist/lib/db.d.ts +24 -0
  8. package/dist/lib/db.d.ts.map +1 -1
  9. package/dist/lib/db.js +122 -8
  10. package/dist/lib/db.js.map +1 -1
  11. package/dist/lib/dream.js +1 -1
  12. package/dist/lib/dream.js.map +1 -1
  13. package/dist/lib/federated.d.ts +2 -1
  14. package/dist/lib/federated.d.ts.map +1 -1
  15. package/dist/lib/federated.js +6 -3
  16. package/dist/lib/federated.js.map +1 -1
  17. package/dist/lib/ingest.js +1 -1
  18. package/dist/lib/ingest.js.map +1 -1
  19. package/dist/lib/machineConfig.d.ts +87 -0
  20. package/dist/lib/machineConfig.d.ts.map +1 -0
  21. package/dist/lib/machineConfig.js +146 -0
  22. package/dist/lib/machineConfig.js.map +1 -0
  23. package/dist/lib/machineMigrate.d.ts +39 -0
  24. package/dist/lib/machineMigrate.d.ts.map +1 -0
  25. package/dist/lib/machineMigrate.js +103 -0
  26. package/dist/lib/machineMigrate.js.map +1 -0
  27. package/dist/lib/paths.d.ts +11 -0
  28. package/dist/lib/paths.d.ts.map +1 -1
  29. package/dist/lib/paths.js +13 -0
  30. package/dist/lib/paths.js.map +1 -1
  31. package/dist/lib/portfolio.d.ts.map +1 -1
  32. package/dist/lib/portfolio.js +10 -2
  33. package/dist/lib/portfolio.js.map +1 -1
  34. package/dist/lib/projectPaths.d.ts +60 -0
  35. package/dist/lib/projectPaths.d.ts.map +1 -0
  36. package/dist/lib/projectPaths.js +100 -0
  37. package/dist/lib/projectPaths.js.map +1 -0
  38. package/dist/lib/projectScan.d.ts +40 -0
  39. package/dist/lib/projectScan.d.ts.map +1 -0
  40. package/dist/lib/projectScan.js +97 -0
  41. package/dist/lib/projectScan.js.map +1 -0
  42. package/dist/lib/remote.d.ts +5 -0
  43. package/dist/lib/remote.d.ts.map +1 -1
  44. package/dist/lib/remote.js +29 -5
  45. package/dist/lib/remote.js.map +1 -1
  46. package/dist/lib/setup.js +1 -1
  47. package/dist/lib/setup.js.map +1 -1
  48. 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":"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"}
@@ -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
@@ -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
@@ -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;AAI9C,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,CAkC/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"}
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"}
@@ -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/ or /private/tmp/)
339
- const realProjects = projects.filter((p) => !p.working_directory.startsWith("/tmp/") && !p.working_directory.startsWith("/private/tmp/"));
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":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,yEAAyE;AACzE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU;IAC7D,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS;CACvC,CAAC,CAAC;AAgBH;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,QAAQ,GAAG,CAAC;IAC9D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,UAAU,IAAI,CAAC,GAAW,EAAE,KAAa;QAC5C,IAAI,KAAK,GAAG,QAAQ;YAAE,OAAO;QAC7B,IAAI,OAA8B,CAAC;QACnC,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;gBAC1D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;YAAC,MAAM,CAAC;gBACP,8DAA8D;YAChE,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,SAAS;YACxD,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,EAAY,EACZ,OAAsB,EACtB,OAA2C,EAAE;IAE7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;IAC1C,MAAM,OAAO,GAAgB,EAAE,CAAC;IAEhC,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC7C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBACrC,EAAE,CAAC,aAAa,CAAC;oBACf,EAAE,EAAE,QAAQ,CAAC,SAAS;oBACtB,IAAI,EAAE,QAAQ,CAAC,WAAW;oBAC1B,iBAAiB,EAAE,GAAG;oBACtB,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,SAAS;oBAChC,kBAAkB,EAAE,QAAQ,CAAC,gBAAgB,IAAI,IAAI;oBACrD,cAAc,EAAE,QAAQ,CAAC,aAAa,IAAI,IAAI;oBAC9C,OAAO,EAAE,QAAQ,CAAC,SAAS,IAAI,GAAG;oBAClC,QAAQ,EAAE,GAAG;iBACd,CAAC,CAAC;gBACH,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;YAED,MAAM,GAAG,GAAG,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,IAAI,EAAE,QAAQ,CAAC,WAAW;gBAC1B,OAAO,EAAE,GAAG;gBACZ,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO;aACR,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;AAClD,CAAC"}
@@ -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
  /**