@delfos-ai/cli 1.0.5 → 1.0.9
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 +1 -2
- package/dist/api/__tests__/delfos-api.client.test.d.ts +2 -0
- package/dist/api/__tests__/delfos-api.client.test.d.ts.map +1 -0
- package/dist/api/__tests__/delfos-api.client.test.js +64 -0
- package/dist/api/__tests__/delfos-api.client.test.js.map +1 -0
- package/dist/api/delfos-api.client.d.ts +4 -1
- package/dist/api/delfos-api.client.d.ts.map +1 -1
- package/dist/api/delfos-api.client.js +44 -1
- package/dist/api/delfos-api.client.js.map +1 -1
- package/dist/commands/login.command.d.ts.map +1 -1
- package/dist/commands/login.command.js +15 -9
- package/dist/commands/login.command.js.map +1 -1
- package/dist/commands/logout.command.d.ts.map +1 -1
- package/dist/commands/logout.command.js +5 -5
- package/dist/commands/logout.command.js.map +1 -1
- package/dist/commands/memory/memory-init.command.d.ts +6 -0
- package/dist/commands/memory/memory-init.command.d.ts.map +1 -1
- package/dist/commands/memory/memory-init.command.js +40 -8
- package/dist/commands/memory/memory-init.command.js.map +1 -1
- package/dist/commands/setup/platform.d.ts +12 -0
- package/dist/commands/setup/platform.d.ts.map +1 -0
- package/dist/commands/setup/platform.js +67 -0
- package/dist/commands/setup/platform.js.map +1 -0
- package/dist/commands/setup/setup-context.d.ts +27 -0
- package/dist/commands/setup/setup-context.d.ts.map +1 -0
- package/dist/commands/setup/setup-context.js +45 -0
- package/dist/commands/setup/setup-context.js.map +1 -0
- package/dist/commands/setup/setup-wizard.d.ts +2 -0
- package/dist/commands/setup/setup-wizard.d.ts.map +1 -0
- package/dist/commands/setup/setup-wizard.js +75 -0
- package/dist/commands/setup/setup-wizard.js.map +1 -0
- package/dist/commands/setup/setup.command.d.ts +3 -0
- package/dist/commands/setup/setup.command.d.ts.map +1 -0
- package/dist/commands/setup/setup.command.js +6 -0
- package/dist/commands/setup/setup.command.js.map +1 -0
- package/dist/commands/setup/steps/authenticate.d.ts +6 -0
- package/dist/commands/setup/steps/authenticate.d.ts.map +1 -0
- package/dist/commands/setup/steps/authenticate.js +91 -0
- package/dist/commands/setup/steps/authenticate.js.map +1 -0
- package/dist/commands/setup/steps/check-chromadb.d.ts +3 -0
- package/dist/commands/setup/steps/check-chromadb.d.ts.map +1 -0
- package/dist/commands/setup/steps/check-chromadb.js +208 -0
- package/dist/commands/setup/steps/check-chromadb.js.map +1 -0
- package/dist/commands/setup/steps/check-docker.d.ts +3 -0
- package/dist/commands/setup/steps/check-docker.d.ts.map +1 -0
- package/dist/commands/setup/steps/check-docker.js +238 -0
- package/dist/commands/setup/steps/check-docker.js.map +1 -0
- package/dist/commands/setup/steps/check-node.d.ts +3 -0
- package/dist/commands/setup/steps/check-node.d.ts.map +1 -0
- package/dist/commands/setup/steps/check-node.js +34 -0
- package/dist/commands/setup/steps/check-node.js.map +1 -0
- package/dist/commands/setup/steps/configure-mcp.d.ts +6 -0
- package/dist/commands/setup/steps/configure-mcp.d.ts.map +1 -0
- package/dist/commands/setup/steps/configure-mcp.js +189 -0
- package/dist/commands/setup/steps/configure-mcp.js.map +1 -0
- package/dist/commands/setup/steps/configure-vault.d.ts +6 -0
- package/dist/commands/setup/steps/configure-vault.d.ts.map +1 -0
- package/dist/commands/setup/steps/configure-vault.js +165 -0
- package/dist/commands/setup/steps/configure-vault.js.map +1 -0
- package/dist/commands/setup/steps/index-vault.d.ts +6 -0
- package/dist/commands/setup/steps/index-vault.d.ts.map +1 -0
- package/dist/commands/setup/steps/index-vault.js +66 -0
- package/dist/commands/setup/steps/index-vault.js.map +1 -0
- package/dist/commands/setup/steps/init-vault.d.ts +6 -0
- package/dist/commands/setup/steps/init-vault.d.ts.map +1 -0
- package/dist/commands/setup/steps/init-vault.js +68 -0
- package/dist/commands/setup/steps/init-vault.js.map +1 -0
- package/dist/commands/setup/steps/summary.d.ts +3 -0
- package/dist/commands/setup/steps/summary.d.ts.map +1 -0
- package/dist/commands/setup/steps/summary.js +66 -0
- package/dist/commands/setup/steps/summary.js.map +1 -0
- package/dist/commands/setup/steps/welcome.d.ts +3 -0
- package/dist/commands/setup/steps/welcome.d.ts.map +1 -0
- package/dist/commands/setup/steps/welcome.js +61 -0
- package/dist/commands/setup/steps/welcome.js.map +1 -0
- package/dist/config/__tests__/cli-config.test.d.ts +2 -0
- package/dist/config/__tests__/cli-config.test.d.ts.map +1 -0
- package/dist/config/__tests__/cli-config.test.js +44 -0
- package/dist/config/__tests__/cli-config.test.js.map +1 -0
- package/dist/config/cli-config.d.ts +1 -1
- package/dist/config/cli-config.d.ts.map +1 -1
- package/dist/config/cli-config.js +40 -4
- package/dist/config/cli-config.js.map +1 -1
- package/dist/config/memory.config.d.ts +5 -5
- package/dist/config/memory.config.js +1 -1
- package/dist/config/memory.config.js.map +1 -1
- package/dist/features/memory-index/memory-index.schema.d.ts +4 -4
- package/dist/features/memory-init/index.d.ts +3 -0
- package/dist/features/memory-init/index.d.ts.map +1 -0
- package/dist/features/memory-init/index.js +2 -0
- package/dist/features/memory-init/index.js.map +1 -0
- package/dist/features/memory-read/memory-read.schema.d.ts +10 -10
- package/dist/features/memory-read/rag-reader.js +2 -2
- package/dist/features/memory-read/rag-reader.js.map +1 -1
- package/dist/features/memory-server/config-loader.js +1 -1
- package/dist/features/memory-server/config-loader.js.map +1 -1
- package/dist/features/memory-server/memory-server.d.ts.map +1 -1
- package/dist/features/memory-server/memory-server.js +22 -0
- package/dist/features/memory-server/memory-server.js.map +1 -1
- package/dist/features/memory-server/memory-server.schema.d.ts +17 -20
- package/dist/features/memory-server/memory-server.schema.d.ts.map +1 -1
- package/dist/features/memory-server/memory-server.schema.js +0 -1
- package/dist/features/memory-server/memory-server.schema.js.map +1 -1
- package/dist/features/memory-server/tools/memory-read.handler.js +1 -1
- package/dist/features/memory-server/tools/memory-read.handler.js.map +1 -1
- package/dist/features/memory-shared/__tests__/chunker.test.d.ts +2 -0
- package/dist/features/memory-shared/__tests__/chunker.test.d.ts.map +1 -0
- package/dist/features/memory-shared/__tests__/chunker.test.js +24 -0
- package/dist/features/memory-shared/__tests__/chunker.test.js.map +1 -0
- package/dist/features/memory-shared/__tests__/vault-slug.test.d.ts +2 -0
- package/dist/features/memory-shared/__tests__/vault-slug.test.d.ts.map +1 -0
- package/dist/features/memory-shared/__tests__/vault-slug.test.js +13 -0
- package/dist/features/memory-shared/__tests__/vault-slug.test.js.map +1 -0
- package/dist/features/memory-write/memory-write.schema.d.ts +2 -2
- package/dist/features/memory-write/vault-writer.d.ts.map +1 -1
- package/dist/features/memory-write/vault-writer.js +3 -0
- package/dist/features/memory-write/vault-writer.js.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/crypto/crypto.d.ts +11 -0
- package/dist/infrastructure/crypto/crypto.d.ts.map +1 -0
- package/dist/infrastructure/crypto/crypto.js +57 -0
- package/dist/infrastructure/crypto/crypto.js.map +1 -0
- package/dist/infrastructure/embeddings/__tests__/local-embedding.provider.test.d.ts +2 -0
- package/dist/infrastructure/embeddings/__tests__/local-embedding.provider.test.d.ts.map +1 -0
- package/dist/infrastructure/embeddings/__tests__/local-embedding.provider.test.js +62 -0
- package/dist/infrastructure/embeddings/__tests__/local-embedding.provider.test.js.map +1 -0
- package/dist/infrastructure/embeddings/local-embedding.provider.d.ts +0 -3
- package/dist/infrastructure/embeddings/local-embedding.provider.d.ts.map +1 -1
- package/dist/infrastructure/embeddings/local-embedding.provider.js +7 -4
- package/dist/infrastructure/embeddings/local-embedding.provider.js.map +1 -1
- package/dist/infrastructure/logger/__tests__/logger.test.d.ts +2 -0
- package/dist/infrastructure/logger/__tests__/logger.test.d.ts.map +1 -0
- package/dist/infrastructure/logger/__tests__/logger.test.js +65 -0
- package/dist/infrastructure/logger/__tests__/logger.test.js.map +1 -0
- package/dist/infrastructure/vector-db/__tests__/chroma.adapter.test.d.ts +2 -0
- package/dist/infrastructure/vector-db/__tests__/chroma.adapter.test.d.ts.map +1 -0
- package/dist/infrastructure/vector-db/__tests__/chroma.adapter.test.js +153 -0
- package/dist/infrastructure/vector-db/__tests__/chroma.adapter.test.js.map +1 -0
- package/dist/infrastructure/vector-db/chroma.adapter.d.ts +3 -8
- package/dist/infrastructure/vector-db/chroma.adapter.d.ts.map +1 -1
- package/dist/infrastructure/vector-db/chroma.adapter.js +56 -60
- package/dist/infrastructure/vector-db/chroma.adapter.js.map +1 -1
- package/dist/utils/config.d.ts +2 -2
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +6 -2
- package/dist/utils/config.js.map +1 -1
- package/package.json +15 -9
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { execSync } from 'node:child_process';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { hasSudo, runInstallCommand } from '../platform.js';
|
|
4
|
+
async function installDocker(platform) {
|
|
5
|
+
const { default: ora } = await import('ora');
|
|
6
|
+
const spinner = ora('Installing Docker...').start();
|
|
7
|
+
let command;
|
|
8
|
+
let useSudo = false;
|
|
9
|
+
switch (platform) {
|
|
10
|
+
case 'ubuntu':
|
|
11
|
+
case 'debian':
|
|
12
|
+
command =
|
|
13
|
+
'apt-get update && apt-get install -y docker.io docker-compose-plugin && systemctl enable --now docker && usermod -aG docker $USER';
|
|
14
|
+
useSudo = true;
|
|
15
|
+
break;
|
|
16
|
+
case 'fedora':
|
|
17
|
+
command =
|
|
18
|
+
'dnf install -y docker && systemctl enable --now docker && usermod -aG docker $USER';
|
|
19
|
+
useSudo = true;
|
|
20
|
+
break;
|
|
21
|
+
case 'arch':
|
|
22
|
+
command =
|
|
23
|
+
'pacman -S --noconfirm docker && systemctl enable --now docker && usermod -aG docker $USER';
|
|
24
|
+
useSudo = true;
|
|
25
|
+
break;
|
|
26
|
+
case 'macos':
|
|
27
|
+
spinner.stop();
|
|
28
|
+
// Check for Homebrew
|
|
29
|
+
try {
|
|
30
|
+
execSync('which brew', { stdio: 'pipe' });
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
// Offer to install Homebrew
|
|
34
|
+
const { default: inquirer } = await import('inquirer');
|
|
35
|
+
const { installHomebrew } = await inquirer.prompt([
|
|
36
|
+
{
|
|
37
|
+
type: 'confirm',
|
|
38
|
+
name: 'installHomebrew',
|
|
39
|
+
message: 'Homebrew is required. Install Homebrew now?',
|
|
40
|
+
default: true,
|
|
41
|
+
},
|
|
42
|
+
]);
|
|
43
|
+
if (!installHomebrew) {
|
|
44
|
+
return { success: false };
|
|
45
|
+
}
|
|
46
|
+
const brewSpinner = ora('Installing Homebrew...').start();
|
|
47
|
+
const brewResult = await runInstallCommand('/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"', { timeout: 600000 });
|
|
48
|
+
if (!brewResult.success) {
|
|
49
|
+
brewSpinner.fail('Homebrew installation failed');
|
|
50
|
+
return { success: false };
|
|
51
|
+
}
|
|
52
|
+
brewSpinner.succeed('Homebrew installed');
|
|
53
|
+
}
|
|
54
|
+
spinner.start();
|
|
55
|
+
command = 'brew install --cask docker';
|
|
56
|
+
useSudo = false;
|
|
57
|
+
break;
|
|
58
|
+
case 'windows':
|
|
59
|
+
spinner.stop();
|
|
60
|
+
// Check for winget
|
|
61
|
+
try {
|
|
62
|
+
execSync('winget --version', { stdio: 'pipe' });
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
console.log(chalk.yellow('winget not found. Please install Docker Desktop from: https://www.docker.com/products/docker-desktop'));
|
|
66
|
+
return { success: false };
|
|
67
|
+
}
|
|
68
|
+
spinner.start();
|
|
69
|
+
command =
|
|
70
|
+
'winget install -e --id Docker.DockerDesktop --accept-source-agreements --accept-package-agreements';
|
|
71
|
+
useSudo = false;
|
|
72
|
+
break;
|
|
73
|
+
case 'unknown-linux':
|
|
74
|
+
spinner.stop();
|
|
75
|
+
console.log(chalk.yellow('Unknown Linux distribution. Please install Docker manually following the official documentation: https://docs.docker.com/engine/install/'));
|
|
76
|
+
return { success: false };
|
|
77
|
+
default:
|
|
78
|
+
spinner.stop();
|
|
79
|
+
return { success: false };
|
|
80
|
+
}
|
|
81
|
+
// Check sudo on Linux
|
|
82
|
+
if (useSudo && !hasSudo()) {
|
|
83
|
+
spinner.stop();
|
|
84
|
+
console.log(chalk.yellow('sudo access required. Please install Docker manually with sudo privileges.'));
|
|
85
|
+
console.log(chalk.gray('For Ubuntu/Debian: sudo apt-get update && sudo apt-get install -y docker.io docker-compose-plugin && sudo systemctl enable --now docker'));
|
|
86
|
+
return { success: false };
|
|
87
|
+
}
|
|
88
|
+
const result = await runInstallCommand(command, { sudo: useSudo });
|
|
89
|
+
if (!result.success) {
|
|
90
|
+
spinner.fail('Docker installation failed');
|
|
91
|
+
return { success: false };
|
|
92
|
+
}
|
|
93
|
+
spinner.succeed('Docker installed');
|
|
94
|
+
// Warn about group change on Linux
|
|
95
|
+
if (useSudo &&
|
|
96
|
+
(platform === 'ubuntu' ||
|
|
97
|
+
platform === 'debian' ||
|
|
98
|
+
platform === 'fedora' ||
|
|
99
|
+
platform === 'arch')) {
|
|
100
|
+
console.log(chalk.yellow('\n⚠ Your user was added to the docker group.'));
|
|
101
|
+
console.log(chalk.gray('You may need to log out and log back in for this to take effect.'));
|
|
102
|
+
console.log(chalk.gray('Alternatively, run: newgrp docker (to apply group change in current session)'));
|
|
103
|
+
}
|
|
104
|
+
// Verify installation
|
|
105
|
+
try {
|
|
106
|
+
const versionOutput = execSync('docker --version', {
|
|
107
|
+
stdio: 'pipe',
|
|
108
|
+
encoding: 'utf-8',
|
|
109
|
+
});
|
|
110
|
+
const versionMatch = versionOutput.match(/Docker version (\d+\.\d+\.\d+)/);
|
|
111
|
+
const version = versionMatch ? versionMatch[1] : 'unknown';
|
|
112
|
+
return { success: true, version };
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
return { success: false };
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
async function pollDockerDaemon(maxSeconds = 60) {
|
|
119
|
+
const { default: ora } = await import('ora');
|
|
120
|
+
const spinner = ora('Waiting for Docker daemon to start...').start();
|
|
121
|
+
const startTime = Date.now();
|
|
122
|
+
const interval = 3000; // 3 seconds
|
|
123
|
+
while (Date.now() - startTime < maxSeconds * 1000) {
|
|
124
|
+
try {
|
|
125
|
+
execSync('docker info', { stdio: 'pipe' });
|
|
126
|
+
spinner.succeed('Docker daemon is running');
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
// Daemon not ready yet
|
|
131
|
+
}
|
|
132
|
+
await new Promise((resolve) => setTimeout(resolve, interval));
|
|
133
|
+
}
|
|
134
|
+
spinner.fail('Docker daemon did not start within timeout');
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
export async function checkDocker(ctx) {
|
|
138
|
+
const platform = ctx.platform;
|
|
139
|
+
// Detection: try docker --version
|
|
140
|
+
let version = null;
|
|
141
|
+
try {
|
|
142
|
+
const versionOutput = execSync('docker --version', {
|
|
143
|
+
stdio: 'pipe',
|
|
144
|
+
encoding: 'utf-8',
|
|
145
|
+
});
|
|
146
|
+
const versionMatch = versionOutput.match(/Docker version (\d+\.\d+\.\d+)/);
|
|
147
|
+
version = versionMatch ? versionMatch[1] : null;
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
// Docker not found
|
|
151
|
+
}
|
|
152
|
+
if (version) {
|
|
153
|
+
// Docker is installed, check if daemon is running
|
|
154
|
+
try {
|
|
155
|
+
execSync('docker info', { stdio: 'pipe' });
|
|
156
|
+
console.log(chalk.green('✓'), ` Docker v${version}`);
|
|
157
|
+
return { status: 'pass', message: `v${version}` };
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
// Daemon not running
|
|
161
|
+
console.log(chalk.yellow('⚠'), ` Docker v${version} installed, but daemon not running`);
|
|
162
|
+
if (platform === 'macos' || platform === 'windows') {
|
|
163
|
+
console.log(chalk.yellow('\nPlease open Docker Desktop to start the daemon'));
|
|
164
|
+
const daemonReady = await pollDockerDaemon(60);
|
|
165
|
+
if (daemonReady) {
|
|
166
|
+
return { status: 'pass', message: `v${version}` };
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
status: 'skip',
|
|
170
|
+
message: 'Docker found, daemon not running',
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
// Linux: try to start daemon
|
|
175
|
+
console.log(chalk.yellow('\nAttempting to start Docker daemon...'));
|
|
176
|
+
const startResult = await runInstallCommand('systemctl start docker', {
|
|
177
|
+
sudo: true,
|
|
178
|
+
});
|
|
179
|
+
if (startResult.success) {
|
|
180
|
+
try {
|
|
181
|
+
execSync('docker info', { stdio: 'pipe' });
|
|
182
|
+
console.log(chalk.green('✓'), ` Docker v${version} (daemon started)`);
|
|
183
|
+
return { status: 'pass', message: `v${version}` };
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
// Still not running
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return {
|
|
190
|
+
status: 'skip',
|
|
191
|
+
message: 'Docker found, daemon not running',
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
// Docker not found - offer to install
|
|
197
|
+
const { default: inquirer } = await import('inquirer');
|
|
198
|
+
const { installDocker: shouldInstall } = await inquirer.prompt([
|
|
199
|
+
{
|
|
200
|
+
type: 'confirm',
|
|
201
|
+
name: 'installDocker',
|
|
202
|
+
message: 'Docker is required for ChromaDB. Install Docker now?',
|
|
203
|
+
default: true,
|
|
204
|
+
},
|
|
205
|
+
]);
|
|
206
|
+
if (!shouldInstall) {
|
|
207
|
+
console.log(chalk.yellow('⚠'), ' Skipped — ChromaDB and indexing will also skip');
|
|
208
|
+
return {
|
|
209
|
+
status: 'skip',
|
|
210
|
+
message: 'Skipped — ChromaDB and indexing will also skip',
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
const installResult = await installDocker(platform);
|
|
214
|
+
if (!installResult.success) {
|
|
215
|
+
return {
|
|
216
|
+
status: 'skip',
|
|
217
|
+
message: 'Docker installation failed or skipped',
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
// Wait for daemon on macOS/Windows
|
|
221
|
+
if (platform === 'macos' || platform === 'windows') {
|
|
222
|
+
console.log(chalk.yellow('\nStarting Docker Desktop...'));
|
|
223
|
+
const daemonReady = await pollDockerDaemon(60);
|
|
224
|
+
if (!daemonReady) {
|
|
225
|
+
console.log(chalk.yellow('\nPlease open Docker Desktop manually and re-run `delfos setup`'));
|
|
226
|
+
return {
|
|
227
|
+
status: 'skip',
|
|
228
|
+
message: 'Docker installed, daemon pending',
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
console.log(chalk.green('✓'), ` Docker v${installResult.version} (installed)`);
|
|
233
|
+
return {
|
|
234
|
+
status: 'pass',
|
|
235
|
+
message: `v${installResult.version} (installed)`,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=check-docker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-docker.js","sourceRoot":"","sources":["../../../../src/commands/setup/steps/check-docker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-node.d.ts","sourceRoot":"","sources":["../../../../src/commands/setup/steps/check-node.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEpE,wBAAsB,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAqCtE"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
export async function checkNode(ctx) {
|
|
3
|
+
const version = process.version;
|
|
4
|
+
const majorVersion = parseInt(version.replace(/^v/, '').split('.')[0], 10);
|
|
5
|
+
if (majorVersion >= 22) {
|
|
6
|
+
console.log(chalk.green('✓'), ` Node.js ${version}`);
|
|
7
|
+
return { status: 'pass', message: version };
|
|
8
|
+
}
|
|
9
|
+
console.log(chalk.red('✗'), ` Node.js ${version} — requires v22+`);
|
|
10
|
+
// Show platform-specific upgrade instructions
|
|
11
|
+
const platform = ctx.platform;
|
|
12
|
+
let instructions = '';
|
|
13
|
+
switch (platform) {
|
|
14
|
+
case 'ubuntu':
|
|
15
|
+
case 'debian':
|
|
16
|
+
instructions =
|
|
17
|
+
'curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && sudo apt-get install -y nodejs';
|
|
18
|
+
break;
|
|
19
|
+
case 'macos':
|
|
20
|
+
instructions = 'brew install node@22 or nvm install 22';
|
|
21
|
+
break;
|
|
22
|
+
case 'windows':
|
|
23
|
+
instructions =
|
|
24
|
+
'winget install OpenJS.NodeJS.LTS or download from nodejs.org';
|
|
25
|
+
break;
|
|
26
|
+
default:
|
|
27
|
+
instructions = 'nvm install 22 or download from nodejs.org';
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
console.log(chalk.yellow('\nUpgrade instructions:'));
|
|
31
|
+
console.log(chalk.gray(instructions));
|
|
32
|
+
return { status: 'fail', message: `${version} — requires v22+` };
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=check-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-node.js","sourceRoot":"","sources":["../../../../src/commands/setup/steps/check-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAiB;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE3E,IAAI,YAAY,IAAI,EAAE,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,YAAY,OAAO,EAAE,CAAC,CAAC;QACrD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC9C,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,YAAY,OAAO,kBAAkB,CAAC,CAAC;IAEnE,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC9B,IAAI,YAAY,GAAG,EAAE,CAAC;IAEtB,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ;YACX,YAAY;gBACV,qGAAqG,CAAC;YACxG,MAAM;QACR,KAAK,OAAO;YACV,YAAY,GAAG,wCAAwC,CAAC;YACxD,MAAM;QACR,KAAK,SAAS;YACZ,YAAY;gBACV,8DAA8D,CAAC;YACjE,MAAM;QACR;YACE,YAAY,GAAG,4CAA4C,CAAC;YAC5D,MAAM;IACV,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAEtC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,kBAAkB,EAAE,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* configure-mcp.ts — Step 7: Detect IDEs and configure MCP servers.
|
|
3
|
+
*/
|
|
4
|
+
import type { SetupContext, StepResult } from '../setup-context.js';
|
|
5
|
+
export declare function configureMcp(ctx: SetupContext): Promise<StepResult>;
|
|
6
|
+
//# sourceMappingURL=configure-mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configure-mcp.d.ts","sourceRoot":"","sources":["../../../../src/commands/setup/steps/configure-mcp.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAyGpE,wBAAsB,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAgLzE"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* configure-mcp.ts — Step 7: Detect IDEs and configure MCP servers.
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from 'node:fs';
|
|
5
|
+
import * as os from 'node:os';
|
|
6
|
+
import * as path from 'node:path';
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
function getIdeConfigs() {
|
|
9
|
+
const homeDir = os.homedir();
|
|
10
|
+
const platform = process.platform;
|
|
11
|
+
const configs = [];
|
|
12
|
+
// Claude Code
|
|
13
|
+
configs.push({
|
|
14
|
+
name: 'Claude Code',
|
|
15
|
+
configPath: path.join(homeDir, '.claude.json'),
|
|
16
|
+
rootKey: 'mcpServers',
|
|
17
|
+
needsType: false,
|
|
18
|
+
detectPath: path.join(homeDir, '.claude'),
|
|
19
|
+
});
|
|
20
|
+
// VS Code (Copilot)
|
|
21
|
+
let vscodeConfigPath;
|
|
22
|
+
let vscodeDetectPath;
|
|
23
|
+
if (platform === 'linux') {
|
|
24
|
+
vscodeConfigPath = path.join(homeDir, '.config', 'Code', 'User', 'mcp.json');
|
|
25
|
+
vscodeDetectPath = path.join(homeDir, '.config', 'Code');
|
|
26
|
+
}
|
|
27
|
+
else if (platform === 'darwin') {
|
|
28
|
+
vscodeConfigPath = path.join(homeDir, 'Library', 'Application Support', 'Code', 'User', 'mcp.json');
|
|
29
|
+
vscodeDetectPath = path.join(homeDir, 'Library', 'Application Support', 'Code');
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
// Windows
|
|
33
|
+
const appData = process.env.APPDATA ?? path.join(homeDir, 'AppData', 'Roaming');
|
|
34
|
+
vscodeConfigPath = path.join(appData, 'Code', 'User', 'mcp.json');
|
|
35
|
+
vscodeDetectPath = path.join(appData, 'Code');
|
|
36
|
+
}
|
|
37
|
+
configs.push({
|
|
38
|
+
name: 'VS Code (Copilot)',
|
|
39
|
+
configPath: vscodeConfigPath,
|
|
40
|
+
rootKey: 'servers',
|
|
41
|
+
needsType: true,
|
|
42
|
+
detectPath: vscodeDetectPath,
|
|
43
|
+
});
|
|
44
|
+
// Cursor
|
|
45
|
+
configs.push({
|
|
46
|
+
name: 'Cursor',
|
|
47
|
+
configPath: path.join(homeDir, '.cursor', 'mcp.json'),
|
|
48
|
+
rootKey: 'mcpServers',
|
|
49
|
+
needsType: false,
|
|
50
|
+
detectPath: path.join(homeDir, '.cursor'),
|
|
51
|
+
});
|
|
52
|
+
// Windsurf
|
|
53
|
+
configs.push({
|
|
54
|
+
name: 'Windsurf',
|
|
55
|
+
configPath: path.join(homeDir, '.codeium', 'windsurf', 'mcp_config.json'),
|
|
56
|
+
rootKey: 'mcpServers',
|
|
57
|
+
needsType: false,
|
|
58
|
+
detectPath: path.join(homeDir, '.codeium', 'windsurf'),
|
|
59
|
+
});
|
|
60
|
+
return configs;
|
|
61
|
+
}
|
|
62
|
+
function isIdeInstalled(ide) {
|
|
63
|
+
return fs.existsSync(ide.detectPath);
|
|
64
|
+
}
|
|
65
|
+
function buildMcpEntry(vaultPath, needsType) {
|
|
66
|
+
const entry = {
|
|
67
|
+
command: 'delfos',
|
|
68
|
+
args: ['mcp', 'memory', '--vault-path', vaultPath],
|
|
69
|
+
};
|
|
70
|
+
if (needsType) {
|
|
71
|
+
entry.type = 'stdio';
|
|
72
|
+
}
|
|
73
|
+
return entry;
|
|
74
|
+
}
|
|
75
|
+
export async function configureMcp(ctx) {
|
|
76
|
+
try {
|
|
77
|
+
if (!ctx.vaultPath) {
|
|
78
|
+
return { status: 'skip', message: 'No vault configured' };
|
|
79
|
+
}
|
|
80
|
+
const ideConfigs = getIdeConfigs();
|
|
81
|
+
const installedIdes = ideConfigs.filter(isIdeInstalled);
|
|
82
|
+
if (installedIdes.length === 0) {
|
|
83
|
+
console.log(chalk.yellow('⚠ No supported IDE detected — configure MCP manually later\n'));
|
|
84
|
+
console.log('Add the following to your IDE config:\n');
|
|
85
|
+
console.log(chalk.gray(JSON.stringify({
|
|
86
|
+
'delfos-memory': {
|
|
87
|
+
command: 'delfos',
|
|
88
|
+
args: ['mcp', 'memory', '--vault-path', ctx.vaultPath],
|
|
89
|
+
},
|
|
90
|
+
}, null, 2)));
|
|
91
|
+
console.log(chalk.gray('\nConfig file locations:'));
|
|
92
|
+
console.log(chalk.gray(' Claude Code: ~/.claude.json (key: mcpServers)'));
|
|
93
|
+
console.log(chalk.gray(' VS Code: ~/.config/Code/User/mcp.json (key: servers, add "type": "stdio")'));
|
|
94
|
+
console.log(chalk.gray(' Cursor: ~/.cursor/mcp.json (key: mcpServers)'));
|
|
95
|
+
console.log(chalk.gray(' Windsurf: ~/.codeium/windsurf/mcp_config.json (key: mcpServers)'));
|
|
96
|
+
return { status: 'skip', message: 'No supported IDE detected' };
|
|
97
|
+
}
|
|
98
|
+
const configuredIdes = [];
|
|
99
|
+
const alreadyConfiguredIdes = [];
|
|
100
|
+
const { default: inquirer } = await import('inquirer');
|
|
101
|
+
for (const ide of installedIdes) {
|
|
102
|
+
try {
|
|
103
|
+
// Read existing config — distinguish missing file from malformed JSON
|
|
104
|
+
let existingConfig = {};
|
|
105
|
+
if (fs.existsSync(ide.configPath)) {
|
|
106
|
+
try {
|
|
107
|
+
const raw = fs.readFileSync(ide.configPath, 'utf-8');
|
|
108
|
+
existingConfig = JSON.parse(raw);
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
console.log(chalk.yellow(` ⚠ ${ide.name}: config file contains invalid JSON — skipping to avoid data loss`));
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// Check if delfos-memory already exists with identical args
|
|
116
|
+
const root = existingConfig[ide.rootKey];
|
|
117
|
+
const existingEntry = root?.['delfos-memory'];
|
|
118
|
+
const newEntry = buildMcpEntry(ctx.vaultPath, ide.needsType);
|
|
119
|
+
if (existingEntry &&
|
|
120
|
+
JSON.stringify(existingEntry) === JSON.stringify(newEntry)) {
|
|
121
|
+
console.log(chalk.gray(` ${ide.name}: already configured`));
|
|
122
|
+
alreadyConfiguredIdes.push(ide.name);
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
// Show the entry being added
|
|
126
|
+
console.log(chalk.blue(`\n ${ide.name}:`));
|
|
127
|
+
console.log(chalk.gray(' Adding MCP entry:'));
|
|
128
|
+
console.log(chalk.gray(' ' +
|
|
129
|
+
JSON.stringify({ 'delfos-memory': newEntry }, null, 2).replace(/\n/g, '\n ')));
|
|
130
|
+
const { confirm } = await inquirer.prompt([
|
|
131
|
+
{
|
|
132
|
+
type: 'confirm',
|
|
133
|
+
name: 'confirm',
|
|
134
|
+
message: `Write MCP config to ${ide.name}?`,
|
|
135
|
+
default: true,
|
|
136
|
+
},
|
|
137
|
+
]);
|
|
138
|
+
if (!confirm) {
|
|
139
|
+
console.log(chalk.gray(` Skipped ${ide.name}`));
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
// Deep merge the new entry
|
|
143
|
+
if (!root) {
|
|
144
|
+
existingConfig[ide.rootKey] = {};
|
|
145
|
+
}
|
|
146
|
+
existingConfig[ide.rootKey]['delfos-memory'] = newEntry;
|
|
147
|
+
// Write file with 2-space indent
|
|
148
|
+
const dir = path.dirname(ide.configPath);
|
|
149
|
+
if (!fs.existsSync(dir)) {
|
|
150
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
151
|
+
}
|
|
152
|
+
fs.writeFileSync(ide.configPath, JSON.stringify(existingConfig, null, 2), 'utf-8');
|
|
153
|
+
console.log(chalk.green(` ✓ ${ide.name} configured`));
|
|
154
|
+
configuredIdes.push(ide.name);
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
// Re-throw interrupt signals so the user can exit the wizard
|
|
158
|
+
if (error instanceof Error &&
|
|
159
|
+
(error.message.includes('force closed') ||
|
|
160
|
+
error.message.includes('prompt was closed'))) {
|
|
161
|
+
throw error;
|
|
162
|
+
}
|
|
163
|
+
console.log(chalk.yellow(` ⚠ ${ide.name}: ${error instanceof Error ? error.message : String(error)}`));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
ctx.mcpConfigured =
|
|
167
|
+
configuredIdes.length > 0 || alreadyConfiguredIdes.length > 0;
|
|
168
|
+
if (configuredIdes.length === 0 && alreadyConfiguredIdes.length > 0) {
|
|
169
|
+
return {
|
|
170
|
+
status: 'pass',
|
|
171
|
+
message: `Already configured: ${alreadyConfiguredIdes.join(', ')}`,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
if (configuredIdes.length === 0) {
|
|
175
|
+
return {
|
|
176
|
+
status: 'skip',
|
|
177
|
+
message: 'No IDEs were configured — add manually later',
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
return { status: 'pass', message: configuredIdes.join(', ') };
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
return {
|
|
184
|
+
status: 'fail',
|
|
185
|
+
message: error instanceof Error ? error.message : String(error),
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=configure-mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configure-mcp.js","sourceRoot":"","sources":["../../../../src/commands/setup/steps/configure-mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* configure-vault.ts — Step 4: Auto-detect Obsidian vaults and configure path.
|
|
3
|
+
*/
|
|
4
|
+
import type { SetupContext, StepResult } from '../setup-context.js';
|
|
5
|
+
export declare function configureVault(ctx: SetupContext): Promise<StepResult>;
|
|
6
|
+
//# sourceMappingURL=configure-vault.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configure-vault.d.ts","sourceRoot":"","sources":["../../../../src/commands/setup/steps/configure-vault.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEpE,wBAAsB,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAkH3E"}
|