integral-mind 0.1.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 +52 -0
- package/dist/cli.js +945 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.js +82 -0
- package/dist/client.js.map +1 -0
- package/dist/config.js +75 -0
- package/dist/config.js.map +1 -0
- package/dist/docs.js +188 -0
- package/dist/docs.js.map +1 -0
- package/dist/exit.js +10 -0
- package/dist/exit.js.map +1 -0
- package/dist/hooks.js +261 -0
- package/dist/hooks.js.map +1 -0
- package/dist/redact.js +77 -0
- package/dist/redact.js.map +1 -0
- package/dist/sync/cli.js +431 -0
- package/dist/sync/cli.js.map +1 -0
- package/dist/sync/mempalace-source.js +136 -0
- package/dist/sync/mempalace-source.js.map +1 -0
- package/dist/sync/mempalace.js +215 -0
- package/dist/sync/mempalace.js.map +1 -0
- package/dist/sync/obsidian-source.js +30 -0
- package/dist/sync/obsidian-source.js.map +1 -0
- package/dist/sync/obsidian.js +52 -0
- package/dist/sync/obsidian.js.map +1 -0
- package/dist/sync/repo-source.js +43 -0
- package/dist/sync/repo-source.js.map +1 -0
- package/dist/sync/repo.js +51 -0
- package/dist/sync/repo.js.map +1 -0
- package/dist/sync/state.js +87 -0
- package/dist/sync/state.js.map +1 -0
- package/dist/sync/tree-sync.js +56 -0
- package/dist/sync/tree-sync.js.map +1 -0
- package/package.json +49 -0
package/dist/sync/cli.js
ADDED
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
import { parseArgs } from "node:util";
|
|
2
|
+
import { ImClient } from "../client.js";
|
|
3
|
+
import { checkConfigPermissions, resolveConfig } from "../config.js";
|
|
4
|
+
import { EXIT } from "../exit.js";
|
|
5
|
+
import { openLocalPalace } from "./mempalace-source.js";
|
|
6
|
+
import { MEMPALACE_CONNECTOR, readMempalaceConfig, syncMempalace, writeMempalaceConfig, } from "./mempalace.js";
|
|
7
|
+
import { listVaultNotes } from "./obsidian-source.js";
|
|
8
|
+
import { listRepoFiles } from "./repo-source.js";
|
|
9
|
+
import { REPO_CONNECTOR, readRepoConfig, syncRepo, writeRepoConfig, } from "./repo.js";
|
|
10
|
+
import { OBSIDIAN_CONNECTOR, readObsidianConfig, syncObsidian, writeObsidianConfig, } from "./obsidian.js";
|
|
11
|
+
import { deleteSyncState, loadSyncState, SyncUsageError } from "./state.js";
|
|
12
|
+
export const SYNC_USAGE = `Usage:
|
|
13
|
+
im sync mempalace [--palace <label>] [--full]
|
|
14
|
+
im sync obsidian [--label <name>] [--full]
|
|
15
|
+
im sync repo [--label <name>] [--full]
|
|
16
|
+
im sync connect mempalace --label <name> --path <palace-dir> [--layout project_per_palace|project_per_wing]
|
|
17
|
+
im sync connect obsidian --vault <vault-dir> [--label <name>] [--project <uuid>]
|
|
18
|
+
im sync connect repo --path <repo-dir> [--label <name>] [--project <uuid>]
|
|
19
|
+
im sync status
|
|
20
|
+
im sync disconnect <mempalace|obsidian|repo> <label>`;
|
|
21
|
+
export async function runSyncCommand(args, env, stdio) {
|
|
22
|
+
const [sub, ...rest] = args;
|
|
23
|
+
try {
|
|
24
|
+
switch (sub) {
|
|
25
|
+
case "mempalace":
|
|
26
|
+
return await runMempalaceSync(rest, env, stdio);
|
|
27
|
+
case "obsidian":
|
|
28
|
+
return await runObsidianSyncCommand(rest, env, stdio);
|
|
29
|
+
case "repo":
|
|
30
|
+
return await runRepoSyncCommand(rest, env, stdio);
|
|
31
|
+
case "connect":
|
|
32
|
+
return await runConnect(rest, env, stdio);
|
|
33
|
+
case "status":
|
|
34
|
+
return await runStatus(env, stdio);
|
|
35
|
+
case "disconnect":
|
|
36
|
+
return await runDisconnect(rest, env, stdio);
|
|
37
|
+
default:
|
|
38
|
+
stdio.err(SYNC_USAGE);
|
|
39
|
+
return EXIT.USAGE;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
if (err instanceof SyncUsageError) {
|
|
44
|
+
stdio.err(err.message);
|
|
45
|
+
return EXIT.USAGE;
|
|
46
|
+
}
|
|
47
|
+
throw err;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async function client(env, stdio) {
|
|
51
|
+
const resolved = await resolveConfig(env);
|
|
52
|
+
if ("error" in resolved) {
|
|
53
|
+
stdio.err(resolved.error);
|
|
54
|
+
return EXIT.USAGE;
|
|
55
|
+
}
|
|
56
|
+
const warning = await checkConfigPermissions(env);
|
|
57
|
+
if (warning)
|
|
58
|
+
stdio.err(warning);
|
|
59
|
+
return new ImClient(resolved);
|
|
60
|
+
}
|
|
61
|
+
async function runMempalaceSync(args, env, stdio) {
|
|
62
|
+
let values;
|
|
63
|
+
try {
|
|
64
|
+
values = parseArgs({
|
|
65
|
+
args,
|
|
66
|
+
options: { palace: { type: "string" }, full: { type: "boolean" } },
|
|
67
|
+
}).values;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
stdio.err(SYNC_USAGE);
|
|
71
|
+
return EXIT.USAGE;
|
|
72
|
+
}
|
|
73
|
+
const im = await client(env, stdio);
|
|
74
|
+
if (typeof im === "number")
|
|
75
|
+
return im;
|
|
76
|
+
const summary = await syncMempalace({ label: values.palace, full: values.full }, { client: im, env, openPalace: openLocalPalace }, stdio);
|
|
77
|
+
return summary.failed > 0 ? EXIT.RUNTIME : EXIT.OK;
|
|
78
|
+
}
|
|
79
|
+
async function runObsidianSyncCommand(args, env, stdio) {
|
|
80
|
+
let values;
|
|
81
|
+
try {
|
|
82
|
+
values = parseArgs({
|
|
83
|
+
args,
|
|
84
|
+
options: { label: { type: "string" }, full: { type: "boolean" } },
|
|
85
|
+
}).values;
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
stdio.err(SYNC_USAGE);
|
|
89
|
+
return EXIT.USAGE;
|
|
90
|
+
}
|
|
91
|
+
const im = await client(env, stdio);
|
|
92
|
+
if (typeof im === "number")
|
|
93
|
+
return im;
|
|
94
|
+
const summary = await syncObsidian({ label: values.label, full: values.full }, { client: im, env, listNotes: listVaultNotes }, stdio);
|
|
95
|
+
return summary.failed > 0 ? EXIT.RUNTIME : EXIT.OK;
|
|
96
|
+
}
|
|
97
|
+
async function runRepoSyncCommand(args, env, stdio) {
|
|
98
|
+
let values;
|
|
99
|
+
try {
|
|
100
|
+
values = parseArgs({
|
|
101
|
+
args,
|
|
102
|
+
options: { label: { type: "string" }, full: { type: "boolean" } },
|
|
103
|
+
}).values;
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
stdio.err(SYNC_USAGE);
|
|
107
|
+
return EXIT.USAGE;
|
|
108
|
+
}
|
|
109
|
+
const im = await client(env, stdio);
|
|
110
|
+
if (typeof im === "number")
|
|
111
|
+
return im;
|
|
112
|
+
const summary = await syncRepo({ label: values.label, full: values.full }, { client: im, env, listFiles: listRepoFiles }, stdio);
|
|
113
|
+
return summary.failed > 0 ? EXIT.RUNTIME : EXIT.OK;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Register (or adopt) a generic sync root for a tree connector. The
|
|
117
|
+
* server is idempotent by (connector, label): reconnecting adopts the
|
|
118
|
+
* existing root, so synced sources are never duplicated.
|
|
119
|
+
*/
|
|
120
|
+
async function registerTreeRoot(im, connector, rootPath, label, project, stdio) {
|
|
121
|
+
const created = await im.request("POST", "/api/sync/roots", {
|
|
122
|
+
connector,
|
|
123
|
+
label,
|
|
124
|
+
root_path: rootPath,
|
|
125
|
+
...(project ? { project_id: project } : {}),
|
|
126
|
+
client_version: "im-cli",
|
|
127
|
+
});
|
|
128
|
+
if (created.existing) {
|
|
129
|
+
stdio.out(`Adopted existing sync root ${created.root_id} for "${label}".`);
|
|
130
|
+
if (project && created.project_id !== project) {
|
|
131
|
+
stdio.err(`Warning: --project ignored — this label already syncs into project ${created.project_id}. ` +
|
|
132
|
+
`Disconnect and reconnect under a new label to target a different project.`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return created;
|
|
136
|
+
}
|
|
137
|
+
/** Default label = directory name; both separators so Windows paths work. */
|
|
138
|
+
function labelFromPath(path) {
|
|
139
|
+
return (path
|
|
140
|
+
.split(/[\\/]/)
|
|
141
|
+
.filter((s) => s.length > 0)
|
|
142
|
+
.pop() ?? "root");
|
|
143
|
+
}
|
|
144
|
+
async function revokeTreeRoot(im, rootId, stdio) {
|
|
145
|
+
try {
|
|
146
|
+
await im.request("DELETE", `/api/sync/roots/${rootId}`);
|
|
147
|
+
}
|
|
148
|
+
catch (err) {
|
|
149
|
+
stdio.err(`Server-side revoke failed (continuing with local removal): ${err instanceof Error ? err.message : String(err)}`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
async function runConnect(args, env, stdio) {
|
|
153
|
+
const [connector, ...rest] = args;
|
|
154
|
+
if (connector === MEMPALACE_CONNECTOR)
|
|
155
|
+
return runConnectMempalace(rest, env, stdio);
|
|
156
|
+
if (connector === OBSIDIAN_CONNECTOR)
|
|
157
|
+
return runConnectObsidian(rest, env, stdio);
|
|
158
|
+
if (connector === REPO_CONNECTOR)
|
|
159
|
+
return runConnectRepo(rest, env, stdio);
|
|
160
|
+
stdio.err(SYNC_USAGE);
|
|
161
|
+
return EXIT.USAGE;
|
|
162
|
+
}
|
|
163
|
+
async function runConnectRepo(rest, env, stdio) {
|
|
164
|
+
let values;
|
|
165
|
+
try {
|
|
166
|
+
values = parseArgs({
|
|
167
|
+
args: rest,
|
|
168
|
+
options: {
|
|
169
|
+
path: { type: "string" },
|
|
170
|
+
label: { type: "string" },
|
|
171
|
+
project: { type: "string" },
|
|
172
|
+
},
|
|
173
|
+
}).values;
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
stdio.err(SYNC_USAGE);
|
|
177
|
+
return EXIT.USAGE;
|
|
178
|
+
}
|
|
179
|
+
if (!values.path) {
|
|
180
|
+
stdio.err(SYNC_USAGE);
|
|
181
|
+
return EXIT.USAGE;
|
|
182
|
+
}
|
|
183
|
+
const label = values.label ?? labelFromPath(values.path);
|
|
184
|
+
const im = await client(env, stdio);
|
|
185
|
+
if (typeof im === "number")
|
|
186
|
+
return im;
|
|
187
|
+
const created = await registerTreeRoot(im, REPO_CONNECTOR, values.path, label, values.project, stdio);
|
|
188
|
+
const repo = {
|
|
189
|
+
label,
|
|
190
|
+
repo_path: values.path,
|
|
191
|
+
root_id: created.root_id,
|
|
192
|
+
project_id: created.project_id,
|
|
193
|
+
};
|
|
194
|
+
const config = await readRepoConfig(env);
|
|
195
|
+
const idx = config.repos.findIndex((r) => r.label === label);
|
|
196
|
+
if (idx >= 0)
|
|
197
|
+
config.repos[idx] = repo;
|
|
198
|
+
else
|
|
199
|
+
config.repos.push(repo);
|
|
200
|
+
await writeRepoConfig(config, env);
|
|
201
|
+
stdio.out(`✓ Connected repo "${label}"`);
|
|
202
|
+
stdio.out(`Run \`im sync repo\` to index it; search code with \`im search --code\`.`);
|
|
203
|
+
return EXIT.OK;
|
|
204
|
+
}
|
|
205
|
+
async function runConnectMempalace(rest, env, stdio) {
|
|
206
|
+
let values;
|
|
207
|
+
try {
|
|
208
|
+
values = parseArgs({
|
|
209
|
+
args: rest,
|
|
210
|
+
options: {
|
|
211
|
+
label: { type: "string" },
|
|
212
|
+
path: { type: "string" },
|
|
213
|
+
layout: { type: "string" },
|
|
214
|
+
},
|
|
215
|
+
}).values;
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
stdio.err(SYNC_USAGE);
|
|
219
|
+
return EXIT.USAGE;
|
|
220
|
+
}
|
|
221
|
+
const layout = values.layout ?? "project_per_palace";
|
|
222
|
+
if (!values.label ||
|
|
223
|
+
!values.path ||
|
|
224
|
+
(layout !== "project_per_palace" && layout !== "project_per_wing")) {
|
|
225
|
+
stdio.err(SYNC_USAGE);
|
|
226
|
+
return EXIT.USAGE;
|
|
227
|
+
}
|
|
228
|
+
const im = await client(env, stdio);
|
|
229
|
+
if (typeof im === "number")
|
|
230
|
+
return im;
|
|
231
|
+
// Reuse an existing server-side registration for this label: POSTing again
|
|
232
|
+
// would create a duplicate palace (and, for project_per_palace, a duplicate
|
|
233
|
+
// project) and orphan every source under the old palace_id.
|
|
234
|
+
const { palaces } = await im.request("GET", "/api/mempalace/palaces");
|
|
235
|
+
const existing = palaces.find((p) => p.label === values.label);
|
|
236
|
+
let palace;
|
|
237
|
+
if (existing) {
|
|
238
|
+
palace = {
|
|
239
|
+
label: values.label,
|
|
240
|
+
palace_path: values.path,
|
|
241
|
+
palace_id: existing.id,
|
|
242
|
+
layout_mode: existing.layoutMode,
|
|
243
|
+
default_project_id: existing.defaultProjectId,
|
|
244
|
+
};
|
|
245
|
+
stdio.out(`Adopted existing palace registration ${existing.id} for "${values.label}".`);
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
const created = await im.request("POST", "/api/mempalace/palaces", {
|
|
249
|
+
label: values.label,
|
|
250
|
+
palace_path: values.path,
|
|
251
|
+
layout_mode: layout,
|
|
252
|
+
bridge_version: "im-cli",
|
|
253
|
+
});
|
|
254
|
+
palace = {
|
|
255
|
+
label: values.label,
|
|
256
|
+
palace_path: values.path,
|
|
257
|
+
palace_id: created.palace_id,
|
|
258
|
+
layout_mode: layout,
|
|
259
|
+
default_project_id: created.default_project_id,
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
const config = await readMempalaceConfig(env);
|
|
263
|
+
const idx = config.palaces.findIndex((p) => p.label === palace.label);
|
|
264
|
+
if (idx >= 0)
|
|
265
|
+
config.palaces[idx] = palace;
|
|
266
|
+
else
|
|
267
|
+
config.palaces.push(palace);
|
|
268
|
+
await writeMempalaceConfig(config, env);
|
|
269
|
+
stdio.out(`✓ Connected palace "${palace.label}" (${palace.layout_mode})`);
|
|
270
|
+
stdio.out(`Run \`im sync mempalace\` to push your drawers, KG, and tunnels.`);
|
|
271
|
+
return EXIT.OK;
|
|
272
|
+
}
|
|
273
|
+
async function runConnectObsidian(rest, env, stdio) {
|
|
274
|
+
let values;
|
|
275
|
+
try {
|
|
276
|
+
values = parseArgs({
|
|
277
|
+
args: rest,
|
|
278
|
+
options: {
|
|
279
|
+
vault: { type: "string" },
|
|
280
|
+
label: { type: "string" },
|
|
281
|
+
project: { type: "string" },
|
|
282
|
+
},
|
|
283
|
+
}).values;
|
|
284
|
+
}
|
|
285
|
+
catch {
|
|
286
|
+
stdio.err(SYNC_USAGE);
|
|
287
|
+
return EXIT.USAGE;
|
|
288
|
+
}
|
|
289
|
+
if (!values.vault) {
|
|
290
|
+
stdio.err(SYNC_USAGE);
|
|
291
|
+
return EXIT.USAGE;
|
|
292
|
+
}
|
|
293
|
+
const label = values.label ?? labelFromPath(values.vault);
|
|
294
|
+
const im = await client(env, stdio);
|
|
295
|
+
if (typeof im === "number")
|
|
296
|
+
return im;
|
|
297
|
+
const created = await registerTreeRoot(im, OBSIDIAN_CONNECTOR, values.vault, label, values.project, stdio);
|
|
298
|
+
const vault = {
|
|
299
|
+
label,
|
|
300
|
+
vault_path: values.vault,
|
|
301
|
+
root_id: created.root_id,
|
|
302
|
+
project_id: created.project_id,
|
|
303
|
+
};
|
|
304
|
+
const config = await readObsidianConfig(env);
|
|
305
|
+
const idx = config.vaults.findIndex((v) => v.label === label);
|
|
306
|
+
if (idx >= 0)
|
|
307
|
+
config.vaults[idx] = vault;
|
|
308
|
+
else
|
|
309
|
+
config.vaults.push(vault);
|
|
310
|
+
await writeObsidianConfig(config, env);
|
|
311
|
+
stdio.out(`✓ Connected vault "${label}"`);
|
|
312
|
+
stdio.out(`Run \`im sync obsidian\` to mirror your notes.`);
|
|
313
|
+
return EXIT.OK;
|
|
314
|
+
}
|
|
315
|
+
async function runDisconnectObsidian(label, env, stdio) {
|
|
316
|
+
const config = await readObsidianConfig(env);
|
|
317
|
+
const vault = config.vaults.find((v) => v.label === label);
|
|
318
|
+
if (!vault) {
|
|
319
|
+
stdio.err(`No vault labeled "${label}". Run \`im sync status\` to list connections.`);
|
|
320
|
+
return EXIT.USAGE;
|
|
321
|
+
}
|
|
322
|
+
const im = await client(env, stdio);
|
|
323
|
+
if (typeof im === "number")
|
|
324
|
+
return im;
|
|
325
|
+
await revokeTreeRoot(im, vault.root_id, stdio);
|
|
326
|
+
config.vaults = config.vaults.filter((v) => v.label !== label);
|
|
327
|
+
await writeObsidianConfig(config, env);
|
|
328
|
+
await deleteSyncState(OBSIDIAN_CONNECTOR, label, env);
|
|
329
|
+
stdio.out(`✓ Disconnected vault "${label}" (synced notes are kept server-side)`);
|
|
330
|
+
return EXIT.OK;
|
|
331
|
+
}
|
|
332
|
+
async function runDisconnectRepo(label, env, stdio) {
|
|
333
|
+
const config = await readRepoConfig(env);
|
|
334
|
+
const repo = config.repos.find((r) => r.label === label);
|
|
335
|
+
if (!repo) {
|
|
336
|
+
stdio.err(`No repo labeled "${label}". Run \`im sync status\` to list connections.`);
|
|
337
|
+
return EXIT.USAGE;
|
|
338
|
+
}
|
|
339
|
+
const im = await client(env, stdio);
|
|
340
|
+
if (typeof im === "number")
|
|
341
|
+
return im;
|
|
342
|
+
await revokeTreeRoot(im, repo.root_id, stdio);
|
|
343
|
+
config.repos = config.repos.filter((r) => r.label !== label);
|
|
344
|
+
await writeRepoConfig(config, env);
|
|
345
|
+
await deleteSyncState(REPO_CONNECTOR, label, env);
|
|
346
|
+
stdio.out(`✓ Disconnected repo "${label}" (synced files are kept server-side)`);
|
|
347
|
+
return EXIT.OK;
|
|
348
|
+
}
|
|
349
|
+
async function runStatus(env, stdio) {
|
|
350
|
+
const config = await readMempalaceConfig(env);
|
|
351
|
+
const obsidian = await readObsidianConfig(env);
|
|
352
|
+
const repoCfg = await readRepoConfig(env);
|
|
353
|
+
if (config.palaces.length === 0 && obsidian.vaults.length === 0 && repoCfg.repos.length === 0) {
|
|
354
|
+
stdio.out("No sync connectors configured. Run `im sync connect <mempalace|obsidian|repo> …` (see `im sync --help`).");
|
|
355
|
+
return EXIT.OK;
|
|
356
|
+
}
|
|
357
|
+
if (repoCfg.repos.length > 0) {
|
|
358
|
+
stdio.out("repo:");
|
|
359
|
+
for (const repo of repoCfg.repos) {
|
|
360
|
+
const state = await loadSyncState(REPO_CONNECTOR, repo.label, env);
|
|
361
|
+
stdio.out(` • ${repo.label}\n` +
|
|
362
|
+
` path: ${repo.repo_path}\n` +
|
|
363
|
+
` root_id: ${repo.root_id}\n` +
|
|
364
|
+
` files: ${Object.keys(state.items).length}\n` +
|
|
365
|
+
` last sync: ${state.last_synced_at ?? "(never)"}`);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
if (obsidian.vaults.length > 0) {
|
|
369
|
+
stdio.out("obsidian:");
|
|
370
|
+
for (const vault of obsidian.vaults) {
|
|
371
|
+
const state = await loadSyncState(OBSIDIAN_CONNECTOR, vault.label, env);
|
|
372
|
+
stdio.out(` • ${vault.label}\n` +
|
|
373
|
+
` path: ${vault.vault_path}\n` +
|
|
374
|
+
` root_id: ${vault.root_id}\n` +
|
|
375
|
+
` notes: ${Object.keys(state.items).length}\n` +
|
|
376
|
+
` last sync: ${state.last_synced_at ?? "(never)"}`);
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
if (config.palaces.length === 0)
|
|
380
|
+
return EXIT.OK;
|
|
381
|
+
stdio.out("mempalace:");
|
|
382
|
+
for (const palace of config.palaces) {
|
|
383
|
+
const state = await loadSyncState(MEMPALACE_CONNECTOR, palace.label, env);
|
|
384
|
+
const triples = Array.isArray(state.extra.triple_ids) ? state.extra.triple_ids.length : 0;
|
|
385
|
+
const tunnels = Array.isArray(state.extra.tunnel_ids) ? state.extra.tunnel_ids.length : 0;
|
|
386
|
+
stdio.out(` • ${palace.label} (${palace.layout_mode})\n` +
|
|
387
|
+
` path: ${palace.palace_path}\n` +
|
|
388
|
+
` palace_id: ${palace.palace_id}\n` +
|
|
389
|
+
` drawers: ${Object.keys(state.items).length}\n` +
|
|
390
|
+
` triples: ${triples}\n` +
|
|
391
|
+
` tunnels: ${tunnels}\n` +
|
|
392
|
+
` last sync: ${state.last_synced_at ?? "(never)"}`);
|
|
393
|
+
}
|
|
394
|
+
return EXIT.OK;
|
|
395
|
+
}
|
|
396
|
+
async function runDisconnect(args, env, stdio) {
|
|
397
|
+
const [connector, label] = args;
|
|
398
|
+
if (!label) {
|
|
399
|
+
stdio.err(SYNC_USAGE);
|
|
400
|
+
return EXIT.USAGE;
|
|
401
|
+
}
|
|
402
|
+
if (connector === OBSIDIAN_CONNECTOR)
|
|
403
|
+
return runDisconnectObsidian(label, env, stdio);
|
|
404
|
+
if (connector === REPO_CONNECTOR)
|
|
405
|
+
return runDisconnectRepo(label, env, stdio);
|
|
406
|
+
if (connector !== MEMPALACE_CONNECTOR) {
|
|
407
|
+
stdio.err(SYNC_USAGE);
|
|
408
|
+
return EXIT.USAGE;
|
|
409
|
+
}
|
|
410
|
+
const config = await readMempalaceConfig(env);
|
|
411
|
+
const palace = config.palaces.find((p) => p.label === label);
|
|
412
|
+
if (!palace) {
|
|
413
|
+
stdio.err(`No palace labeled "${label}". Run \`im sync status\` to list connections.`);
|
|
414
|
+
return EXIT.USAGE;
|
|
415
|
+
}
|
|
416
|
+
const im = await client(env, stdio);
|
|
417
|
+
if (typeof im === "number")
|
|
418
|
+
return im;
|
|
419
|
+
try {
|
|
420
|
+
await im.request("DELETE", `/api/mempalace/palaces/${palace.palace_id}`);
|
|
421
|
+
}
|
|
422
|
+
catch (err) {
|
|
423
|
+
stdio.err(`Server-side revoke failed (continuing with local removal): ${err instanceof Error ? err.message : String(err)}`);
|
|
424
|
+
}
|
|
425
|
+
config.palaces = config.palaces.filter((p) => p.label !== label);
|
|
426
|
+
await writeMempalaceConfig(config, env);
|
|
427
|
+
await deleteSyncState(MEMPALACE_CONNECTOR, label, env);
|
|
428
|
+
stdio.out(`✓ Disconnected palace "${label}"`);
|
|
429
|
+
return EXIT.OK;
|
|
430
|
+
}
|
|
431
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/sync/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
2
|
+
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
|
|
3
|
+
/**
|
|
4
|
+
* Default PalaceSource: talks to a local MemPalace over MCP stdio
|
|
5
|
+
* (python3 -m mempalace.mcp_server). Ported verbatim from the retired
|
|
6
|
+
* standalone mempalace-bridge; the sync runner is tested against a fake
|
|
7
|
+
* PalaceSource, this adapter is exercised against real palaces only.
|
|
8
|
+
*/
|
|
9
|
+
export async function openLocalPalace(palacePath) {
|
|
10
|
+
const transport = new StdioClientTransport({
|
|
11
|
+
command: "python3",
|
|
12
|
+
args: ["-m", "mempalace.mcp_server", "--palace", palacePath],
|
|
13
|
+
stderr: "pipe",
|
|
14
|
+
});
|
|
15
|
+
const client = new Client({ name: "integral-mind-cli", version: "0.1.0" }, { capabilities: {} });
|
|
16
|
+
await client.connect(transport);
|
|
17
|
+
return {
|
|
18
|
+
enumerateDrawers: () => enumerateDrawers(client),
|
|
19
|
+
enumerateKg: () => enumerateKg(client),
|
|
20
|
+
enumerateTunnels: () => enumerateTunnels(client),
|
|
21
|
+
close: async () => {
|
|
22
|
+
await client.close();
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
async function callTool(client, name, args = {}) {
|
|
27
|
+
const result = await client.callTool({ name, arguments: args });
|
|
28
|
+
// MemPalace returns structured content as the first content block when JSON,
|
|
29
|
+
// or as text JSON we have to parse.
|
|
30
|
+
const content = result.content;
|
|
31
|
+
if (!content || content.length === 0) {
|
|
32
|
+
return {};
|
|
33
|
+
}
|
|
34
|
+
const first = content[0];
|
|
35
|
+
if (!first)
|
|
36
|
+
return {};
|
|
37
|
+
if (first.type === "text" && typeof first.text === "string") {
|
|
38
|
+
try {
|
|
39
|
+
return JSON.parse(first.text);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return first.text;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return first;
|
|
46
|
+
}
|
|
47
|
+
async function enumerateDrawers(client) {
|
|
48
|
+
const out = [];
|
|
49
|
+
let offset = 0;
|
|
50
|
+
const limit = 100;
|
|
51
|
+
while (true) {
|
|
52
|
+
const page = await callTool(client, "mempalace_list_drawers", { limit, offset });
|
|
53
|
+
const drawers = page.drawers ?? [];
|
|
54
|
+
if (drawers.length === 0)
|
|
55
|
+
break;
|
|
56
|
+
for (const d of drawers) {
|
|
57
|
+
const id = d.id ?? d.drawer_id;
|
|
58
|
+
if (!id)
|
|
59
|
+
continue;
|
|
60
|
+
// The list endpoint returns content previews; fetch full content per drawer.
|
|
61
|
+
const detail = await callTool(client, "mempalace_get_drawer", {
|
|
62
|
+
drawer_id: id,
|
|
63
|
+
});
|
|
64
|
+
const drawer = detail.drawer ?? d;
|
|
65
|
+
out.push({
|
|
66
|
+
id,
|
|
67
|
+
wing: (drawer.wing ?? d.wing ?? "unknown").toString(),
|
|
68
|
+
room: (drawer.room ?? d.room ?? "general").toString(),
|
|
69
|
+
content: (drawer.content ?? drawer.text ?? d.content ?? "").toString(),
|
|
70
|
+
source_file: drawer.source_file ?? d.source_file,
|
|
71
|
+
agent_name: drawer.added_by ?? d.added_by,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
offset += drawers.length;
|
|
75
|
+
if (typeof page.total === "number" && offset >= page.total)
|
|
76
|
+
break;
|
|
77
|
+
if (drawers.length < limit)
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
return out;
|
|
81
|
+
}
|
|
82
|
+
async function enumerateKg(client) {
|
|
83
|
+
const entitiesByName = new Map();
|
|
84
|
+
const triples = [];
|
|
85
|
+
const timeline = await callTool(client, "mempalace_kg_timeline", {});
|
|
86
|
+
let tripleIdx = 0;
|
|
87
|
+
for (const fact of timeline.timeline ?? []) {
|
|
88
|
+
if (!fact.subject || !fact.predicate || !fact.object)
|
|
89
|
+
continue;
|
|
90
|
+
const subjectId = entityId(fact.subject);
|
|
91
|
+
const objectId = entityId(fact.object);
|
|
92
|
+
if (!entitiesByName.has(subjectId)) {
|
|
93
|
+
entitiesByName.set(subjectId, { id: subjectId, name: fact.subject, type: "unknown" });
|
|
94
|
+
}
|
|
95
|
+
if (!entitiesByName.has(objectId)) {
|
|
96
|
+
entitiesByName.set(objectId, { id: objectId, name: fact.object, type: "unknown" });
|
|
97
|
+
}
|
|
98
|
+
const tripleId = fact.id ?? `${subjectId}|${fact.predicate}|${objectId}|${fact.valid_from ?? ""}|${tripleIdx}`;
|
|
99
|
+
tripleIdx += 1;
|
|
100
|
+
triples.push({
|
|
101
|
+
id: tripleId,
|
|
102
|
+
subject_id: subjectId,
|
|
103
|
+
predicate: fact.predicate,
|
|
104
|
+
object_id: objectId,
|
|
105
|
+
valid_from: fact.valid_from,
|
|
106
|
+
valid_to: fact.valid_to,
|
|
107
|
+
confidence: fact.confidence,
|
|
108
|
+
source_drawer_id: fact.source_drawer_id ?? fact.source_closet,
|
|
109
|
+
source_file: fact.source_file,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
return { entities: Array.from(entitiesByName.values()), triples };
|
|
113
|
+
}
|
|
114
|
+
async function enumerateTunnels(client) {
|
|
115
|
+
const result = await callTool(client, "mempalace_list_tunnels", {});
|
|
116
|
+
const tunnels = result.tunnels ?? [];
|
|
117
|
+
return tunnels
|
|
118
|
+
.filter((t) => t.source_wing && t.source_room && t.target_wing && t.target_room)
|
|
119
|
+
.map((t, i) => ({
|
|
120
|
+
id: t.id ??
|
|
121
|
+
t.tunnel_id ??
|
|
122
|
+
`${t.source_wing}|${t.source_room}|${t.target_wing}|${t.target_room}|${i}`,
|
|
123
|
+
source_wing: t.source_wing,
|
|
124
|
+
source_room: t.source_room,
|
|
125
|
+
target_wing: t.target_wing,
|
|
126
|
+
target_room: t.target_room,
|
|
127
|
+
label: t.label,
|
|
128
|
+
source_drawer_id: t.source_drawer_id,
|
|
129
|
+
target_drawer_id: t.target_drawer_id,
|
|
130
|
+
}));
|
|
131
|
+
}
|
|
132
|
+
function entityId(name) {
|
|
133
|
+
// Match MemPalace's "lowercase normalized name" convention.
|
|
134
|
+
return name.toLowerCase().trim().replace(/\s+/g, "_");
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=mempalace-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mempalace-source.js","sourceRoot":"","sources":["../../src/sync/mempalace-source.ts"],"names":[],"mappings":"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"}
|