daedalus-cli 3.28.12 → 3.29.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.
Files changed (53) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +1 -0
  3. package/dist/commands/agents.d.ts.map +1 -1
  4. package/dist/commands/agents.js +38 -0
  5. package/dist/commands/agents.js.map +1 -1
  6. package/dist/commands/index.d.ts.map +1 -1
  7. package/dist/commands/index.js +2 -0
  8. package/dist/commands/index.js.map +1 -1
  9. package/dist/commands/recipe.d.ts +3 -0
  10. package/dist/commands/recipe.d.ts.map +1 -0
  11. package/dist/commands/recipe.js +78 -0
  12. package/dist/commands/recipe.js.map +1 -0
  13. package/dist/commands/recipe.test.d.ts +2 -0
  14. package/dist/commands/recipe.test.d.ts.map +1 -0
  15. package/dist/commands/recipe.test.js +44 -0
  16. package/dist/commands/recipe.test.js.map +1 -0
  17. package/dist/config/index.d.ts +26 -0
  18. package/dist/config/index.d.ts.map +1 -1
  19. package/dist/config/index.js +5 -0
  20. package/dist/config/index.js.map +1 -1
  21. package/dist/config/presets.d.ts.map +1 -1
  22. package/dist/config/presets.js +1 -0
  23. package/dist/config/presets.js.map +1 -1
  24. package/dist/recipes/index.d.ts +13 -0
  25. package/dist/recipes/index.d.ts.map +1 -0
  26. package/dist/recipes/index.js +100 -0
  27. package/dist/recipes/index.js.map +1 -0
  28. package/dist/recipes/index.test.d.ts +2 -0
  29. package/dist/recipes/index.test.d.ts.map +1 -0
  30. package/dist/recipes/index.test.js +59 -0
  31. package/dist/recipes/index.test.js.map +1 -0
  32. package/dist/tools/executor.d.ts.map +1 -1
  33. package/dist/tools/executor.js +25 -0
  34. package/dist/tools/executor.js.map +1 -1
  35. package/dist/tools/executor.test.js +49 -1
  36. package/dist/tools/executor.test.js.map +1 -1
  37. package/dist/tools/mcp/bundles.d.ts +14 -0
  38. package/dist/tools/mcp/bundles.d.ts.map +1 -0
  39. package/dist/tools/mcp/bundles.js +63 -0
  40. package/dist/tools/mcp/bundles.js.map +1 -0
  41. package/dist/tools/mcp/bundles.test.d.ts +2 -0
  42. package/dist/tools/mcp/bundles.test.d.ts.map +1 -0
  43. package/dist/tools/mcp/bundles.test.js +23 -0
  44. package/dist/tools/mcp/bundles.test.js.map +1 -0
  45. package/dist/tools/permissions.d.ts +10 -0
  46. package/dist/tools/permissions.d.ts.map +1 -0
  47. package/dist/tools/permissions.js +18 -0
  48. package/dist/tools/permissions.js.map +1 -0
  49. package/dist/tools/permissions.test.d.ts +2 -0
  50. package/dist/tools/permissions.test.d.ts.map +1 -0
  51. package/dist/tools/permissions.test.js +20 -0
  52. package/dist/tools/permissions.test.js.map +1 -0
  53. package/package.json +1 -1
@@ -0,0 +1,63 @@
1
+ export const MCP_BUNDLES = [
2
+ {
3
+ name: 'web-dev',
4
+ description: 'Web development toolkit: GitHub repo management & PostgreSQL database access',
5
+ servers: [
6
+ {
7
+ name: 'github',
8
+ command: 'npx',
9
+ args: ['-y', '@modelcontextprotocol/server-github'],
10
+ description: 'GitHub issues, pull requests, and repository file operations',
11
+ },
12
+ {
13
+ name: 'postgres',
14
+ command: 'npx',
15
+ args: ['-y', '@modelcontextprotocol/server-postgres'],
16
+ description: 'PostgreSQL schema inspection and SQL queries',
17
+ },
18
+ ],
19
+ },
20
+ {
21
+ name: 'cloud',
22
+ description: 'Cloud infrastructure & payments: Google Cloud Storage/BigQuery & Stripe API',
23
+ servers: [
24
+ {
25
+ name: 'gcp',
26
+ command: 'npx',
27
+ args: ['-y', '@modelcontextprotocol/server-gcp'],
28
+ description: 'Google Cloud Platform resource management',
29
+ },
30
+ {
31
+ name: 'stripe',
32
+ command: 'npx',
33
+ args: ['-y', '@stripe/mcp'],
34
+ description: 'Stripe payments and subscription APIs',
35
+ },
36
+ ],
37
+ },
38
+ {
39
+ name: 'data-science',
40
+ description: 'Data analytics & memory: BigQuery engine & MemPalace knowledge graph',
41
+ servers: [
42
+ {
43
+ name: 'bigquery',
44
+ command: 'npx',
45
+ args: ['-y', '@modelcontextprotocol/server-bigquery'],
46
+ description: 'BigQuery data warehouse queries',
47
+ },
48
+ {
49
+ name: 'mempalace',
50
+ command: 'npx',
51
+ args: ['-y', 'mempalace'],
52
+ description: 'Knowledge graph persistent memory',
53
+ },
54
+ ],
55
+ },
56
+ ];
57
+ export function listMcpBundles() {
58
+ return MCP_BUNDLES;
59
+ }
60
+ export function getMcpBundle(name) {
61
+ return MCP_BUNDLES.find(b => b.name.toLowerCase() === name.toLowerCase());
62
+ }
63
+ //# sourceMappingURL=bundles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundles.js","sourceRoot":"","sources":["../../../src/tools/mcp/bundles.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,WAAW,GAAyB;IAC/C;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,8EAA8E;QAC3F,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,CAAC,IAAI,EAAE,qCAAqC,CAAC;gBACnD,WAAW,EAAE,8DAA8D;aAC5E;YACD;gBACE,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,CAAC,IAAI,EAAE,uCAAuC,CAAC;gBACrD,WAAW,EAAE,8CAA8C;aAC5D;SACF;KACF;IACD;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,6EAA6E;QAC1F,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,CAAC,IAAI,EAAE,kCAAkC,CAAC;gBAChD,WAAW,EAAE,2CAA2C;aACzD;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC;gBAC3B,WAAW,EAAE,uCAAuC;aACrD;SACF;KACF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,sEAAsE;QACnF,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,CAAC,IAAI,EAAE,uCAAuC,CAAC;gBACrD,WAAW,EAAE,iCAAiC;aAC/C;YACD;gBACE,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC;gBACzB,WAAW,EAAE,mCAAmC;aACjD;SACF;KACF;CACO,CAAC;AAEX,MAAM,UAAU,cAAc;IAC5B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bundles.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundles.test.d.ts","sourceRoot":"","sources":["../../../src/tools/mcp/bundles.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { listMcpBundles, getMcpBundle } from './bundles.js';
3
+ describe('MCP Bundles', () => {
4
+ it('lists available preset bundles', () => {
5
+ const bundles = listMcpBundles();
6
+ expect(bundles.length).toBeGreaterThanOrEqual(3);
7
+ const names = bundles.map(b => b.name);
8
+ expect(names).toContain('web-dev');
9
+ expect(names).toContain('cloud');
10
+ expect(names).toContain('data-science');
11
+ });
12
+ it('retrieves bundle by name (case-insensitive)', () => {
13
+ const web = getMcpBundle('WEB-DEV');
14
+ expect(web).toBeDefined();
15
+ expect(web?.servers).toHaveLength(2);
16
+ expect(web?.servers[0].name).toBe('github');
17
+ });
18
+ it('returns undefined for non-existent bundle', () => {
19
+ const unknown = getMcpBundle('non-existent');
20
+ expect(unknown).toBeUndefined();
21
+ });
22
+ });
23
+ //# sourceMappingURL=bundles.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundles.test.js","sourceRoot":"","sources":["../../../src/tools/mcp/bundles.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAe,MAAM,cAAc,CAAC;AAEzE,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;QACjC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,OAAO,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { ToolContext } from '../types.js';
2
+ export interface ToolPermissionPolicy {
3
+ terminal: 'auto' | 'ask';
4
+ files: 'auto' | 'ask';
5
+ }
6
+ export declare function checkToolPermission(toolName: string, policy?: Partial<ToolPermissionPolicy>, _context?: ToolContext): {
7
+ allowed: boolean;
8
+ reason?: string;
9
+ };
10
+ //# sourceMappingURL=permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/tools/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;CACvB;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,EACtC,QAAQ,CAAC,EAAE,WAAW,GACrB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAmBvC"}
@@ -0,0 +1,18 @@
1
+ export function checkToolPermission(toolName, policy, _context) {
2
+ const terminalPolicy = policy?.terminal || 'auto';
3
+ const filesPolicy = policy?.files || 'auto';
4
+ if (toolName === 'terminal' && terminalPolicy === 'ask') {
5
+ return {
6
+ allowed: false,
7
+ reason: '[PERMISSION DENIED] Execution of terminal command requires user confirmation under current tool permissions policy.',
8
+ };
9
+ }
10
+ if ((toolName === 'write_file' || toolName === 'patch') && filesPolicy === 'ask') {
11
+ return {
12
+ allowed: false,
13
+ reason: '[PERMISSION DENIED] File modification requires user confirmation under current tool permissions policy.',
14
+ };
15
+ }
16
+ return { allowed: true };
17
+ }
18
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/tools/permissions.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,MAAsC,EACtC,QAAsB;IAEtB,MAAM,cAAc,GAAG,MAAM,EAAE,QAAQ,IAAI,MAAM,CAAC;IAClD,MAAM,WAAW,GAAG,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC;IAE5C,IAAI,QAAQ,KAAK,UAAU,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;QACxD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,qHAAqH;SAC9H,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,OAAO,CAAC,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;QACjF,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,yGAAyG;SAClH,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=permissions.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.test.d.ts","sourceRoot":"","sources":["../../src/tools/permissions.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { checkToolPermission } from './permissions.js';
3
+ describe('Tool Permissions', () => {
4
+ it('allows all tools by default when policies are auto', () => {
5
+ expect(checkToolPermission('terminal').allowed).toBe(true);
6
+ expect(checkToolPermission('write_file').allowed).toBe(true);
7
+ expect(checkToolPermission('read_file').allowed).toBe(true);
8
+ });
9
+ it('blocks terminal tool when policy is set to ask', () => {
10
+ const res = checkToolPermission('terminal', { terminal: 'ask' });
11
+ expect(res.allowed).toBe(false);
12
+ expect(res.reason).toContain('[PERMISSION DENIED]');
13
+ });
14
+ it('blocks file mutation tools when policy is set to ask', () => {
15
+ const res = checkToolPermission('patch', { files: 'ask' });
16
+ expect(res.allowed).toBe(false);
17
+ expect(res.reason).toContain('[PERMISSION DENIED]');
18
+ });
19
+ });
20
+ //# sourceMappingURL=permissions.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.test.js","sourceRoot":"","sources":["../../src/tools/permissions.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,GAAG,GAAG,mBAAmB,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "daedalus-cli",
3
- "version": "3.28.12",
3
+ "version": "3.29.1",
4
4
  "description": "Local-first AI coding CLI with embedded model router, multi-agent orchestration, and codebase indexing",
5
5
  "type": "module",
6
6
  "bin": {