gnosys 5.3.0 → 5.3.1

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.
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Interactive wizard for `gnosys remote configure`.
3
+ *
4
+ * Handles three primary scenarios:
5
+ * 1. Fresh setup — local DB only, configuring a remote for the first time
6
+ * 2. Reconfigure — already have a remote, want to change it or disconnect
7
+ * 3. Join existing — second machine joining a remote that already has data
8
+ */
9
+ import { GnosysDB } from "./db.js";
10
+ export declare function runConfigureWizard(centralDb: GnosysDB): Promise<boolean>;
11
+ export declare function configureFromPath(centralDb: GnosysDB, remotePath: string, opts?: {
12
+ migrate?: boolean;
13
+ }): Promise<boolean>;
14
+ //# sourceMappingURL=remoteWizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remoteWizard.d.ts","sourceRoot":"","sources":["../../src/lib/remoteWizard.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAsFnC,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAkC9E;AAwMD,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,QAAQ,EACnB,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/B,OAAO,CAAC,OAAO,CAAC,CAiClB"}
@@ -0,0 +1,344 @@
1
+ /**
2
+ * Interactive wizard for `gnosys remote configure`.
3
+ *
4
+ * Handles three primary scenarios:
5
+ * 1. Fresh setup — local DB only, configuring a remote for the first time
6
+ * 2. Reconfigure — already have a remote, want to change it or disconnect
7
+ * 3. Join existing — second machine joining a remote that already has data
8
+ */
9
+ import { readdirSync, statSync } from "fs";
10
+ import * as path from "path";
11
+ import { createInterface } from "readline/promises";
12
+ import { RemoteSync, validateLocation } from "./remote.js";
13
+ const REMOTE_PATH_KEY = "remote_path";
14
+ // ─── Helpers ────────────────────────────────────────────────────────────
15
+ /** List likely remote candidates from /Volumes/. Filters out system volumes. */
16
+ function detectVolumeCandidates() {
17
+ try {
18
+ const entries = readdirSync("/Volumes");
19
+ const skip = new Set([
20
+ "Macintosh HD",
21
+ "Macintosh HD - Data",
22
+ "Recovery",
23
+ "Update",
24
+ "Preboot",
25
+ "VM",
26
+ ]);
27
+ return entries
28
+ .filter((name) => !name.startsWith(".") && !skip.has(name))
29
+ .filter((name) => !/Backups of /i.test(name))
30
+ .map((name) => `/Volumes/${name}`)
31
+ .filter((p) => {
32
+ try {
33
+ return statSync(p).isDirectory();
34
+ }
35
+ catch {
36
+ return false;
37
+ }
38
+ });
39
+ }
40
+ catch {
41
+ return [];
42
+ }
43
+ }
44
+ async function ask(rl, prompt) {
45
+ return (await rl.question(prompt)).trim();
46
+ }
47
+ async function askChoice(rl, prompt, choices, defaultKey) {
48
+ const lines = [prompt];
49
+ for (const c of choices) {
50
+ const marker = c.key === defaultKey ? " (default)" : "";
51
+ lines.push(` ${c.key}) ${c.label}${marker}`);
52
+ }
53
+ console.log(lines.join("\n"));
54
+ const valid = new Set(choices.map((c) => c.key));
55
+ for (let attempts = 0; attempts < 5; attempts++) {
56
+ const answer = (await ask(rl, "Choice: ")).toLowerCase();
57
+ if (!answer && defaultKey)
58
+ return defaultKey;
59
+ if (valid.has(answer))
60
+ return answer;
61
+ console.log(`Invalid choice. Pick one of: ${[...valid].join(", ")}`);
62
+ }
63
+ throw new Error("Too many invalid responses");
64
+ }
65
+ async function askConfirm(rl, prompt, defaultYes = true) {
66
+ const hint = defaultYes ? " [Y/n] " : " [y/N] ";
67
+ const answer = (await ask(rl, prompt + hint)).toLowerCase();
68
+ if (!answer)
69
+ return defaultYes;
70
+ return answer === "y" || answer === "yes";
71
+ }
72
+ function showValidationSummary(validation) {
73
+ console.log(` Path exists: ${validation.checks.pathExists ? "✓" : "✗"}`);
74
+ console.log(` Writable: ${validation.checks.writable ? "✓" : "✗"}`);
75
+ console.log(` SQLite compatible: ${validation.checks.sqliteCompatible ? "✓" : "✗"}`);
76
+ if (validation.checks.latencyMs !== null) {
77
+ console.log(` Latency: ${validation.checks.latencyMs}ms`);
78
+ }
79
+ if (validation.checks.existingDb.found) {
80
+ const c = validation.checks.existingDb;
81
+ const dateStr = c.lastModified ? c.lastModified.split("T")[0] : "unknown";
82
+ console.log(` Existing DB found: ${c.memoryCount ?? "?"} memories (last modified ${dateStr})`);
83
+ }
84
+ for (const w of validation.warnings)
85
+ console.log(` ⚠ ${w}`);
86
+ for (const e of validation.errors)
87
+ console.log(` ✗ ${e}`);
88
+ }
89
+ // ─── Main wizard ────────────────────────────────────────────────────────
90
+ export async function runConfigureWizard(centralDb) {
91
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
92
+ try {
93
+ const localCount = centralDb.getMemoryCount();
94
+ const currentRemote = centralDb.getMeta(REMOTE_PATH_KEY);
95
+ console.log("");
96
+ console.log(" Gnosys Remote Sync — Configuration Wizard");
97
+ console.log(" ─────────────────────────────────────────");
98
+ console.log("");
99
+ console.log(` Local DB: ~/.gnosys/gnosys.db (${localCount.active} active, ${localCount.archived} archived)`);
100
+ console.log(` Remote: ${currentRemote || "not configured"}`);
101
+ console.log("");
102
+ if (currentRemote) {
103
+ // Reconfigure flow
104
+ const choice = await askChoice(rl, "What would you like to do?", [
105
+ { key: "1", label: "Change remote location" },
106
+ { key: "2", label: "Re-validate current remote" },
107
+ { key: "3", label: "Disconnect remote (back to local-only)" },
108
+ { key: "4", label: "Cancel" },
109
+ ], "4");
110
+ if (choice === "4")
111
+ return false;
112
+ if (choice === "3")
113
+ return await disconnectRemote(rl, centralDb);
114
+ if (choice === "2")
115
+ return await revalidateRemote(rl, centralDb, currentRemote);
116
+ // choice === "1": fall through to setup flow
117
+ }
118
+ // Setup flow (new or change)
119
+ return await setupRemoteFlow(rl, centralDb, localCount.active);
120
+ }
121
+ finally {
122
+ rl.close();
123
+ }
124
+ }
125
+ // ─── Setup flow ─────────────────────────────────────────────────────────
126
+ async function setupRemoteFlow(rl, centralDb, localActiveCount) {
127
+ console.log("");
128
+ console.log("Step 1: Choose remote location");
129
+ console.log("");
130
+ const candidates = detectVolumeCandidates();
131
+ let remotePath;
132
+ if (candidates.length > 0) {
133
+ console.log("Detected mounted volumes:");
134
+ candidates.forEach((c, i) => console.log(` ${i + 1}) ${c}`));
135
+ console.log(` ${candidates.length + 1}) Custom path`);
136
+ console.log(` ${candidates.length + 2}) Cancel`);
137
+ const choices = [
138
+ ...candidates.map((_, i) => ({ key: String(i + 1), label: candidates[i] })),
139
+ { key: String(candidates.length + 1), label: "Custom path" },
140
+ { key: String(candidates.length + 2), label: "Cancel" },
141
+ ];
142
+ const choice = await askChoice(rl, "Select a volume or enter a custom path:", choices);
143
+ if (choice === String(candidates.length + 2))
144
+ return false;
145
+ if (choice === String(candidates.length + 1)) {
146
+ remotePath = await ask(rl, "Custom path (e.g. /Volumes/synology/gnosys): ");
147
+ }
148
+ else {
149
+ const idx = parseInt(choice, 10) - 1;
150
+ const volume = candidates[idx];
151
+ // Suggest a gnosys subdirectory inside the volume
152
+ const suggested = path.join(volume, "gnosys");
153
+ const useSubdir = await askConfirm(rl, `Use ${suggested} (recommended subdirectory)?`);
154
+ remotePath = useSubdir ? suggested : volume;
155
+ }
156
+ }
157
+ else {
158
+ console.log("No mounted volumes detected at /Volumes/.");
159
+ console.log("Common options: NAS via SMB/AFP, external drive, or Tailscale-mounted share.\n");
160
+ remotePath = await ask(rl, "Enter remote path (e.g. /Volumes/synology/gnosys): ");
161
+ }
162
+ if (!remotePath) {
163
+ console.log("No path provided. Cancelling.");
164
+ return false;
165
+ }
166
+ // Step 2: Validate
167
+ console.log(`\nStep 2: Validating ${remotePath}...`);
168
+ const validation = await validateLocation(remotePath);
169
+ showValidationSummary(validation);
170
+ if (!validation.ok) {
171
+ console.log("\nValidation failed. Remote not configured.");
172
+ return false;
173
+ }
174
+ if (validation.warnings.length > 0) {
175
+ const proceed = await askConfirm(rl, "Continue despite warnings?", true);
176
+ if (!proceed)
177
+ return false;
178
+ }
179
+ // Step 3: Decide what to do based on existing DB state
180
+ console.log("\nStep 3: Data strategy");
181
+ console.log("");
182
+ const remoteHasData = validation.checks.existingDb.found && (validation.checks.existingDb.memoryCount ?? 0) > 0;
183
+ const localHasData = localActiveCount > 0;
184
+ let strategy = "configure-only";
185
+ if (!remoteHasData && !localHasData) {
186
+ // Both empty — just point at remote
187
+ console.log(" Both local and remote are empty. Configuring remote without data transfer.");
188
+ strategy = "configure-only";
189
+ }
190
+ else if (!remoteHasData && localHasData) {
191
+ // Local has data, remote is empty — initial migration
192
+ console.log(` Your local DB has ${localActiveCount} memories.`);
193
+ console.log(" The remote is empty.");
194
+ const migrate = await askConfirm(rl, "Copy your local memories to the remote now?", true);
195
+ strategy = migrate ? "migrate" : "configure-only";
196
+ }
197
+ else if (remoteHasData && !localHasData) {
198
+ // Remote has data, local empty — pull from remote (this is the "second machine" scenario)
199
+ console.log(` The remote has ${validation.checks.existingDb.memoryCount} memories.`);
200
+ console.log(" Your local DB is empty.");
201
+ const pull = await askConfirm(rl, "Pull all memories from remote to local now?", true);
202
+ strategy = pull ? "pull" : "configure-only";
203
+ }
204
+ else {
205
+ // BOTH have data — the tricky case
206
+ console.log(` Local DB: ${localActiveCount} memories`);
207
+ console.log(` Remote DB: ${validation.checks.existingDb.memoryCount} memories`);
208
+ console.log("");
209
+ const choice = await askChoice(rl, "How do you want to combine them?", [
210
+ { key: "1", label: "Merge — push local-only memories up, pull remote-only down, flag any conflicts (recommended)" },
211
+ { key: "2", label: "Replace remote with my local (overwrites the remote — destructive)" },
212
+ { key: "3", label: "Replace local with remote (your local memories will be lost — destructive)" },
213
+ { key: "4", label: "Cancel" },
214
+ ], "1");
215
+ if (choice === "1")
216
+ strategy = "merge";
217
+ else if (choice === "2")
218
+ strategy = "migrate"; // overwrites
219
+ else if (choice === "3")
220
+ strategy = "pull";
221
+ else
222
+ strategy = "cancel";
223
+ if (strategy === "migrate" || strategy === "pull") {
224
+ const confirm = await askConfirm(rl, `\nThis will overwrite the ${strategy === "migrate" ? "remote" : "local"} DB. Are you sure?`, false);
225
+ if (!confirm) {
226
+ console.log("Cancelled.");
227
+ return false;
228
+ }
229
+ }
230
+ }
231
+ if (strategy === "cancel") {
232
+ console.log("Cancelled.");
233
+ return false;
234
+ }
235
+ // Step 4: Save config and execute strategy
236
+ centralDb.setMeta(REMOTE_PATH_KEY, remotePath);
237
+ console.log(`\n✓ Remote configured: ${remotePath}`);
238
+ const sync = new RemoteSync(centralDb, remotePath);
239
+ try {
240
+ if (strategy === "migrate") {
241
+ console.log("\nCopying local memories to remote...");
242
+ const result = await sync.migrate();
243
+ if (result.ok) {
244
+ console.log(` ✓ Copied ${result.copied} memories.`);
245
+ }
246
+ else {
247
+ console.log(` ✗ Migration had errors:`);
248
+ for (const e of result.errors)
249
+ console.log(` ${e}`);
250
+ return false;
251
+ }
252
+ }
253
+ else if (strategy === "pull") {
254
+ console.log("\nPulling memories from remote...");
255
+ const result = await sync.pull({ strategy: "newer-wins" });
256
+ console.log(` ✓ Pulled ${result.pulled} memories.`);
257
+ if (result.errors.length > 0) {
258
+ for (const e of result.errors)
259
+ console.log(` ✗ ${e}`);
260
+ }
261
+ }
262
+ else if (strategy === "merge") {
263
+ console.log("\nMerging local and remote...");
264
+ const result = await sync.sync();
265
+ console.log(` Pushed: ${result.pushed} | Pulled: ${result.pulled} | Conflicts: ${result.conflicts.length}`);
266
+ if (result.conflicts.length > 0) {
267
+ console.log("\n Conflicts need resolution:");
268
+ for (const c of result.conflicts) {
269
+ console.log(` ${c.memoryId}: ${c.title}`);
270
+ }
271
+ console.log("\n Resolve with: gnosys remote resolve <memory-id> --keep <local|remote>");
272
+ }
273
+ if (result.errors.length > 0) {
274
+ for (const e of result.errors)
275
+ console.log(` ✗ ${e}`);
276
+ }
277
+ }
278
+ }
279
+ finally {
280
+ sync.closeRemote();
281
+ }
282
+ console.log("\nDone! Run 'gnosys remote status' anytime to check sync state.");
283
+ return true;
284
+ }
285
+ // ─── Reconfigure helpers ────────────────────────────────────────────────
286
+ async function disconnectRemote(rl, centralDb) {
287
+ const confirm = await askConfirm(rl, "Disconnect the remote? Your local DB will remain. The remote DB itself is not deleted.", false);
288
+ if (!confirm) {
289
+ console.log("Cancelled.");
290
+ return false;
291
+ }
292
+ centralDb.setMeta(REMOTE_PATH_KEY, "");
293
+ console.log("✓ Remote disconnected. Gnosys is now local-only.");
294
+ return true;
295
+ }
296
+ async function revalidateRemote(_rl, _centralDb, currentRemote) {
297
+ console.log(`\nValidating ${currentRemote}...`);
298
+ const validation = await validateLocation(currentRemote);
299
+ showValidationSummary(validation);
300
+ if (validation.ok) {
301
+ console.log("\n✓ Remote is healthy.");
302
+ return true;
303
+ }
304
+ else {
305
+ console.log("\n✗ Validation failed. The remote may be unreachable or the path is wrong.");
306
+ return false;
307
+ }
308
+ }
309
+ // ─── Non-interactive mode ───────────────────────────────────────────────
310
+ export async function configureFromPath(centralDb, remotePath, opts = {}) {
311
+ console.log(`\nValidating ${remotePath}...`);
312
+ const validation = await validateLocation(remotePath);
313
+ showValidationSummary(validation);
314
+ if (!validation.ok) {
315
+ console.log("\nValidation failed. Remote not configured.");
316
+ return false;
317
+ }
318
+ centralDb.setMeta(REMOTE_PATH_KEY, remotePath);
319
+ console.log(`\n✓ Remote configured: ${remotePath}`);
320
+ if (opts.migrate && !validation.checks.existingDb.found) {
321
+ console.log("\nMigrating local DB to remote...");
322
+ const sync = new RemoteSync(centralDb, remotePath);
323
+ try {
324
+ const result = await sync.migrate();
325
+ if (result.ok) {
326
+ console.log(` ✓ Copied ${result.copied} memories to remote.`);
327
+ }
328
+ else {
329
+ console.log(` ✗ Migration had errors:`);
330
+ for (const e of result.errors)
331
+ console.log(` ${e}`);
332
+ return false;
333
+ }
334
+ }
335
+ finally {
336
+ sync.closeRemote();
337
+ }
338
+ }
339
+ else if (validation.checks.existingDb.found) {
340
+ console.log("\nExisting DB found at remote. Run 'gnosys remote sync' to merge.");
341
+ }
342
+ return true;
343
+ }
344
+ //# sourceMappingURL=remoteWizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remoteWizard.js","sourceRoot":"","sources":["../../src/lib/remoteWizard.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gnosys",
3
- "version": "5.3.0",
3
+ "version": "5.3.1",
4
4
  "description": "Gnosys — Persistent Memory for AI Agents. Sandbox-first runtime, central SQLite brain, federated search, Dream Mode, Web Knowledge Base, Obsidian export.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",