omniwire 2.1.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 +8 -2
- 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 +119 -34
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/sync-tools.d.ts +2 -1
- package/dist/mcp/sync-tools.js +77 -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/db.d.ts +2 -0
- package/dist/sync/db.js +15 -0
- package/dist/sync/db.js.map +1 -1
- package/dist/sync/engine.d.ts +3 -1
- package/dist/sync/engine.js +22 -3
- 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/secrets.js +14 -11
- package/dist/sync/secrets.js.map +1 -1
- package/dist/sync/types.d.ts +1 -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/mesh.example.json +39 -0
- package/motd/00-cybernord +410 -0
- package/package.json +3 -37
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
// CyberBase Obsidian Vault Bridge � mirrors PostgreSQL data as Obsidian markdown
|
|
2
|
+
// Every sync item, knowledge entry, and memory gets a .md file in the vault
|
|
3
|
+
// Obsidian Sync handles cloud backup automatically
|
|
4
|
+
import { writeFile, mkdir, unlink } from 'node:fs/promises';
|
|
5
|
+
import { join, dirname } from 'node:path';
|
|
6
|
+
import { homedir, platform } from 'node:os';
|
|
7
|
+
const VAULT_PATHS = {
|
|
8
|
+
windows: join(homedir(), 'Documents', 'BuisnessProjects', 'CyberBase'),
|
|
9
|
+
linux: join(homedir(), '.cyberbase', 'vault'),
|
|
10
|
+
};
|
|
11
|
+
function getVaultPath() {
|
|
12
|
+
return VAULT_PATHS[platform() === 'win32' ? 'windows' : 'linux'];
|
|
13
|
+
}
|
|
14
|
+
function sanitizeFilename(name) {
|
|
15
|
+
return name.replace(/[<>:"/\|?*]/g, '_').replace(/\s+/g, ' ').trim();
|
|
16
|
+
}
|
|
17
|
+
function toFrontmatter(meta) {
|
|
18
|
+
const lines = ['---'];
|
|
19
|
+
for (const [k, v] of Object.entries(meta)) {
|
|
20
|
+
if (v === null || v === undefined)
|
|
21
|
+
continue;
|
|
22
|
+
if (typeof v === 'object') {
|
|
23
|
+
lines.push(`${k}: ${JSON.stringify(v)}`);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
lines.push(`${k}: ${String(v)}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
lines.push('---');
|
|
30
|
+
return lines.join('\n');
|
|
31
|
+
}
|
|
32
|
+
export class VaultBridge {
|
|
33
|
+
vaultPath;
|
|
34
|
+
constructor(vaultPathOverride) {
|
|
35
|
+
this.vaultPath = vaultPathOverride ?? getVaultPath();
|
|
36
|
+
}
|
|
37
|
+
getVaultPath() {
|
|
38
|
+
return this.vaultPath;
|
|
39
|
+
}
|
|
40
|
+
// Write a sync item as markdown
|
|
41
|
+
async writeSyncItem(tool, relPath, content, meta) {
|
|
42
|
+
const folder = join(this.vaultPath, 'sync', sanitizeFilename(tool));
|
|
43
|
+
const filename = sanitizeFilename(relPath.replace(/\//g, '_'));
|
|
44
|
+
const absPath = join(folder, filename.endsWith('.md') ? filename : `${filename}.md`);
|
|
45
|
+
const textContent = Buffer.isBuffer(content) ? content.toString('utf-8') : content;
|
|
46
|
+
const frontmatter = toFrontmatter({
|
|
47
|
+
tool,
|
|
48
|
+
path: relPath,
|
|
49
|
+
synced: new Date().toISOString(),
|
|
50
|
+
...meta,
|
|
51
|
+
});
|
|
52
|
+
const md = `${frontmatter}\n\n${textContent}\n`;
|
|
53
|
+
await mkdir(dirname(absPath), { recursive: true });
|
|
54
|
+
await writeFile(absPath, md, 'utf-8');
|
|
55
|
+
}
|
|
56
|
+
// Write a knowledge entry
|
|
57
|
+
async writeKnowledge(sourceTool, key, value) {
|
|
58
|
+
const folder = join(this.vaultPath, 'knowledge', sanitizeFilename(sourceTool));
|
|
59
|
+
const filename = sanitizeFilename(key);
|
|
60
|
+
const absPath = join(folder, `${filename}.md`);
|
|
61
|
+
const frontmatter = toFrontmatter({
|
|
62
|
+
source: sourceTool,
|
|
63
|
+
key,
|
|
64
|
+
updated: new Date().toISOString(),
|
|
65
|
+
});
|
|
66
|
+
const body = typeof value === 'string' ? value : JSON.stringify(value, null, 2);
|
|
67
|
+
const md = `${frontmatter}\n\n${body}\n`;
|
|
68
|
+
await mkdir(dirname(absPath), { recursive: true });
|
|
69
|
+
await writeFile(absPath, md, 'utf-8');
|
|
70
|
+
}
|
|
71
|
+
// Write a Claude memory entry
|
|
72
|
+
async writeMemory(nodeId, key, value) {
|
|
73
|
+
const folder = join(this.vaultPath, 'memory', sanitizeFilename(nodeId));
|
|
74
|
+
const filename = sanitizeFilename(key);
|
|
75
|
+
const absPath = join(folder, `${filename}.md`);
|
|
76
|
+
const frontmatter = toFrontmatter({
|
|
77
|
+
node: nodeId,
|
|
78
|
+
key,
|
|
79
|
+
ingested: new Date().toISOString(),
|
|
80
|
+
});
|
|
81
|
+
const md = `${frontmatter}\n\n${value}\n`;
|
|
82
|
+
await mkdir(dirname(absPath), { recursive: true });
|
|
83
|
+
await writeFile(absPath, md, 'utf-8');
|
|
84
|
+
}
|
|
85
|
+
// Write a sync event log entry (append to daily log)
|
|
86
|
+
async logEvent(eventType, detail, nodeId) {
|
|
87
|
+
const today = new Date().toISOString().split('T')[0];
|
|
88
|
+
const folder = join(this.vaultPath, 'logs');
|
|
89
|
+
const absPath = join(folder, `${today}.md`);
|
|
90
|
+
const line = `- **${new Date().toISOString().split('T')[1].slice(0, 8)}** \`${eventType}\` [${nodeId}] ${detail}\n`;
|
|
91
|
+
await mkdir(folder, { recursive: true });
|
|
92
|
+
try {
|
|
93
|
+
const { appendFile } = await import('node:fs/promises');
|
|
94
|
+
await appendFile(absPath, line, 'utf-8');
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
await writeFile(absPath, `# CyberBase Sync Log \u2014 ${today}\n\n${line}`, 'utf-8');
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Delete a sync item from vault
|
|
101
|
+
async deleteSyncItem(tool, relPath) {
|
|
102
|
+
const folder = join(this.vaultPath, 'sync', sanitizeFilename(tool));
|
|
103
|
+
const filename = sanitizeFilename(relPath.replace(/\//g, '_'));
|
|
104
|
+
const absPath = join(folder, filename.endsWith('.md') ? filename : `${filename}.md`);
|
|
105
|
+
try {
|
|
106
|
+
await unlink(absPath);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
// File doesn't exist, that's fine
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Write vault index (MOC - Map of Content)
|
|
113
|
+
async writeIndex() {
|
|
114
|
+
const absPath = join(this.vaultPath, 'CyberBase.md');
|
|
115
|
+
const md = `---
|
|
116
|
+
aliases: [CyberBase, Home]
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
# CyberBase
|
|
120
|
+
|
|
121
|
+
> Unified knowledge layer \u2014 PostgreSQL primary + Obsidian backup
|
|
122
|
+
|
|
123
|
+
## Sections
|
|
124
|
+
|
|
125
|
+
- [[sync/]] \u2014 Synced config files across all nodes
|
|
126
|
+
- [[knowledge/]] \u2014 Tool knowledge base entries
|
|
127
|
+
- [[memory/]] \u2014 Claude memory entries per node
|
|
128
|
+
- [[logs/]] \u2014 Daily sync event logs
|
|
129
|
+
|
|
130
|
+
## Nodes
|
|
131
|
+
|
|
132
|
+
| Node | Role | Status |
|
|
133
|
+
|------|------|--------|
|
|
134
|
+
| windows | controller | local |
|
|
135
|
+
| contabo | storage | remote |
|
|
136
|
+
| hostinger | compute | remote |
|
|
137
|
+
| thinkpad | gpu | remote |
|
|
138
|
+
|
|
139
|
+
## Database
|
|
140
|
+
|
|
141
|
+
- **Host:** 10.10.0.1:5432
|
|
142
|
+
- **Database:** cyberbase
|
|
143
|
+
- **Engine:** PostgreSQL 16
|
|
144
|
+
`;
|
|
145
|
+
await mkdir(dirname(absPath), { recursive: true });
|
|
146
|
+
await writeFile(absPath, md, 'utf-8');
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
export function createVaultBridge(vaultPath) {
|
|
150
|
+
return new VaultBridge(vaultPath);
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=vault-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault-bridge.js","sourceRoot":"","sources":["../../src/sync/vault-bridge.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,4EAA4E;AAC5E,mDAAmD;AAEnD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAW,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,WAAW,GAA2B;IAC1C,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,CAAC;IACtE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC;CAC9C,CAAC;AAEF,SAAS,YAAY;IACnB,OAAO,WAAW,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACvE,CAAC;AAED,SAAS,aAAa,CAAC,IAA6B;IAClD,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;IACtB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;YAAE,SAAS;QAC5C,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,OAAO,WAAW;IACd,SAAS,CAAS;IAE1B,YAAY,iBAA0B;QACpC,IAAI,CAAC,SAAS,GAAG,iBAAiB,IAAI,YAAY,EAAE,CAAC;IACvD,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,gCAAgC;IAChC,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,OAAe,EAAE,OAAwB,EAAE,IAA8B;QACzG,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,KAAK,CAAC,CAAC;QAErF,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAEnF,MAAM,WAAW,GAAG,aAAa,CAAC;YAChC,IAAI;YACJ,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAChC,GAAG,IAAI;SACR,CAAC,CAAC;QAEH,MAAM,EAAE,GAAG,GAAG,WAAW,OAAO,WAAW,IAAI,CAAC;QAEhD,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,0BAA0B;IAC1B,KAAK,CAAC,cAAc,CAAC,UAAkB,EAAE,GAAW,EAAE,KAA8B;QAClF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/E,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC;QAE/C,MAAM,WAAW,GAAG,aAAa,CAAC;YAChC,MAAM,EAAE,UAAU;YAClB,GAAG;YACH,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SAClC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAChF,MAAM,EAAE,GAAG,GAAG,WAAW,OAAO,IAAI,IAAI,CAAC;QAEzC,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,8BAA8B;IAC9B,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,GAAW,EAAE,KAAa;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC;QAE/C,MAAM,WAAW,GAAG,aAAa,CAAC;YAChC,IAAI,EAAE,MAAM;YACZ,GAAG;YACH,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACnC,CAAC,CAAC;QAEH,MAAM,EAAE,GAAG,GAAG,WAAW,OAAO,KAAK,IAAI,CAAC;QAE1C,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,qDAAqD;IACrD,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAc;QAC9D,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC;QAE5C,MAAM,IAAI,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,SAAS,OAAO,MAAM,KAAK,MAAM,IAAI,CAAC;QAEpH,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzC,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YACxD,MAAM,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,SAAS,CAAC,OAAO,EAAE,+BAA+B,KAAK,OAAO,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,OAAe;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,KAAK,CAAC,CAAC;QAErF,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,kCAAkC;QACpC,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,KAAK,CAAC,UAAU;QACd,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAErD,MAAM,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Bd,CAAC;QAEE,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAAC,SAAkB;IAClD,OAAO,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;AACpC,CAAC"}
|
package/dist/ui/format.js
CHANGED
|
@@ -11,22 +11,20 @@ export const magenta = chalk.magenta;
|
|
|
11
11
|
export const blue = chalk.blue;
|
|
12
12
|
export const gray = chalk.gray;
|
|
13
13
|
export const white = chalk.white;
|
|
14
|
-
// Node-specific colors
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
colorIndex++;
|
|
22
|
-
}
|
|
23
|
-
return NODE_COLORS[nodeId];
|
|
24
|
-
}
|
|
14
|
+
// Node-specific colors
|
|
15
|
+
const NODE_COLORS = {
|
|
16
|
+
windows: chalk.blue.bold,
|
|
17
|
+
contabo: chalk.green.bold,
|
|
18
|
+
hostinger: chalk.magenta.bold,
|
|
19
|
+
thinkpad: chalk.cyan.bold,
|
|
20
|
+
};
|
|
25
21
|
export function nodeColor(nodeId) {
|
|
26
|
-
|
|
22
|
+
const colorFn = NODE_COLORS[nodeId] ?? chalk.white.bold;
|
|
23
|
+
return colorFn(`[${nodeId}]`);
|
|
27
24
|
}
|
|
28
25
|
export function nodeTag(nodeId) {
|
|
29
|
-
|
|
26
|
+
const colorFn = NODE_COLORS[nodeId] ?? chalk.white;
|
|
27
|
+
return colorFn(nodeId);
|
|
30
28
|
}
|
|
31
29
|
// Simple ASCII table formatter
|
|
32
30
|
export function formatTable(headers, rows) {
|
|
@@ -101,7 +99,10 @@ ${bold(cyan('╚═════════════════════
|
|
|
101
99
|
// Prompt string with node indicators
|
|
102
100
|
export function prompt(onlineNodes) {
|
|
103
101
|
const indicators = onlineNodes
|
|
104
|
-
.map((id) =>
|
|
102
|
+
.map((id) => {
|
|
103
|
+
const colorFn = NODE_COLORS[id] ?? chalk.white;
|
|
104
|
+
return colorFn('●');
|
|
105
|
+
})
|
|
105
106
|
.join('');
|
|
106
107
|
return `${indicators} ${bold(cyan('omniwire'))}${dim('>')} `;
|
|
107
108
|
}
|
package/dist/ui/format.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/ui/format.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAE9C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,iDAAiD;AACjD,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AAC/B,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;AAC7B,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;AAC7B,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACjC,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AACnC,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AAC/B,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AACrC,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AAC/B,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AAC/B,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAEjC,
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/ui/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"nodes": [
|
|
3
|
+
{
|
|
4
|
+
"id": "server1",
|
|
5
|
+
"alias": "s1",
|
|
6
|
+
"host": "10.0.0.1",
|
|
7
|
+
"port": 22,
|
|
8
|
+
"user": "root",
|
|
9
|
+
"identityFile": "id_ed25519",
|
|
10
|
+
"os": "linux",
|
|
11
|
+
"role": "storage",
|
|
12
|
+
"tags": ["vps", "primary", "docker"]
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "server2",
|
|
16
|
+
"alias": "s2",
|
|
17
|
+
"host": "10.0.0.2",
|
|
18
|
+
"port": 22,
|
|
19
|
+
"user": "root",
|
|
20
|
+
"identityFile": "id_ed25519",
|
|
21
|
+
"os": "linux",
|
|
22
|
+
"role": "compute",
|
|
23
|
+
"tags": ["vps", "secondary"]
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "laptop",
|
|
27
|
+
"alias": "lp",
|
|
28
|
+
"host": "10.0.0.3",
|
|
29
|
+
"port": 22,
|
|
30
|
+
"user": "root",
|
|
31
|
+
"identityFile": "id_ed25519",
|
|
32
|
+
"os": "linux",
|
|
33
|
+
"role": "gpu+browser",
|
|
34
|
+
"tags": ["laptop", "gpu"]
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"meshSubnet": "10.0.0.0/24",
|
|
38
|
+
"defaultNode": "local"
|
|
39
|
+
}
|