automatey 0.1.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/.env.defaults +100 -0
- package/.env.secret.example +42 -0
- package/LICENSE +21 -0
- package/README.md +258 -0
- package/dist/adapters/index.d.ts +3 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +3 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/judge-client.d.ts +59 -0
- package/dist/adapters/judge-client.d.ts.map +1 -0
- package/dist/adapters/judge-client.js +123 -0
- package/dist/adapters/judge-client.js.map +1 -0
- package/dist/adapters/llm-client.d.ts +54 -0
- package/dist/adapters/llm-client.d.ts.map +1 -0
- package/dist/adapters/llm-client.js +327 -0
- package/dist/adapters/llm-client.js.map +1 -0
- package/dist/commands/checkpoint-command.d.ts +3 -0
- package/dist/commands/checkpoint-command.d.ts.map +1 -0
- package/dist/commands/checkpoint-command.js +105 -0
- package/dist/commands/checkpoint-command.js.map +1 -0
- package/dist/commands/clear-command.d.ts +3 -0
- package/dist/commands/clear-command.d.ts.map +1 -0
- package/dist/commands/clear-command.js +11 -0
- package/dist/commands/clear-command.js.map +1 -0
- package/dist/commands/compact-command.d.ts +3 -0
- package/dist/commands/compact-command.d.ts.map +1 -0
- package/dist/commands/compact-command.js +20 -0
- package/dist/commands/compact-command.js.map +1 -0
- package/dist/commands/config-command.d.ts +3 -0
- package/dist/commands/config-command.d.ts.map +1 -0
- package/dist/commands/config-command.js +28 -0
- package/dist/commands/config-command.js.map +1 -0
- package/dist/commands/cost-command.d.ts +3 -0
- package/dist/commands/cost-command.d.ts.map +1 -0
- package/dist/commands/cost-command.js +42 -0
- package/dist/commands/cost-command.js.map +1 -0
- package/dist/commands/eval-command.d.ts +16 -0
- package/dist/commands/eval-command.d.ts.map +1 -0
- package/dist/commands/eval-command.js +132 -0
- package/dist/commands/eval-command.js.map +1 -0
- package/dist/commands/help-command.d.ts +3 -0
- package/dist/commands/help-command.d.ts.map +1 -0
- package/dist/commands/help-command.js +37 -0
- package/dist/commands/help-command.js.map +1 -0
- package/dist/commands/index.d.ts +8 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +42 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/load-command.d.ts +3 -0
- package/dist/commands/load-command.d.ts.map +1 -0
- package/dist/commands/load-command.js +42 -0
- package/dist/commands/load-command.js.map +1 -0
- package/dist/commands/model-command.d.ts +3 -0
- package/dist/commands/model-command.d.ts.map +1 -0
- package/dist/commands/model-command.js +42 -0
- package/dist/commands/model-command.js.map +1 -0
- package/dist/commands/save-command.d.ts +3 -0
- package/dist/commands/save-command.d.ts.map +1 -0
- package/dist/commands/save-command.js +17 -0
- package/dist/commands/save-command.js.map +1 -0
- package/dist/commands/servers-command.d.ts +3 -0
- package/dist/commands/servers-command.d.ts.map +1 -0
- package/dist/commands/servers-command.js +99 -0
- package/dist/commands/servers-command.js.map +1 -0
- package/dist/commands/think-command.d.ts +3 -0
- package/dist/commands/think-command.d.ts.map +1 -0
- package/dist/commands/think-command.js +37 -0
- package/dist/commands/think-command.js.map +1 -0
- package/dist/core/chat-engine.d.ts +54 -0
- package/dist/core/chat-engine.d.ts.map +1 -0
- package/dist/core/chat-engine.js +528 -0
- package/dist/core/chat-engine.js.map +1 -0
- package/dist/core/checkpoint-manager.d.ts +50 -0
- package/dist/core/checkpoint-manager.d.ts.map +1 -0
- package/dist/core/checkpoint-manager.js +173 -0
- package/dist/core/checkpoint-manager.js.map +1 -0
- package/dist/core/command-parser.d.ts +6 -0
- package/dist/core/command-parser.d.ts.map +1 -0
- package/dist/core/command-parser.js +14 -0
- package/dist/core/command-parser.js.map +1 -0
- package/dist/core/compact.d.ts +23 -0
- package/dist/core/compact.d.ts.map +1 -0
- package/dist/core/compact.js +56 -0
- package/dist/core/compact.js.map +1 -0
- package/dist/core/config-manager.d.ts +13 -0
- package/dist/core/config-manager.d.ts.map +1 -0
- package/dist/core/config-manager.js +86 -0
- package/dist/core/config-manager.js.map +1 -0
- package/dist/core/context-manager.d.ts +17 -0
- package/dist/core/context-manager.d.ts.map +1 -0
- package/dist/core/context-manager.js +51 -0
- package/dist/core/context-manager.js.map +1 -0
- package/dist/core/eval-runner.d.ts +110 -0
- package/dist/core/eval-runner.d.ts.map +1 -0
- package/dist/core/eval-runner.js +177 -0
- package/dist/core/eval-runner.js.map +1 -0
- package/dist/core/index.d.ts +12 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +11 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/interfaces.d.ts +179 -0
- package/dist/core/interfaces.d.ts.map +1 -0
- package/dist/core/interfaces.js +6 -0
- package/dist/core/interfaces.js.map +1 -0
- package/dist/core/mcp-client-manager.d.ts +32 -0
- package/dist/core/mcp-client-manager.d.ts.map +1 -0
- package/dist/core/mcp-client-manager.js +118 -0
- package/dist/core/mcp-client-manager.js.map +1 -0
- package/dist/core/mcp-config-manager.d.ts +40 -0
- package/dist/core/mcp-config-manager.d.ts.map +1 -0
- package/dist/core/mcp-config-manager.js +120 -0
- package/dist/core/mcp-config-manager.js.map +1 -0
- package/dist/core/session-manager.d.ts +16 -0
- package/dist/core/session-manager.d.ts.map +1 -0
- package/dist/core/session-manager.js +87 -0
- package/dist/core/session-manager.js.map +1 -0
- package/dist/core/skills-manager.d.ts +49 -0
- package/dist/core/skills-manager.d.ts.map +1 -0
- package/dist/core/skills-manager.js +175 -0
- package/dist/core/skills-manager.js.map +1 -0
- package/dist/core/sub-agent.d.ts +23 -0
- package/dist/core/sub-agent.d.ts.map +1 -0
- package/dist/core/sub-agent.js +98 -0
- package/dist/core/sub-agent.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +230 -0
- package/dist/index.js.map +1 -0
- package/dist/tui/index.d.ts +2 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +3 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/renderer.d.ts +32 -0
- package/dist/tui/renderer.d.ts.map +1 -0
- package/dist/tui/renderer.js +225 -0
- package/dist/tui/renderer.js.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +19 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +37 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/logo.d.ts +24 -0
- package/dist/utils/logo.d.ts.map +1 -0
- package/dist/utils/logo.js +119 -0
- package/dist/utils/logo.js.map +1 -0
- package/dist/utils/message-formatter.d.ts +19 -0
- package/dist/utils/message-formatter.d.ts.map +1 -0
- package/dist/utils/message-formatter.js +79 -0
- package/dist/utils/message-formatter.js.map +1 -0
- package/dist/utils/syntax-highlighter.d.ts +6 -0
- package/dist/utils/syntax-highlighter.d.ts.map +1 -0
- package/dist/utils/syntax-highlighter.js +34 -0
- package/dist/utils/syntax-highlighter.js.map +1 -0
- package/mcp/coder/dist/server.d.ts +15 -0
- package/mcp/coder/dist/server.d.ts.map +1 -0
- package/mcp/coder/dist/server.js +421 -0
- package/mcp/coder/dist/server.js.map +1 -0
- package/mcp/planner/dist/server.d.ts +23 -0
- package/mcp/planner/dist/server.d.ts.map +1 -0
- package/mcp/planner/dist/server.js +373 -0
- package/mcp/planner/dist/server.js.map +1 -0
- package/package.json +95 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-manager.js","sourceRoot":"","sources":["../../src/core/skills-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* sub-agent.ts — lightweight stateless ReAct loop for the run_subagent tool.
|
|
3
|
+
*
|
|
4
|
+
* Runs a fresh agentic loop with the given prompt and returns the final text.
|
|
5
|
+
* Does NOT emit events, does NOT persist sessions, does NOT compact context.
|
|
6
|
+
*/
|
|
7
|
+
import type { ILLMClient, SessionConfig, Tool } from './interfaces.js';
|
|
8
|
+
import type { MCPClientManager } from './mcp-client-manager.js';
|
|
9
|
+
export interface SubAgentOptions {
|
|
10
|
+
prompt: string;
|
|
11
|
+
systemPrompt?: string;
|
|
12
|
+
llmClient: ILLMClient;
|
|
13
|
+
mcpManager: MCPClientManager;
|
|
14
|
+
availableTools: Tool[];
|
|
15
|
+
config: Pick<SessionConfig, 'maxTokens' | 'temperature'>;
|
|
16
|
+
maxToolRounds?: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Run a sub-agent loop and return the final text response.
|
|
20
|
+
* The sub-agent has full access to the parent's MCP tools.
|
|
21
|
+
*/
|
|
22
|
+
export declare function runSubAgent(opts: SubAgentOptions): Promise<string>;
|
|
23
|
+
//# sourceMappingURL=sub-agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sub-agent.d.ts","sourceRoot":"","sources":["../../src/core/sub-agent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAW,aAAa,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,UAAU,CAAC;IACtB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,cAAc,EAAE,IAAI,EAAE,CAAC;IACvB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,aAAa,CAAC,CAAC;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAUD;;;GAGG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CA8FxE"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* sub-agent.ts — lightweight stateless ReAct loop for the run_subagent tool.
|
|
3
|
+
*
|
|
4
|
+
* Runs a fresh agentic loop with the given prompt and returns the final text.
|
|
5
|
+
* Does NOT emit events, does NOT persist sessions, does NOT compact context.
|
|
6
|
+
*/
|
|
7
|
+
import { log } from '#utils';
|
|
8
|
+
import { ContextManager } from './context-manager.js';
|
|
9
|
+
function compactToolResult(result, maxChars = 8_000) {
|
|
10
|
+
if (typeof result === 'string') {
|
|
11
|
+
return result.length > maxChars ? result.slice(0, maxChars) + '\n…[truncated]' : result;
|
|
12
|
+
}
|
|
13
|
+
const s = JSON.stringify(result);
|
|
14
|
+
return s.length > maxChars ? s.slice(0, maxChars) + '\n…[truncated]' : s;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Run a sub-agent loop and return the final text response.
|
|
18
|
+
* The sub-agent has full access to the parent's MCP tools.
|
|
19
|
+
*/
|
|
20
|
+
export async function runSubAgent(opts) {
|
|
21
|
+
const { prompt, systemPrompt, llmClient, mcpManager, availableTools, config, maxToolRounds = 15, } = opts;
|
|
22
|
+
const ctx = new ContextManager(config.maxTokens);
|
|
23
|
+
if (systemPrompt) {
|
|
24
|
+
ctx.addMessage({ role: 'system', content: systemPrompt });
|
|
25
|
+
}
|
|
26
|
+
ctx.addMessage({ role: 'user', content: prompt, timestamp: new Date() });
|
|
27
|
+
let round = 0;
|
|
28
|
+
while (round <= maxToolRounds) {
|
|
29
|
+
round++;
|
|
30
|
+
ctx.trim(config.maxTokens);
|
|
31
|
+
let response;
|
|
32
|
+
try {
|
|
33
|
+
response = await llmClient.chat(ctx.getContext(), {
|
|
34
|
+
temperature: config.temperature,
|
|
35
|
+
maxTokens: 4_096,
|
|
36
|
+
tools: availableTools.length > 0 ? availableTools : undefined,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
41
|
+
log.error('subagent:llmError', { round, error: msg });
|
|
42
|
+
return `Sub-agent error: ${msg}`;
|
|
43
|
+
}
|
|
44
|
+
if (response.toolCalls?.length) {
|
|
45
|
+
// Add assistant message with tool calls
|
|
46
|
+
const assistantMsg = {
|
|
47
|
+
role: 'assistant',
|
|
48
|
+
content: response.content || '',
|
|
49
|
+
toolCalls: response.toolCalls,
|
|
50
|
+
timestamp: new Date(),
|
|
51
|
+
};
|
|
52
|
+
ctx.addMessage(assistantMsg);
|
|
53
|
+
for (const tc of response.toolCalls) {
|
|
54
|
+
const allTools = mcpManager.getAllTools();
|
|
55
|
+
const toolInfo = allTools.find(t => t.name === tc.name);
|
|
56
|
+
if (!toolInfo) {
|
|
57
|
+
ctx.addMessage({
|
|
58
|
+
role: 'tool',
|
|
59
|
+
content: `Error: tool "${tc.name}" not found`,
|
|
60
|
+
toolCallId: tc.id,
|
|
61
|
+
toolName: tc.name,
|
|
62
|
+
timestamp: new Date(),
|
|
63
|
+
});
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
let toolResult;
|
|
67
|
+
try {
|
|
68
|
+
const rawResult = await mcpManager.callTool(toolInfo.serverName, tc.name, tc.arguments);
|
|
69
|
+
toolResult = compactToolResult(rawResult);
|
|
70
|
+
log.debug('subagent:tool', { tool: tc.name });
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
toolResult = `Error: ${err instanceof Error ? err.message : String(err)}`;
|
|
74
|
+
}
|
|
75
|
+
ctx.addMessage({
|
|
76
|
+
role: 'tool',
|
|
77
|
+
content: toolResult,
|
|
78
|
+
toolCallId: tc.id,
|
|
79
|
+
toolName: tc.name,
|
|
80
|
+
timestamp: new Date(),
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
continue; // next round with tool results
|
|
84
|
+
}
|
|
85
|
+
// Final answer
|
|
86
|
+
if (response.content) {
|
|
87
|
+
return response.content;
|
|
88
|
+
}
|
|
89
|
+
// Empty stop — retry once more
|
|
90
|
+
if (round < maxToolRounds)
|
|
91
|
+
continue;
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
return round > maxToolRounds
|
|
95
|
+
? `⚠️ Sub-agent reached maximum tool-call rounds (${maxToolRounds}).`
|
|
96
|
+
: '⚠️ Sub-agent returned empty response.';
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=sub-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sub-agent.js","sourceRoot":"","sources":["../../src/core/sub-agent.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* automatey — lean & mean MCP-powered CLI agent
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* automatey chat - Start interactive session
|
|
7
|
+
* automatey chat "your query" - One-off query (TODO)
|
|
8
|
+
* automatey --help - Show help
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* automatey — lean & mean MCP-powered CLI agent
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* automatey chat - Start interactive session
|
|
7
|
+
* automatey chat "your query" - One-off query (TODO)
|
|
8
|
+
* automatey --help - Show help
|
|
9
|
+
*/
|
|
10
|
+
import { program } from 'commander';
|
|
11
|
+
import { existsSync, mkdirSync, readFileSync } from 'fs';
|
|
12
|
+
import os from 'os';
|
|
13
|
+
import path from 'path';
|
|
14
|
+
import { LLMClient } from '#adapters';
|
|
15
|
+
import { ChatEngine, CheckpointManager, ConfigManager, MCPClientManager, MCPConfigManager, SessionManager } from '#core';
|
|
16
|
+
import { SkillsManager } from '#core/skills-manager';
|
|
17
|
+
import { TuiRenderer } from '#tui';
|
|
18
|
+
import { LOG_PATH, log, printLogo } from '#utils';
|
|
19
|
+
// ── Env file loader (does not override already-set vars) ─────────────────
|
|
20
|
+
function loadEnvFile(filePath) {
|
|
21
|
+
try {
|
|
22
|
+
if (!existsSync(filePath))
|
|
23
|
+
return false;
|
|
24
|
+
const text = readFileSync(filePath, 'utf-8');
|
|
25
|
+
for (const line of text.split('\n')) {
|
|
26
|
+
const trimmed = line.trim();
|
|
27
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
28
|
+
continue;
|
|
29
|
+
const eqIdx = trimmed.indexOf('=');
|
|
30
|
+
if (eqIdx < 0)
|
|
31
|
+
continue;
|
|
32
|
+
const key = trimmed.slice(0, eqIdx).trim();
|
|
33
|
+
const val = trimmed.slice(eqIdx + 1).trim().replace(/^["']|["']$/g, '');
|
|
34
|
+
if (!process.env[key])
|
|
35
|
+
process.env[key] = val;
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Load secrets: home dir first (lower precedence), then cwd (higher precedence)
|
|
44
|
+
for (const p of [
|
|
45
|
+
path.join(os.homedir(), '.automatey', '.env.secret'),
|
|
46
|
+
path.join(process.cwd(), '.env.secret'),
|
|
47
|
+
path.join(process.cwd(), '.env'),
|
|
48
|
+
])
|
|
49
|
+
loadEnvFile(p);
|
|
50
|
+
// ── Fast port reachability check (1 s timeout) ───────────────────────────
|
|
51
|
+
async function isUrlReachable(url, timeoutMs = 1000) {
|
|
52
|
+
try {
|
|
53
|
+
await fetch(url, { method: 'HEAD', signal: AbortSignal.timeout(timeoutMs) });
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// ── Safety net for Vercel AI SDK internal promise leaks ──────────────────
|
|
61
|
+
process.on('unhandledRejection', (reason) => {
|
|
62
|
+
if (reason != null &&
|
|
63
|
+
typeof reason === 'object' &&
|
|
64
|
+
(Object.getOwnPropertySymbols(reason).some(s => s.toString().includes('vercel.ai.error')) ||
|
|
65
|
+
reason.name === 'AI_APICallError' ||
|
|
66
|
+
reason.name === 'NoOutputGeneratedError')) {
|
|
67
|
+
const msg = reason instanceof Error ? reason.message : String(reason);
|
|
68
|
+
log.warn('agent:unhandledRejection:aiSdk', { message: msg });
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const msg = reason instanceof Error ? reason.message : String(reason);
|
|
72
|
+
const stack = reason instanceof Error ? reason.stack : undefined;
|
|
73
|
+
log.error('agent:unhandledRejection', { message: msg, stack });
|
|
74
|
+
});
|
|
75
|
+
async function main() {
|
|
76
|
+
program
|
|
77
|
+
.name('automatey')
|
|
78
|
+
.description('Lean & mean MCP-powered CLI agent')
|
|
79
|
+
.version('0.1.0');
|
|
80
|
+
program
|
|
81
|
+
.command('chat', { isDefault: true })
|
|
82
|
+
.description('Start interactive chat session')
|
|
83
|
+
.option('-m, --model <model>', 'LLM model to use')
|
|
84
|
+
.option('-s, --session <name>', 'Load existing session')
|
|
85
|
+
.option('-p, --provider <provider>', 'LLM provider: nemotron | openai | anthropic')
|
|
86
|
+
.option('-w, --sandbox <dir>', 'Sandbox directory for file operations (default: ./sandbox)')
|
|
87
|
+
.action(async (options) => {
|
|
88
|
+
try {
|
|
89
|
+
const configManager = new ConfigManager();
|
|
90
|
+
await configManager.load();
|
|
91
|
+
log.info('agent:start', { logFile: LOG_PATH });
|
|
92
|
+
const sessionManager = new SessionManager();
|
|
93
|
+
await sessionManager.init();
|
|
94
|
+
const checkpointManager = new CheckpointManager();
|
|
95
|
+
const mcpConfigManager = new MCPConfigManager();
|
|
96
|
+
await mcpConfigManager.load();
|
|
97
|
+
const mcpManager = new MCPClientManager();
|
|
98
|
+
// Resolve sandbox directory (create if needed)
|
|
99
|
+
const sandboxDir = path.resolve(options.sandbox ?? path.join(process.cwd(), 'sandbox'));
|
|
100
|
+
mkdirSync(sandboxDir, { recursive: true });
|
|
101
|
+
log.info('agent:sandbox', { sandboxDir });
|
|
102
|
+
// Chat-scoped config: ~/.automatey/mcp.chat.json (optional, subset of mcp.json)
|
|
103
|
+
const homeChatConfig = path.join(os.homedir(), '.automatey', 'mcp.chat.json');
|
|
104
|
+
let startupServers;
|
|
105
|
+
try {
|
|
106
|
+
const chatCfgMgr = new MCPConfigManager(homeChatConfig);
|
|
107
|
+
await chatCfgMgr.load();
|
|
108
|
+
startupServers = chatCfgMgr.getServers();
|
|
109
|
+
const deferred = Object.keys(mcpConfigManager.getServers()).filter(n => !startupServers[n]);
|
|
110
|
+
log.info('agent:chatConfig', { path: homeChatConfig, servers: Object.keys(startupServers) });
|
|
111
|
+
console.log(`📋 Chat config: ${homeChatConfig}`);
|
|
112
|
+
if (deferred.length > 0)
|
|
113
|
+
console.log(`⚡ Deferred: ${deferred.join(', ')}`);
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
startupServers = mcpConfigManager.getServers();
|
|
117
|
+
}
|
|
118
|
+
// Auto-connect startup servers
|
|
119
|
+
for (const [name, serverConfig] of Object.entries(startupServers)) {
|
|
120
|
+
// portCheck: skip HTTP/SSE servers that aren't reachable (saves ~1 s hang per dead server)
|
|
121
|
+
if (serverConfig.portCheck && serverConfig.url) {
|
|
122
|
+
const reachable = await isUrlReachable(serverConfig.url);
|
|
123
|
+
if (!reachable) {
|
|
124
|
+
log.info('mcp:portCheckFailed', { server: name, url: serverConfig.url });
|
|
125
|
+
console.log(`⏭ ${name}: not reachable at ${serverConfig.url}`);
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
try {
|
|
130
|
+
// Inject CODER_SANDBOX_DIR env for the coder server
|
|
131
|
+
const effectiveConfig = name === 'coder'
|
|
132
|
+
? { ...serverConfig, env: { ...(serverConfig.env ?? {}), CODER_SANDBOX_DIR: sandboxDir } }
|
|
133
|
+
: serverConfig;
|
|
134
|
+
await mcpManager.connectServer(name, effectiveConfig);
|
|
135
|
+
const conn = mcpManager.getConnection(name);
|
|
136
|
+
const toolCount = conn?.tools?.length ?? 0;
|
|
137
|
+
log.info('mcp:connected', { server: name, tools: toolCount });
|
|
138
|
+
console.log(`✅ ${name} (${toolCount} tools)`);
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
142
|
+
log.warn('mcp:failed', { server: name, error: msg });
|
|
143
|
+
console.warn(`⚠️ Failed to connect to ${name}: ${msg}`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// Load or create session
|
|
147
|
+
let session;
|
|
148
|
+
if (options.session) {
|
|
149
|
+
session = await sessionManager.loadSession(options.session);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
session = sessionManager.createSession();
|
|
153
|
+
}
|
|
154
|
+
const config = await configManager.load();
|
|
155
|
+
const provider = options.provider ?? config.provider ?? 'nemotron';
|
|
156
|
+
const modelFromOpts = options.model ?? session.model;
|
|
157
|
+
const llmClient = new LLMClient({
|
|
158
|
+
provider,
|
|
159
|
+
model: modelFromOpts,
|
|
160
|
+
availableModels: config.llm?.availableModels,
|
|
161
|
+
baseUrl: config.llm?.baseUrl,
|
|
162
|
+
apiKey: config.llm?.apiKey,
|
|
163
|
+
});
|
|
164
|
+
if (options.model)
|
|
165
|
+
session.model = options.model;
|
|
166
|
+
// Load skills from .agents/skills/ directories
|
|
167
|
+
const skillsManager = new SkillsManager();
|
|
168
|
+
skillsManager.load(process.cwd());
|
|
169
|
+
// Prepend system prompt for new/legacy sessions
|
|
170
|
+
if (!session.context.some(m => m.role === 'system')) {
|
|
171
|
+
const skillsFragment = skillsManager.count > 0
|
|
172
|
+
? '\n\n' + skillsManager.buildSystemFragment()
|
|
173
|
+
: '';
|
|
174
|
+
session.context.push({
|
|
175
|
+
role: 'system',
|
|
176
|
+
content: 'You are a concise, direct assistant. ' +
|
|
177
|
+
'Keep responses short and to the point — no unnecessary padding, headers, or bullet lists unless asked. ' +
|
|
178
|
+
'Use available tools when they help answer the user\'s request. ' +
|
|
179
|
+
`Your sandbox directory is: ${sandboxDir}. Use coder tools to write and execute code there.` +
|
|
180
|
+
skillsFragment,
|
|
181
|
+
timestamp: new Date(),
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
const engine = new ChatEngine({
|
|
185
|
+
session,
|
|
186
|
+
sessionManager,
|
|
187
|
+
configManager,
|
|
188
|
+
llmClient,
|
|
189
|
+
mcpManager,
|
|
190
|
+
mcpConfigManager,
|
|
191
|
+
checkpointManager,
|
|
192
|
+
skillsManager,
|
|
193
|
+
availableTools: mcpManager.getAllTools().map(t => ({
|
|
194
|
+
name: t.name,
|
|
195
|
+
description: t.description,
|
|
196
|
+
parameters: t.inputSchema,
|
|
197
|
+
})),
|
|
198
|
+
});
|
|
199
|
+
// Print banner
|
|
200
|
+
printLogo();
|
|
201
|
+
const banner = [
|
|
202
|
+
'═'.repeat(70),
|
|
203
|
+
' 🤖 automatey — lean & mean agent',
|
|
204
|
+
'═'.repeat(70),
|
|
205
|
+
` Provider: ${provider}`,
|
|
206
|
+
` Model: ${session.model}`,
|
|
207
|
+
` Session: ${session.name}`,
|
|
208
|
+
` Sandbox: ${sandboxDir}`,
|
|
209
|
+
'',
|
|
210
|
+
' Type /help for commands | Ctrl+C to exit',
|
|
211
|
+
` Logs: tail -f ${LOG_PATH}`,
|
|
212
|
+
'═'.repeat(70),
|
|
213
|
+
'',
|
|
214
|
+
].join('\n');
|
|
215
|
+
const renderer = new TuiRenderer(engine);
|
|
216
|
+
renderer.start(banner);
|
|
217
|
+
await renderer.waitUntilExit();
|
|
218
|
+
// Graceful shutdown
|
|
219
|
+
await mcpManager.disconnectAll();
|
|
220
|
+
process.exit(0);
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
console.error('Fatal error:', error instanceof Error ? error.message : error);
|
|
224
|
+
process.exit(1);
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
await program.parseAsync(process.argv);
|
|
228
|
+
}
|
|
229
|
+
main();
|
|
230
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tui/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tui/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TuiRenderer — direct stdout terminal renderer.
|
|
3
|
+
*
|
|
4
|
+
* No React. No Ink. No batching. Subscribes to ChatEngine events and writes
|
|
5
|
+
* to stdout immediately via readline + chalk.
|
|
6
|
+
*/
|
|
7
|
+
import type { ChatEngine } from '#core/chat-engine';
|
|
8
|
+
export declare class TuiRenderer {
|
|
9
|
+
private engine;
|
|
10
|
+
private rl;
|
|
11
|
+
private spinnerTimer;
|
|
12
|
+
private spinnerFrame;
|
|
13
|
+
private isProcessing;
|
|
14
|
+
private isStreaming;
|
|
15
|
+
private isThinking;
|
|
16
|
+
private streamRawBuffer;
|
|
17
|
+
constructor(engine: ChatEngine);
|
|
18
|
+
start(banner?: string): void;
|
|
19
|
+
waitUntilExit(): Promise<void>;
|
|
20
|
+
private _bindEngine;
|
|
21
|
+
private _bindInput;
|
|
22
|
+
private _printMessage;
|
|
23
|
+
private _formatMessage;
|
|
24
|
+
private _formatMeta;
|
|
25
|
+
private _containsMarkdown;
|
|
26
|
+
private _rerenderStreamedAssistantMessage;
|
|
27
|
+
private _resetStreamRenderState;
|
|
28
|
+
private _updatePrompt;
|
|
29
|
+
private _startSpinner;
|
|
30
|
+
private _stopSpinner;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/tui/renderer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAMpD,qBAAa,WAAW;IASV,OAAO,CAAC,MAAM;IAR1B,OAAO,CAAC,EAAE,CAAqB;IAC/B,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,eAAe,CAAM;gBAET,MAAM,EAAE,UAAU;IAYtC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAM5B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,OAAO,CAAC,WAAW;IAkEnB,OAAO,CAAC,UAAU;IA4BlB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,iCAAiC;IAczC,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,YAAY;CAOrB"}
|