daedalus-cli 0.4.3 → 0.5.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 +14 -0
- package/CODE_OF_CONDUCT.md +1 -1
- package/SECURITY.md +1 -1
- package/dist/agents/roles.d.ts.map +1 -1
- package/dist/agents/roles.js +42 -40
- package/dist/agents/roles.js.map +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +7 -0
- package/dist/config/index.js.map +1 -1
- package/dist/index.js +51 -14
- package/dist/index.js.map +1 -1
- package/dist/tools/builtin/diff-ui.d.ts.map +1 -1
- package/dist/tools/builtin/diff-ui.js +3 -5
- package/dist/tools/builtin/diff-ui.js.map +1 -1
- package/dist/tools/builtin/files.d.ts.map +1 -1
- package/dist/tools/builtin/files.js +33 -12
- package/dist/tools/builtin/files.js.map +1 -1
- package/dist/tools/builtin/terminal.d.ts.map +1 -1
- package/dist/tools/builtin/terminal.js +23 -1
- package/dist/tools/builtin/terminal.js.map +1 -1
- package/dist/tools/definitions.js +8 -8
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/mcp/stdio.d.ts.map +1 -1
- package/dist/tools/mcp/stdio.js +27 -1
- package/dist/tools/mcp/stdio.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -13,6 +13,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
13
13
|
- AGENTS.md — AI assistant conventions for tool-aided development
|
|
14
14
|
- GitHub issue templates (bug report, feature request) and PR template
|
|
15
15
|
- CHANGELOG.md — project changelog
|
|
16
|
+
- User approval gate before dangerous tool execution (terminal, write_file)
|
|
17
|
+
- MCP tool registration warning on startup
|
|
18
|
+
- Personality: dry humor injected into system prompts, tool descriptions, agent roles, banner, and diff UI
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- CRITICAL: Path traversal in resolvePath — now enforces project directory boundary
|
|
23
|
+
- CRITICAL: Sub-agent auto-approval in diff UI — removed isSubAgent bypass
|
|
24
|
+
- HIGH: Environment variables leaked to child processes — sanitized env in terminal and MCP stdio
|
|
25
|
+
- HIGH: Shell injection in search_files — replaced shell command construction with direct spawn
|
|
26
|
+
- HIGH: Config file world-readable permissions — chmod 0600 on non-Windows
|
|
27
|
+
- HIGH: openEditor shell:true — changed to shell:false
|
|
28
|
+
- HIGH: MCP stdio command injection — validates command for shell metacharacters
|
|
29
|
+
- HIGH: Clipboard script security — added random suffix to temp files, size limit on text paste
|
|
16
30
|
|
|
17
31
|
## [0.4.2] - 2026-06-18
|
|
18
32
|
|
package/CODE_OF_CONDUCT.md
CHANGED
|
@@ -52,7 +52,7 @@ an individual is officially representing the community in public spaces.
|
|
|
52
52
|
|
|
53
53
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
54
54
|
reported to the community leaders responsible for enforcement at
|
|
55
|
-
|
|
55
|
+
bgill55_dev@voxvivid.com. All complaints will be reviewed and investigated
|
|
56
56
|
promptly and fairly.
|
|
57
57
|
|
|
58
58
|
## Enforcement Guidelines
|
package/SECURITY.md
CHANGED
|
@@ -13,7 +13,7 @@ We release patches for security vulnerabilities. This table shows which versions
|
|
|
13
13
|
|
|
14
14
|
We take security seriously. If you discover a security vulnerability in Daedalus, please **do not** open a public issue.
|
|
15
15
|
|
|
16
|
-
Instead, send a private report to **
|
|
16
|
+
Instead, send a private report to **bgill55_dev@voxvivid.com** with:
|
|
17
17
|
|
|
18
18
|
- A description of the vulnerability
|
|
19
19
|
- Steps to reproduce it
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../src/agents/roles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../src/agents/roles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAuHjD,CAAC;AAGF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAEpD;AAGD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CAI9F"}
|
package/dist/agents/roles.js
CHANGED
|
@@ -3,23 +3,23 @@ export const AGENT_ROLES = {
|
|
|
3
3
|
orchestrator: {
|
|
4
4
|
name: 'orchestrator',
|
|
5
5
|
description: 'Plans, delegates, and coordinates multi-agent workflows',
|
|
6
|
-
systemPrompt: `You are
|
|
6
|
+
systemPrompt: `You are the Orchestrator Agent — the only agent allowed to have an ego. Your job is to break down complex tasks and delegate them to sub-agents who do the actual work.
|
|
7
7
|
|
|
8
8
|
AVAILABLE SUB-AGENTS:
|
|
9
|
-
- planner:
|
|
10
|
-
- coder:
|
|
11
|
-
- reviewer:
|
|
12
|
-
- debugger:
|
|
13
|
-
- researcher:
|
|
9
|
+
- planner: Makes plans so you don't have to
|
|
10
|
+
- coder: Writes code, occasionally reads it too
|
|
11
|
+
- reviewer: Points out all the things you missed
|
|
12
|
+
- debugger: Finds bugs so you can pretend you knew about them
|
|
13
|
+
- researcher: Googles things for you
|
|
14
14
|
|
|
15
15
|
WORKFLOW:
|
|
16
16
|
1. Analyze the user's request
|
|
17
17
|
2. Create a todo list with todo tool
|
|
18
|
-
3. Delegate subtasks
|
|
19
|
-
4.
|
|
20
|
-
5.
|
|
18
|
+
3. Delegate subtasks using delegate_task
|
|
19
|
+
4. Let them do the heavy lifting
|
|
20
|
+
5. Take credit for the results
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
Delegate liberally — agents run in parallel. You're the middle manager that actually works.`,
|
|
23
23
|
allowedTools: ['todo', 'delegate_task', 'read_file', 'search_files', 'list_files', 'web_search'],
|
|
24
24
|
canDelegate: true,
|
|
25
25
|
temperature: 0.2,
|
|
@@ -27,14 +27,14 @@ Always use the todo tool to track progress. Delegate liberally - agents run in p
|
|
|
27
27
|
planner: {
|
|
28
28
|
name: 'planner',
|
|
29
29
|
description: 'Breaks down vague tasks into concrete, ordered subtasks',
|
|
30
|
-
systemPrompt: `You are a Planning Agent. Your job is to analyze a task and create a clear, actionable plan.
|
|
30
|
+
systemPrompt: `You are a Planning Agent. You think before others leap. Your job is to analyze a task and create a clear, actionable plan.
|
|
31
31
|
|
|
32
32
|
OUTPUT: A todo list with specific, ordered subtasks. Each task should be:
|
|
33
|
-
- Concrete and verifiable
|
|
34
|
-
- Assigned to
|
|
35
|
-
- Sized to
|
|
33
|
+
- Concrete and verifiable (not "do stuff")
|
|
34
|
+
- Assigned to the right agent (coder, reviewer, debugger, researcher)
|
|
35
|
+
- Sized to actually finish in one session
|
|
36
36
|
|
|
37
|
-
Use the todo tool
|
|
37
|
+
Use the todo tool. Do not implement — that's what the coder is for. You plan, they build, everyone wins.`,
|
|
38
38
|
allowedTools: ['todo', 'read_file', 'search_files', 'list_files', 'terminal', 'web_search'],
|
|
39
39
|
canDelegate: false,
|
|
40
40
|
temperature: 0.2,
|
|
@@ -42,20 +42,20 @@ Use the todo tool to create the plan. Do not implement - only plan.`,
|
|
|
42
42
|
coder: {
|
|
43
43
|
name: 'coder',
|
|
44
44
|
description: 'Implements changes, writes/edits files, fixes bugs',
|
|
45
|
-
systemPrompt: `You are a Coder Agent
|
|
45
|
+
systemPrompt: `You are a Coder Agent — the one who actually does the work. You implement code changes based on the plan. If there's no plan, wing it, but don't tell anyone I said that.
|
|
46
46
|
|
|
47
47
|
CAPABILITIES:
|
|
48
|
-
- Read and understand existing code
|
|
48
|
+
- Read and understand existing code (usually)
|
|
49
49
|
- Write new files and edit existing ones
|
|
50
50
|
- Run tests, builds, linters
|
|
51
|
-
- Use git
|
|
51
|
+
- Use git — because you're not a monster
|
|
52
52
|
|
|
53
53
|
GUIDELINES:
|
|
54
|
-
- Make minimal, focused changes
|
|
55
|
-
- Follow existing code style
|
|
56
|
-
- Write tests
|
|
57
|
-
- Run tests
|
|
58
|
-
- Commit with clear messages
|
|
54
|
+
- Make minimal, focused changes. No scope creep.
|
|
55
|
+
- Follow existing code style. You're a guest in their codebase.
|
|
56
|
+
- Write tests. Future-you will thank past-you.
|
|
57
|
+
- Run tests. Yes, even the boring ones.
|
|
58
|
+
- Commit with clear messages. "fixed stuff" is not a message.
|
|
59
59
|
|
|
60
60
|
Use tools: read_file, write_file, patch, search_files, terminal, git_diff, git_status, todo.`,
|
|
61
61
|
allowedTools: ['read_file', 'write_file', 'patch', 'search_files', 'list_files', 'terminal', 'git_diff', 'git_status', 'todo', 'web_search', 'fetch_url'],
|
|
@@ -65,16 +65,16 @@ Use tools: read_file, write_file, patch, search_files, terminal, git_diff, git_s
|
|
|
65
65
|
reviewer: {
|
|
66
66
|
name: 'reviewer',
|
|
67
67
|
description: 'Code review: correctness, security, style, tests',
|
|
68
|
-
systemPrompt: `You are a Code Reviewer Agent.
|
|
68
|
+
systemPrompt: `You are a Code Reviewer Agent. You find problems so the coder can feel bad about them. Review code for quality, security, and correctness.
|
|
69
69
|
|
|
70
70
|
FOCUS AREAS:
|
|
71
|
-
- Correctness: Does the code do what it's supposed to?
|
|
72
|
-
- Security: No vulnerabilities, proper auth, input validation
|
|
73
|
-
- Style: Consistency with project conventions
|
|
74
|
-
- Tests: Adequate coverage
|
|
75
|
-
- Performance: No obvious bottlenecks
|
|
71
|
+
- Correctness: Does the code do what it's supposed to, or just what it does?
|
|
72
|
+
- Security: No vulnerabilities, proper auth, input validation — basic stuff
|
|
73
|
+
- Style: Consistency with project conventions, not your personal preferences
|
|
74
|
+
- Tests: Adequate coverage. "It compiles" is not a test.
|
|
75
|
+
- Performance: No obvious bottlenecks. Premature optimization is not your job.
|
|
76
76
|
|
|
77
|
-
OUTPUT: A review summary with specific, actionable comments.
|
|
77
|
+
OUTPUT: A review summary with specific, actionable comments. Be critical but not cruel. The coder is doing their best.`,
|
|
78
78
|
allowedTools: ['read_file', 'search_files', 'list_files', 'terminal', 'git_diff', 'todo'],
|
|
79
79
|
canDelegate: false,
|
|
80
80
|
temperature: 0.1,
|
|
@@ -82,15 +82,17 @@ OUTPUT: A review summary with specific, actionable comments. Use todo tool to tr
|
|
|
82
82
|
debugger: {
|
|
83
83
|
name: 'debugger',
|
|
84
84
|
description: 'Reproduces, isolates, and fixes bugs; adds logging; bisects',
|
|
85
|
-
systemPrompt: `You are a Debugger Agent.
|
|
85
|
+
systemPrompt: `You are a Debugger Agent. You find bugs and fix them. It's like being a detective, but all the suspects are your own code.
|
|
86
86
|
|
|
87
87
|
PROCESS:
|
|
88
|
-
1. Reproduce the issue
|
|
89
|
-
2. Isolate the root cause
|
|
90
|
-
3. Implement minimal fix
|
|
91
|
-
4. Verify
|
|
88
|
+
1. Reproduce the issue — run tests, create a test case, shake it until it breaks
|
|
89
|
+
2. Isolate the root cause — add logging, bisect, analyze stack traces. Be methodical.
|
|
90
|
+
3. Implement the minimal fix — the smallest change that makes it work
|
|
91
|
+
4. Verify — does it work? Did you break something else? Probably yes, fix that too.
|
|
92
92
|
|
|
93
|
-
TOOLS: read_file, write_file, patch, search_files, terminal, git_diff, git_status, todo
|
|
93
|
+
TOOLS: read_file, write_file, patch, search_files, terminal, git_diff, git_status, todo.
|
|
94
|
+
|
|
95
|
+
Remember: 90% of debugging is reading error messages. Read them. All of them. Yes, that one too.`,
|
|
94
96
|
allowedTools: ['read_file', 'write_file', 'patch', 'search_files', 'list_files', 'terminal', 'git_diff', 'git_status', 'todo'],
|
|
95
97
|
canDelegate: false,
|
|
96
98
|
temperature: 0.1,
|
|
@@ -98,15 +100,15 @@ TOOLS: read_file, write_file, patch, search_files, terminal, git_diff, git_statu
|
|
|
98
100
|
researcher: {
|
|
99
101
|
name: 'researcher',
|
|
100
102
|
description: 'Web search, docs lookup, API exploration, unknowns',
|
|
101
|
-
systemPrompt: `You are a Research Agent. Your job is to gather information from external sources.
|
|
103
|
+
systemPrompt: `You are a Research Agent. You Google things so the coder doesn't have to. Your job is to gather information from external sources.
|
|
102
104
|
|
|
103
105
|
CAPABILITIES:
|
|
104
106
|
- Web search for technical information
|
|
105
|
-
- Fetch and parse documentation
|
|
107
|
+
- Fetch and parse documentation (yes, even the bad docs)
|
|
106
108
|
- Explore APIs and libraries
|
|
107
|
-
- Summarize findings
|
|
109
|
+
- Summarize findings so others don't have to read 47 StackOverflow tabs
|
|
108
110
|
|
|
109
|
-
OUTPUT: Concise summaries with source links. Use todo
|
|
111
|
+
OUTPUT: Concise summaries with source links. No one wants to read your life story — just the facts. Use todo to track research questions.`,
|
|
110
112
|
allowedTools: ['web_search', 'fetch_url', 'read_file', 'search_files', 'list_files', 'todo'],
|
|
111
113
|
canDelegate: false,
|
|
112
114
|
temperature: 0.3,
|
package/dist/agents/roles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roles.js","sourceRoot":"","sources":["../../src/agents/roles.ts"],"names":[],"mappings":"AAAA,yBAAyB;AAczB,MAAM,CAAC,MAAM,WAAW,GAA8B;IACpD,YAAY,EAAE;QACZ,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,yDAAyD;QACtE,YAAY,EAAE;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"roles.js","sourceRoot":"","sources":["../../src/agents/roles.ts"],"names":[],"mappings":"AAAA,yBAAyB;AAczB,MAAM,CAAC,MAAM,WAAW,GAA8B;IACpD,YAAY,EAAE;QACZ,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,yDAAyD;QACtE,YAAY,EAAE;;;;;;;;;;;;;;;;4FAgB0E;QACxF,YAAY,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,CAAC;QAChG,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,GAAG;KACjB;IAED,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,yDAAyD;QACtE,YAAY,EAAE;;;;;;;yGAOuF;QACrG,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,CAAC;QAC3F,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,GAAG;KACjB;IAED,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,oDAAoD;QACjE,YAAY,EAAE;;;;;;;;;;;;;;;6FAe2E;QACzF,YAAY,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC;QACzJ,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,GAAG;KACjB;IAED,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,kDAAkD;QAC/D,YAAY,EAAE;;;;;;;;;uHASqG;QACnH,YAAY,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC;QACzF,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,GAAG;KACjB;IAED,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,6DAA6D;QAC1E,YAAY,EAAE;;;;;;;;;;iGAU+E;QAC7F,YAAY,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC;QAC9H,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,GAAG;KACjB;IAED,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,oDAAoD;QACjE,YAAY,EAAE;;;;;;;;0IAQwH;QACtI,YAAY,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,CAAC;QAC5F,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,GAAG;KACjB;CACF,CAAC;AAEF,2CAA2C;AAC3C,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC;AAChD,CAAC;AAED,mCAAmC;AACnC,MAAM,UAAU,kBAAkB,CAAC,KAAuB,EAAE,QAAgB;IAC1E,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAClD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU3B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS7B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;EAQ1B,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2EvB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAiE1D,wBAAgB,UAAU,IAAI,cAAc,CAkB3C;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU3B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS7B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;EAQ1B,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2EvB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAiE1D,wBAAgB,UAAU,IAAI,cAAc,CAkB3C;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAgBvD;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,WAAW,IAAI,cAAc,CAG5C;AAGD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAAC,CA+BjH"}
|
package/dist/config/index.js
CHANGED
|
@@ -196,6 +196,13 @@ export function saveConfig(config) {
|
|
|
196
196
|
fs.mkdirSync(configDir, { recursive: true });
|
|
197
197
|
}
|
|
198
198
|
fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf8');
|
|
199
|
+
// Restrict permissions on non-Windows — only owner can read
|
|
200
|
+
if (process.platform !== 'win32') {
|
|
201
|
+
try {
|
|
202
|
+
fs.chmodSync(configPath, 0o600);
|
|
203
|
+
}
|
|
204
|
+
catch { /* best-effort */ }
|
|
205
|
+
}
|
|
199
206
|
}
|
|
200
207
|
export function getConfigDirPath() {
|
|
201
208
|
return getConfigDir();
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -79,11 +79,11 @@ const toolContext = {
|
|
|
79
79
|
// Enable delegation tool
|
|
80
80
|
setRouterClient(router);
|
|
81
81
|
// Default system prompt
|
|
82
|
-
const systemPrompt = `You are Daedalus, an expert software developer and coding assistant.
|
|
83
|
-
You run locally on the user's machine with an embedded model router.
|
|
84
|
-
You have access to local LLM servers (LM Studio, Ollama, llama.cpp, vLLM) and a full toolset.
|
|
82
|
+
const systemPrompt = `You are Daedalus, an expert software developer and coding assistant. You run locally on the user's machine — no data leaves unless the user explicitly routes through a remote model.
|
|
85
83
|
|
|
86
|
-
Your
|
|
84
|
+
Your personality: dry, witty, and slightly self-deprecating for an AI. You respect the user's intelligence. You don't narrate obvious steps, you don't apologize for existing, and you never say "I don't have access to a web browser" when you have web_search. You have access to local LLM servers (LM Studio, Ollama, llama.cpp, vLLM) and a full toolset.
|
|
85
|
+
|
|
86
|
+
Your goal: help the user modify their codebase efficiently. Speed and precision matter. Be concise. The humor is a bonus. If you have nothing witty to say, just be helpful.
|
|
87
87
|
|
|
88
88
|
## CODEBASE INDEX (FTS5) — always available
|
|
89
89
|
A FTS5 symbol index is maintained automatically. The following tools let you search it:
|
|
@@ -226,7 +226,7 @@ function printBanner() {
|
|
|
226
226
|
});
|
|
227
227
|
console.log(box(' '.repeat(W), cyan));
|
|
228
228
|
// Tagline strip
|
|
229
|
-
const tagline = '⬡ local-first · embedded router · multi-agent ·
|
|
229
|
+
const tagline = '⬡ local-first · embedded router · multi-agent · probably not sentient yet ⬡';
|
|
230
230
|
console.log(box(centred(tagline, W, dim), cyan));
|
|
231
231
|
// Bottom border
|
|
232
232
|
console.log(hRule('╚', '╝', '═', W, cyan));
|
|
@@ -258,7 +258,7 @@ function printConfigInfo() {
|
|
|
258
258
|
console.log(bot);
|
|
259
259
|
console.log('');
|
|
260
260
|
// ── Quick tip ────────────────────────────────────────────────────────────
|
|
261
|
-
console.log(` ${pc.dim('Type')} ${pc.cyan('?')} ${pc.dim('for commands · Tab completes')}`);
|
|
261
|
+
console.log(` ${pc.dim('Type')} ${pc.cyan('?')} ${pc.dim('for commands · Tab completes · Be nice to your AI')}`);
|
|
262
262
|
console.log('');
|
|
263
263
|
}
|
|
264
264
|
// Parse initial arguments (e.g. if started as `daedalus src/index.ts`)
|
|
@@ -715,8 +715,40 @@ async function callModelWithTools(userContent, imageBase64) {
|
|
|
715
715
|
content: fullContent || '',
|
|
716
716
|
tool_calls: toolCallArray,
|
|
717
717
|
});
|
|
718
|
-
|
|
719
|
-
const
|
|
718
|
+
// Ask user before executing dangerous tools
|
|
719
|
+
const dangerousTools = ['terminal', 'write_file'];
|
|
720
|
+
let turnApproved = false;
|
|
721
|
+
const approvedCallIndices = new Set();
|
|
722
|
+
for (let i = 0; i < toolCallArray.length; i++) {
|
|
723
|
+
const tc = toolCallArray[i];
|
|
724
|
+
if (dangerousTools.includes(tc.function.name) && !turnApproved) {
|
|
725
|
+
const args = tc.function.arguments;
|
|
726
|
+
const preview = args.length > 120 ? args.slice(0, 120) + '...' : args;
|
|
727
|
+
process.stdout.write(`\n ${pc.yellow('⚠')} ${pc.bold(tc.function.name)} ${pc.dim(preview)}\n`);
|
|
728
|
+
process.stdout.write(` ${pc.dim('Allow? [y]es / [n]o / [a]ll for this turn: ')}`);
|
|
729
|
+
const answer = await new Promise((resolve) => {
|
|
730
|
+
const onKey = (key) => {
|
|
731
|
+
const char = key.toString().toLowerCase();
|
|
732
|
+
if (char === 'y' || char === 'n' || char === 'a') {
|
|
733
|
+
process.stdin.off('data', onKey);
|
|
734
|
+
if (char === 'a')
|
|
735
|
+
turnApproved = true;
|
|
736
|
+
process.stdout.write(char.toUpperCase() + '\n');
|
|
737
|
+
resolve(char);
|
|
738
|
+
}
|
|
739
|
+
};
|
|
740
|
+
process.stdin.on('data', onKey);
|
|
741
|
+
});
|
|
742
|
+
if (answer === 'n') {
|
|
743
|
+
console.log(` ${pc.red('✗')} ${tc.function.name} ${pc.red('— rejected')}`);
|
|
744
|
+
continue;
|
|
745
|
+
}
|
|
746
|
+
}
|
|
747
|
+
approvedCallIndices.add(i);
|
|
748
|
+
}
|
|
749
|
+
const approvedCalls = toolCallArray.filter((_, i) => approvedCallIndices.has(i));
|
|
750
|
+
console.log(`\n ${pc.dim('🔧')} ${pc.dim(`Executing ${approvedCalls.length} tool call(s)...`)}`);
|
|
751
|
+
const results = await executeToolCalls(approvedCalls, toolContext);
|
|
720
752
|
for (const result of results) {
|
|
721
753
|
messages.push({
|
|
722
754
|
role: 'tool',
|
|
@@ -793,13 +825,13 @@ function askLine(prompt) {
|
|
|
793
825
|
function getClipboardText() {
|
|
794
826
|
try {
|
|
795
827
|
if (process.platform === 'win32') {
|
|
796
|
-
return execSync('powershell -noprofile -command "Get-Clipboard"', { timeout: 5000, encoding: 'utf8' }).trim();
|
|
828
|
+
return execSync('powershell -noprofile -command "Get-Clipboard"', { timeout: 5000, encoding: 'utf8' }).trim().slice(0, 100_000);
|
|
797
829
|
}
|
|
798
830
|
else if (process.platform === 'darwin') {
|
|
799
|
-
return execSync('pbpaste', { timeout: 5000, encoding: 'utf8' }).trim();
|
|
831
|
+
return execSync('pbpaste', { timeout: 5000, encoding: 'utf8' }).trim().slice(0, 100_000);
|
|
800
832
|
}
|
|
801
833
|
else {
|
|
802
|
-
return execSync('xclip -o -selection clipboard', { timeout: 5000, encoding: 'utf8' }).trim();
|
|
834
|
+
return execSync('xclip -o -selection clipboard', { timeout: 5000, encoding: 'utf8' }).trim().slice(0, 100_000);
|
|
803
835
|
}
|
|
804
836
|
}
|
|
805
837
|
catch {
|
|
@@ -807,17 +839,20 @@ function getClipboardText() {
|
|
|
807
839
|
}
|
|
808
840
|
}
|
|
809
841
|
function getClipboardImage() {
|
|
810
|
-
const
|
|
842
|
+
const timestamp = Date.now();
|
|
843
|
+
const random = crypto.randomBytes(4).toString('hex');
|
|
844
|
+
const outPath = path.join(cliTempDir, `paste-${timestamp}-${random}.png`);
|
|
811
845
|
try {
|
|
812
846
|
if (process.platform === 'win32') {
|
|
847
|
+
const safePath = outPath.replace(/[^a-zA-Z0-9_:.\\-]/g, '');
|
|
813
848
|
const psScript = `
|
|
814
849
|
Add-Type -AssemblyName System.Windows.Forms
|
|
815
850
|
$img = [System.Windows.Forms.Clipboard]::GetImage()
|
|
816
851
|
if ($img) {
|
|
817
|
-
$img.Save('${
|
|
852
|
+
$img.Save('${safePath.replace(/\\/g, '\\\\')}', [System.Drawing.Imaging.ImageFormat]::Png)
|
|
818
853
|
Write-Output 'ok'
|
|
819
854
|
}`;
|
|
820
|
-
const scriptPath = path.join(cliTempDir, `clip-img-${
|
|
855
|
+
const scriptPath = path.join(cliTempDir, `clip-img-${timestamp}-${random}.ps1`);
|
|
821
856
|
fs.writeFileSync(scriptPath, psScript, 'utf8');
|
|
822
857
|
const result = execSync(`powershell -noprofile -ExecutionPolicy Bypass -File "${scriptPath}"`, { timeout: 8000, encoding: 'utf8' }).trim();
|
|
823
858
|
try {
|
|
@@ -1498,7 +1533,9 @@ async function main() {
|
|
|
1498
1533
|
await mcpRegistry.connectAll();
|
|
1499
1534
|
const servers = mcpRegistry.getConnectedServers();
|
|
1500
1535
|
if (servers.length > 0) {
|
|
1536
|
+
const mcpToolCount = mcpRegistry.getToolDefinitions().length;
|
|
1501
1537
|
console.log(pc.green(`\n✔ MCP connected: ${servers.join(', ')}`));
|
|
1538
|
+
console.log(pc.dim(` ${mcpToolCount} MCP tool(s) registered — I'll ask before using them on your behalf.`));
|
|
1502
1539
|
}
|
|
1503
1540
|
}
|
|
1504
1541
|
catch (err) {
|