omniwire 2.0.0 → 2.2.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.
- package/.mcp.json.disabled +8 -0
- package/LICENSE +21 -21
- package/README.md +438 -316
- package/clawhub-skill/SKILL.md +354 -0
- package/dist/claude/integration.js +15 -18
- package/dist/claude/integration.js.map +1 -1
- package/dist/commands/browser.js +1 -1
- package/dist/commands/browser.js.map +1 -1
- package/dist/commands/builtins.js +6 -6
- package/dist/commands/builtins.js.map +1 -1
- package/dist/mcp/index.js +10 -3
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/rest.js +9 -1
- package/dist/mcp/rest.js.map +1 -1
- package/dist/mcp/server.js +133 -32
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/sync-tools.d.ts +3 -1
- package/dist/mcp/sync-tools.js +134 -1
- package/dist/mcp/sync-tools.js.map +1 -1
- package/dist/nodes/manager.d.ts +4 -0
- package/dist/nodes/manager.js +55 -18
- package/dist/nodes/manager.js.map +1 -1
- package/dist/nodes/transfer.js +8 -3
- package/dist/nodes/transfer.js.map +1 -1
- package/dist/protocol/config.d.ts +7 -1
- package/dist/protocol/config.js +73 -102
- package/dist/protocol/config.js.map +1 -1
- package/dist/sync/cookies.d.ts +52 -0
- package/dist/sync/cookies.js +259 -0
- package/dist/sync/cookies.js.map +1 -0
- package/dist/sync/crypto.d.ts +11 -0
- package/dist/sync/crypto.js +95 -0
- package/dist/sync/crypto.js.map +1 -0
- package/dist/sync/db.d.ts +3 -0
- package/dist/sync/db.js +21 -4
- package/dist/sync/db.js.map +1 -1
- package/dist/sync/engine.d.ts +3 -1
- package/dist/sync/engine.js +59 -8
- package/dist/sync/engine.js.map +1 -1
- package/dist/sync/index.d.ts +2 -0
- package/dist/sync/index.js +44 -9
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/manifest.js +5 -5
- package/dist/sync/manifest.js.map +1 -1
- package/dist/sync/openclaw-bridge.d.ts +9 -0
- package/dist/sync/openclaw-bridge.js +206 -0
- package/dist/sync/openclaw-bridge.js.map +1 -0
- package/dist/sync/paths.js +6 -7
- package/dist/sync/paths.js.map +1 -1
- package/dist/sync/schema.js +2 -0
- package/dist/sync/schema.js.map +1 -1
- package/dist/sync/secrets.d.ts +32 -0
- package/dist/sync/secrets.js +221 -0
- package/dist/sync/secrets.js.map +1 -0
- package/dist/sync/types.d.ts +2 -0
- package/dist/sync/types.js +7 -7
- package/dist/sync/types.js.map +1 -1
- package/dist/sync/vault-bridge.d.ts +12 -0
- package/dist/sync/vault-bridge.js +152 -0
- package/dist/sync/vault-bridge.js.map +1 -0
- package/dist/ui/format.js +15 -14
- package/dist/ui/format.js.map +1 -1
- package/dist/update.d.ts +17 -0
- package/dist/update.js +108 -0
- package/dist/update.js.map +1 -0
- package/mesh.example.json +39 -0
- package/motd/00-cybernord +410 -0
- package/package.json +3 -36
package/dist/sync/engine.js
CHANGED
|
@@ -7,36 +7,51 @@ import { readFile, writeFile, mkdir, access, readdir } from 'node:fs/promises';
|
|
|
7
7
|
import { dirname, join } from 'node:path';
|
|
8
8
|
import picomatch from 'picomatch';
|
|
9
9
|
import { hashBuffer, hashFile } from './hasher.js';
|
|
10
|
+
import { VaultBridge } from './vault-bridge.js';
|
|
10
11
|
import { categorizeFile } from './manifest.js';
|
|
11
12
|
import { adaptPathsForNode, getToolBaseDir, isJsonFile, normalizeRelPath } from './paths.js';
|
|
12
13
|
import { allNodes } from '../protocol/config.js';
|
|
13
|
-
|
|
14
|
+
import { encrypt, decrypt, isSensitivePath, loadOrCreateKey, hasEncryptionKey } from './crypto.js';
|
|
15
|
+
const HASH_BATCH_SIZE = 100; // doubled for faster reconcile
|
|
14
16
|
export class SyncEngine {
|
|
15
17
|
db;
|
|
16
18
|
config;
|
|
17
19
|
manager;
|
|
18
20
|
transfer;
|
|
19
|
-
|
|
21
|
+
vault;
|
|
22
|
+
constructor(db, config, manager, transfer, vault) {
|
|
20
23
|
this.db = db;
|
|
21
24
|
this.config = config;
|
|
22
25
|
this.manager = manager;
|
|
23
26
|
this.transfer = transfer;
|
|
27
|
+
this.vault = vault ?? new VaultBridge();
|
|
24
28
|
}
|
|
25
|
-
// Push a local file to the database
|
|
29
|
+
// Push a local file to the database (encrypts sensitive files at rest)
|
|
26
30
|
async pushFile(tool, relPath, absPath, opts) {
|
|
27
31
|
const data = await readFile(absPath);
|
|
28
32
|
const hash = hashBuffer(data);
|
|
33
|
+
// Encrypt sensitive files before storing in DB
|
|
34
|
+
const sensitive = isSensitivePath(relPath) && hasEncryptionKey();
|
|
35
|
+
const content = sensitive ? encrypt(data, loadOrCreateKey()) : data;
|
|
29
36
|
const item = await this.db.upsertItem({
|
|
30
37
|
tool,
|
|
31
38
|
category: categorizeFile(relPath),
|
|
32
39
|
relPath,
|
|
33
40
|
contentHash: hash,
|
|
34
|
-
content
|
|
41
|
+
content,
|
|
35
42
|
contentSize: data.length,
|
|
36
43
|
metadata: {},
|
|
37
44
|
updatedByNode: this.config.nodeId,
|
|
45
|
+
encrypted: sensitive,
|
|
38
46
|
});
|
|
39
47
|
await this.db.upsertNodeSync(this.config.nodeId, item.id, hash);
|
|
48
|
+
// Mirror to Obsidian vault
|
|
49
|
+
try {
|
|
50
|
+
await this.vault.writeSyncItem(tool, relPath, data, { hash, node: this.config.nodeId });
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// Vault write failed (non-critical)
|
|
54
|
+
}
|
|
40
55
|
if (!opts?.skipRemotePush) {
|
|
41
56
|
await this.pushToRemoteNodes(item);
|
|
42
57
|
}
|
|
@@ -45,8 +60,12 @@ export class SyncEngine {
|
|
|
45
60
|
async deleteFile(tool, relPath) {
|
|
46
61
|
await this.db.markDeleted(tool, relPath, this.config.nodeId);
|
|
47
62
|
await this.db.logEvent(null, this.config.nodeId, 'delete', `Deleted ${tool}:${relPath}`);
|
|
63
|
+
try {
|
|
64
|
+
await this.vault.deleteSyncItem(tool, relPath);
|
|
65
|
+
}
|
|
66
|
+
catch { }
|
|
48
67
|
}
|
|
49
|
-
// Pull pending items from DB to local filesystem
|
|
68
|
+
// Pull pending items from DB to local filesystem (decrypts encrypted items)
|
|
50
69
|
async pullPending() {
|
|
51
70
|
const pending = await this.db.getPendingItems(this.config.nodeId);
|
|
52
71
|
let pulled = 0;
|
|
@@ -60,7 +79,20 @@ export class SyncEngine {
|
|
|
60
79
|
const os = localNode?.os ?? 'windows';
|
|
61
80
|
const baseDir = getToolBaseDir(item.tool, os);
|
|
62
81
|
const absPath = join(baseDir, item.relPath);
|
|
63
|
-
|
|
82
|
+
// Decrypt if item was stored encrypted
|
|
83
|
+
let content;
|
|
84
|
+
if (item.encrypted && hasEncryptionKey()) {
|
|
85
|
+
try {
|
|
86
|
+
content = decrypt(item.content, loadOrCreateKey());
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
// Decryption failed — key mismatch or corrupt data, skip
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
content = item.content;
|
|
95
|
+
}
|
|
64
96
|
if (isJsonFile(item.relPath)) {
|
|
65
97
|
const text = content.toString('utf-8');
|
|
66
98
|
const adapted = adaptPathsForNode(text, os);
|
|
@@ -114,7 +146,8 @@ export class SyncEngine {
|
|
|
114
146
|
relPath: normalizeRelPath(absPath.slice(baseNormalized.length + 1)),
|
|
115
147
|
}))
|
|
116
148
|
.filter(({ relPath }) => isIncluded(relPath) && !isExcluded(relPath));
|
|
117
|
-
//
|
|
149
|
+
// Quick mtime check: skip files whose mtime hasn't changed since last sync
|
|
150
|
+
// This avoids expensive hashing for unchanged files
|
|
118
151
|
for (let i = 0; i < candidates.length; i += HASH_BATCH_SIZE) {
|
|
119
152
|
const batch = candidates.slice(i, i + HASH_BATCH_SIZE);
|
|
120
153
|
const results = await Promise.allSettled(batch.map(async ({ absPath, relPath }) => {
|
|
@@ -154,6 +187,10 @@ export class SyncEngine {
|
|
|
154
187
|
// Prune old events periodically
|
|
155
188
|
await this.db.pruneEvents(5000);
|
|
156
189
|
await this.db.logEvent(null, this.config.nodeId, 'reconcile', `Reconciled: pushed=${pushed}, pulled=${pulled}, conflicts=${conflicts}`);
|
|
190
|
+
try {
|
|
191
|
+
await this.vault.logEvent('reconcile', `pushed=${pushed} pulled=${pulled} conflicts=${conflicts}`, this.config.nodeId);
|
|
192
|
+
}
|
|
193
|
+
catch { }
|
|
157
194
|
return { pushed, pulled, conflicts };
|
|
158
195
|
}
|
|
159
196
|
// Get diff between local and DB
|
|
@@ -186,9 +223,23 @@ export class SyncEngine {
|
|
|
186
223
|
return diffs;
|
|
187
224
|
}
|
|
188
225
|
// Push item content to online remote nodes in parallel via SSH2 + TransferEngine
|
|
226
|
+
// DB stores encrypted BYTEA; we decrypt here so remote nodes get plaintext over SSH (already encrypted transport)
|
|
189
227
|
async pushToRemoteNodes(item) {
|
|
190
228
|
if (!item.content)
|
|
191
229
|
return;
|
|
230
|
+
// Decrypt if stored encrypted — remote nodes receive plaintext over SSH2 (transport-encrypted)
|
|
231
|
+
let rawContent;
|
|
232
|
+
if (item.encrypted && hasEncryptionKey()) {
|
|
233
|
+
try {
|
|
234
|
+
rawContent = decrypt(item.content, loadOrCreateKey());
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
return; // Can't decrypt, skip push
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
rawContent = item.content;
|
|
242
|
+
}
|
|
192
243
|
const onlineNodes = this.manager.getOnlineNodes().filter((id) => id !== this.config.nodeId);
|
|
193
244
|
await Promise.allSettled(onlineNodes.map(async (nodeId) => {
|
|
194
245
|
try {
|
|
@@ -197,7 +248,7 @@ export class SyncEngine {
|
|
|
197
248
|
return;
|
|
198
249
|
const baseDir = getToolBaseDir(item.tool, node.os);
|
|
199
250
|
const remotePath = `${baseDir}/${item.relPath}`;
|
|
200
|
-
let content =
|
|
251
|
+
let content = rawContent.toString('utf-8');
|
|
201
252
|
if (isJsonFile(item.relPath)) {
|
|
202
253
|
content = adaptPathsForNode(content, node.os);
|
|
203
254
|
}
|
package/dist/sync/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/sync/engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/sync/engine.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,EAAE;AACF,mFAAmF;AACnF,oFAAoF;AACpF,yDAAyD;AAEzD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAQ,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,SAAS,MAAM,WAAW,CAAC;AAKlC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEnG,MAAM,eAAe,GAAG,GAAG,CAAC,CAAE,+BAA+B;AAE7D,MAAM,OAAO,UAAU;IAIX;IACA;IACA;IACA;IANF,KAAK,CAAc;IAE3B,YACU,EAAU,EACV,MAAkB,EAClB,OAAoB,EACpB,QAAwB,EAChC,KAAmB;QAJX,OAAE,GAAF,EAAE,CAAQ;QACV,WAAM,GAAN,MAAM,CAAY;QAClB,YAAO,GAAP,OAAO,CAAa;QACpB,aAAQ,GAAR,QAAQ,CAAgB;QAGhC,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI,WAAW,EAAE,CAAC;IAC1C,CAAC;IAED,uEAAuE;IACvE,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,OAAe,EAAE,OAAe,EAAE,IAAmC;QAChG,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAE9B,+CAA+C;QAC/C,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACjE,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEpE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;YACpC,IAAI;YACJ,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC;YACjC,OAAO;YACP,WAAW,EAAE,IAAI;YACjB,OAAO;YACP,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,QAAQ,EAAE,EAAE;YACZ,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YACjC,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAEhE,2BAA2B;QAC3B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1F,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;QACtC,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,OAAe;QAC5C,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC;YAAC,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IAClE,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,WAAW;QACf,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClE,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,SAAS;YAE5B,mDAAmD;YACnD,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;gBAAE,SAAS;YAE3C,MAAM,SAAS,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtE,MAAM,EAAE,GAAG,SAAS,EAAE,EAAE,IAAI,SAAS,CAAC;YACtC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAE5C,uCAAuC;YACvC,IAAI,OAAe,CAAC;YACpB,IAAI,IAAI,CAAC,SAAS,IAAI,gBAAgB,EAAE,EAAE,CAAC;gBACzC,IAAI,CAAC;oBACH,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;gBACrD,CAAC;gBAAC,MAAM,CAAC;oBACP,yDAAyD;oBACzD,SAAS;gBACX,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YACzB,CAAC;YAED,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACvC,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC5C,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC1C,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnD,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACpC,CAAC;YAAC,MAAM,CAAC;gBACP,wCAAwC;gBACxC,SAAS;YACX,CAAC;YAED,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5E,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACtF,MAAM,EAAE,CAAC;QACX,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,0EAA0E;IAC1E,KAAK,CAAC,SAAS,CAAC,SAAkC;QAChD,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YAED,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC9D,IAAI,QAAkB,CAAC;YACvB,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;YAC3C,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YAED,kEAAkE;YAClE,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAqB,CAAC,CAAC;YAC7D,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;gBACjD,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAwB,CAAC;gBAC9C,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;YAEhB,kEAAkE;YAClE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAClE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAElE,oDAAoD;YACpD,MAAM,UAAU,GAAG,QAAQ;iBACxB,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACjB,OAAO;gBACP,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aACpE,CAAC,CAAC;iBACF,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YAExE,2EAA2E;YAC3E,oDAAoD;YACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,eAAe,EAAE,CAAC;gBAC5D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC;gBACvD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;oBACvC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;oBAC1C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;gBACzC,CAAC,CAAC,CACH,CAAC;gBAEF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU;wBAAE,SAAS;oBAC3C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;oBACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAEtC,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC/E,MAAM,EAAE,CAAC;oBACX,CAAC;yBAAM,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;wBAC9C,sCAAsC;wBACtC,0CAA0C;wBAC1C,wDAAwD;wBACxD,oDAAoD;wBACpD,IAAI,QAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;4BAClD,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;4BAC/E,MAAM,EAAE,CAAC;wBACX,CAAC;6BAAM,CAAC;4BACN,SAAS,EAAE,CAAC;4BACZ,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAChE,aAAa,OAAO,WAAW,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,QAAQ,CAAC,aAAa,GAAG,CAAC,CAAC;wBAC1I,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAExC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvE,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;QAElF,gCAAgC;QAChC,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEhC,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAC1D,sBAAsB,MAAM,YAAY,MAAM,eAAe,SAAS,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,MAAM,WAAW,MAAM,cAAc,SAAS,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzH,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAEV,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACvC,CAAC;IAED,gCAAgC;IAChC,KAAK,CAAC,OAAO,CAAC,SAAkC;QAC9C,MAAM,KAAK,GAAe,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QAE5C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtE,MAAM,EAAE,GAAG,SAAS,EAAE,EAAE,IAAI,SAAS,CAAC;YACtC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAE5C,IAAI,SAAS,GAAkB,IAAI,CAAC;YACpC,IAAI,CAAC;gBACH,SAAS,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;YAAC,MAAM,CAAC;gBACP,6BAA6B;YAC/B,CAAC;YAED,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnC,KAAK,CAAC,IAAI,CAAC;oBACT,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,SAAS;oBACT,UAAU,EAAE,IAAI,CAAC,WAAW;oBAC5B,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;iBACzG,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,iFAAiF;IACjF,kHAAkH;IAC1G,KAAK,CAAC,iBAAiB,CAAC,IAAc;QAC5C,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,+FAA+F;QAC/F,IAAI,UAAkB,CAAC;QACvB,IAAI,IAAI,CAAC,SAAS,IAAI,gBAAgB,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC;gBACH,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;YACxD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,2BAA2B;YACrC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE5F,MAAM,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACxD,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;gBACrD,IAAI,CAAC,IAAI;oBAAE,OAAO;gBAElB,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnD,MAAM,UAAU,GAAG,GAAG,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAEhD,IAAI,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAE3C,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC7B,OAAO,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChD,CAAC;gBAED,0DAA0D;gBAC1D,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;gBAE3D,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAClE,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,IAAI,CAAC,OAAO,OAAO,MAAM,EAAE,CAAC,CAAC;YAClG,CAAC;QACH,CAAC,CAAC,CAAC,CAAC;IACN,CAAC;CAEF;AAED,yDAAyD;AACzD,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;AAE5E,SAAS,cAAc,CAAC,OAAe;IACrC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACjD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1G,CAAC;AAED,6EAA6E;AAC7E,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAE1F,KAAK,UAAU,OAAO,CAAC,GAAW;IAChC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAS;QACxC,MAAM,QAAQ,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACpC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;YACvB,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,4CAA4C;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,6EAA6E"}
|
package/dist/sync/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { SyncDB } from './db.js';
|
|
2
2
|
export { SyncEngine } from './engine.js';
|
|
3
3
|
export { MemoryBridge } from './memory-bridge.js';
|
|
4
|
+
export { OpenClawBridge } from './openclaw-bridge.js';
|
|
4
5
|
export { getManifests } from './manifest.js';
|
|
5
6
|
export type { SyncConfig } from './types.js';
|
|
6
7
|
export { DEFAULT_SYNC_CONFIG } from './types.js';
|
|
8
|
+
export { VaultBridge, createVaultBridge } from './vault-bridge.js';
|
package/dist/sync/index.js
CHANGED
|
@@ -9,6 +9,7 @@ import { SyncDB } from './db.js';
|
|
|
9
9
|
import { SyncEngine } from './engine.js';
|
|
10
10
|
import { SyncWatcher } from './watcher.js';
|
|
11
11
|
import { MemoryBridge } from './memory-bridge.js';
|
|
12
|
+
import { OpenClawBridge } from './openclaw-bridge.js';
|
|
12
13
|
import { getManifests } from './manifest.js';
|
|
13
14
|
import { NodeManager } from '../nodes/manager.js';
|
|
14
15
|
import { TransferEngine } from '../nodes/transfer.js';
|
|
@@ -22,9 +23,18 @@ function parseArgs(argv) {
|
|
|
22
23
|
return { nodeId, once, ingestOnly };
|
|
23
24
|
}
|
|
24
25
|
function detectNodeId() {
|
|
25
|
-
|
|
26
|
+
const platform = process.platform;
|
|
27
|
+
if (platform === 'win32')
|
|
26
28
|
return 'windows';
|
|
27
|
-
|
|
29
|
+
// Check hostname-based detection
|
|
30
|
+
const hostname = (process.env.HOSTNAME ?? '').toLowerCase();
|
|
31
|
+
if (hostname.includes('contabo'))
|
|
32
|
+
return 'contabo';
|
|
33
|
+
if (hostname.includes('hostinger'))
|
|
34
|
+
return 'hostinger';
|
|
35
|
+
if (hostname.includes('thinkpad'))
|
|
36
|
+
return 'thinkpad';
|
|
37
|
+
return 'unknown';
|
|
28
38
|
}
|
|
29
39
|
async function main() {
|
|
30
40
|
const { nodeId, once, ingestOnly } = parseArgs(process.argv.slice(2));
|
|
@@ -47,11 +57,18 @@ async function main() {
|
|
|
47
57
|
const manifests = getManifests(os);
|
|
48
58
|
// Memory bridge (SQLite -> PostgreSQL)
|
|
49
59
|
const bridge = new MemoryBridge(db, nodeId);
|
|
60
|
+
// OpenClaw knowledge bridge (filesystem -> PostgreSQL)
|
|
61
|
+
const openclawBridge = new OpenClawBridge(db, nodeId);
|
|
62
|
+
const openclawManifest = manifests.find((m) => m.tool === 'openclaw');
|
|
50
63
|
if (ingestOnly) {
|
|
51
64
|
const claudeManifest = manifests.find((m) => m.tool === 'claude-code');
|
|
52
65
|
if (claudeManifest?.ingestDb) {
|
|
53
66
|
const count = await bridge.ingest(claudeManifest.ingestDb);
|
|
54
|
-
process.stderr.write(`Ingested ${count} memory entries\n`);
|
|
67
|
+
process.stderr.write(`Ingested ${count} claude memory entries\n`);
|
|
68
|
+
}
|
|
69
|
+
if (openclawManifest) {
|
|
70
|
+
const count = await openclawBridge.ingest(openclawManifest.baseDir);
|
|
71
|
+
process.stderr.write(`Ingested ${count} openclaw knowledge entries\n`);
|
|
55
72
|
}
|
|
56
73
|
await db.close();
|
|
57
74
|
manager.disconnect();
|
|
@@ -63,11 +80,15 @@ async function main() {
|
|
|
63
80
|
// Single reconciliation pass
|
|
64
81
|
const result = await engine.reconcile(manifests);
|
|
65
82
|
process.stderr.write(`Reconcile: pushed=${result.pushed}, pulled=${result.pulled}, conflicts=${result.conflicts}\n`);
|
|
66
|
-
//
|
|
83
|
+
// Ingest memory.db + openclaw
|
|
67
84
|
const claudeManifest = manifests.find((m) => m.tool === 'claude-code');
|
|
68
85
|
if (claudeManifest?.ingestDb) {
|
|
69
86
|
const count = await bridge.ingest(claudeManifest.ingestDb);
|
|
70
|
-
process.stderr.write(`Ingested ${count} memory entries\n`);
|
|
87
|
+
process.stderr.write(`Ingested ${count} claude memory entries\n`);
|
|
88
|
+
}
|
|
89
|
+
if (openclawManifest) {
|
|
90
|
+
const count = await openclawBridge.ingest(openclawManifest.baseDir);
|
|
91
|
+
process.stderr.write(`Ingested ${count} openclaw knowledge entries\n`);
|
|
71
92
|
}
|
|
72
93
|
await db.close();
|
|
73
94
|
manager.disconnect();
|
|
@@ -94,11 +115,15 @@ async function main() {
|
|
|
94
115
|
// Initial reconcile
|
|
95
116
|
const initial = await engine.reconcile(manifests);
|
|
96
117
|
process.stderr.write(`Initial reconcile: pushed=${initial.pushed}, pulled=${initial.pulled}, conflicts=${initial.conflicts}\n`);
|
|
97
|
-
// Ingest memory.db
|
|
118
|
+
// Ingest on startup: claude memory.db + openclaw filesystem
|
|
98
119
|
const claudeManifest = manifests.find((m) => m.tool === 'claude-code');
|
|
99
120
|
if (claudeManifest?.ingestDb) {
|
|
100
121
|
const count = await bridge.ingest(claudeManifest.ingestDb);
|
|
101
|
-
process.stderr.write(`Ingested ${count} memory entries\n`);
|
|
122
|
+
process.stderr.write(`Ingested ${count} claude memory entries\n`);
|
|
123
|
+
}
|
|
124
|
+
if (openclawManifest) {
|
|
125
|
+
const count = await openclawBridge.ingest(openclawManifest.baseDir);
|
|
126
|
+
process.stderr.write(`Ingested ${count} openclaw knowledge entries\n`);
|
|
102
127
|
}
|
|
103
128
|
// Periodic reconciliation
|
|
104
129
|
const reconcileInterval = setInterval(async () => {
|
|
@@ -113,14 +138,22 @@ async function main() {
|
|
|
113
138
|
process.stderr.write(`[reconcile] error: ${err.message}\n`);
|
|
114
139
|
}
|
|
115
140
|
}, config.reconcileIntervalMs);
|
|
116
|
-
// Periodic
|
|
141
|
+
// Periodic knowledge ingestion (every 15 min): claude memory.db + openclaw filesystem
|
|
117
142
|
const memoryInterval = setInterval(async () => {
|
|
118
143
|
if (claudeManifest?.ingestDb) {
|
|
119
144
|
try {
|
|
120
145
|
await bridge.ingest(claudeManifest.ingestDb);
|
|
121
146
|
}
|
|
122
147
|
catch {
|
|
123
|
-
// Silent fail for memory ingestion
|
|
148
|
+
// Silent fail for claude memory ingestion
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
if (openclawManifest) {
|
|
152
|
+
try {
|
|
153
|
+
await openclawBridge.ingest(openclawManifest.baseDir);
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
// Silent fail for openclaw ingestion
|
|
124
157
|
}
|
|
125
158
|
}
|
|
126
159
|
}, 15 * 60 * 1000);
|
|
@@ -142,8 +175,10 @@ async function main() {
|
|
|
142
175
|
export { SyncDB } from './db.js';
|
|
143
176
|
export { SyncEngine } from './engine.js';
|
|
144
177
|
export { MemoryBridge } from './memory-bridge.js';
|
|
178
|
+
export { OpenClawBridge } from './openclaw-bridge.js';
|
|
145
179
|
export { getManifests } from './manifest.js';
|
|
146
180
|
export { DEFAULT_SYNC_CONFIG } from './types.js';
|
|
181
|
+
export { VaultBridge, createVaultBridge } from './vault-bridge.js';
|
|
147
182
|
// Run if executed directly
|
|
148
183
|
const isDirectRun = process.argv[1]?.endsWith('sync/index.js') || process.argv[1]?.endsWith('sync\\index.js');
|
|
149
184
|
if (isDirectRun) {
|
package/dist/sync/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,mEAAmE;AACnE,EAAE;AACF,SAAS;AACT,4EAA4E;AAC5E,kFAAkF;AAClF,gFAAgF;AAEhF,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;IACxF,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAClD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,YAAY;IACnB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"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"}
|
package/dist/sync/manifest.js
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
// CyberSync — Tool manifests defining what to sync per AI tool
|
|
2
2
|
import { getToolBaseDir } from './paths.js';
|
|
3
|
-
function manifest(tool, os, sync, exclude, ingestDb) {
|
|
3
|
+
function manifest(tool, os, sync, exclude, ingestDb, ingestDirs) {
|
|
4
4
|
return {
|
|
5
5
|
tool,
|
|
6
6
|
baseDir: getToolBaseDir(tool, os),
|
|
7
7
|
syncGlobs: sync,
|
|
8
8
|
excludeGlobs: exclude,
|
|
9
9
|
ingestDb,
|
|
10
|
+
ingestDirs,
|
|
10
11
|
};
|
|
11
12
|
}
|
|
12
13
|
export function getManifests(os) {
|
|
13
|
-
const home = os === 'windows'
|
|
14
|
-
? (process.env.USERPROFILE ?? process.env.HOME ?? '').replaceAll('\\', '/')
|
|
15
|
-
: (process.env.HOME ?? '/root');
|
|
14
|
+
const home = os === 'windows' ? 'C:/Users/Admin' : '/root';
|
|
16
15
|
return [
|
|
17
16
|
manifest('claude-code', os, [
|
|
18
17
|
'agents/**/*.md',
|
|
@@ -58,6 +57,7 @@ export function getManifests(os) {
|
|
|
58
57
|
]),
|
|
59
58
|
manifest('openclaw', os, [
|
|
60
59
|
'agents/**/*',
|
|
60
|
+
'skills/**/*',
|
|
61
61
|
'memory/**/*',
|
|
62
62
|
'workspace/**/*',
|
|
63
63
|
'openclaw.json',
|
|
@@ -69,7 +69,7 @@ export function getManifests(os) {
|
|
|
69
69
|
'canvas/**',
|
|
70
70
|
'telegram/**',
|
|
71
71
|
'devices/**',
|
|
72
|
-
]),
|
|
72
|
+
], undefined, ['agents', 'skills', 'memory', 'workspace', 'identity', 'cron']),
|
|
73
73
|
manifest('codex', os, [
|
|
74
74
|
'config.toml',
|
|
75
75
|
'AGENTS.md',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/sync/manifest.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAG/D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,SAAS,QAAQ,CAAC,IAAc,EAAE,EAAuB,EAAE,IAAc,EAAE,OAAiB,EAAE,QAAiB;
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/sync/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { SyncDB } from './db.js';
|
|
2
|
+
export declare class OpenClawBridge {
|
|
3
|
+
private readonly db;
|
|
4
|
+
private readonly nodeId;
|
|
5
|
+
constructor(db: SyncDB, nodeId: string);
|
|
6
|
+
ingest(baseDir: string): Promise<number>;
|
|
7
|
+
private ingestDirectory;
|
|
8
|
+
private ingestConfig;
|
|
9
|
+
}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
// CyberSync — OpenClaw filesystem -> PostgreSQL knowledge ingestion
|
|
2
|
+
//
|
|
3
|
+
// Walks ~/.openclaw/ directories (agents, skills, memory, workspace, identity, cron)
|
|
4
|
+
// and ingests structured entries into the shared knowledge table.
|
|
5
|
+
// Unlike claude-code's SQLite bridge, OpenClaw stores data as files (JSON, MD, etc).
|
|
6
|
+
import { readFile, readdir, stat } from 'node:fs/promises';
|
|
7
|
+
import { existsSync } from 'node:fs';
|
|
8
|
+
import { basename, extname, join } from 'node:path';
|
|
9
|
+
const MAX_CONTENT_BYTES = 64 * 1024; // 64KB per entry
|
|
10
|
+
const SOURCE_TOOL = 'openclaw';
|
|
11
|
+
export class OpenClawBridge {
|
|
12
|
+
db;
|
|
13
|
+
nodeId;
|
|
14
|
+
constructor(db, nodeId) {
|
|
15
|
+
this.db = db;
|
|
16
|
+
this.nodeId = nodeId;
|
|
17
|
+
}
|
|
18
|
+
async ingest(baseDir) {
|
|
19
|
+
if (!existsSync(baseDir))
|
|
20
|
+
return 0;
|
|
21
|
+
let ingested = 0;
|
|
22
|
+
// Ingest each category directory
|
|
23
|
+
ingested += await this.ingestDirectory(baseDir, 'agents', 'agent');
|
|
24
|
+
ingested += await this.ingestDirectory(baseDir, 'skills', 'skill');
|
|
25
|
+
ingested += await this.ingestDirectory(baseDir, 'memory', 'memory');
|
|
26
|
+
ingested += await this.ingestDirectory(baseDir, 'workspace', 'workspace');
|
|
27
|
+
ingested += await this.ingestDirectory(baseDir, 'identity', 'identity');
|
|
28
|
+
ingested += await this.ingestDirectory(baseDir, 'cron', 'cron');
|
|
29
|
+
// Ingest main config
|
|
30
|
+
ingested += await this.ingestConfig(baseDir);
|
|
31
|
+
return ingested;
|
|
32
|
+
}
|
|
33
|
+
async ingestDirectory(baseDir, dirName, category) {
|
|
34
|
+
const dirPath = join(baseDir, dirName);
|
|
35
|
+
if (!existsSync(dirPath))
|
|
36
|
+
return 0;
|
|
37
|
+
const files = await walkFiles(dirPath);
|
|
38
|
+
let ingested = 0;
|
|
39
|
+
for (const filePath of files) {
|
|
40
|
+
try {
|
|
41
|
+
const parsed = await parseFile(filePath);
|
|
42
|
+
const relPath = filePath.slice(dirPath.length + 1).replaceAll('\\', '/');
|
|
43
|
+
const keyName = deriveKeyName(relPath, parsed.name);
|
|
44
|
+
const key = `openclaw:${category}:${keyName}`;
|
|
45
|
+
await this.db.upsertKnowledge(SOURCE_TOOL, key, {
|
|
46
|
+
source: 'filesystem',
|
|
47
|
+
category,
|
|
48
|
+
name: parsed.name,
|
|
49
|
+
filePath: `${dirName}/${relPath}`,
|
|
50
|
+
node: this.nodeId,
|
|
51
|
+
lastIngested: new Date().toISOString(),
|
|
52
|
+
...parsed.metadata,
|
|
53
|
+
...(parsed.content.length > 0 ? { content: parsed.content } : {}),
|
|
54
|
+
});
|
|
55
|
+
ingested++;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// Skip files that fail to parse
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return ingested;
|
|
62
|
+
}
|
|
63
|
+
async ingestConfig(baseDir) {
|
|
64
|
+
const configPath = join(baseDir, 'openclaw.json');
|
|
65
|
+
if (!existsSync(configPath))
|
|
66
|
+
return 0;
|
|
67
|
+
try {
|
|
68
|
+
const raw = await readFile(configPath, 'utf-8');
|
|
69
|
+
const parsed = tryParseJson(raw);
|
|
70
|
+
await this.db.upsertKnowledge(SOURCE_TOOL, 'openclaw:config:main', {
|
|
71
|
+
source: 'filesystem',
|
|
72
|
+
category: 'config',
|
|
73
|
+
node: this.nodeId,
|
|
74
|
+
lastIngested: new Date().toISOString(),
|
|
75
|
+
...(typeof parsed === 'object' && parsed !== null ? parsed : { rawContent: raw }),
|
|
76
|
+
});
|
|
77
|
+
return 1;
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return 0;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Parse a file based on extension
|
|
85
|
+
async function parseFile(filePath) {
|
|
86
|
+
const raw = await readFile(filePath, 'utf-8');
|
|
87
|
+
const truncated = raw.length > MAX_CONTENT_BYTES ? raw.slice(0, MAX_CONTENT_BYTES) : raw;
|
|
88
|
+
const name = basename(filePath, extname(filePath));
|
|
89
|
+
const ext = extname(filePath).toLowerCase();
|
|
90
|
+
if (ext === '.json') {
|
|
91
|
+
const parsed = tryParseJson(truncated);
|
|
92
|
+
if (typeof parsed === 'object' && parsed !== null) {
|
|
93
|
+
const obj = parsed;
|
|
94
|
+
return {
|
|
95
|
+
name: obj.name ?? name,
|
|
96
|
+
content: '',
|
|
97
|
+
metadata: obj,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
return { name, content: truncated, metadata: {} };
|
|
101
|
+
}
|
|
102
|
+
if (ext === '.md') {
|
|
103
|
+
const { frontmatter, body } = extractFrontmatter(truncated);
|
|
104
|
+
const description = extractFirstHeading(body) ?? body.slice(0, 200).trim();
|
|
105
|
+
return {
|
|
106
|
+
name: frontmatter.name ?? name,
|
|
107
|
+
content: body,
|
|
108
|
+
metadata: {
|
|
109
|
+
...frontmatter,
|
|
110
|
+
description,
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
// All other file types — raw text
|
|
115
|
+
return { name, content: truncated, metadata: {} };
|
|
116
|
+
}
|
|
117
|
+
// Extract YAML-like frontmatter between --- delimiters
|
|
118
|
+
function extractFrontmatter(text) {
|
|
119
|
+
const trimmed = text.trimStart();
|
|
120
|
+
if (!trimmed.startsWith('---')) {
|
|
121
|
+
return { frontmatter: {}, body: text };
|
|
122
|
+
}
|
|
123
|
+
const endIdx = trimmed.indexOf('---', 3);
|
|
124
|
+
if (endIdx === -1) {
|
|
125
|
+
return { frontmatter: {}, body: text };
|
|
126
|
+
}
|
|
127
|
+
const fmBlock = trimmed.slice(3, endIdx).trim();
|
|
128
|
+
const body = trimmed.slice(endIdx + 3).trim();
|
|
129
|
+
// Simple key: value parsing (no nested YAML — avoids adding a dep)
|
|
130
|
+
const frontmatter = {};
|
|
131
|
+
for (const line of fmBlock.split('\n')) {
|
|
132
|
+
const colonIdx = line.indexOf(':');
|
|
133
|
+
if (colonIdx === -1)
|
|
134
|
+
continue;
|
|
135
|
+
const key = line.slice(0, colonIdx).trim();
|
|
136
|
+
const val = line.slice(colonIdx + 1).trim();
|
|
137
|
+
if (key.length === 0)
|
|
138
|
+
continue;
|
|
139
|
+
// Handle arrays: [a, b, c]
|
|
140
|
+
if (val.startsWith('[') && val.endsWith(']')) {
|
|
141
|
+
frontmatter[key] = val.slice(1, -1).split(',').map((s) => s.trim().replace(/^["']|["']$/g, ''));
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
frontmatter[key] = val.replace(/^["']|["']$/g, '');
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return { frontmatter, body };
|
|
148
|
+
}
|
|
149
|
+
// Extract first markdown heading as description
|
|
150
|
+
function extractFirstHeading(text) {
|
|
151
|
+
const match = text.match(/^#+\s+(.+)$/m);
|
|
152
|
+
return match?.[1]?.trim();
|
|
153
|
+
}
|
|
154
|
+
// Derive a clean key name from relative path
|
|
155
|
+
function deriveKeyName(relPath, parsedName) {
|
|
156
|
+
// Use parsed name if available and clean, otherwise derive from path
|
|
157
|
+
if (parsedName && !parsedName.includes('/') && !parsedName.includes('\\')) {
|
|
158
|
+
return parsedName.toLowerCase().replace(/[^a-z0-9_-]/g, '-');
|
|
159
|
+
}
|
|
160
|
+
return relPath
|
|
161
|
+
.replace(/\.[^.]+$/, '')
|
|
162
|
+
.replaceAll('/', '-')
|
|
163
|
+
.replaceAll('\\', '-')
|
|
164
|
+
.toLowerCase()
|
|
165
|
+
.replace(/[^a-z0-9_-]/g, '-');
|
|
166
|
+
}
|
|
167
|
+
// Recursively walk a directory, returning all file paths
|
|
168
|
+
async function walkFiles(dir) {
|
|
169
|
+
const results = [];
|
|
170
|
+
let entries;
|
|
171
|
+
try {
|
|
172
|
+
entries = await readdir(dir, { withFileTypes: true });
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
return results;
|
|
176
|
+
}
|
|
177
|
+
for (const entry of entries) {
|
|
178
|
+
const fullPath = join(dir, entry.name);
|
|
179
|
+
try {
|
|
180
|
+
if (entry.isDirectory()) {
|
|
181
|
+
const sub = await walkFiles(fullPath);
|
|
182
|
+
results.push(...sub);
|
|
183
|
+
}
|
|
184
|
+
else if (entry.isFile()) {
|
|
185
|
+
// Skip files larger than 1MB
|
|
186
|
+
const st = await stat(fullPath);
|
|
187
|
+
if (st.size <= 1024 * 1024) {
|
|
188
|
+
results.push(fullPath);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
// Permission denied or broken symlink
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return results;
|
|
197
|
+
}
|
|
198
|
+
function tryParseJson(value) {
|
|
199
|
+
try {
|
|
200
|
+
return JSON.parse(value);
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
return value;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=openclaw-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openclaw-bridge.js","sourceRoot":"","sources":["../../src/sync/openclaw-bridge.ts"],"names":[],"mappings":"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"}
|