daedalus-cli 3.45.1 → 3.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/CONTRIBUTING.md +5 -1
- package/dist/tools/mcp/registry.d.ts +13 -0
- package/dist/tools/mcp/registry.d.ts.map +1 -1
- package/dist/tools/mcp/registry.js +27 -1
- package/dist/tools/mcp/registry.js.map +1 -1
- package/dist/tools/mcp/registry.test.js +36 -1
- package/dist/tools/mcp/registry.test.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# [3.46.0](https://github.com/bgill55/daedalus/compare/v3.45.1...v3.46.0) (2026-08-25)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **mcp:** auto-grant filesystem server read/write to the launch folder ([a0078a8](https://github.com/bgill55/daedalus/commit/a0078a80ab2afb6468a19ea1b568be11f5038ebb))
|
|
7
|
+
|
|
1
8
|
## [3.45.1](https://github.com/bgill55/daedalus/compare/v3.45.0...v3.45.1) (2026-08-25)
|
|
2
9
|
|
|
3
10
|
|
package/CONTRIBUTING.md
CHANGED
|
@@ -59,7 +59,7 @@ src/
|
|
|
59
59
|
├── config/ # Zod-schema validated config (~/.daedalus/config.json)
|
|
60
60
|
├── router/ # Model router (priority, round-robin, token bucket rate limiter)
|
|
61
61
|
├── session/ # SQLite session persistence, project memory, JSONL export
|
|
62
|
-
├── agents/ # Multi-agent
|
|
62
|
+
├── agents/ # Multi-agent orchestration: Daedalus/orchestrator, Themis/spec, Metis/planner, Hephaestus/coder, Apollo/reviewer, Asclepius/debugger, Mnemosyne/researcher; /autopilot drives end-to-end feature branches
|
|
63
63
|
├── tools/ # Built-in tool registry + MCP transport (stdio & HTTP/SSE)
|
|
64
64
|
├── indexing/ # FTS5 codebase & AST callgraph indexing across languages
|
|
65
65
|
└── onboarding/ # Setup wizard & interactive configuration
|
|
@@ -82,6 +82,10 @@ src/
|
|
|
82
82
|
- Throw typed errors with actionable error messages.
|
|
83
83
|
- For tool returns, prefer result pattern object return types: `{ success: boolean, content: string, error?: string }`.
|
|
84
84
|
|
|
85
|
+
### Command Documentation
|
|
86
|
+
- Every new slash command MUST declare `description`, `usage`, and `helpText`, and be added to the README command table (generated by `scripts/sync-docs.ts`).
|
|
87
|
+
- `npm test` runs `src/docs.test.ts`, which fails if a command is missing its README table entry or `/help <command>` does not resolve. Docify a command before opening a PR, or CI will reject it.
|
|
88
|
+
|
|
85
89
|
## Commit Guidelines
|
|
86
90
|
We enforce [Conventional Commits](https://www.conventionalcommits.org/) for automated release notes and semantic version bumps.
|
|
87
91
|
|
|
@@ -14,4 +14,17 @@ export declare class MCPRegistry {
|
|
|
14
14
|
disconnectAll(): Promise<void>;
|
|
15
15
|
}
|
|
16
16
|
export declare const mcpRegistry: MCPRegistry;
|
|
17
|
+
/**
|
|
18
|
+
* Auto-grant the filesystem MCP server read/write access to the folder Daedalus
|
|
19
|
+
* was launched in (process.cwd()), so a user who opens Daedalus inside a project
|
|
20
|
+
* can work there without editing config. This is the "open in a folder => work in
|
|
21
|
+
* that folder" expectation; forcing a per-project config edit is a workflow killer
|
|
22
|
+
* for new users. Returns a config with the launch folder appended to the filesystem
|
|
23
|
+
* server's allowed roots (deduped, case-insensitive on Windows). Does NOT mutate the
|
|
24
|
+
* stored config — the grant is per-session and ephemeral.
|
|
25
|
+
*
|
|
26
|
+
* The launch folder is always covered recursively by the filesystem server, so
|
|
27
|
+
* subfolders the agent creates (e.g. a new project dir) are included automatically.
|
|
28
|
+
*/
|
|
29
|
+
export declare function applyLaunchFolderRoot(config: MCPServerConfig, cwd?: string): MCPServerConfig;
|
|
17
30
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/tools/mcp/registry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAyB,MAAM,YAAY,CAAC;AAGpE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,aAAa,CAAyB;IAE9C,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI;IAItC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B3D,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAc9B,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBrF,kBAAkB,IAAI,cAAc,EAAE;IAetC,mBAAmB,IAAI,MAAM,EAAE;IAIzB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAWrC;AAED,eAAO,MAAM,WAAW,aAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/tools/mcp/registry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAyB,MAAM,YAAY,CAAC;AAGpE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,aAAa,CAAyB;IAE9C,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI;IAItC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B3D,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAc9B,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBrF,kBAAkB,IAAI,cAAc,EAAE;IAetC,mBAAmB,IAAI,MAAM,EAAE;IAIzB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAWrC;AAED,eAAO,MAAM,WAAW,aAAoB,CAAC;AAE7C;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,GAAE,MAAsB,GAAG,eAAe,CAa3G"}
|
|
@@ -27,7 +27,7 @@ export class MCPRegistry {
|
|
|
27
27
|
}
|
|
28
28
|
let transport;
|
|
29
29
|
if (config.transport === 'stdio') {
|
|
30
|
-
transport = new StdioTransport(config);
|
|
30
|
+
transport = new StdioTransport(applyLaunchFolderRoot(config));
|
|
31
31
|
}
|
|
32
32
|
else if (config.transport === 'http') {
|
|
33
33
|
transport = new HttpTransport(config);
|
|
@@ -102,4 +102,30 @@ export class MCPRegistry {
|
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
104
|
export const mcpRegistry = new MCPRegistry();
|
|
105
|
+
/**
|
|
106
|
+
* Auto-grant the filesystem MCP server read/write access to the folder Daedalus
|
|
107
|
+
* was launched in (process.cwd()), so a user who opens Daedalus inside a project
|
|
108
|
+
* can work there without editing config. This is the "open in a folder => work in
|
|
109
|
+
* that folder" expectation; forcing a per-project config edit is a workflow killer
|
|
110
|
+
* for new users. Returns a config with the launch folder appended to the filesystem
|
|
111
|
+
* server's allowed roots (deduped, case-insensitive on Windows). Does NOT mutate the
|
|
112
|
+
* stored config — the grant is per-session and ephemeral.
|
|
113
|
+
*
|
|
114
|
+
* The launch folder is always covered recursively by the filesystem server, so
|
|
115
|
+
* subfolders the agent creates (e.g. a new project dir) are included automatically.
|
|
116
|
+
*/
|
|
117
|
+
export function applyLaunchFolderRoot(config, cwd = process.cwd()) {
|
|
118
|
+
if (config.transport !== 'stdio')
|
|
119
|
+
return config;
|
|
120
|
+
const isFilesystemServer = (config.command?.includes('server-filesystem') ?? false) ||
|
|
121
|
+
(config.args?.some((a) => a.includes('server-filesystem')) ?? false);
|
|
122
|
+
if (!isFilesystemServer)
|
|
123
|
+
return config;
|
|
124
|
+
const existing = config.args ?? [];
|
|
125
|
+
const norm = (p) => p.replace(/\\/g, '/').toLowerCase();
|
|
126
|
+
const normalizedCwd = norm(cwd);
|
|
127
|
+
if (existing.some((a) => norm(a) === normalizedCwd))
|
|
128
|
+
return config;
|
|
129
|
+
return { ...config, args: [...existing, cwd] };
|
|
130
|
+
}
|
|
105
131
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/tools/mcp/registry.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAGzD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG1C,MAAM,OAAO,WAAW;IACd,UAAU,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC7C,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAC;IACnC,aAAa,GAAsB,EAAE,CAAC;IAE9C,UAAU,CAAC,OAA0B;QACnC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC1D,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,MAAM,KAAK,GAAG,GAAY,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,gCAAgC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACjF,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAuB;QACzC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,IAAI,uBAAuB,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,IAAI,SAAuB,CAAC;QAE5B,IAAI,MAAM,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;YACjC,SAAS,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/tools/mcp/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect, beforeEach } from 'vitest';
|
|
2
|
-
import { MCPRegistry } from './registry.js';
|
|
2
|
+
import { MCPRegistry, applyLaunchFolderRoot } from './registry.js';
|
|
3
3
|
describe('MCP Registry', () => {
|
|
4
4
|
let registry;
|
|
5
5
|
beforeEach(() => {
|
|
@@ -15,4 +15,39 @@ describe('MCP Registry', () => {
|
|
|
15
15
|
expect(registry.getConnectedServers()).toEqual([]);
|
|
16
16
|
});
|
|
17
17
|
});
|
|
18
|
+
describe('applyLaunchFolderRoot', () => {
|
|
19
|
+
const fsConfig = {
|
|
20
|
+
name: 'filesystem',
|
|
21
|
+
transport: 'stdio',
|
|
22
|
+
command: 'npx',
|
|
23
|
+
args: ['-y', '@modelcontextprotocol/server-filesystem', 'C:\\', 'D:\\Daedalus', 'D:\\prompt-vault'],
|
|
24
|
+
enabled: true,
|
|
25
|
+
};
|
|
26
|
+
it('appends the launch folder as a root for the filesystem server', () => {
|
|
27
|
+
const out = applyLaunchFolderRoot(fsConfig, 'D:\\daedalus-sandbox');
|
|
28
|
+
expect(out.args).toContain('D:\\daedalus-sandbox');
|
|
29
|
+
expect(out.args?.length).toBe(fsConfig.args.length + 1);
|
|
30
|
+
});
|
|
31
|
+
it('does NOT mutate the original config', () => {
|
|
32
|
+
const before = fsConfig.args.length;
|
|
33
|
+
applyLaunchFolderRoot(fsConfig, 'D:\\daedalus-sandbox');
|
|
34
|
+
expect(fsConfig.args.length).toBe(before);
|
|
35
|
+
});
|
|
36
|
+
it('does not add a duplicate launch folder (case-insensitive on Windows)', () => {
|
|
37
|
+
const out = applyLaunchFolderRoot(fsConfig, 'd:\\daedalus-sandbox');
|
|
38
|
+
expect(out.args.filter((a) => a.toLowerCase() === 'd:\\daedalus-sandbox').length).toBe(1);
|
|
39
|
+
});
|
|
40
|
+
it('skips non-filesystem stdio servers', () => {
|
|
41
|
+
const other = { name: 'discord', transport: 'stdio', command: 'node', args: ['bot.js'], enabled: true };
|
|
42
|
+
expect(applyLaunchFolderRoot(other, 'D:\\x')).toBe(other);
|
|
43
|
+
});
|
|
44
|
+
it('skips http transports', () => {
|
|
45
|
+
const http = { name: 'api', transport: 'http', url: 'http://localhost', enabled: true };
|
|
46
|
+
expect(applyLaunchFolderRoot(http, 'D:\\x')).toBe(http);
|
|
47
|
+
});
|
|
48
|
+
it('is a no-op when the launch folder is already a configured root', () => {
|
|
49
|
+
const out = applyLaunchFolderRoot(fsConfig, 'D:\\prompt-vault');
|
|
50
|
+
expect(out.args).toEqual(fsConfig.args);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
18
53
|
//# sourceMappingURL=registry.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../../src/tools/mcp/registry.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../../src/tools/mcp/registry.test.ts"],"names":[],"mappings":"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"}
|