httpcat-cli 0.3.0 → 0.3.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/.github/workflows/ci.yml +3 -0
- package/.github/workflows/rc-publish.yml +6 -0
- package/.github/workflows/release.yml +102 -0
- package/.github/workflows/sync-version.yml +31 -2
- package/README.md +1408 -109
- package/additions.txt +3 -0
- package/bun.lock +260 -25
- package/dist/agent/autonomous-trader.d.ts.map +1 -0
- package/dist/agent/autonomous-trader.js +362 -0
- package/dist/agent/autonomous-trader.js.map +1 -0
- package/dist/agent/ax-agent.d.ts.map +1 -1
- package/dist/agent/ax-agent.js +356 -18
- package/dist/agent/ax-agent.js.map +1 -1
- package/dist/agent/event-client.d.ts.map +1 -0
- package/dist/agent/event-client.js +82 -0
- package/dist/agent/event-client.js.map +1 -0
- package/dist/agent/log-stream.d.ts.map +1 -0
- package/dist/agent/log-stream.js +95 -0
- package/dist/agent/log-stream.js.map +1 -0
- package/dist/agent/memory/conversation-session.d.ts.map +1 -0
- package/dist/agent/memory/conversation-session.js +232 -0
- package/dist/agent/memory/conversation-session.js.map +1 -0
- package/dist/agent/memory/conversation-store.d.ts.map +1 -0
- package/dist/agent/memory/conversation-store.js +214 -0
- package/dist/agent/memory/conversation-store.js.map +1 -0
- package/dist/agent/memory/database-schema.d.ts.map +1 -0
- package/dist/agent/memory/database-schema.js +355 -0
- package/dist/agent/memory/database-schema.js.map +1 -0
- package/dist/agent/memory/decision-tracker.d.ts.map +1 -0
- package/dist/agent/memory/decision-tracker.js +274 -0
- package/dist/agent/memory/decision-tracker.js.map +1 -0
- package/dist/agent/memory/memory-manager.d.ts.map +1 -0
- package/dist/agent/memory/memory-manager.js +187 -0
- package/dist/agent/memory/memory-manager.js.map +1 -0
- package/dist/agent/memory/types.d.ts.map +1 -0
- package/dist/agent/memory/types.js +5 -0
- package/dist/agent/memory/types.js.map +1 -0
- package/dist/agent/message-formatter.d.ts.map +1 -0
- package/dist/agent/message-formatter.js +76 -0
- package/dist/agent/message-formatter.js.map +1 -0
- package/dist/agent/position-db.d.ts.map +1 -0
- package/dist/agent/position-db.js +154 -0
- package/dist/agent/position-db.js.map +1 -0
- package/dist/agent/simple-chat-ui-static.d.ts.map +1 -0
- package/dist/agent/simple-chat-ui-static.js +129 -0
- package/dist/agent/simple-chat-ui-static.js.map +1 -0
- package/dist/agent/simple-chat-ui.d.ts.map +1 -0
- package/dist/agent/simple-chat-ui.js +90 -0
- package/dist/agent/simple-chat-ui.js.map +1 -0
- package/dist/agent/tools.d.ts.map +1 -1
- package/dist/agent/tools.js +297 -4
- package/dist/agent/tools.js.map +1 -1
- package/dist/agent/ui.d.ts.map +1 -0
- package/dist/agent/ui.js +84 -0
- package/dist/agent/ui.js.map +1 -0
- package/dist/agent/unified-runtime.d.ts.map +1 -0
- package/dist/agent/unified-runtime.js +397 -0
- package/dist/agent/unified-runtime.js.map +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +272 -21
- package/dist/client.js.map +1 -1
- package/dist/commands/account.d.ts.map +1 -1
- package/dist/commands/account.js +187 -33
- package/dist/commands/account.js.map +1 -1
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +125 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/approve.d.ts.map +1 -0
- package/dist/commands/approve.js +505 -0
- package/dist/commands/approve.js.map +1 -0
- package/dist/commands/automation.d.ts.map +1 -0
- package/dist/commands/automation.js +346 -0
- package/dist/commands/automation.js.map +1 -0
- package/dist/commands/balances.d.ts.map +1 -1
- package/dist/commands/balances.js +226 -73
- package/dist/commands/balances.js.map +1 -1
- package/dist/commands/buy.d.ts.map +1 -1
- package/dist/commands/buy.js +149 -146
- package/dist/commands/buy.js.map +1 -1
- package/dist/commands/call.d.ts.map +1 -0
- package/dist/commands/call.js +51 -0
- package/dist/commands/call.js.map +1 -0
- package/dist/commands/cex.d.ts.map +1 -0
- package/dist/commands/cex.js +958 -0
- package/dist/commands/cex.js.map +1 -0
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +169 -411
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/claim.d.ts.map +1 -1
- package/dist/commands/claim.js +313 -29
- package/dist/commands/claim.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +151 -43
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/gasless-swap.d.ts.map +1 -0
- package/dist/commands/gasless-swap.js +232 -0
- package/dist/commands/gasless-swap.js.map +1 -0
- package/dist/commands/health.d.ts.map +1 -1
- package/dist/commands/health.js +63 -7
- package/dist/commands/health.js.map +1 -1
- package/dist/commands/info.d.ts.map +1 -1
- package/dist/commands/info.js +131 -47
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/launchpad.d.ts.map +1 -0
- package/dist/commands/launchpad.js +708 -0
- package/dist/commands/launchpad.js.map +1 -0
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +57 -23
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/market.d.ts.map +1 -0
- package/dist/commands/market.js +960 -0
- package/dist/commands/market.js.map +1 -0
- package/dist/commands/mcp-install.d.ts.map +1 -0
- package/dist/commands/mcp-install.js +387 -0
- package/dist/commands/mcp-install.js.map +1 -0
- package/dist/commands/opps.d.ts.map +1 -0
- package/dist/commands/opps.js +409 -0
- package/dist/commands/opps.js.map +1 -0
- package/dist/commands/perps.d.ts.map +1 -0
- package/dist/commands/perps.js +248 -0
- package/dist/commands/perps.js.map +1 -0
- package/dist/commands/portfolio.d.ts.map +1 -0
- package/dist/commands/portfolio.js +679 -0
- package/dist/commands/portfolio.js.map +1 -0
- package/dist/commands/positions.d.ts.map +1 -1
- package/dist/commands/positions.js +76 -47
- package/dist/commands/positions.js.map +1 -1
- package/dist/commands/predict.d.ts.map +1 -0
- package/dist/commands/predict.js +280 -0
- package/dist/commands/predict.js.map +1 -0
- package/dist/commands/predictions.d.ts.map +1 -0
- package/dist/commands/predictions.js +486 -0
- package/dist/commands/predictions.js.map +1 -0
- package/dist/commands/risk.d.ts.map +1 -0
- package/dist/commands/risk.js +225 -0
- package/dist/commands/risk.js.map +1 -0
- package/dist/commands/security.d.ts.map +1 -0
- package/dist/commands/security.js +244 -0
- package/dist/commands/security.js.map +1 -0
- package/dist/commands/sell.d.ts.map +1 -1
- package/dist/commands/sell.js +67 -34
- package/dist/commands/sell.js.map +1 -1
- package/dist/commands/send.d.ts.map +1 -0
- package/dist/commands/send.js +733 -0
- package/dist/commands/send.js.map +1 -0
- package/dist/commands/sign.d.ts.map +1 -0
- package/dist/commands/sign.js +1048 -0
- package/dist/commands/sign.js.map +1 -0
- package/dist/commands/swap.d.ts.map +1 -0
- package/dist/commands/swap.js +744 -0
- package/dist/commands/swap.js.map +1 -0
- package/dist/commands/system.d.ts.map +1 -0
- package/dist/commands/system.js +417 -0
- package/dist/commands/system.js.map +1 -0
- package/dist/commands/tools/index.d.ts.map +1 -0
- package/dist/commands/tools/index.js +2040 -0
- package/dist/commands/tools/index.js.map +1 -0
- package/dist/commands/trade.d.ts.map +1 -0
- package/dist/commands/trade.js +237 -0
- package/dist/commands/trade.js.map +1 -0
- package/dist/commands/transactions.d.ts.map +1 -1
- package/dist/commands/transactions.js +29 -17
- package/dist/commands/transactions.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +429 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +351 -40
- package/dist/config.js.map +1 -1
- package/dist/index.js +4524 -924
- package/dist/index.js.map +1 -1
- package/dist/interactive/art.d.ts.map +1 -1
- package/dist/interactive/art.js +33 -1
- package/dist/interactive/art.js.map +1 -1
- package/dist/interactive/shell.d.ts.map +1 -1
- package/dist/interactive/shell.js +467 -2652
- package/dist/interactive/shell.js.map +1 -1
- package/dist/mcp/context.d.ts.map +1 -0
- package/dist/mcp/context.js +211 -0
- package/dist/mcp/context.js.map +1 -0
- package/dist/mcp/onboarding.d.ts.map +1 -0
- package/dist/mcp/onboarding.js +266 -0
- package/dist/mcp/onboarding.js.map +1 -0
- package/dist/mcp/resources.d.ts.map +1 -0
- package/dist/mcp/resources.js +222 -0
- package/dist/mcp/resources.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +51 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +4119 -169
- package/dist/mcp/tools.js.map +1 -1
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/types/agent-info.d.ts.map +1 -0
- package/dist/types/agent-info.js +11 -0
- package/dist/types/agent-info.js.map +1 -0
- package/dist/ui/components/ScrollableList.d.ts.map +1 -0
- package/dist/ui/components/ScrollableList.js +72 -0
- package/dist/ui/components/ScrollableList.js.map +1 -0
- package/dist/ui/components/ThemeProvider.d.ts.map +1 -0
- package/dist/ui/components/ThemeProvider.js +87 -0
- package/dist/ui/components/ThemeProvider.js.map +1 -0
- package/dist/ui/components/ThemedBox.d.ts.map +1 -0
- package/dist/ui/components/ThemedBox.js +24 -0
- package/dist/ui/components/ThemedBox.js.map +1 -0
- package/dist/ui/components/agent/ChatHeader.d.ts.map +1 -0
- package/dist/ui/components/agent/ChatHeader.js +39 -0
- package/dist/ui/components/agent/ChatHeader.js.map +1 -0
- package/dist/ui/components/agent/Header.d.ts.map +1 -0
- package/dist/ui/components/agent/Header.js +14 -0
- package/dist/ui/components/agent/Header.js.map +1 -0
- package/dist/ui/components/agent/Input.d.ts.map +1 -0
- package/dist/ui/components/agent/Input.js +23 -0
- package/dist/ui/components/agent/Input.js.map +1 -0
- package/dist/ui/components/agent/Output.d.ts.map +1 -0
- package/dist/ui/components/agent/Output.js +23 -0
- package/dist/ui/components/agent/Output.js.map +1 -0
- package/dist/ui/components/chat/TokenChatUI.d.ts.map +1 -0
- package/dist/ui/components/chat/TokenChatUI.js +133 -0
- package/dist/ui/components/chat/TokenChatUI.js.map +1 -0
- package/dist/ui/components/shell/ShellHeader.d.ts.map +1 -0
- package/dist/ui/components/shell/ShellHeader.js +31 -0
- package/dist/ui/components/shell/ShellHeader.js.map +1 -0
- package/dist/ui/components/shell/ShellInput.d.ts.map +1 -0
- package/dist/ui/components/shell/ShellInput.js +151 -0
- package/dist/ui/components/shell/ShellInput.js.map +1 -0
- package/dist/ui/components/shell/ShellOutput.d.ts.map +1 -0
- package/dist/ui/components/shell/ShellOutput.js +8 -0
- package/dist/ui/components/shell/ShellOutput.js.map +1 -0
- package/dist/ui/hooks/useChatWebSocket.d.ts.map +1 -0
- package/dist/ui/hooks/useChatWebSocket.js +76 -0
- package/dist/ui/hooks/useChatWebSocket.js.map +1 -0
- package/dist/ui/hooks/useCommandHistory.d.ts.map +1 -0
- package/dist/ui/hooks/useCommandHistory.js +70 -0
- package/dist/ui/hooks/useCommandHistory.js.map +1 -0
- package/dist/ui/hooks/useDebounce.d.ts.map +1 -0
- package/dist/ui/hooks/useDebounce.js +17 -0
- package/dist/ui/hooks/useDebounce.js.map +1 -0
- package/dist/ui/hooks/useLogStream.d.ts.map +1 -0
- package/dist/ui/hooks/useLogStream.js +20 -0
- package/dist/ui/hooks/useLogStream.js.map +1 -0
- package/dist/ui/hooks/useVirtualScroll.d.ts.map +1 -0
- package/dist/ui/hooks/useVirtualScroll.js +70 -0
- package/dist/ui/hooks/useVirtualScroll.js.map +1 -0
- package/dist/utils/admin.d.ts.map +1 -0
- package/dist/utils/admin.js +144 -0
- package/dist/utils/admin.js.map +1 -0
- package/dist/utils/autoSetup.d.ts.map +1 -0
- package/dist/utils/autoSetup.js +252 -0
- package/dist/utils/autoSetup.js.map +1 -0
- package/dist/utils/build-constants.d.ts.map +1 -0
- package/dist/utils/build-constants.js +10 -0
- package/dist/utils/build-constants.js.map +1 -0
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +10 -1
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/formatting.d.ts.map +1 -1
- package/dist/utils/formatting.js +46 -9
- package/dist/utils/formatting.js.map +1 -1
- package/dist/utils/llm-cli-config.d.ts.map +1 -0
- package/dist/utils/llm-cli-config.js +963 -0
- package/dist/utils/llm-cli-config.js.map +1 -0
- package/dist/utils/llm-cli-detector.d.ts.map +1 -0
- package/dist/utils/llm-cli-detector.js +202 -0
- package/dist/utils/llm-cli-detector.js.map +1 -0
- package/dist/utils/loading.d.ts.map +1 -1
- package/dist/utils/loading.js +25 -3
- package/dist/utils/loading.js.map +1 -1
- package/dist/utils/maintenance.d.ts.map +1 -0
- package/dist/utils/maintenance.js +17 -0
- package/dist/utils/maintenance.js.map +1 -0
- package/dist/utils/mcp-config.d.ts.map +1 -0
- package/dist/utils/mcp-config.js +77 -0
- package/dist/utils/mcp-config.js.map +1 -0
- package/dist/utils/privateKeyPrompt.d.ts.map +1 -1
- package/dist/utils/privateKeyPrompt.js +308 -129
- package/dist/utils/privateKeyPrompt.js.map +1 -1
- package/dist/utils/process-cleanup.d.ts.map +1 -0
- package/dist/utils/process-cleanup.js +136 -0
- package/dist/utils/process-cleanup.js.map +1 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +56 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/rpc-helpers.d.ts.map +1 -0
- package/dist/utils/rpc-helpers.js +70 -0
- package/dist/utils/rpc-helpers.js.map +1 -0
- package/dist/utils/rpc-transport.d.ts.map +1 -0
- package/dist/utils/rpc-transport.js +87 -0
- package/dist/utils/rpc-transport.js.map +1 -0
- package/dist/utils/shell-setup.d.ts.map +1 -0
- package/dist/utils/shell-setup.js +531 -0
- package/dist/utils/shell-setup.js.map +1 -0
- package/dist/utils/status.d.ts.map +1 -1
- package/dist/utils/status.js +34 -5
- package/dist/utils/status.js.map +1 -1
- package/dist/utils/token-resolver.d.ts.map +1 -1
- package/dist/utils/token-resolver.js +51 -8
- package/dist/utils/token-resolver.js.map +1 -1
- package/dist/utils/x402-caller.d.ts.map +1 -0
- package/dist/utils/x402-caller.js +17 -0
- package/dist/utils/x402-caller.js.map +1 -0
- package/docs/README.md +28 -0
- package/docs/agent/README.md +18 -0
- package/docs/api/README.md +41 -0
- package/docs/cli/README.md +42 -0
- package/docs/guides/README.md +26 -0
- package/docs/implementation/README.md +18 -0
- package/docs/planning/README.md +19 -0
- package/docs/testing/README.md +15 -0
- package/docs/ux/README.md +16 -0
- package/issues.txt +2 -0
- package/package.json +24 -9
- package/scripts/cat-spin.sh +417 -0
- package/scripts/deprecate-rc-versions.js +58 -0
- package/scripts/inject-build-constants.js +43 -0
- package/scripts/monitor-foobar.js +117 -0
- package/swap.logs +61 -0
- package/swapping.txt +108 -0
- package/test.txt +12 -0
- package/tests/fixtures/test-data.json +16 -0
- package/Screenshot 2025-12-21 at 8.56.02/342/200/257PM.png +0 -0
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Agent Runtime
|
|
3
|
+
* Orchestrates both autonomous and chat modes with shared log stream
|
|
4
|
+
*/
|
|
5
|
+
import { AutonomousTradingAgent } from "./autonomous-trader.js";
|
|
6
|
+
import { LogStream } from "./log-stream.js";
|
|
7
|
+
import { createAgentUI } from "./ui.js";
|
|
8
|
+
import { createSimpleChatUI } from "./simple-chat-ui-static.js";
|
|
9
|
+
import { createHttpcatAgent, chatWithAgent } from "./ax-agent.js";
|
|
10
|
+
import { createLLM } from "./llm-factory.js";
|
|
11
|
+
import { config } from "../config.js";
|
|
12
|
+
import { privateKeyToAccount } from "viem/accounts";
|
|
13
|
+
import { PositionDatabase } from "./position-db.js";
|
|
14
|
+
import { MemoryManager } from "./memory/memory-manager.js";
|
|
15
|
+
import { homedir } from "os";
|
|
16
|
+
import { join } from "path";
|
|
17
|
+
import readline from "readline";
|
|
18
|
+
import chalk from "chalk";
|
|
19
|
+
export class UnifiedAgentRuntime {
|
|
20
|
+
client;
|
|
21
|
+
logStream;
|
|
22
|
+
autonomousTrader;
|
|
23
|
+
agent; // ax agent
|
|
24
|
+
llm;
|
|
25
|
+
memory;
|
|
26
|
+
db;
|
|
27
|
+
ui;
|
|
28
|
+
isAutonomous = false;
|
|
29
|
+
isChatEnabled = false;
|
|
30
|
+
running = false;
|
|
31
|
+
sessionId;
|
|
32
|
+
shutdownInProgress = false;
|
|
33
|
+
constructor(client, chatEnabled = false) {
|
|
34
|
+
this.client = client;
|
|
35
|
+
this.isChatEnabled = chatEnabled;
|
|
36
|
+
// Get session ID from wallet address
|
|
37
|
+
const account = privateKeyToAccount(config.getPrivateKey());
|
|
38
|
+
this.sessionId = account.address;
|
|
39
|
+
// Initialize log stream
|
|
40
|
+
this.logStream = new LogStream();
|
|
41
|
+
// Get config
|
|
42
|
+
const agentConfig = config.get("agentConfig") || {};
|
|
43
|
+
const dbPath = agentConfig.dbPath || join(homedir(), ".config", "httpcat", "agent.db");
|
|
44
|
+
// Initialize database and memory
|
|
45
|
+
this.db = new PositionDatabase(dbPath);
|
|
46
|
+
this.memory = new MemoryManager(this.db.getDatabase());
|
|
47
|
+
// Initialize AI
|
|
48
|
+
const aiConfig = config.get("aiAgent");
|
|
49
|
+
if (!aiConfig || !aiConfig.apiKey) {
|
|
50
|
+
throw new Error("AI agent not configured. Run: httpcat agent setup");
|
|
51
|
+
}
|
|
52
|
+
this.llm = createLLM(aiConfig, aiConfig.apiKey);
|
|
53
|
+
this.agent = createHttpcatAgent(client, this.llm);
|
|
54
|
+
// Initialize autonomous trader with log stream
|
|
55
|
+
this.autonomousTrader = new AutonomousTradingAgent(client, this.logStream);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Start the unified runtime
|
|
59
|
+
*/
|
|
60
|
+
async start() {
|
|
61
|
+
if (this.running) {
|
|
62
|
+
throw new Error("Runtime is already running");
|
|
63
|
+
}
|
|
64
|
+
this.running = true;
|
|
65
|
+
// Create UI - use simple chat UI for chat mode, complex UI for read-only
|
|
66
|
+
if (this.isChatEnabled) {
|
|
67
|
+
// Get network and account info for header
|
|
68
|
+
const network = this.client.getNetwork();
|
|
69
|
+
const account = privateKeyToAccount(config.getPrivateKey());
|
|
70
|
+
// Get balances - fetch in background to avoid blocking UI
|
|
71
|
+
let ethBalance = '0.00 ETH';
|
|
72
|
+
let usdcBalance = '$0.00';
|
|
73
|
+
// Create UI with blank chat (no conversation history)
|
|
74
|
+
const chatUI = createSimpleChatUI((text) => this.handleUserInput(text), () => this.promptGracefulShutdown(), [], // Start with blank chat
|
|
75
|
+
{
|
|
76
|
+
network,
|
|
77
|
+
account: account.address,
|
|
78
|
+
ethBalance,
|
|
79
|
+
usdcBalance,
|
|
80
|
+
agentStatus: 'Chat Mode'
|
|
81
|
+
});
|
|
82
|
+
this.ui = chatUI;
|
|
83
|
+
// Fetch balances in background and update header when ready
|
|
84
|
+
(async () => {
|
|
85
|
+
try {
|
|
86
|
+
const { checkBalance } = await import('../commands/balances.js');
|
|
87
|
+
const balanceInfo = await checkBalance(config.getPrivateKey(), true);
|
|
88
|
+
const ethBalanceUpdated = `${parseFloat(balanceInfo.ethFormatted).toFixed(4)} ETH`;
|
|
89
|
+
const usdcBalanceUpdated = `$${parseFloat(balanceInfo.usdcFormatted).toFixed(2)}`;
|
|
90
|
+
// Update header with actual balances
|
|
91
|
+
chatUI.updateHeader({
|
|
92
|
+
ethBalance: ethBalanceUpdated,
|
|
93
|
+
usdcBalance: usdcBalanceUpdated
|
|
94
|
+
});
|
|
95
|
+
// Log balance info to chat
|
|
96
|
+
this.logStream.log(`💰 Balances updated: ${ethBalanceUpdated} | ${usdcBalanceUpdated}`, "system");
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
// Silently fail if balance fetch fails
|
|
100
|
+
}
|
|
101
|
+
})();
|
|
102
|
+
// Subscribe to log stream and forward to simple chat UI
|
|
103
|
+
this.logStream.subscribe((message) => {
|
|
104
|
+
// Handle removal actions
|
|
105
|
+
if (message.metadata?.action === 'remove-last') {
|
|
106
|
+
chatUI.log('__REMOVE_LAST__');
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
const formatted = this.formatLogMessage(message);
|
|
110
|
+
chatUI.log(formatted);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
// Display log stream history (autonomous trader events, etc.)
|
|
114
|
+
const history = this.logStream.getHistory();
|
|
115
|
+
history.forEach((message) => {
|
|
116
|
+
const formatted = this.formatLogMessage(message);
|
|
117
|
+
chatUI.log(formatted);
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
// Complex UI for read-only mode
|
|
122
|
+
this.ui = createAgentUI(this.logStream, false, undefined, () => this.promptGracefulShutdown());
|
|
123
|
+
// Update header for read-only mode
|
|
124
|
+
this.updateHeader();
|
|
125
|
+
}
|
|
126
|
+
// Start autonomous trader
|
|
127
|
+
this.isAutonomous = true;
|
|
128
|
+
await this.autonomousTrader.start();
|
|
129
|
+
// Handle graceful shutdown
|
|
130
|
+
this.setupGracefulShutdown();
|
|
131
|
+
// If chat mode, wait for user input
|
|
132
|
+
if (this.isChatEnabled) {
|
|
133
|
+
this.logStream.log(chalk.magenta.bold("🐱 Chat mode enabled. Type your message and press Enter."), "system");
|
|
134
|
+
this.logStream.log(chalk.dim("Type '/exit' to quit (you'll be asked if you want to keep the agent running)."), "system");
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
this.logStream.log(chalk.cyan("Read-only mode - Run 'httpcat agent chat' to speak with your agent"), "system");
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Stop the runtime
|
|
142
|
+
*/
|
|
143
|
+
async stop() {
|
|
144
|
+
if (!this.running) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
this.running = false;
|
|
148
|
+
await this.autonomousTrader.stop();
|
|
149
|
+
this.db.close();
|
|
150
|
+
if (this.ui) {
|
|
151
|
+
this.ui.destroy();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Enable chat mode (if not already enabled)
|
|
156
|
+
*/
|
|
157
|
+
enableChatMode() {
|
|
158
|
+
if (this.isChatEnabled) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
this.isChatEnabled = true;
|
|
162
|
+
// Recreate UI with chat enabled
|
|
163
|
+
if (this.ui) {
|
|
164
|
+
this.ui.destroy();
|
|
165
|
+
}
|
|
166
|
+
// Get network and account info for header
|
|
167
|
+
const network = this.client.getNetwork();
|
|
168
|
+
const account = privateKeyToAccount(config.getPrivateKey());
|
|
169
|
+
// Get balances - fetch in background to avoid blocking UI
|
|
170
|
+
let ethBalance = '0.00 ETH';
|
|
171
|
+
let usdcBalance = '$0.00';
|
|
172
|
+
// Create UI with blank chat (no conversation history)
|
|
173
|
+
const chatUI = createSimpleChatUI((text) => this.handleUserInput(text), () => this.promptGracefulShutdown(), [], // Start with blank chat
|
|
174
|
+
{
|
|
175
|
+
network,
|
|
176
|
+
account: account.address,
|
|
177
|
+
ethBalance,
|
|
178
|
+
usdcBalance,
|
|
179
|
+
agentStatus: 'Chat Mode'
|
|
180
|
+
});
|
|
181
|
+
this.ui = chatUI;
|
|
182
|
+
// Fetch balances in background and update header when ready
|
|
183
|
+
(async () => {
|
|
184
|
+
try {
|
|
185
|
+
const { checkBalance } = await import('../commands/balances.js');
|
|
186
|
+
const balanceInfo = await checkBalance(config.getPrivateKey(), true);
|
|
187
|
+
const ethBalanceUpdated = `${parseFloat(balanceInfo.ethFormatted).toFixed(4)} ETH`;
|
|
188
|
+
const usdcBalanceUpdated = `$${parseFloat(balanceInfo.usdcFormatted).toFixed(2)}`;
|
|
189
|
+
// Update header with actual balances
|
|
190
|
+
chatUI.updateHeader({
|
|
191
|
+
ethBalance: ethBalanceUpdated,
|
|
192
|
+
usdcBalance: usdcBalanceUpdated
|
|
193
|
+
});
|
|
194
|
+
// Log balance info to chat
|
|
195
|
+
this.logStream.log(`💰 Balances updated: ${ethBalanceUpdated} | ${usdcBalanceUpdated}`, "system");
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
// Silently fail if balance fetch fails
|
|
199
|
+
}
|
|
200
|
+
})();
|
|
201
|
+
// Subscribe to log stream
|
|
202
|
+
this.logStream.subscribe((message) => {
|
|
203
|
+
// Handle removal actions
|
|
204
|
+
if (message.metadata?.action === 'remove-last') {
|
|
205
|
+
chatUI.log('__REMOVE_LAST__');
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
const formatted = this.formatLogMessage(message);
|
|
209
|
+
chatUI.log(formatted);
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
// Display log stream history (autonomous trader events, etc.) - skip this for cleaner startup
|
|
213
|
+
// const history = this.logStream.getHistory();
|
|
214
|
+
// history.forEach((message) => {
|
|
215
|
+
// const formatted = this.formatLogMessage(message);
|
|
216
|
+
// chatUI.log(formatted);
|
|
217
|
+
// });
|
|
218
|
+
this.logStream.log(chalk.magenta.bold("🐱 Chat mode enabled. Type your message and press Enter."), "system");
|
|
219
|
+
this.logStream.log(chalk.dim("Type '/exit' to quit (you'll be asked if you want to keep the agent running)."), "system");
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Handle user input in chat mode
|
|
223
|
+
*/
|
|
224
|
+
async handleUserInput(text) {
|
|
225
|
+
if (!text.trim()) {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
// Handle special commands
|
|
229
|
+
if (text.trim() === "/exit") {
|
|
230
|
+
await this.promptGracefulShutdown();
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
// Log user message
|
|
234
|
+
this.logStream.log(text, "user");
|
|
235
|
+
// Show thinking indicator
|
|
236
|
+
const thinkingMsg = chalk.dim("🐱 cat is thinking...");
|
|
237
|
+
this.logStream.log(thinkingMsg, "thinking");
|
|
238
|
+
try {
|
|
239
|
+
// Get conversation thread for context
|
|
240
|
+
const conversationId = this.memory.getOrCreateConversationThread(this.sessionId, true);
|
|
241
|
+
// Chat with agent
|
|
242
|
+
const response = await chatWithAgent(this.agent, this.llm, text, this.sessionId, this.memory);
|
|
243
|
+
// Remove thinking message and log agent response
|
|
244
|
+
this.logStream.removeLast(); // Remove the "thinking..." message
|
|
245
|
+
this.logStream.log(response, "agent");
|
|
246
|
+
}
|
|
247
|
+
catch (error) {
|
|
248
|
+
// Remove thinking message on error
|
|
249
|
+
this.logStream.removeLast();
|
|
250
|
+
this.logStream.log(`Error: ${error.message}`, "system");
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Format log message for display
|
|
255
|
+
*/
|
|
256
|
+
formatLogMessage(message) {
|
|
257
|
+
const timestamp = chalk.dim(`[${new Date(message.timestamp).toLocaleTimeString()}]`);
|
|
258
|
+
let prefix = "";
|
|
259
|
+
let formattedMessage = "";
|
|
260
|
+
if (message.type === "thinking") {
|
|
261
|
+
// Show thinking message in dim grey
|
|
262
|
+
return chalk.dim(`${timestamp} ${message.content}`);
|
|
263
|
+
}
|
|
264
|
+
else if (message.type === "system") {
|
|
265
|
+
prefix = chalk.cyan("⚙️ System: ");
|
|
266
|
+
formattedMessage = chalk.cyan.bold(message.content);
|
|
267
|
+
}
|
|
268
|
+
else if (message.type === "agent") {
|
|
269
|
+
prefix = chalk.magenta("🐱 Cat: ");
|
|
270
|
+
formattedMessage = message.content; // Keep cat messages white/uncolored for readability
|
|
271
|
+
}
|
|
272
|
+
else if (message.type === "user") {
|
|
273
|
+
prefix = chalk.yellow("👤 You: ");
|
|
274
|
+
formattedMessage = chalk.yellow.bold(message.content);
|
|
275
|
+
}
|
|
276
|
+
else if (message.type === "action") {
|
|
277
|
+
prefix = chalk.yellow("⚡ ");
|
|
278
|
+
formattedMessage = chalk.yellow.bold(message.content);
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
prefix = chalk.green("📊 ");
|
|
282
|
+
formattedMessage = chalk.green.bold(message.content);
|
|
283
|
+
}
|
|
284
|
+
return `${timestamp} ${prefix}${formattedMessage}`;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Update header with current status
|
|
288
|
+
*/
|
|
289
|
+
updateHeader() {
|
|
290
|
+
if (!this.ui || !("updateHeader" in this.ui)) {
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
const agentConfig = config.get("agentConfig") || {};
|
|
294
|
+
const mode = this.isChatEnabled ? "Chat Mode" : "Read-Only Mode";
|
|
295
|
+
const autoTrade = agentConfig.autoTradeEnabled ? "✅ Auto-Trade" : "⏸️ Test Mode";
|
|
296
|
+
const status = this.isAutonomous ? "Active" : "Stopped";
|
|
297
|
+
const headerContent = [
|
|
298
|
+
`🐱 Agent Runtime | ${mode} | ${status}`,
|
|
299
|
+
`${autoTrade} | Max: $${agentConfig.maxTradeAmountUsdc || 10.0} | Risk: ${agentConfig.riskTolerance || "conservative"}`,
|
|
300
|
+
this.isChatEnabled ? "Type your message and press Enter. Type '/exit' to quit." : "Run 'httpcat agent chat' to speak with your agent",
|
|
301
|
+
].join("\n");
|
|
302
|
+
this.ui.updateHeader(headerContent);
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Setup graceful shutdown handler
|
|
306
|
+
*/
|
|
307
|
+
setupGracefulShutdown() {
|
|
308
|
+
// Handle SIGINT (Ctrl+C) - but blessed will capture it first, so we rely on the UI callback
|
|
309
|
+
// This is a fallback in case blessed doesn't capture it
|
|
310
|
+
const originalSigInt = process.listeners("SIGINT");
|
|
311
|
+
process.removeAllListeners("SIGINT");
|
|
312
|
+
process.on("SIGINT", async () => {
|
|
313
|
+
await this.promptGracefulShutdown();
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Prompt user for graceful shutdown
|
|
318
|
+
*/
|
|
319
|
+
async promptGracefulShutdown() {
|
|
320
|
+
// Prevent multiple simultaneous shutdown attempts
|
|
321
|
+
if (!this.running || this.shutdownInProgress) {
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
this.shutdownInProgress = true;
|
|
325
|
+
// Hide UI temporarily and restore terminal
|
|
326
|
+
if (this.ui) {
|
|
327
|
+
try {
|
|
328
|
+
this.ui.screen.hideCursor();
|
|
329
|
+
this.ui.screen.destroy();
|
|
330
|
+
}
|
|
331
|
+
catch (error) {
|
|
332
|
+
// Screen might already be destroyed
|
|
333
|
+
}
|
|
334
|
+
// Restore terminal cursor and reset terminal
|
|
335
|
+
process.stdout.write('\x1b[?25h');
|
|
336
|
+
process.stdout.write('\x1b[0m'); // Reset colors
|
|
337
|
+
}
|
|
338
|
+
// Create readline interface for prompt
|
|
339
|
+
const rl = readline.createInterface({
|
|
340
|
+
input: process.stdin,
|
|
341
|
+
output: process.stdout,
|
|
342
|
+
});
|
|
343
|
+
return new Promise((resolve) => {
|
|
344
|
+
// Set a timeout in case readline hangs
|
|
345
|
+
const timeout = setTimeout(() => {
|
|
346
|
+
rl.close();
|
|
347
|
+
console.log("\n🛑 Stopping agent...");
|
|
348
|
+
this.stop().then(() => {
|
|
349
|
+
process.exit(0);
|
|
350
|
+
});
|
|
351
|
+
resolve();
|
|
352
|
+
}, 5000); // 5 second timeout
|
|
353
|
+
rl.question("\n🛑 Keep agent running in background? (y/n): ", async (answer) => {
|
|
354
|
+
clearTimeout(timeout);
|
|
355
|
+
rl.close();
|
|
356
|
+
const keepRunning = answer.toLowerCase().trim() === "y" || answer.toLowerCase().trim() === "yes";
|
|
357
|
+
if (keepRunning) {
|
|
358
|
+
console.log("✅ Agent will continue running in background.");
|
|
359
|
+
console.log(" Run 'httpcat agent chat' to reconnect.");
|
|
360
|
+
// Don't stop the agent, just exit the UI
|
|
361
|
+
// Note: In a real daemon implementation, we'd fork the process here
|
|
362
|
+
// For now, we'll just exit (the agent will stop when the process exits)
|
|
363
|
+
process.exit(0);
|
|
364
|
+
}
|
|
365
|
+
else {
|
|
366
|
+
console.log("🛑 Stopping agent...");
|
|
367
|
+
await this.stop();
|
|
368
|
+
process.exit(0);
|
|
369
|
+
}
|
|
370
|
+
resolve();
|
|
371
|
+
});
|
|
372
|
+
// Handle second Ctrl+C for immediate exit
|
|
373
|
+
process.once("SIGINT", () => {
|
|
374
|
+
clearTimeout(timeout);
|
|
375
|
+
rl.close();
|
|
376
|
+
console.log("\n🛑 Force stopping agent...");
|
|
377
|
+
this.stop().then(() => {
|
|
378
|
+
process.exit(0);
|
|
379
|
+
});
|
|
380
|
+
resolve();
|
|
381
|
+
});
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Get the log stream (for external access)
|
|
386
|
+
*/
|
|
387
|
+
getLogStream() {
|
|
388
|
+
return this.logStream;
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* Check if runtime is running
|
|
392
|
+
*/
|
|
393
|
+
isRunning() {
|
|
394
|
+
return this.running;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
//# sourceMappingURL=unified-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unified-runtime.js","sourceRoot":"","sources":["../../src/agent/unified-runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAIhC,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,GAAG;IACzC,MAAM,EAAE,CAAC,CAAC;CACX;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,gBAAgB,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO;WAcM,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAIhC,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,GAAG;IACzC,MAAM,EAAE,CAAC,CAAC;CACX;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,gBAAgB,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO;WAcM,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC;IAgE7D;;;OAGG;YACW,iBAAiB;IAkO/B;;OAEG;YACW,sBAAsB;IA6I9B,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,OAAO,GAAG,GAAG,EACtC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,WAAW,CAAA;KAAE,CAAC;IA+W9C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAiJrC,WAAW,IAAI,MAAM;IAIrB,UAAU,IAAI,MAAM;IAIpB;;;OAGG;IACG,gBAAgB,CACpB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC7B,GACL,OAAO,CAAC;QACT,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,EAAE,GAAG,CAAC;QACV,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CA6IH;AAED,qBAAa,YAAa,SAAQ,KAAK;IACD,MAAM,EAAE,MAAM;IAAS,OAAO,CAAC,EAAE,GAAG;gBAA5D,OAAO,EAAE,MAAM,EAAS,MAAM,EAAE,MAAM,EAAS,OAAO,CAAC,EAAE,GAAG,YAAA;CAIzE;AAED,qBAAa,oBAAqB,SAAQ,YAAY;gBACxC,OAAO,GAAE,MAA4E,EAAE,OAAO,CAAC,EAAE,GAAG;CAIjH"}
|