daedalus-cli 3.66.1 → 3.67.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.
- package/CHANGELOG.md +20 -0
- package/README.md +2 -1
- package/dist/agents/completion-guard.d.ts +8 -2
- package/dist/agents/completion-guard.d.ts.map +1 -1
- package/dist/agents/completion-guard.js +42 -3
- package/dist/agents/completion-guard.js.map +1 -1
- package/dist/agents/completion-guard.test.js +24 -1
- package/dist/agents/completion-guard.test.js.map +1 -1
- package/dist/agents/task-delegator.d.ts.map +1 -1
- package/dist/agents/task-delegator.js +11 -0
- package/dist/agents/task-delegator.js.map +1 -1
- package/dist/agents/turn-guards.d.ts.map +1 -1
- package/dist/agents/turn-guards.js +18 -15
- package/dist/agents/turn-guards.js.map +1 -1
- package/dist/config/index.d.ts +5 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +3 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/presets.d.ts.map +1 -1
- package/dist/config/presets.js +1 -0
- package/dist/config/presets.js.map +1 -1
- package/dist/index.js +18 -3
- package/dist/index.js.map +1 -1
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +14 -2
- package/dist/model.js.map +1 -1
- package/dist/router/rate-limiter.test.js +1 -1
- package/dist/router/rate-limiter.test.js.map +1 -1
- package/dist/session/sigma-mem.d.ts +11 -1
- package/dist/session/sigma-mem.d.ts.map +1 -1
- package/dist/session/sigma-mem.js +45 -2
- package/dist/session/sigma-mem.js.map +1 -1
- package/dist/session/sigma-mem.test.js +41 -0
- package/dist/session/sigma-mem.test.js.map +1 -1
- package/dist/session/sqlite.d.ts +18 -0
- package/dist/session/sqlite.d.ts.map +1 -1
- package/dist/session/sqlite.js +68 -0
- package/dist/session/sqlite.js.map +1 -1
- package/dist/tools/builtin/terminal.d.ts.map +1 -1
- package/dist/tools/builtin/terminal.js +4 -0
- package/dist/tools/builtin/terminal.js.map +1 -1
- package/dist/tools/context-selector.d.ts +12 -0
- package/dist/tools/context-selector.d.ts.map +1 -0
- package/dist/tools/context-selector.js +141 -0
- package/dist/tools/context-selector.js.map +1 -0
- package/dist/tools/context-selector.test.d.ts +2 -0
- package/dist/tools/context-selector.test.d.ts.map +1 -0
- package/dist/tools/context-selector.test.js +69 -0
- package/dist/tools/context-selector.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
export const CORE_ESSENTIAL_TOOLS = new Set([
|
|
2
|
+
'read_file',
|
|
3
|
+
'write_file',
|
|
4
|
+
'patch',
|
|
5
|
+
'search_files',
|
|
6
|
+
'list_files',
|
|
7
|
+
'terminal',
|
|
8
|
+
'git_status',
|
|
9
|
+
'git_diff',
|
|
10
|
+
'todo',
|
|
11
|
+
'ask_user',
|
|
12
|
+
]);
|
|
13
|
+
const LSP_EXTENSIONS = new Set([
|
|
14
|
+
'.ts', '.tsx', '.js', '.jsx', '.py', '.rs', '.go', '.java', '.c', '.cpp', '.cs', '.php', '.rb',
|
|
15
|
+
]);
|
|
16
|
+
const LSP_PROMPT_RE = /\b(type|types|typecheck|compiler|diagnostics?|lsp|compile|syntax|rename|eval|hover|symbol|interfaces?|ts\d{4})\b/i;
|
|
17
|
+
const LSP_ERROR_RE = /TS\d{4}|SyntaxError|TypeError|ReferenceError|compile error|build failed|tsc\b/i;
|
|
18
|
+
const GRAPH_PROMPT_RE = /\b(symbol|symbols|definition|defined|references?|referenced|callee|caller|call graph|calls|impact|who calls|where is|trace|refactor|architecture|codebase index|reindex)\b/i;
|
|
19
|
+
const WEB_PROMPT_RE = /https?:\/\/|\b(web|search|browse|fetch|url|docs|documentation|online|scrape|lookup|website|internet)\b/i;
|
|
20
|
+
const PROCESS_PROMPT_RE = /\b(process|daemon|server|background|port|pid|kill|listening|watch process|system info|memory|cpu|specs)\b/i;
|
|
21
|
+
const ORCHESTRATION_PROMPT_RE = /\b(delegate|subagent|handoff|orchestrat|route|variable|context var)\b/i;
|
|
22
|
+
const SKILLS_PROMPT_RE = /\b(skill|skills|playbook|draft skill|scan ai|repos|recipes?)\b/i;
|
|
23
|
+
const IMAGE_PROMPT_RE = /\b(image|picture|drawing|photo|illustration|logo|icon|generate image|draw)\b/i;
|
|
24
|
+
export function selectContextTools(tools, options = {}) {
|
|
25
|
+
if (options.enabled === false) {
|
|
26
|
+
return tools;
|
|
27
|
+
}
|
|
28
|
+
const prompt = options.userPrompt ?? '';
|
|
29
|
+
const activeFiles = options.activeFiles ?? [];
|
|
30
|
+
const recentMessages = options.recentMessages ?? [];
|
|
31
|
+
const recentToolCalls = new Set(options.recentToolCalls ?? []);
|
|
32
|
+
const role = (options.agentRole ?? '').toLowerCase();
|
|
33
|
+
const recentText = recentMessages
|
|
34
|
+
.slice(-4)
|
|
35
|
+
.map(m => (typeof m.content === 'string' ? m.content : ''))
|
|
36
|
+
.join('\n');
|
|
37
|
+
const hasLspFiles = activeFiles.some(f => {
|
|
38
|
+
const ext = f.slice(f.lastIndexOf('.')).toLowerCase();
|
|
39
|
+
return LSP_EXTENSIONS.has(ext);
|
|
40
|
+
});
|
|
41
|
+
const shouldIncludeLsp = hasLspFiles ||
|
|
42
|
+
LSP_PROMPT_RE.test(prompt) ||
|
|
43
|
+
LSP_ERROR_RE.test(recentText) ||
|
|
44
|
+
recentToolCalls.has('lsp_diagnostics') ||
|
|
45
|
+
recentToolCalls.has('lsp_hover') ||
|
|
46
|
+
recentToolCalls.has('lsp_rename') ||
|
|
47
|
+
recentToolCalls.has('eval_code');
|
|
48
|
+
const shouldIncludeGraph = GRAPH_PROMPT_RE.test(prompt) ||
|
|
49
|
+
recentToolCalls.has('find_symbol') ||
|
|
50
|
+
recentToolCalls.has('get_definition') ||
|
|
51
|
+
recentToolCalls.has('get_references') ||
|
|
52
|
+
recentToolCalls.has('get_call_graph') ||
|
|
53
|
+
recentToolCalls.has('get_impact') ||
|
|
54
|
+
recentToolCalls.has('index_codebase');
|
|
55
|
+
const shouldIncludeWeb = WEB_PROMPT_RE.test(prompt) ||
|
|
56
|
+
recentToolCalls.has('web_search') ||
|
|
57
|
+
recentToolCalls.has('fetch_url') ||
|
|
58
|
+
recentToolCalls.has('screenshot_page');
|
|
59
|
+
const shouldIncludeProcesses = PROCESS_PROMPT_RE.test(prompt) ||
|
|
60
|
+
recentToolCalls.has('watch_process') ||
|
|
61
|
+
recentToolCalls.has('read_process') ||
|
|
62
|
+
recentToolCalls.has('kill_process') ||
|
|
63
|
+
recentToolCalls.has('system_info');
|
|
64
|
+
const shouldIncludeOrchestration = role === 'orchestrator' ||
|
|
65
|
+
role === 'daedalus' ||
|
|
66
|
+
ORCHESTRATION_PROMPT_RE.test(prompt) ||
|
|
67
|
+
recentToolCalls.has('delegate_task') ||
|
|
68
|
+
recentToolCalls.has('handoff_task') ||
|
|
69
|
+
recentToolCalls.has('route_task');
|
|
70
|
+
const shouldIncludeSkills = SKILLS_PROMPT_RE.test(prompt) ||
|
|
71
|
+
recentToolCalls.has('propose_skill') ||
|
|
72
|
+
recentToolCalls.has('scan_ai_repos');
|
|
73
|
+
const shouldIncludeImage = IMAGE_PROMPT_RE.test(prompt) ||
|
|
74
|
+
recentToolCalls.has('generate_image');
|
|
75
|
+
const priorityWeights = new Map();
|
|
76
|
+
for (const tool of tools) {
|
|
77
|
+
const name = tool.function.name;
|
|
78
|
+
let weight = 0;
|
|
79
|
+
if (CORE_ESSENTIAL_TOOLS.has(name)) {
|
|
80
|
+
weight = 50;
|
|
81
|
+
}
|
|
82
|
+
if (name.startsWith('lsp_') || name === 'eval_code') {
|
|
83
|
+
if (shouldIncludeLsp) {
|
|
84
|
+
weight = LSP_ERROR_RE.test(recentText) ? 90 : 70;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else if (name === 'find_symbol' ||
|
|
88
|
+
name === 'get_definition' ||
|
|
89
|
+
name === 'get_references' ||
|
|
90
|
+
name === 'get_call_graph' ||
|
|
91
|
+
name === 'get_impact' ||
|
|
92
|
+
name === 'index_codebase') {
|
|
93
|
+
if (shouldIncludeGraph) {
|
|
94
|
+
weight = 75;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
else if (name === 'web_search' || name === 'fetch_url' || name === 'screenshot_page') {
|
|
98
|
+
if (shouldIncludeWeb) {
|
|
99
|
+
weight = 80;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
else if (name === 'watch_process' ||
|
|
103
|
+
name === 'read_process' ||
|
|
104
|
+
name === 'kill_process' ||
|
|
105
|
+
name === 'system_info') {
|
|
106
|
+
if (shouldIncludeProcesses) {
|
|
107
|
+
weight = 65;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else if (name === 'delegate_task' ||
|
|
111
|
+
name === 'handoff_task' ||
|
|
112
|
+
name === 'route_task' ||
|
|
113
|
+
name === 'set_context_variable' ||
|
|
114
|
+
name === 'get_context_variable') {
|
|
115
|
+
if (shouldIncludeOrchestration) {
|
|
116
|
+
weight = 60;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
else if (name === 'propose_skill' || name === 'scan_ai_repos') {
|
|
120
|
+
if (shouldIncludeSkills) {
|
|
121
|
+
weight = 55;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else if (name === 'generate_image') {
|
|
125
|
+
if (shouldIncludeImage) {
|
|
126
|
+
weight = 85;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
weight = 40;
|
|
131
|
+
}
|
|
132
|
+
if (recentToolCalls.has(name)) {
|
|
133
|
+
weight += 20;
|
|
134
|
+
}
|
|
135
|
+
priorityWeights.set(name, weight);
|
|
136
|
+
}
|
|
137
|
+
const selected = tools.filter(t => (priorityWeights.get(t.function.name) ?? 0) > 0);
|
|
138
|
+
selected.sort((a, b) => (priorityWeights.get(b.function.name) ?? 0) - (priorityWeights.get(a.function.name) ?? 0));
|
|
139
|
+
return selected;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=context-selector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-selector.js","sourceRoot":"","sources":["../../src/tools/context-selector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-selector.test.d.ts","sourceRoot":"","sources":["../../src/tools/context-selector.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { selectContextTools, CORE_ESSENTIAL_TOOLS } from './context-selector.js';
|
|
3
|
+
import { BUILTIN_TOOLS, POWER_TOOLS } from './definitions.js';
|
|
4
|
+
describe('selectContextTools', () => {
|
|
5
|
+
const allTools = [...BUILTIN_TOOLS, ...POWER_TOOLS];
|
|
6
|
+
it('returns all tools unchanged when enabled is false', () => {
|
|
7
|
+
const result = selectContextTools(allTools, { enabled: false });
|
|
8
|
+
expect(result.length).toBe(allTools.length);
|
|
9
|
+
});
|
|
10
|
+
it('always includes all core essential tools in basic context', () => {
|
|
11
|
+
const result = selectContextTools(allTools, {
|
|
12
|
+
userPrompt: 'fix the typo in readme',
|
|
13
|
+
activeFiles: [],
|
|
14
|
+
});
|
|
15
|
+
const resultNames = new Set(result.map(t => t.function.name));
|
|
16
|
+
for (const coreTool of CORE_ESSENTIAL_TOOLS) {
|
|
17
|
+
expect(resultNames.has(coreTool)).toBe(true);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
it('promotes LSP tools when editing TypeScript files', () => {
|
|
21
|
+
const result = selectContextTools(allTools, {
|
|
22
|
+
userPrompt: 'check this function',
|
|
23
|
+
activeFiles: ['src/model.ts'],
|
|
24
|
+
});
|
|
25
|
+
const resultNames = new Set(result.map(t => t.function.name));
|
|
26
|
+
expect(resultNames.has('lsp_diagnostics')).toBe(true);
|
|
27
|
+
expect(resultNames.has('lsp_hover')).toBe(true);
|
|
28
|
+
});
|
|
29
|
+
it('prioritizes LSP tools to top rank when compiler errors appear in recent messages', () => {
|
|
30
|
+
const result = selectContextTools(allTools, {
|
|
31
|
+
userPrompt: 'fix the build',
|
|
32
|
+
recentMessages: [
|
|
33
|
+
{
|
|
34
|
+
role: 'user',
|
|
35
|
+
content: 'Error: src/indexer.ts(45,12): error TS2322: Type "string" is not assignable to type "number".',
|
|
36
|
+
},
|
|
37
|
+
],
|
|
38
|
+
});
|
|
39
|
+
const topTools = result.slice(0, 3).map(t => t.function.name);
|
|
40
|
+
expect(topTools).toContain('lsp_diagnostics');
|
|
41
|
+
});
|
|
42
|
+
it('promotes symbol and call graph tools when prompt asks about references or symbols', () => {
|
|
43
|
+
const result = selectContextTools(allTools, {
|
|
44
|
+
userPrompt: 'find all references to selectContextTools and show who calls it',
|
|
45
|
+
});
|
|
46
|
+
const resultNames = new Set(result.map(t => t.function.name));
|
|
47
|
+
expect(resultNames.has('find_symbol')).toBe(true);
|
|
48
|
+
expect(resultNames.has('get_references')).toBe(true);
|
|
49
|
+
expect(resultNames.has('get_call_graph')).toBe(true);
|
|
50
|
+
});
|
|
51
|
+
it('promotes web search tools when URL is present in prompt', () => {
|
|
52
|
+
const result = selectContextTools(allTools, {
|
|
53
|
+
userPrompt: 'read docs from https://docs.anthropic.com/en/api/overview',
|
|
54
|
+
});
|
|
55
|
+
const resultNames = new Set(result.map(t => t.function.name));
|
|
56
|
+
expect(resultNames.has('web_search')).toBe(true);
|
|
57
|
+
expect(resultNames.has('fetch_url')).toBe(true);
|
|
58
|
+
});
|
|
59
|
+
it('boosts tools invoked in recent turns to maintain workflow continuity', () => {
|
|
60
|
+
const result = selectContextTools(allTools, {
|
|
61
|
+
userPrompt: 'continue with the analysis',
|
|
62
|
+
recentToolCalls: ['get_impact', 'lsp_hover'],
|
|
63
|
+
});
|
|
64
|
+
const resultNames = new Set(result.map(t => t.function.name));
|
|
65
|
+
expect(resultNames.has('get_impact')).toBe(true);
|
|
66
|
+
expect(resultNames.has('lsp_hover')).toBe(true);
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
//# sourceMappingURL=context-selector.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-selector.test.js","sourceRoot":"","sources":["../../src/tools/context-selector.test.ts"],"names":[],"mappings":"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"}
|