@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.
Files changed (148) hide show
  1. package/README.md +1 -2
  2. package/dist/api/__tests__/delfos-api.client.test.d.ts +2 -0
  3. package/dist/api/__tests__/delfos-api.client.test.d.ts.map +1 -0
  4. package/dist/api/__tests__/delfos-api.client.test.js +64 -0
  5. package/dist/api/__tests__/delfos-api.client.test.js.map +1 -0
  6. package/dist/api/delfos-api.client.d.ts +4 -1
  7. package/dist/api/delfos-api.client.d.ts.map +1 -1
  8. package/dist/api/delfos-api.client.js +44 -1
  9. package/dist/api/delfos-api.client.js.map +1 -1
  10. package/dist/commands/login.command.d.ts.map +1 -1
  11. package/dist/commands/login.command.js +15 -9
  12. package/dist/commands/login.command.js.map +1 -1
  13. package/dist/commands/logout.command.d.ts.map +1 -1
  14. package/dist/commands/logout.command.js +5 -5
  15. package/dist/commands/logout.command.js.map +1 -1
  16. package/dist/commands/memory/memory-init.command.d.ts +6 -0
  17. package/dist/commands/memory/memory-init.command.d.ts.map +1 -1
  18. package/dist/commands/memory/memory-init.command.js +40 -8
  19. package/dist/commands/memory/memory-init.command.js.map +1 -1
  20. package/dist/commands/setup/platform.d.ts +12 -0
  21. package/dist/commands/setup/platform.d.ts.map +1 -0
  22. package/dist/commands/setup/platform.js +67 -0
  23. package/dist/commands/setup/platform.js.map +1 -0
  24. package/dist/commands/setup/setup-context.d.ts +27 -0
  25. package/dist/commands/setup/setup-context.d.ts.map +1 -0
  26. package/dist/commands/setup/setup-context.js +45 -0
  27. package/dist/commands/setup/setup-context.js.map +1 -0
  28. package/dist/commands/setup/setup-wizard.d.ts +2 -0
  29. package/dist/commands/setup/setup-wizard.d.ts.map +1 -0
  30. package/dist/commands/setup/setup-wizard.js +75 -0
  31. package/dist/commands/setup/setup-wizard.js.map +1 -0
  32. package/dist/commands/setup/setup.command.d.ts +3 -0
  33. package/dist/commands/setup/setup.command.d.ts.map +1 -0
  34. package/dist/commands/setup/setup.command.js +6 -0
  35. package/dist/commands/setup/setup.command.js.map +1 -0
  36. package/dist/commands/setup/steps/authenticate.d.ts +6 -0
  37. package/dist/commands/setup/steps/authenticate.d.ts.map +1 -0
  38. package/dist/commands/setup/steps/authenticate.js +91 -0
  39. package/dist/commands/setup/steps/authenticate.js.map +1 -0
  40. package/dist/commands/setup/steps/check-chromadb.d.ts +3 -0
  41. package/dist/commands/setup/steps/check-chromadb.d.ts.map +1 -0
  42. package/dist/commands/setup/steps/check-chromadb.js +208 -0
  43. package/dist/commands/setup/steps/check-chromadb.js.map +1 -0
  44. package/dist/commands/setup/steps/check-docker.d.ts +3 -0
  45. package/dist/commands/setup/steps/check-docker.d.ts.map +1 -0
  46. package/dist/commands/setup/steps/check-docker.js +238 -0
  47. package/dist/commands/setup/steps/check-docker.js.map +1 -0
  48. package/dist/commands/setup/steps/check-node.d.ts +3 -0
  49. package/dist/commands/setup/steps/check-node.d.ts.map +1 -0
  50. package/dist/commands/setup/steps/check-node.js +34 -0
  51. package/dist/commands/setup/steps/check-node.js.map +1 -0
  52. package/dist/commands/setup/steps/configure-mcp.d.ts +6 -0
  53. package/dist/commands/setup/steps/configure-mcp.d.ts.map +1 -0
  54. package/dist/commands/setup/steps/configure-mcp.js +189 -0
  55. package/dist/commands/setup/steps/configure-mcp.js.map +1 -0
  56. package/dist/commands/setup/steps/configure-vault.d.ts +6 -0
  57. package/dist/commands/setup/steps/configure-vault.d.ts.map +1 -0
  58. package/dist/commands/setup/steps/configure-vault.js +165 -0
  59. package/dist/commands/setup/steps/configure-vault.js.map +1 -0
  60. package/dist/commands/setup/steps/index-vault.d.ts +6 -0
  61. package/dist/commands/setup/steps/index-vault.d.ts.map +1 -0
  62. package/dist/commands/setup/steps/index-vault.js +66 -0
  63. package/dist/commands/setup/steps/index-vault.js.map +1 -0
  64. package/dist/commands/setup/steps/init-vault.d.ts +6 -0
  65. package/dist/commands/setup/steps/init-vault.d.ts.map +1 -0
  66. package/dist/commands/setup/steps/init-vault.js +68 -0
  67. package/dist/commands/setup/steps/init-vault.js.map +1 -0
  68. package/dist/commands/setup/steps/summary.d.ts +3 -0
  69. package/dist/commands/setup/steps/summary.d.ts.map +1 -0
  70. package/dist/commands/setup/steps/summary.js +66 -0
  71. package/dist/commands/setup/steps/summary.js.map +1 -0
  72. package/dist/commands/setup/steps/welcome.d.ts +3 -0
  73. package/dist/commands/setup/steps/welcome.d.ts.map +1 -0
  74. package/dist/commands/setup/steps/welcome.js +61 -0
  75. package/dist/commands/setup/steps/welcome.js.map +1 -0
  76. package/dist/config/__tests__/cli-config.test.d.ts +2 -0
  77. package/dist/config/__tests__/cli-config.test.d.ts.map +1 -0
  78. package/dist/config/__tests__/cli-config.test.js +44 -0
  79. package/dist/config/__tests__/cli-config.test.js.map +1 -0
  80. package/dist/config/cli-config.d.ts +1 -1
  81. package/dist/config/cli-config.d.ts.map +1 -1
  82. package/dist/config/cli-config.js +40 -4
  83. package/dist/config/cli-config.js.map +1 -1
  84. package/dist/config/memory.config.d.ts +5 -5
  85. package/dist/config/memory.config.js +1 -1
  86. package/dist/config/memory.config.js.map +1 -1
  87. package/dist/features/memory-index/memory-index.schema.d.ts +4 -4
  88. package/dist/features/memory-init/index.d.ts +3 -0
  89. package/dist/features/memory-init/index.d.ts.map +1 -0
  90. package/dist/features/memory-init/index.js +2 -0
  91. package/dist/features/memory-init/index.js.map +1 -0
  92. package/dist/features/memory-read/memory-read.schema.d.ts +10 -10
  93. package/dist/features/memory-read/rag-reader.js +2 -2
  94. package/dist/features/memory-read/rag-reader.js.map +1 -1
  95. package/dist/features/memory-server/config-loader.js +1 -1
  96. package/dist/features/memory-server/config-loader.js.map +1 -1
  97. package/dist/features/memory-server/memory-server.d.ts.map +1 -1
  98. package/dist/features/memory-server/memory-server.js +22 -0
  99. package/dist/features/memory-server/memory-server.js.map +1 -1
  100. package/dist/features/memory-server/memory-server.schema.d.ts +17 -20
  101. package/dist/features/memory-server/memory-server.schema.d.ts.map +1 -1
  102. package/dist/features/memory-server/memory-server.schema.js +0 -1
  103. package/dist/features/memory-server/memory-server.schema.js.map +1 -1
  104. package/dist/features/memory-server/tools/memory-read.handler.js +1 -1
  105. package/dist/features/memory-server/tools/memory-read.handler.js.map +1 -1
  106. package/dist/features/memory-shared/__tests__/chunker.test.d.ts +2 -0
  107. package/dist/features/memory-shared/__tests__/chunker.test.d.ts.map +1 -0
  108. package/dist/features/memory-shared/__tests__/chunker.test.js +24 -0
  109. package/dist/features/memory-shared/__tests__/chunker.test.js.map +1 -0
  110. package/dist/features/memory-shared/__tests__/vault-slug.test.d.ts +2 -0
  111. package/dist/features/memory-shared/__tests__/vault-slug.test.d.ts.map +1 -0
  112. package/dist/features/memory-shared/__tests__/vault-slug.test.js +13 -0
  113. package/dist/features/memory-shared/__tests__/vault-slug.test.js.map +1 -0
  114. package/dist/features/memory-write/memory-write.schema.d.ts +2 -2
  115. package/dist/features/memory-write/vault-writer.d.ts.map +1 -1
  116. package/dist/features/memory-write/vault-writer.js +3 -0
  117. package/dist/features/memory-write/vault-writer.js.map +1 -1
  118. package/dist/index.js +3 -0
  119. package/dist/index.js.map +1 -1
  120. package/dist/infrastructure/crypto/crypto.d.ts +11 -0
  121. package/dist/infrastructure/crypto/crypto.d.ts.map +1 -0
  122. package/dist/infrastructure/crypto/crypto.js +57 -0
  123. package/dist/infrastructure/crypto/crypto.js.map +1 -0
  124. package/dist/infrastructure/embeddings/__tests__/local-embedding.provider.test.d.ts +2 -0
  125. package/dist/infrastructure/embeddings/__tests__/local-embedding.provider.test.d.ts.map +1 -0
  126. package/dist/infrastructure/embeddings/__tests__/local-embedding.provider.test.js +62 -0
  127. package/dist/infrastructure/embeddings/__tests__/local-embedding.provider.test.js.map +1 -0
  128. package/dist/infrastructure/embeddings/local-embedding.provider.d.ts +0 -3
  129. package/dist/infrastructure/embeddings/local-embedding.provider.d.ts.map +1 -1
  130. package/dist/infrastructure/embeddings/local-embedding.provider.js +7 -4
  131. package/dist/infrastructure/embeddings/local-embedding.provider.js.map +1 -1
  132. package/dist/infrastructure/logger/__tests__/logger.test.d.ts +2 -0
  133. package/dist/infrastructure/logger/__tests__/logger.test.d.ts.map +1 -0
  134. package/dist/infrastructure/logger/__tests__/logger.test.js +65 -0
  135. package/dist/infrastructure/logger/__tests__/logger.test.js.map +1 -0
  136. package/dist/infrastructure/vector-db/__tests__/chroma.adapter.test.d.ts +2 -0
  137. package/dist/infrastructure/vector-db/__tests__/chroma.adapter.test.d.ts.map +1 -0
  138. package/dist/infrastructure/vector-db/__tests__/chroma.adapter.test.js +153 -0
  139. package/dist/infrastructure/vector-db/__tests__/chroma.adapter.test.js.map +1 -0
  140. package/dist/infrastructure/vector-db/chroma.adapter.d.ts +3 -8
  141. package/dist/infrastructure/vector-db/chroma.adapter.d.ts.map +1 -1
  142. package/dist/infrastructure/vector-db/chroma.adapter.js +56 -60
  143. package/dist/infrastructure/vector-db/chroma.adapter.js.map +1 -1
  144. package/dist/utils/config.d.ts +2 -2
  145. package/dist/utils/config.d.ts.map +1 -1
  146. package/dist/utils/config.js +6 -2
  147. package/dist/utils/config.js.map +1 -1
  148. package/package.json +15 -9
@@ -0,0 +1,165 @@
1
+ /**
2
+ * configure-vault.ts — Step 4: Auto-detect Obsidian vaults and configure path.
3
+ */
4
+ import * as fs from 'node:fs/promises';
5
+ import * as os from 'node:os';
6
+ import * as path from 'node:path';
7
+ import chalk from 'chalk';
8
+ import { validateVaultPath } from '../../../features/memory-shared/vault-path-validator.js';
9
+ export async function configureVault(ctx) {
10
+ try {
11
+ // Auto-detect Obsidian vaults
12
+ const vaults = await detectObsidianVaults();
13
+ const { default: inquirer } = await import('inquirer');
14
+ let selectedPath;
15
+ if (vaults.length > 0) {
16
+ const { choice } = await inquirer.prompt([
17
+ {
18
+ type: 'list',
19
+ name: 'choice',
20
+ message: 'Select your Obsidian vault:',
21
+ choices: [...vaults, 'Enter a different path'],
22
+ },
23
+ ]);
24
+ if (choice === 'Enter a different path') {
25
+ const { inputPath } = await inquirer.prompt([
26
+ {
27
+ type: 'input',
28
+ name: 'inputPath',
29
+ message: 'Enter vault path:',
30
+ validate: (input) => input.trim().length > 0 || 'Path is required',
31
+ },
32
+ ]);
33
+ selectedPath = inputPath;
34
+ }
35
+ else {
36
+ selectedPath = choice;
37
+ }
38
+ }
39
+ else {
40
+ const { inputPath } = await inquirer.prompt([
41
+ {
42
+ type: 'input',
43
+ name: 'inputPath',
44
+ message: 'Enter vault path:',
45
+ validate: (input) => input.trim().length > 0 || 'Path is required',
46
+ },
47
+ ]);
48
+ selectedPath = inputPath;
49
+ }
50
+ const validation = await validateVaultPath(selectedPath);
51
+ // Handle validation errors first (before warnings)
52
+ if (!validation.valid) {
53
+ console.log(chalk.red(`\n✗ ${validation.errors.join(', ')}`));
54
+ // Offer to create directory if it doesn't exist
55
+ if (validation.errors.some((e) => e.includes('does not exist'))) {
56
+ const { createDir } = await inquirer.prompt([
57
+ {
58
+ type: 'confirm',
59
+ name: 'createDir',
60
+ message: 'Create this directory?',
61
+ default: false,
62
+ },
63
+ ]);
64
+ if (createDir) {
65
+ try {
66
+ await fs.mkdir(validation.resolvedPath, { recursive: true });
67
+ }
68
+ catch (err) {
69
+ return {
70
+ status: 'fail',
71
+ message: `Failed to create directory: ${err instanceof Error ? err.message : String(err)}`,
72
+ };
73
+ }
74
+ const revalidation = await validateVaultPath(validation.resolvedPath);
75
+ if (!revalidation.valid) {
76
+ return { status: 'fail', message: revalidation.errors.join(', ') };
77
+ }
78
+ if (revalidation.warnings.length > 0) {
79
+ console.log(chalk.yellow(`\n⚠ ${revalidation.warnings.join(', ')}`));
80
+ }
81
+ ctx.vaultPath = revalidation.resolvedPath;
82
+ return { status: 'pass', message: revalidation.resolvedPath };
83
+ }
84
+ }
85
+ return { status: 'fail', message: validation.errors.join(', ') };
86
+ }
87
+ // Show warnings only on valid paths
88
+ if (validation.warnings.length > 0) {
89
+ console.log(chalk.yellow(`\n⚠ ${validation.warnings.join(', ')}`));
90
+ const { confirm } = await inquirer.prompt([
91
+ {
92
+ type: 'confirm',
93
+ name: 'confirm',
94
+ message: 'Continue anyway?',
95
+ default: false,
96
+ },
97
+ ]);
98
+ if (!confirm) {
99
+ return { status: 'fail', message: 'Vault selection cancelled' };
100
+ }
101
+ }
102
+ ctx.vaultPath = validation.resolvedPath;
103
+ return { status: 'pass', message: validation.resolvedPath };
104
+ }
105
+ catch (error) {
106
+ return {
107
+ status: 'fail',
108
+ message: error instanceof Error ? error.message : String(error),
109
+ };
110
+ }
111
+ }
112
+ /**
113
+ * Auto-detects Obsidian vaults in common locations.
114
+ */
115
+ async function detectObsidianVaults() {
116
+ const vaults = [];
117
+ const homeDir = os.homedir();
118
+ const platform = process.platform;
119
+ let scanPaths = [];
120
+ if (platform === 'linux' || platform === 'darwin') {
121
+ scanPaths = [
122
+ path.join(homeDir, 'Documents'),
123
+ path.join(homeDir, 'Obsidian'),
124
+ path.join(homeDir, 'vaults'),
125
+ homeDir,
126
+ ];
127
+ // macOS iCloud Obsidian
128
+ if (platform === 'darwin') {
129
+ scanPaths.push(path.join(homeDir, 'Library', 'Mobile Documents', 'iCloud~md~obsidian', 'Documents'));
130
+ }
131
+ }
132
+ else if (platform === 'win32') {
133
+ scanPaths = [
134
+ path.join(homeDir, 'Documents'),
135
+ path.join(homeDir, 'Obsidian'),
136
+ path.join(process.env.APPDATA || '', 'Obsidian'),
137
+ ];
138
+ }
139
+ // Scan each path for .obsidian subdirectories
140
+ for (const scanPath of scanPaths) {
141
+ try {
142
+ const entries = await fs.readdir(scanPath, { withFileTypes: true });
143
+ for (const entry of entries) {
144
+ if (entry.isDirectory()) {
145
+ const vaultPath = path.join(scanPath, entry.name);
146
+ try {
147
+ await fs.access(path.join(vaultPath, '.obsidian'));
148
+ vaults.push(vaultPath);
149
+ if (vaults.length >= 20) {
150
+ return vaults;
151
+ }
152
+ }
153
+ catch {
154
+ // Not an Obsidian vault
155
+ }
156
+ }
157
+ }
158
+ }
159
+ catch {
160
+ // Path doesn't exist or is not accessible
161
+ }
162
+ }
163
+ return vaults;
164
+ }
165
+ //# sourceMappingURL=configure-vault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure-vault.js","sourceRoot":"","sources":["../../../../src/commands/setup/steps/configure-vault.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * index-vault.ts — Step 6: Download embedding model + index vault into ChromaDB.
3
+ */
4
+ import type { SetupContext, StepResult } from '../setup-context.js';
5
+ export declare function indexVaultStep(ctx: SetupContext): Promise<StepResult>;
6
+ //# sourceMappingURL=index-vault.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-vault.d.ts","sourceRoot":"","sources":["../../../../src/commands/setup/steps/index-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,CAqE3E"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * index-vault.ts — Step 6: Download embedding model + index vault into ChromaDB.
3
+ */
4
+ import chalk from 'chalk';
5
+ import { ChromaDBAdapterImpl } from '../../../infrastructure/vector-db/chroma.adapter.js';
6
+ import { localEmbeddingProvider } from '../../../infrastructure/embeddings/local-embedding.provider.js';
7
+ import { indexVault } from '../../../features/memory-index/vault-indexer.js';
8
+ import { loadMemoryConfig } from '../../../features/memory-server/config-loader.js';
9
+ export async function indexVaultStep(ctx) {
10
+ // Guard: no vault configured
11
+ if (!ctx.vaultPath) {
12
+ return { status: 'skip', message: 'No vault configured' };
13
+ }
14
+ // Skip if ChromaDB was not confirmed available
15
+ const chromadbResult = ctx.results['check-chromadb'];
16
+ if (!chromadbResult || chromadbResult.status !== 'pass') {
17
+ return { status: 'skip', message: 'ChromaDB not available' };
18
+ }
19
+ // Internet check before downloading embedding model
20
+ try {
21
+ await fetch('https://huggingface.co', {
22
+ method: 'HEAD',
23
+ signal: AbortSignal.timeout(5000),
24
+ });
25
+ }
26
+ catch {
27
+ return { status: 'skip', message: 'Offline — re-run when connected' };
28
+ }
29
+ // Construct ChromaDB adapter with configured host/port
30
+ const chroma = new ChromaDBAdapterImpl(ctx.chromaHost, ctx.chromaPort);
31
+ // Warm up embedding model with ora spinner
32
+ const { default: ora } = await import('ora');
33
+ const spinner = ora('Downloading embedding model (all-MiniLM-L6-v2, ~80MB)... first run only').start();
34
+ try {
35
+ await localEmbeddingProvider.embed(['warmup']);
36
+ spinner.succeed('Embedding model ready');
37
+ }
38
+ catch (error) {
39
+ spinner.fail('Embedding model download failed');
40
+ return {
41
+ status: 'fail',
42
+ message: error instanceof Error ? error.message : String(error),
43
+ };
44
+ }
45
+ const indexSpinner = ora('Indexing vault into ChromaDB...').start();
46
+ try {
47
+ const config = await loadMemoryConfig(ctx.vaultPath);
48
+ const result = await indexVault(config, 'full', chroma, localEmbeddingProvider);
49
+ indexSpinner.succeed(`Indexed ${result.indexed} notes into ChromaDB`);
50
+ if (result.errors > 0) {
51
+ console.log(chalk.yellow(`\n⚠ ${result.errors} notes had errors during indexing`));
52
+ }
53
+ return {
54
+ status: 'pass',
55
+ message: `${result.indexed} notes indexed`,
56
+ };
57
+ }
58
+ catch (error) {
59
+ indexSpinner.fail('Vault indexing failed');
60
+ return {
61
+ status: 'fail',
62
+ message: error instanceof Error ? error.message : String(error),
63
+ };
64
+ }
65
+ }
66
+ //# sourceMappingURL=index-vault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-vault.js","sourceRoot":"","sources":["../../../../src/commands/setup/steps/index-vault.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * init-vault.ts — Step 5: Scaffold vault structure from templates.
3
+ */
4
+ import type { SetupContext, StepResult } from '../setup-context.js';
5
+ export declare function initVault(ctx: SetupContext): Promise<StepResult>;
6
+ //# sourceMappingURL=init-vault.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-vault.d.ts","sourceRoot":"","sources":["../../../../src/commands/setup/steps/init-vault.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEpE,wBAAsB,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAqEtE"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * init-vault.ts — Step 5: Scaffold vault structure from templates.
3
+ */
4
+ import * as fs from 'node:fs/promises';
5
+ import * as path from 'node:path';
6
+ import { fileURLToPath } from 'node:url';
7
+ import chalk from 'chalk';
8
+ import { scaffoldVault } from '../../../features/memory-init/vault-scaffolder.js';
9
+ import { MemoryConfigSchema } from '../../../config/memory.config.js';
10
+ export async function initVault(ctx) {
11
+ // Guard: no vault configured
12
+ if (!ctx.vaultPath) {
13
+ return { status: 'skip', message: 'No vault configured' };
14
+ }
15
+ // Check if already initialized
16
+ const configPath = path.join(ctx.vaultPath, 'DELFOS-AI-LAYER.config.json');
17
+ try {
18
+ await fs.access(configPath);
19
+ return { status: 'pass', message: 'Vault already initialized' };
20
+ }
21
+ catch {
22
+ // Config not accessible (likely doesn't exist) — proceed with initialization
23
+ }
24
+ // Resolve template directory
25
+ const templateDir = fileURLToPath(new URL('../../../../templates/obsidian-vault', import.meta.url));
26
+ // Scaffold vault with ora spinner
27
+ const { default: ora } = await import('ora');
28
+ const spinner = ora('Scaffolding vault structure...').start();
29
+ try {
30
+ const result = await scaffoldVault(ctx.vaultPath, templateDir);
31
+ spinner.succeed('Vault structure scaffolded');
32
+ // Display results
33
+ if (result.created.length > 0) {
34
+ console.log(chalk.green(`\n✓ Created ${result.created.length} files`));
35
+ }
36
+ if (result.skipped.length > 0) {
37
+ console.log(chalk.dim(` Skipped ${result.skipped.length} existing files`));
38
+ }
39
+ }
40
+ catch (error) {
41
+ spinner.fail('Vault scaffolding failed');
42
+ return {
43
+ status: 'fail',
44
+ message: error instanceof Error ? error.message : String(error),
45
+ };
46
+ }
47
+ // Write DELFOS-AI-LAYER.config.json (after spinner is closed)
48
+ try {
49
+ const defaultConfig = MemoryConfigSchema.parse({
50
+ vault_path: ctx.vaultPath,
51
+ vector_db: {
52
+ persist_dir: path.join(ctx.vaultPath, '.delfos', 'vector_db'),
53
+ },
54
+ });
55
+ await fs.writeFile(configPath, JSON.stringify(defaultConfig, null, 2), 'utf-8');
56
+ }
57
+ catch (error) {
58
+ return {
59
+ status: 'fail',
60
+ message: `Failed to write vault config: ${error instanceof Error ? error.message : String(error)}`,
61
+ };
62
+ }
63
+ return {
64
+ status: 'pass',
65
+ message: 'Vault initialized',
66
+ };
67
+ }
68
+ //# sourceMappingURL=init-vault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-vault.js","sourceRoot":"","sources":["../../../../src/commands/setup/steps/init-vault.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { SetupContext } from '../setup-context.js';
2
+ export declare function showSummary(ctx: SetupContext): Promise<void>;
3
+ //# sourceMappingURL=summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../../../src/commands/setup/steps/summary.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAaxD,wBAAsB,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAmElE"}
@@ -0,0 +1,66 @@
1
+ import Table from 'cli-table3';
2
+ import { default as chalk } from 'chalk';
3
+ const STEP_LABELS = [
4
+ 'Check Node.js version',
5
+ 'Check ChromaDB availability',
6
+ 'Configure ChromaDB',
7
+ 'Select or create Obsidian vault',
8
+ 'Initialize vault structure',
9
+ 'Index vault content',
10
+ 'Configure MCP server',
11
+ 'Authenticate with Delfos',
12
+ ];
13
+ export async function showSummary(ctx) {
14
+ const { default: boxen } = await import('boxen');
15
+ const hasFailures = Object.values(ctx.results).some((r) => r.status === 'fail');
16
+ const borderColor = hasFailures ? 'yellow' : 'green';
17
+ const header = boxen(chalk.bold('Setup Complete!'), {
18
+ padding: 1,
19
+ borderStyle: 'round',
20
+ borderColor,
21
+ });
22
+ console.log(header);
23
+ // Build results table
24
+ const table = new Table({
25
+ colWidths: [30, 50],
26
+ head: [chalk.gray('Step'), chalk.gray('Status')],
27
+ });
28
+ STEP_LABELS.forEach((label, index) => {
29
+ const stepId = `step-${index + 1}`;
30
+ const result = ctx.results[stepId];
31
+ if (!result) {
32
+ table.push([label, chalk.gray('— not reached')]);
33
+ return;
34
+ }
35
+ let statusIcon;
36
+ let statusColor;
37
+ switch (result.status) {
38
+ case 'pass':
39
+ statusIcon = '✓';
40
+ statusColor = chalk.green;
41
+ break;
42
+ case 'skip':
43
+ statusIcon = '⚠';
44
+ statusColor = chalk.yellow;
45
+ break;
46
+ case 'fail':
47
+ statusIcon = '✗';
48
+ statusColor = chalk.red;
49
+ break;
50
+ }
51
+ table.push([label, statusColor(`${statusIcon} ${result.message}`)]);
52
+ });
53
+ console.log(table.toString());
54
+ // Next steps
55
+ console.log(chalk.bold('\nNext steps:'));
56
+ console.log(chalk.gray('─'.repeat(53)));
57
+ console.log(` ${chalk.cyan('delfos memory read "your question"')}`);
58
+ console.log(` ${chalk.cyan('delfos memory status')}`);
59
+ console.log(` ${chalk.cyan('Restart your IDE to load the MCP server')}`);
60
+ if (hasFailures) {
61
+ console.log();
62
+ console.log(chalk.yellow('Re-run `delfos setup` to retry failed steps'));
63
+ }
64
+ console.log();
65
+ }
66
+ //# sourceMappingURL=summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../../../src/commands/setup/steps/summary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { SetupContext } from '../setup-context.js';
2
+ export declare function showWelcome(ctx: SetupContext): Promise<void>;
3
+ //# sourceMappingURL=welcome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../../../src/commands/setup/steps/welcome.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAwBxD,wBAAsB,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDlE"}
@@ -0,0 +1,61 @@
1
+ const PLATFORM_LABELS = {
2
+ ubuntu: 'Ubuntu',
3
+ debian: 'Debian',
4
+ fedora: 'Fedora',
5
+ arch: 'Arch Linux',
6
+ macos: 'macOS',
7
+ windows: 'Windows',
8
+ 'unknown-linux': 'Linux (Unknown)',
9
+ };
10
+ const STEP_OUTLINE = [
11
+ 'Check Node.js version',
12
+ 'Check ChromaDB availability',
13
+ 'Configure ChromaDB',
14
+ 'Select or create Obsidian vault',
15
+ 'Initialize vault structure',
16
+ 'Index vault content',
17
+ 'Configure MCP server',
18
+ 'Authenticate with Delfos',
19
+ ];
20
+ export async function showWelcome(ctx) {
21
+ const { default: boxen } = await import('boxen');
22
+ const { default: chalk } = await import('chalk');
23
+ const platformLabel = PLATFORM_LABELS[ctx.platform];
24
+ const content = `${chalk.bold.cyan('Delfos AI Layer — Setup Wizard')}
25
+ ${chalk.gray('Configure your environment for RAG in one go. Ctrl+C anytime to pause.')}
26
+ ${chalk.gray(`OS detected: ${platformLabel}`)}`;
27
+ console.log(boxen(content, {
28
+ padding: 1,
29
+ borderStyle: 'round',
30
+ borderColor: 'blue',
31
+ }));
32
+ // Resume detection
33
+ if (ctx.completedSteps.length > 0) {
34
+ const { default: inquirer } = await import('inquirer');
35
+ const { resume } = await inquirer.prompt([
36
+ {
37
+ type: 'confirm',
38
+ name: 'resume',
39
+ message: `Previous setup detected (${ctx.completedSteps.length}/8 steps completed). Resume?`,
40
+ default: true,
41
+ },
42
+ ]);
43
+ if (!resume) {
44
+ // Reset context
45
+ ctx.completedSteps = [];
46
+ ctx.results = {};
47
+ ctx.startedAt = new Date().toISOString();
48
+ }
49
+ }
50
+ // Print step outline
51
+ console.log(chalk.bold('\nSetup Steps:'));
52
+ console.log(chalk.gray('─'.repeat(53)));
53
+ STEP_OUTLINE.forEach((step, index) => {
54
+ const stepNum = index + 1;
55
+ const isCompleted = ctx.completedSteps.includes(`step-${stepNum}`);
56
+ const status = isCompleted ? chalk.green('✓') : chalk.gray('○');
57
+ console.log(` ${status} ${stepNum}. ${step}`);
58
+ });
59
+ console.log();
60
+ }
61
+ //# sourceMappingURL=welcome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../../../src/commands/setup/steps/welcome.ts"],"names":[],"mappings":"AAGA,MAAM,eAAe,GAA6B;IAChD,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,eAAe,EAAE,iBAAiB;CACnC,CAAC;AAEF,MAAM,YAAY,GAAG;IACnB,uBAAuB;IACvB,6BAA6B;IAC7B,oBAAoB;IACpB,iCAAiC;IACjC,4BAA4B;IAC5B,qBAAqB;IACrB,sBAAsB;IACtB,0BAA0B;CAC3B,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAiB;IACjD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;IAEjD,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEpD,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC;EACpE,KAAK,CAAC,IAAI,CAAC,wEAAwE,CAAC;EACpF,KAAK,CAAC,IAAI,CAAC,gBAAgB,aAAa,EAAE,CAAC,EAAE,CAAC;IAE9C,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,OAAO,EAAE;QACb,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,MAAM;KACpB,CAAC,CACH,CAAC;IAEF,mBAAmB;IACnB,IAAI,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACvC;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,4BAA4B,GAAG,CAAC,cAAc,CAAC,MAAM,8BAA8B;gBAC5F,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,gBAAgB;YAChB,GAAG,CAAC,cAAc,GAAG,EAAE,CAAC;YACxB,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC;YACjB,GAAG,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnC,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC;QAC1B,MAAM,WAAW,GAAG,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cli-config.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-config.test.d.ts","sourceRoot":"","sources":["../../../src/config/__tests__/cli-config.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,44 @@
1
+ import { readConfig, writeConfig, getDefaultConfig } from '../cli-config.js';
2
+ const mockReadFileSync = jest.fn();
3
+ const mockWriteFileSync = jest.fn();
4
+ const mockMkdirSync = jest.fn();
5
+ jest.mock('node:fs', () => ({
6
+ readFileSync: (...args) => mockReadFileSync(...args),
7
+ writeFileSync: (...args) => mockWriteFileSync(...args),
8
+ mkdirSync: (...args) => mockMkdirSync(...args),
9
+ }));
10
+ describe('cli-config', () => {
11
+ beforeEach(() => {
12
+ mockReadFileSync.mockReset();
13
+ mockWriteFileSync.mockReset();
14
+ mockMkdirSync.mockReset();
15
+ });
16
+ it('reads existing config.json and merges over defaults', () => {
17
+ mockReadFileSync.mockReturnValue(JSON.stringify({ token: 'abc', email: 'u@test.com' }));
18
+ const config = readConfig();
19
+ expect(config.token).toBe('abc');
20
+ expect(config.email).toBe('u@test.com');
21
+ expect(config.apiBaseUrl).toBe('https://api.delfos.ai');
22
+ });
23
+ it('writes new config with merged values', () => {
24
+ mockReadFileSync.mockReturnValue(JSON.stringify({}));
25
+ writeConfig({ token: 'tok' });
26
+ expect(mockWriteFileSync).toHaveBeenCalledWith(expect.stringContaining('config.json'), expect.stringContaining('"token": "tok"'), 'utf-8');
27
+ });
28
+ it('returns defaults when config.json is absent', () => {
29
+ mockReadFileSync.mockImplementation(() => {
30
+ const err = new Error('ENOENT');
31
+ err.code = 'ENOENT';
32
+ throw err;
33
+ });
34
+ expect(readConfig()).toEqual(getDefaultConfig());
35
+ });
36
+ it('merges partial update without overwriting existing fields', () => {
37
+ mockReadFileSync.mockReturnValue(JSON.stringify({ email: 'old@x.com', token: 'old-tok' }));
38
+ writeConfig({ token: 'new-tok' });
39
+ const written = JSON.parse(mockWriteFileSync.mock.calls[0][1]);
40
+ expect(written['email']).toBe('old@x.com');
41
+ expect(written['token']).toBe('new-tok');
42
+ });
43
+ });
44
+ //# sourceMappingURL=cli-config.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-config.test.js","sourceRoot":"","sources":["../../../src/config/__tests__/cli-config.test.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,8 @@ export interface CliConfig {
3
3
  directusUrl: string;
4
4
  appUrl: string;
5
5
  token?: string;
6
+ refreshToken?: string;
6
7
  userId?: string;
7
- email?: string;
8
8
  chromaPersistDir?: string;
9
9
  }
10
10
  export declare function getDefaultConfig(): CliConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"cli-config.d.ts","sourceRoot":"","sources":["../../src/config/cli-config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAKD,wBAAgB,gBAAgB,IAAI,SAAS,CAM5C;AAED,wBAAgB,UAAU,IAAI,SAAS,CAUtC;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAK7D"}
1
+ {"version":3,"file":"cli-config.d.ts","sourceRoot":"","sources":["../../src/config/cli-config.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAeD,wBAAgB,gBAAgB,IAAI,SAAS,CAM5C;AAED,wBAAgB,UAAU,IAAI,SAAS,CA0BtC;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CA6B7D"}