daedalus-cli 0.4.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/Daedalus.bat +18 -0
- package/LICENSE +21 -0
- package/README.md +254 -0
- package/dist/agents/agent.d.ts +10 -0
- package/dist/agents/agent.d.ts.map +1 -0
- package/dist/agents/agent.js +3 -0
- package/dist/agents/agent.js.map +1 -0
- package/dist/agents/orchestrator.d.ts +18 -0
- package/dist/agents/orchestrator.d.ts.map +1 -0
- package/dist/agents/orchestrator.js +171 -0
- package/dist/agents/orchestrator.js.map +1 -0
- package/dist/agents/roles.d.ts +14 -0
- package/dist/agents/roles.d.ts.map +1 -0
- package/dist/agents/roles.js +126 -0
- package/dist/agents/roles.js.map +1 -0
- package/dist/config/index.d.ts +485 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +237 -0
- package/dist/config/index.js.map +1 -0
- package/dist/highlight.d.ts +4 -0
- package/dist/highlight.d.ts.map +1 -0
- package/dist/highlight.js +42 -0
- package/dist/highlight.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1386 -0
- package/dist/index.js.map +1 -0
- package/dist/indexing/fts.d.ts +40 -0
- package/dist/indexing/fts.d.ts.map +1 -0
- package/dist/indexing/fts.js +121 -0
- package/dist/indexing/fts.js.map +1 -0
- package/dist/indexing/indexer.d.ts +22 -0
- package/dist/indexing/indexer.d.ts.map +1 -0
- package/dist/indexing/indexer.js +518 -0
- package/dist/indexing/indexer.js.map +1 -0
- package/dist/onboarding/wizard.d.ts +2 -0
- package/dist/onboarding/wizard.d.ts.map +1 -0
- package/dist/onboarding/wizard.js +231 -0
- package/dist/onboarding/wizard.js.map +1 -0
- package/dist/router/health.d.ts +6 -0
- package/dist/router/health.d.ts.map +1 -0
- package/dist/router/health.js +74 -0
- package/dist/router/health.js.map +1 -0
- package/dist/router/index.d.ts +33 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +214 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/rate-limiter.d.ts +7 -0
- package/dist/router/rate-limiter.d.ts.map +1 -0
- package/dist/router/rate-limiter.js +36 -0
- package/dist/router/rate-limiter.js.map +1 -0
- package/dist/router/types.d.ts +81 -0
- package/dist/router/types.d.ts.map +1 -0
- package/dist/router/types.js +3 -0
- package/dist/router/types.js.map +1 -0
- package/dist/session/jsonl.d.ts +20 -0
- package/dist/session/jsonl.d.ts.map +1 -0
- package/dist/session/jsonl.js +61 -0
- package/dist/session/jsonl.js.map +1 -0
- package/dist/session/manager.d.ts +42 -0
- package/dist/session/manager.d.ts.map +1 -0
- package/dist/session/manager.js +184 -0
- package/dist/session/manager.js.map +1 -0
- package/dist/session/memory.d.ts +23 -0
- package/dist/session/memory.d.ts.map +1 -0
- package/dist/session/memory.js +88 -0
- package/dist/session/memory.js.map +1 -0
- package/dist/session/sqlite.d.ts +59 -0
- package/dist/session/sqlite.d.ts.map +1 -0
- package/dist/session/sqlite.js +174 -0
- package/dist/session/sqlite.js.map +1 -0
- package/dist/tools/builtin/delegation.d.ts +17 -0
- package/dist/tools/builtin/delegation.d.ts.map +1 -0
- package/dist/tools/builtin/delegation.js +85 -0
- package/dist/tools/builtin/delegation.js.map +1 -0
- package/dist/tools/builtin/diff-ui.d.ts +21 -0
- package/dist/tools/builtin/diff-ui.d.ts.map +1 -0
- package/dist/tools/builtin/diff-ui.js +211 -0
- package/dist/tools/builtin/diff-ui.js.map +1 -0
- package/dist/tools/builtin/files.d.ts +29 -0
- package/dist/tools/builtin/files.d.ts.map +1 -0
- package/dist/tools/builtin/files.js +286 -0
- package/dist/tools/builtin/files.js.map +1 -0
- package/dist/tools/builtin/git.d.ts +7 -0
- package/dist/tools/builtin/git.d.ts.map +1 -0
- package/dist/tools/builtin/git.js +11 -0
- package/dist/tools/builtin/git.js.map +1 -0
- package/dist/tools/builtin/indexing.d.ts +22 -0
- package/dist/tools/builtin/indexing.d.ts.map +1 -0
- package/dist/tools/builtin/indexing.js +159 -0
- package/dist/tools/builtin/indexing.js.map +1 -0
- package/dist/tools/builtin/project-config.d.ts +17 -0
- package/dist/tools/builtin/project-config.d.ts.map +1 -0
- package/dist/tools/builtin/project-config.js +66 -0
- package/dist/tools/builtin/project-config.js.map +1 -0
- package/dist/tools/builtin/terminal.d.ts +7 -0
- package/dist/tools/builtin/terminal.d.ts.map +1 -0
- package/dist/tools/builtin/terminal.js +99 -0
- package/dist/tools/builtin/terminal.js.map +1 -0
- package/dist/tools/builtin/todo.d.ts +20 -0
- package/dist/tools/builtin/todo.d.ts.map +1 -0
- package/dist/tools/builtin/todo.js +36 -0
- package/dist/tools/builtin/todo.js.map +1 -0
- package/dist/tools/builtin/web.d.ts +10 -0
- package/dist/tools/builtin/web.d.ts.map +1 -0
- package/dist/tools/builtin/web.js +67 -0
- package/dist/tools/builtin/web.js.map +1 -0
- package/dist/tools/daedalus-spinner.d.ts +29 -0
- package/dist/tools/daedalus-spinner.d.ts.map +1 -0
- package/dist/tools/daedalus-spinner.js +77 -0
- package/dist/tools/daedalus-spinner.js.map +1 -0
- package/dist/tools/definitions.d.ts +5 -0
- package/dist/tools/definitions.d.ts.map +1 -0
- package/dist/tools/definitions.js +296 -0
- package/dist/tools/definitions.js.map +1 -0
- package/dist/tools/executor.d.ts +4 -0
- package/dist/tools/executor.d.ts.map +1 -0
- package/dist/tools/executor.js +86 -0
- package/dist/tools/executor.js.map +1 -0
- package/dist/tools/mcp/http.d.ts +23 -0
- package/dist/tools/mcp/http.d.ts.map +1 -0
- package/dist/tools/mcp/http.js +200 -0
- package/dist/tools/mcp/http.js.map +1 -0
- package/dist/tools/mcp/registry.d.ts +16 -0
- package/dist/tools/mcp/registry.d.ts.map +1 -0
- package/dist/tools/mcp/registry.js +92 -0
- package/dist/tools/mcp/registry.js.map +1 -0
- package/dist/tools/mcp/stdio.d.ts +26 -0
- package/dist/tools/mcp/stdio.d.ts.map +1 -0
- package/dist/tools/mcp/stdio.js +157 -0
- package/dist/tools/mcp/stdio.js.map +1 -0
- package/dist/tools/mcp/tool-executor.d.ts +3 -0
- package/dist/tools/mcp/tool-executor.d.ts.map +1 -0
- package/dist/tools/mcp/tool-executor.js +23 -0
- package/dist/tools/mcp/tool-executor.js.map +1 -0
- package/dist/tools/mcp/types.d.ts +26 -0
- package/dist/tools/mcp/types.d.ts.map +1 -0
- package/dist/tools/mcp/types.js +3 -0
- package/dist/tools/mcp/types.js.map +1 -0
- package/dist/types.d.ts +58 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// Terminal execution tool
|
|
2
|
+
import { spawn, execSync } from 'child_process';
|
|
3
|
+
export async function execute(args, context) {
|
|
4
|
+
const timeout = args.timeout ?? 180;
|
|
5
|
+
const workdir = args.workdir ?? context.projectRoot;
|
|
6
|
+
const command = args.command;
|
|
7
|
+
return new Promise((resolve) => {
|
|
8
|
+
let output = '';
|
|
9
|
+
let errorOutput = '';
|
|
10
|
+
let exited = false;
|
|
11
|
+
// Cross-platform shell detection: prefer bash, fall back to system shell
|
|
12
|
+
function detectShell() {
|
|
13
|
+
if (process.platform === 'win32') {
|
|
14
|
+
const bashPaths = ['bash.exe', 'C:\\Program Files\\Git\\bin\\bash.exe', 'C:\\Program Files (x86)\\Git\\bin\\bash.exe'];
|
|
15
|
+
for (const bp of bashPaths) {
|
|
16
|
+
try {
|
|
17
|
+
execSync(`where "${bp}"`, { stdio: 'ignore' });
|
|
18
|
+
return { shell: bp, args: ['-c', command] };
|
|
19
|
+
}
|
|
20
|
+
catch { }
|
|
21
|
+
}
|
|
22
|
+
return { shell: 'cmd.exe', args: ['/c', command] };
|
|
23
|
+
}
|
|
24
|
+
return { shell: '/bin/bash', args: ['-c', command] };
|
|
25
|
+
}
|
|
26
|
+
const { shell, args: shellArgs } = detectShell();
|
|
27
|
+
const child = spawn(shell, shellArgs, {
|
|
28
|
+
cwd: workdir,
|
|
29
|
+
env: { ...process.env },
|
|
30
|
+
shell: false,
|
|
31
|
+
});
|
|
32
|
+
const killTimer = setTimeout(() => {
|
|
33
|
+
if (!exited) {
|
|
34
|
+
exited = true;
|
|
35
|
+
child.kill('SIGTERM');
|
|
36
|
+
setTimeout(() => {
|
|
37
|
+
if (!exited)
|
|
38
|
+
child.kill('SIGKILL');
|
|
39
|
+
}, 5000);
|
|
40
|
+
resolve({
|
|
41
|
+
toolCallId: '',
|
|
42
|
+
name: 'terminal',
|
|
43
|
+
success: false,
|
|
44
|
+
content: output + errorOutput,
|
|
45
|
+
error: `Command timed out after ${timeout}s`,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}, timeout * 1000);
|
|
49
|
+
child.stdout?.on('data', (data) => {
|
|
50
|
+
output += data.toString();
|
|
51
|
+
});
|
|
52
|
+
child.stderr?.on('data', (data) => {
|
|
53
|
+
errorOutput += data.toString();
|
|
54
|
+
});
|
|
55
|
+
child.on('error', (err) => {
|
|
56
|
+
if (!exited) {
|
|
57
|
+
exited = true;
|
|
58
|
+
clearTimeout(killTimer);
|
|
59
|
+
resolve({
|
|
60
|
+
toolCallId: '',
|
|
61
|
+
name: 'terminal',
|
|
62
|
+
success: false,
|
|
63
|
+
content: '',
|
|
64
|
+
error: `Failed to start command: ${err.message}`,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
child.on('close', (code) => {
|
|
69
|
+
if (!exited) {
|
|
70
|
+
exited = true;
|
|
71
|
+
clearTimeout(killTimer);
|
|
72
|
+
const fullOutput = output + (errorOutput ? `\n[stderr]\n${errorOutput}` : '');
|
|
73
|
+
resolve({
|
|
74
|
+
toolCallId: '',
|
|
75
|
+
name: 'terminal',
|
|
76
|
+
success: code === 0,
|
|
77
|
+
content: fullOutput || '(no output)',
|
|
78
|
+
error: code !== 0 ? `Exit code: ${code}` : undefined,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
// Handle abort signal
|
|
83
|
+
context.abortSignal?.addEventListener('abort', () => {
|
|
84
|
+
if (!exited) {
|
|
85
|
+
exited = true;
|
|
86
|
+
clearTimeout(killTimer);
|
|
87
|
+
child.kill('SIGTERM');
|
|
88
|
+
resolve({
|
|
89
|
+
toolCallId: '',
|
|
90
|
+
name: 'terminal',
|
|
91
|
+
success: false,
|
|
92
|
+
content: output + errorOutput,
|
|
93
|
+
error: 'Command aborted',
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=terminal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../../src/tools/builtin/terminal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ToolContext, ToolResult } from '../../types.js';
|
|
2
|
+
export declare function getSessionTodos(sessionId: string): Array<{
|
|
3
|
+
id: string;
|
|
4
|
+
content: string;
|
|
5
|
+
status: string;
|
|
6
|
+
}>;
|
|
7
|
+
export declare function setSessionTodos(sessionId: string, todos: Array<{
|
|
8
|
+
id: string;
|
|
9
|
+
content: string;
|
|
10
|
+
status: string;
|
|
11
|
+
}>): void;
|
|
12
|
+
export declare function manage(args: {
|
|
13
|
+
todos: Array<{
|
|
14
|
+
id: string;
|
|
15
|
+
content: string;
|
|
16
|
+
status: string;
|
|
17
|
+
}>;
|
|
18
|
+
merge?: boolean;
|
|
19
|
+
}, context: ToolContext): Promise<ToolResult>;
|
|
20
|
+
//# sourceMappingURL=todo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todo.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/todo.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAKzD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAEzG;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,QAE/G;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA4BhK"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Todo management tool
|
|
2
|
+
// In-memory todo store (will be replaced with session persistence later)
|
|
3
|
+
const todoStore = new Map();
|
|
4
|
+
export function getSessionTodos(sessionId) {
|
|
5
|
+
return todoStore.get(sessionId) ?? [];
|
|
6
|
+
}
|
|
7
|
+
export function setSessionTodos(sessionId, todos) {
|
|
8
|
+
todoStore.set(sessionId, todos);
|
|
9
|
+
}
|
|
10
|
+
export async function manage(args, context) {
|
|
11
|
+
const sessionKey = context.sessionId;
|
|
12
|
+
const existing = todoStore.get(sessionKey) ?? [];
|
|
13
|
+
let updated;
|
|
14
|
+
if (args.merge) {
|
|
15
|
+
const byId = new Map(existing.map(t => [t.id, t]));
|
|
16
|
+
for (const t of args.todos) {
|
|
17
|
+
byId.set(t.id, t);
|
|
18
|
+
}
|
|
19
|
+
updated = Array.from(byId.values());
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
updated = args.todos;
|
|
23
|
+
}
|
|
24
|
+
todoStore.set(sessionKey, updated);
|
|
25
|
+
const lines = updated.map(t => {
|
|
26
|
+
const icon = t.status === 'completed' ? '✓' : t.status === 'in_progress' ? '▶' : t.status === 'cancelled' ? '✗' : '○';
|
|
27
|
+
return ` ${icon} ${t.id}: ${t.content}`;
|
|
28
|
+
});
|
|
29
|
+
return {
|
|
30
|
+
toolCallId: '',
|
|
31
|
+
name: 'todo',
|
|
32
|
+
success: true,
|
|
33
|
+
content: `Todo list (${updated.length} items):\n${lines.join('\n')}`,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=todo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todo.js","sourceRoot":"","sources":["../../../src/tools/builtin/todo.ts"],"names":[],"mappings":"AAAA,uBAAuB;AAIvB,yEAAyE;AACzE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkE,CAAC;AAE5F,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,OAAO,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,KAA6D;IAC9G,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAwF,EAAE,OAAoB;IACzI,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IACrC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAEjD,IAAI,OAA+D,CAAC;IACpE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;IACvB,CAAC;IAED,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAEnC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACtH,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,UAAU,EAAE,EAAE;QACd,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,cAAc,OAAO,CAAC,MAAM,aAAa,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;KACrE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ToolContext, ToolResult } from '../../types.js';
|
|
2
|
+
export declare function search(args: {
|
|
3
|
+
query: string;
|
|
4
|
+
limit?: number;
|
|
5
|
+
}, context: ToolContext): Promise<ToolResult>;
|
|
6
|
+
export declare function fetchUrl(args: {
|
|
7
|
+
url: string;
|
|
8
|
+
timeout?: number;
|
|
9
|
+
}, context: ToolContext): Promise<ToolResult>;
|
|
10
|
+
//# sourceMappingURL=web.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/web.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAiBzD,wBAAsB,MAAM,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAgC/G;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAsBjH"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// Web search and fetch tools
|
|
2
|
+
const DEFAULT_UA = 'Daedalus/0.1.0';
|
|
3
|
+
async function fetchWithTimeout(url, timeoutMs) {
|
|
4
|
+
const controller = new AbortController();
|
|
5
|
+
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
6
|
+
try {
|
|
7
|
+
return await fetch(url, {
|
|
8
|
+
headers: { 'User-Agent': DEFAULT_UA },
|
|
9
|
+
signal: controller.signal,
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
finally {
|
|
13
|
+
clearTimeout(timeout);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export async function search(args, context) {
|
|
17
|
+
// Use DuckDuckGo HTML scraping as a simple no-API-key search
|
|
18
|
+
// In production, could use a proper search API
|
|
19
|
+
const query = encodeURIComponent(args.query);
|
|
20
|
+
const url = `https://html.duckduckgo.com/html/?q=${query}`;
|
|
21
|
+
const limit = args.limit ?? 10;
|
|
22
|
+
try {
|
|
23
|
+
const res = await fetchWithTimeout(url, 15000);
|
|
24
|
+
const html = await res.text();
|
|
25
|
+
// Parse DDG results (simplified)
|
|
26
|
+
const results = [];
|
|
27
|
+
const regex = /class="result__title".*?href="(.*?)".*?>(.*?)<\/a>.*?class="result__snippet".*?>(.*?)<\/a>/gs;
|
|
28
|
+
let match;
|
|
29
|
+
while ((match = regex.exec(html)) && results.length < limit) {
|
|
30
|
+
results.push({
|
|
31
|
+
url: match[1],
|
|
32
|
+
title: match[2].replace(/<[^>]+>/g, ''),
|
|
33
|
+
snippet: match[3].replace(/<[^>]+>/g, ''),
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
if (results.length === 0) {
|
|
37
|
+
return { toolCallId: '', name: 'web_search', success: true, content: 'No results found' };
|
|
38
|
+
}
|
|
39
|
+
const output = results.map((r, i) => `${i + 1}. ${r.title}\n ${r.url}\n ${r.snippet}`).join('\n\n');
|
|
40
|
+
return { toolCallId: '', name: 'web_search', success: true, content: output };
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
return { toolCallId: '', name: 'web_search', success: false, content: '', error: `Search failed: ${err.message}` };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export async function fetchUrl(args, context) {
|
|
47
|
+
const timeout = (args.timeout ?? 30) * 1000;
|
|
48
|
+
try {
|
|
49
|
+
const res = await fetchWithTimeout(args.url, timeout);
|
|
50
|
+
const contentType = res.headers.get('content-type') ?? 'unknown';
|
|
51
|
+
const text = await res.text();
|
|
52
|
+
// Truncate if too long
|
|
53
|
+
const maxChars = 50000;
|
|
54
|
+
const truncated = text.length > maxChars ? text.slice(0, maxChars) + '\n\n... [truncated]' : text;
|
|
55
|
+
return {
|
|
56
|
+
toolCallId: '',
|
|
57
|
+
name: 'fetch_url',
|
|
58
|
+
success: res.ok,
|
|
59
|
+
content: `URL: ${args.url}\nStatus: ${res.status}\nContent-Type: ${contentType}\n\n${truncated}`,
|
|
60
|
+
error: res.ok ? undefined : `HTTP ${res.status}`,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
return { toolCallId: '', name: 'fetch_url', success: false, content: '', error: `Fetch failed: ${err.message}` };
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../../src/tools/builtin/web.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export type SpinnerOptions = {
|
|
2
|
+
text?: string;
|
|
3
|
+
color?: (s: string) => string;
|
|
4
|
+
frames?: string[];
|
|
5
|
+
interval?: number;
|
|
6
|
+
};
|
|
7
|
+
export declare class DaedalusSpinner {
|
|
8
|
+
private frames;
|
|
9
|
+
private interval;
|
|
10
|
+
private text;
|
|
11
|
+
private color;
|
|
12
|
+
private timer;
|
|
13
|
+
private frameIndex;
|
|
14
|
+
private running;
|
|
15
|
+
static readonly MAZE_FRAMES: string[];
|
|
16
|
+
static readonly GEAR_FRAMES: string[];
|
|
17
|
+
static readonly PULSE_FRAMES: string[];
|
|
18
|
+
static readonly BRIGHT_FRAMES: string[];
|
|
19
|
+
constructor(options?: SpinnerOptions);
|
|
20
|
+
private isTTY;
|
|
21
|
+
start(text?: string): void;
|
|
22
|
+
private render;
|
|
23
|
+
stop(finalText?: string): void;
|
|
24
|
+
succeed(text?: string): void;
|
|
25
|
+
fail(text?: string): void;
|
|
26
|
+
updateText(text: string): void;
|
|
27
|
+
}
|
|
28
|
+
export declare function createSpinner(text?: string): DaedalusSpinner;
|
|
29
|
+
//# sourceMappingURL=daedalus-spinner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daedalus-spinner.d.ts","sourceRoot":"","sources":["../../src/tools/daedalus-spinner.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,OAAO,CAAS;IAGxB,MAAM,CAAC,QAAQ,CAAC,WAAW,WAAwB;IACnD,MAAM,CAAC,QAAQ,CAAC,WAAW,WAAwB;IACnD,MAAM,CAAC,QAAQ,CAAC,YAAY,WAAqF;IACjH,MAAM,CAAC,QAAQ,CAAC,aAAa,WAAwB;gBAEzC,OAAO,GAAE,cAAmB;IAOxC,OAAO,CAAC,KAAK;IAIb,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAW1B,OAAO,CAAC,MAAM;IAOd,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAe9B,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5B,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAIzB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAG/B;AAGD,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,CAI5D"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// Daedalus custom spinner — a stylish terminal spinner for long operations
|
|
2
|
+
// No emoji, all style. Replaces the old "🤖 Thinking..." text.
|
|
3
|
+
import process from 'process';
|
|
4
|
+
export class DaedalusSpinner {
|
|
5
|
+
frames;
|
|
6
|
+
interval;
|
|
7
|
+
text;
|
|
8
|
+
color;
|
|
9
|
+
timer = null;
|
|
10
|
+
frameIndex = 0;
|
|
11
|
+
running = false;
|
|
12
|
+
// Default frames — a mini maze/labyrinth effect
|
|
13
|
+
static MAZE_FRAMES = ['◢', '◣', '◤', '◥'];
|
|
14
|
+
static GEAR_FRAMES = ['◐', '◓', '◑', '◒'];
|
|
15
|
+
static PULSE_FRAMES = ['▰▱▱▱▱', '▰▰▱▱▱', '▰▰▰▱▱', '▰▰▰▰▱', '▰▰▰▰▰', '▱▰▰▰▰', '▱▱▰▰▰', '▱▱▱▰▰', '▱▱▱▱▰'];
|
|
16
|
+
static BRIGHT_FRAMES = ['▘', '▝', '▗', '▖'];
|
|
17
|
+
constructor(options = {}) {
|
|
18
|
+
this.frames = options.frames ?? DaedalusSpinner.GEAR_FRAMES;
|
|
19
|
+
this.interval = options.interval ?? 100;
|
|
20
|
+
this.text = options.text ?? 'Daedalus thinking';
|
|
21
|
+
this.color = options.color ?? ((s) => `\x1b[36m${s}\x1b[0m`); // default cyan
|
|
22
|
+
}
|
|
23
|
+
isTTY() {
|
|
24
|
+
return process.stdout.isTTY === true;
|
|
25
|
+
}
|
|
26
|
+
start(text) {
|
|
27
|
+
if (this.running)
|
|
28
|
+
return;
|
|
29
|
+
if (!this.isTTY())
|
|
30
|
+
return;
|
|
31
|
+
this.running = true;
|
|
32
|
+
if (text)
|
|
33
|
+
this.text = text;
|
|
34
|
+
this.frameIndex = 0;
|
|
35
|
+
process.stdout.write('\x1b[?25l');
|
|
36
|
+
this.render();
|
|
37
|
+
this.timer = setInterval(() => this.render(), this.interval);
|
|
38
|
+
}
|
|
39
|
+
render() {
|
|
40
|
+
const frame = this.frames[this.frameIndex % this.frames.length];
|
|
41
|
+
const line = ` ${frame} ${this.text}...`;
|
|
42
|
+
process.stdout.write(`\x1b[2K\x1b[0G${this.color(line)}`);
|
|
43
|
+
this.frameIndex++;
|
|
44
|
+
}
|
|
45
|
+
stop(finalText) {
|
|
46
|
+
if (!this.running)
|
|
47
|
+
return;
|
|
48
|
+
this.running = false;
|
|
49
|
+
if (this.timer) {
|
|
50
|
+
clearInterval(this.timer);
|
|
51
|
+
this.timer = null;
|
|
52
|
+
}
|
|
53
|
+
if (!this.isTTY())
|
|
54
|
+
return;
|
|
55
|
+
process.stdout.write(`\x1b[2K\x1b[0G`);
|
|
56
|
+
process.stdout.write('\x1b[?25h');
|
|
57
|
+
if (finalText) {
|
|
58
|
+
process.stdout.write(`${finalText}\n`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
succeed(text) {
|
|
62
|
+
this.stop(`\x1b[32m\u2714\x1b[0m ${text ?? this.text}`);
|
|
63
|
+
}
|
|
64
|
+
fail(text) {
|
|
65
|
+
this.stop(`\x1b[31m\u2718\x1b[0m ${text ?? this.text}`);
|
|
66
|
+
}
|
|
67
|
+
updateText(text) {
|
|
68
|
+
this.text = text;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Convenience — create and start in one call
|
|
72
|
+
export function createSpinner(text) {
|
|
73
|
+
const spinner = new DaedalusSpinner({ text });
|
|
74
|
+
spinner.start();
|
|
75
|
+
return spinner;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=daedalus-spinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daedalus-spinner.js","sourceRoot":"","sources":["../../src/tools/daedalus-spinner.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,+DAA+D;AAE/D,OAAO,OAAO,MAAM,SAAS,CAAC;AAS9B,MAAM,OAAO,eAAe;IAClB,MAAM,CAAW;IACjB,QAAQ,CAAS;IACjB,IAAI,CAAS;IACb,KAAK,CAAwB;IAC7B,KAAK,GAA0B,IAAI,CAAC;IACpC,UAAU,GAAG,CAAC,CAAC;IACf,OAAO,GAAG,KAAK,CAAC;IAExB,gDAAgD;IAChD,MAAM,CAAU,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACnD,MAAM,CAAU,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACnD,MAAM,CAAU,YAAY,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACjH,MAAM,CAAU,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAErD,YAAY,UAA0B,EAAE;QACtC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,eAAe,CAAC,WAAW,CAAC;QAC5D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,mBAAmB,CAAC;QAChD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe;IACvF,CAAC;IAEO,KAAK;QACX,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,IAAa;QACjB,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAAE,OAAO;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAEO,MAAM;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,IAAI,GAAG,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;QACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,SAAkB;QACrB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAAE,OAAO;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAClC,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAa;QACnB,IAAI,CAAC,IAAI,CAAC,yBAAyB,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC,IAAa;QAChB,IAAI,CAAC,IAAI,CAAC,yBAAyB,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;;AAGH,6CAA6C;AAC7C,MAAM,UAAU,aAAa,CAAC,IAAa;IACzC,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,KAAK,EAAE,CAAC;IAChB,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,eAAO,MAAM,aAAa,EAAE,cAAc,EAiRzC,CAAC;AAGF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAiBvD,CAAC"}
|