balchemy 0.1.1 → 0.1.3

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/dist/index.js CHANGED
@@ -29,7 +29,34 @@ function ask(rl, question, defaultVal = "") {
29
29
  });
30
30
  });
31
31
  }
32
+ async function checkForUpdate() {
33
+ try {
34
+ const res = await fetch("https://registry.npmjs.org/balchemy/latest", {
35
+ signal: AbortSignal.timeout(3000),
36
+ });
37
+ if (!res.ok)
38
+ return;
39
+ const data = (await res.json());
40
+ const latest = data.version;
41
+ if (!latest)
42
+ return;
43
+ // Read current version from package.json (bundled at build time)
44
+ const { createRequire } = await import("module");
45
+ const require = createRequire(import.meta.url);
46
+ const pkg = require("../package.json");
47
+ const current = pkg.version;
48
+ if (latest !== current) {
49
+ process.stdout.write(`\n ${G}Update available${R} ${D}${current}${R} → ${T}${latest}${R}\n` +
50
+ ` Run ${W}npm install -g balchemy${R} to update\n\n`);
51
+ }
52
+ }
53
+ catch {
54
+ // Silent — don't block startup
55
+ }
56
+ }
32
57
  async function main() {
58
+ // Non-blocking update check
59
+ void checkForUpdate();
33
60
  switch (cmd) {
34
61
  case "--init":
35
62
  case "init": {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { ChatMessage, StatusData, TuiConfig } from "./types.js";
2
2
  type StateSetters = {
3
3
  addMessage: (msg: ChatMessage) => void;
4
4
  setStatus: (updater: (prev: StatusData) => StatusData) => void;
5
+ confirmTrade: (preview: string) => Promise<boolean>;
5
6
  };
6
7
  export declare class AgentBridge {
7
8
  private loop;
@@ -26,6 +27,21 @@ export declare class AgentBridge {
26
27
  /** Silent balance refresh — updates status panel only, no chat messages. */
27
28
  refreshBalance(): Promise<void>;
28
29
  checkBalance(): Promise<void>;
30
+ /** Fetch server-side settings (slippage, strategy) from MCP. */
31
+ fetchRemoteSettings(): Promise<{
32
+ slippageBps?: number;
33
+ strategy?: string;
34
+ }>;
35
+ /** Update slippage on the server via MCP. */
36
+ updateSlippage(bps: number): Promise<boolean>;
37
+ /** Update strategy on the server via MCP. */
38
+ updateStrategy(rules: string): Promise<boolean>;
39
+ /** Get current local config for settings display. */
40
+ getLocalConfig(): {
41
+ provider: string;
42
+ model: string;
43
+ maxDailyCost: number;
44
+ };
29
45
  private addAgentMessage;
30
46
  private addSystemMessage;
31
47
  private addTradeMessage;
@@ -1 +1 @@
1
- {"version":3,"file":"AgentBridge.d.ts","sourceRoot":"","sources":["../../src/tui/AgentBridge.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAa,SAAS,EAAE,MAAM,YAAY,CAAC;AAGhF,KAAK,YAAY,GAAG;IAClB,UAAU,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;IACvC,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,UAAU,KAAK,IAAI,CAAC;CAChE,CAAC;AAEF,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,OAAO,CAAC,gBAAgB,CAAS;gBAErB,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY;IAmBpD;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0F5B,yEAAyE;YAC3D,KAAK;IAwBb,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBlD,wFAAwF;YAC1E,gBAAgB;IAa9B,4EAA4E;IACtE,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAc/B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBnC,OAAO,CAAC,eAAe;IAGvB,OAAO,CAAC,gBAAgB;IAGxB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,eAAe;CAGxB"}
1
+ {"version":3,"file":"AgentBridge.d.ts","sourceRoot":"","sources":["../../src/tui/AgentBridge.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAa,SAAS,EAAE,MAAM,YAAY,CAAC;AAoChF,KAAK,YAAY,GAAG;IAClB,UAAU,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;IACvC,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,UAAU,KAAK,IAAI,CAAC;IAC/D,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACrD,CAAC;AAEF,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,OAAO,CAAC,gBAAgB,CAAS;gBAErB,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY;IAmBpD;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiG5B,yEAAyE;YAC3D,KAAK;IAqBb,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBlD,wFAAwF;YAC1E,gBAAgB;IAa9B,4EAA4E;IACtE,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAc/B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBnC,gEAAgE;IAC1D,mBAAmB,IAAI,OAAO,CAAC;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAgBjF,6CAA6C;IACvC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASnD,6CAA6C;IACvC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAarD,qDAAqD;IACrD,cAAc,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE;IAU3E,OAAO,CAAC,eAAe;IAGvB,OAAO,CAAC,gBAAgB;IAGxB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,eAAe;CAKxB"}
@@ -2,6 +2,32 @@
2
2
  import { randomUUID } from "node:crypto";
3
3
  import { AgentLoop, connectMcp } from "@balchemyai/agent-sdk";
4
4
  import { ChatAgent } from "./ChatAgent.js";
5
+ /** Truncate verbose API errors (429 JSON blobs, stack traces) to a readable one-liner. */
6
+ function truncateError(raw) {
7
+ // Extract HTTP status code if present
8
+ const statusMatch = raw.match(/\b(4\d{2}|5\d{2})\b/);
9
+ const status = statusMatch ? statusMatch[1] : null;
10
+ // Extract retry-after header value if present
11
+ const retryMatch = raw.match(/retry[- ]?after[:\s]*(\d+)/i);
12
+ const retryAfter = retryMatch ? `${retryMatch[1]}s` : null;
13
+ // Strip JSON blobs — everything between first { and last }
14
+ let clean = raw.replace(/\{[\s\S]*\}/g, "").trim();
15
+ // If stripping JSON left us with almost nothing, take first line of original
16
+ if (clean.length < 10) {
17
+ clean = raw.split("\n")[0];
18
+ }
19
+ // Truncate to max 150 chars
20
+ if (clean.length > 150) {
21
+ clean = clean.slice(0, 147) + "...";
22
+ }
23
+ // Build a readable summary
24
+ if (status === "429") {
25
+ return retryAfter
26
+ ? `Rate limited (429). Retry after ${retryAfter}.`
27
+ : "Rate limited (429). Try again in a moment.";
28
+ }
29
+ return clean;
30
+ }
5
31
  export class AgentBridge {
6
32
  loop = null;
7
33
  mcp;
@@ -103,6 +129,12 @@ export class AgentBridge {
103
129
  };
104
130
  this.loop = new AgentLoop(loopConfig);
105
131
  await this.loop.start();
132
+ // Push provider/model to status panel
133
+ this.setters.setStatus((prev) => ({
134
+ ...prev,
135
+ provider: this.config.llmProvider,
136
+ model: this.config.llmModel,
137
+ }));
106
138
  // Input is ready now — kick off greeting + balance check in the background
107
139
  void this.greet(setupComplete);
108
140
  }
@@ -121,10 +153,7 @@ export class AgentBridge {
121
153
  this.addAgentMessage(reply);
122
154
  }
123
155
  catch (err) {
124
- const raw = err instanceof Error ? err.message : String(err);
125
- // Truncate long API errors — show first line only
126
- const short = raw.split("\n")[0].slice(0, 120);
127
- this.addErrorMessage(`LLM error: ${short}`);
156
+ this.addErrorMessage(`LLM error: ${err instanceof Error ? err.message : String(err)}`);
128
157
  }
129
158
  }
130
159
  async stop() {
@@ -140,7 +169,7 @@ export class AgentBridge {
140
169
  timestamp: Date.now(),
141
170
  });
142
171
  try {
143
- const reply = await this.chatAgent.chat(text, (name, _result) => this.addSystemMessage(`Tool: ${name}`));
172
+ const reply = await this.chatAgent.chat(text, (name, _result) => this.addSystemMessage(`Tool: ${name}`), (preview) => this.setters.confirmTrade(preview));
144
173
  this.addAgentMessage(reply);
145
174
  }
146
175
  catch (err) {
@@ -212,7 +241,62 @@ export class AgentBridge {
212
241
  this.addErrorMessage("Could not check wallet balance.");
213
242
  }
214
243
  }
215
- // Convenience helpers
244
+ // ── Settings helpers (for /settings menu) ─────────────────────────────────
245
+ /** Fetch server-side settings (slippage, strategy) from MCP. */
246
+ async fetchRemoteSettings() {
247
+ try {
248
+ const resp = await this.mcp.callTool("setup_agent", { action: "get_status" });
249
+ const text = resp.content?.find((c) => c.type === "text")?.text ?? "{}";
250
+ let parsed;
251
+ try {
252
+ parsed = JSON.parse(text);
253
+ }
254
+ catch {
255
+ parsed = {};
256
+ }
257
+ const structured = parsed.structured;
258
+ return {
259
+ slippageBps: typeof structured?.slippageBps === "number" ? structured.slippageBps : undefined,
260
+ strategy: typeof structured?.naturalLanguageRules === "string" ? structured.naturalLanguageRules : undefined,
261
+ };
262
+ }
263
+ catch {
264
+ return {};
265
+ }
266
+ }
267
+ /** Update slippage on the server via MCP. */
268
+ async updateSlippage(bps) {
269
+ try {
270
+ await this.mcp.callTool("setup_agent", { action: "configure_slippage", slippageBps: bps });
271
+ return true;
272
+ }
273
+ catch {
274
+ return false;
275
+ }
276
+ }
277
+ /** Update strategy on the server via MCP. */
278
+ async updateStrategy(rules) {
279
+ try {
280
+ await this.mcp.callTool("setup_agent", {
281
+ action: "configure_autonomous",
282
+ naturalLanguageRules: rules,
283
+ shadowMode: false,
284
+ });
285
+ return true;
286
+ }
287
+ catch {
288
+ return false;
289
+ }
290
+ }
291
+ /** Get current local config for settings display. */
292
+ getLocalConfig() {
293
+ return {
294
+ provider: this.config.llmProvider,
295
+ model: this.config.llmModel ?? "(default)",
296
+ maxDailyCost: this.config.maxDailyLlmCost ?? 5,
297
+ };
298
+ }
299
+ // ── Convenience helpers ──────────────────────────────────────────────────
216
300
  addAgentMessage(text) {
217
301
  this.setters.addMessage({ id: randomUUID(), type: "agent", text, timestamp: Date.now() });
218
302
  }
@@ -220,11 +304,10 @@ export class AgentBridge {
220
304
  this.setters.addMessage({ id: randomUUID(), type: "system", text, timestamp: Date.now() });
221
305
  }
222
306
  addTradeMessage(trade) {
223
- const icon = trade.action === "buy" ? "BUY" : "SELL";
224
307
  this.setters.addMessage({
225
308
  id: randomUUID(),
226
309
  type: "trade",
227
- text: `${icon} ${trade.amount} SOL ${trade.action === "buy" ? "->" : "<-"} ${trade.token.slice(0, 8)}...`,
310
+ text: `${trade.amount} SOL ${trade.action === "buy" ? "\u2192" : "\u2190"} ${trade.token.slice(0, 8)}...`,
228
311
  token: trade.token,
229
312
  action: trade.action,
230
313
  amount: trade.amount,
@@ -232,7 +315,9 @@ export class AgentBridge {
232
315
  });
233
316
  }
234
317
  addErrorMessage(text) {
235
- this.setters.addMessage({ id: randomUUID(), type: "error", text, timestamp: Date.now() });
318
+ // Truncate long error messages extract status code and first meaningful line
319
+ const truncated = truncateError(text);
320
+ this.setters.addMessage({ id: randomUUID(), type: "error", text: truncated, timestamp: Date.now() });
236
321
  }
237
322
  }
238
323
  //# sourceMappingURL=AgentBridge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentBridge.js","sourceRoot":"","sources":["../../src/tui/AgentBridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentBridge.js","sourceRoot":"","sources":["../../src/tui/AgentBridge.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAMxE,OAAO,KAAK,EAA2B,SAAS,EAAE,MAAM,YAAY,CAAC;AAmBrE,UAAU,QAAQ;IAChB,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,wBAAgB,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,QAAQ,GAAG,KAAK,CAAC,YAAY,CAoI5D"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAOxE,OAAO,KAAK,EAA2B,SAAS,EAAE,MAAM,YAAY,CAAC;AAgDrE,UAAU,QAAQ;IAChB,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,wBAAgB,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,QAAQ,GAAG,KAAK,CAAC,YAAY,CAsW5D"}
package/dist/tui/App.js CHANGED
@@ -1,12 +1,14 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  // src/tui/App.tsx
3
3
  import { useState, useEffect, useRef, useCallback } from "react";
4
4
  import { Box, Text, useApp } from "ink";
5
+ import { TextInput } from "@inkjs/ui";
5
6
  import { ChatPanel } from "./ChatPanel.js";
6
7
  import { StatusPanel } from "./StatusPanel.js";
7
8
  import { AgentBridge } from "./AgentBridge.js";
8
- import { clearAgent } from "../agent-store.js";
9
+ import { clearAgent, loadAgent, saveAgent } from "../agent-store.js";
9
10
  import { randomUUID } from "node:crypto";
11
+ // ── Constants ────────────────────────────────────────────────────────────────
10
12
  const INITIAL_STATUS = {
11
13
  balanceSol: 0,
12
14
  balanceUsd: 0,
@@ -22,6 +24,13 @@ const INITIAL_STATUS = {
22
24
  sseConnected: false,
23
25
  status: "starting",
24
26
  };
27
+ const SETTINGS_ITEMS = [
28
+ { key: "provider", label: "LLM Provider", source: "local" },
29
+ { key: "model", label: "LLM Model", source: "local" },
30
+ { key: "maxDailyCost", label: "Max Daily $", source: "local" },
31
+ { key: "slippage", label: "Slippage (bps)", source: "remote" },
32
+ { key: "strategy", label: "Strategy", source: "remote" },
33
+ ];
25
34
  export function App({ config }) {
26
35
  const { exit } = useApp();
27
36
  const [messages, setMessages] = useState([]);
@@ -31,6 +40,13 @@ export function App({ config }) {
31
40
  });
32
41
  const [inputActive, setInputActive] = useState(false);
33
42
  const bridgeRef = useRef(null);
43
+ // App mode — chat (default) | settings-select | settings-edit
44
+ const [appMode, setAppMode] = useState("chat");
45
+ const [settingsEdit, setSettingsEdit] = useState(null);
46
+ const [settingsValues, setSettingsValues] = useState({});
47
+ // Trade confirmation state
48
+ const [tradeConfirm, setTradeConfirm] = useState(null);
49
+ const [confirmKey, setConfirmKey] = useState(0);
34
50
  const addMessage = useCallback((msg) => {
35
51
  setMessages((prev) => {
36
52
  const next = [...prev, msg];
@@ -40,8 +56,29 @@ export function App({ config }) {
40
56
  const addSystemMsg = useCallback((text) => {
41
57
  addMessage({ id: randomUUID(), type: "system", text, timestamp: Date.now() });
42
58
  }, [addMessage]);
59
+ // Trade confirmation callback
60
+ const confirmTrade = useCallback((preview) => {
61
+ return new Promise((resolve) => {
62
+ setTradeConfirm({ preview, resolve });
63
+ setConfirmKey((k) => k + 1);
64
+ });
65
+ }, []);
66
+ const handleConfirmInput = useCallback((value) => {
67
+ const yes = value.toLowerCase() === "y" || value.toLowerCase() === "yes";
68
+ if (tradeConfirm) {
69
+ if (yes) {
70
+ addMessage({ id: randomUUID(), type: "trade", text: `Confirmed: ${tradeConfirm.preview}`, timestamp: Date.now() });
71
+ }
72
+ else {
73
+ addSystemMsg(`Cancelled: ${tradeConfirm.preview}`);
74
+ }
75
+ tradeConfirm.resolve(yes);
76
+ setTradeConfirm(null);
77
+ }
78
+ }, [tradeConfirm, addMessage, addSystemMsg]);
79
+ // ── Bridge startup ──────────────────────────────────────────────────────
43
80
  useEffect(() => {
44
- const bridge = new AgentBridge(config, { addMessage, setStatus });
81
+ const bridge = new AgentBridge(config, { addMessage, setStatus, confirmTrade });
45
82
  bridgeRef.current = bridge;
46
83
  bridge.start().then(() => {
47
84
  setInputActive(true);
@@ -53,7 +90,6 @@ export function App({ config }) {
53
90
  timestamp: Date.now(),
54
91
  });
55
92
  });
56
- // Balance updates silently via status panel — no spam messages
57
93
  const balanceInterval = setInterval(() => {
58
94
  bridge.refreshBalance().catch(() => { });
59
95
  }, 60_000);
@@ -61,11 +97,146 @@ export function App({ config }) {
61
97
  clearInterval(balanceInterval);
62
98
  bridge.stop().catch(() => { });
63
99
  };
64
- }, [config, addMessage]);
100
+ }, [config, addMessage, confirmTrade]);
101
+ // ── Settings helpers ────────────────────────────────────────────────────
102
+ const showSettings = useCallback(async () => {
103
+ const bridge = bridgeRef.current;
104
+ if (!bridge)
105
+ return;
106
+ // Local config
107
+ const local = bridge.getLocalConfig();
108
+ const values = {
109
+ provider: local.provider,
110
+ model: local.model,
111
+ maxDailyCost: `$${local.maxDailyCost.toFixed(2)}`,
112
+ slippage: "loading...",
113
+ strategy: "loading...",
114
+ };
115
+ setSettingsValues({ ...values });
116
+ setAppMode("settings-select");
117
+ // Show settings message
118
+ addSystemMsg(formatSettingsDisplay(values));
119
+ // Fetch remote settings
120
+ const remote = await bridge.fetchRemoteSettings();
121
+ values.slippage = remote.slippageBps !== undefined ? `${remote.slippageBps}` : "not set";
122
+ values.strategy = remote.strategy ?? "not configured";
123
+ setSettingsValues({ ...values });
124
+ // Update display with fetched values
125
+ addSystemMsg(formatSettingsDisplay(values));
126
+ }, [addSystemMsg]);
127
+ const handleSettingsSelect = useCallback((input) => {
128
+ if (input === "/back" || input === "") {
129
+ setAppMode("chat");
130
+ addSystemMsg("Settings closed.");
131
+ return;
132
+ }
133
+ const idx = parseInt(input, 10);
134
+ if (isNaN(idx) || idx < 1 || idx > SETTINGS_ITEMS.length) {
135
+ addSystemMsg(`Type 1-${SETTINGS_ITEMS.length} to edit, /back to close.`);
136
+ return;
137
+ }
138
+ const item = SETTINGS_ITEMS[idx - 1];
139
+ const current = settingsValues[item.key] ?? "?";
140
+ setSettingsEdit({ index: idx - 1, label: item.label, currentValue: current });
141
+ setAppMode("settings-edit");
142
+ addSystemMsg(`Editing ${item.label} (current: ${current})`);
143
+ }, [settingsValues, addSystemMsg]);
144
+ const handleSettingsSave = useCallback(async (value) => {
145
+ if (!settingsEdit)
146
+ return;
147
+ if (value === "/back" || value === "") {
148
+ setAppMode("settings-select");
149
+ setSettingsEdit(null);
150
+ addSystemMsg(formatSettingsDisplay(settingsValues));
151
+ return;
152
+ }
153
+ const item = SETTINGS_ITEMS[settingsEdit.index];
154
+ const bridge = bridgeRef.current;
155
+ if (item.source === "local") {
156
+ // Save to agent-store
157
+ const agent = loadAgent();
158
+ if (!agent) {
159
+ addMessage({ id: randomUUID(), type: "error", text: "No agent found in store.", timestamp: Date.now() });
160
+ setAppMode("settings-select");
161
+ setSettingsEdit(null);
162
+ return;
163
+ }
164
+ switch (item.key) {
165
+ case "provider": {
166
+ const valid = ["anthropic", "openai", "gemini", "grok", "openrouter"];
167
+ if (!valid.includes(value.toLowerCase())) {
168
+ addMessage({ id: randomUUID(), type: "error", text: `Invalid provider. Choose: ${valid.join(", ")}`, timestamp: Date.now() });
169
+ return;
170
+ }
171
+ agent.llmProvider = value.toLowerCase();
172
+ break;
173
+ }
174
+ case "model":
175
+ agent.llmModel = value;
176
+ break;
177
+ case "maxDailyCost": {
178
+ const num = parseFloat(value.replace("$", ""));
179
+ if (isNaN(num) || num <= 0) {
180
+ addMessage({ id: randomUUID(), type: "error", text: "Enter a positive number.", timestamp: Date.now() });
181
+ return;
182
+ }
183
+ agent.maxDailyLlmCost = num;
184
+ break;
185
+ }
186
+ }
187
+ saveAgent(agent);
188
+ settingsValues[item.key] = item.key === "maxDailyCost" ? `$${agent.maxDailyLlmCost?.toFixed(2)}` : value;
189
+ addSystemMsg(`${item.label} updated to: ${value}. Takes effect on restart.`);
190
+ }
191
+ else if (item.source === "remote" && bridge) {
192
+ // Save via MCP
193
+ if (item.key === "slippage") {
194
+ const bps = parseInt(value, 10);
195
+ if (isNaN(bps) || bps < 1 || bps > 5000) {
196
+ addMessage({ id: randomUUID(), type: "error", text: "Slippage must be 1-5000 bps.", timestamp: Date.now() });
197
+ return;
198
+ }
199
+ const ok = await bridge.updateSlippage(bps);
200
+ if (ok) {
201
+ settingsValues.slippage = `${bps}`;
202
+ addSystemMsg(`Slippage updated to ${bps} bps.`);
203
+ }
204
+ else {
205
+ addMessage({ id: randomUUID(), type: "error", text: "Failed to update slippage.", timestamp: Date.now() });
206
+ }
207
+ }
208
+ else if (item.key === "strategy") {
209
+ const ok = await bridge.updateStrategy(value);
210
+ if (ok) {
211
+ settingsValues.strategy = value;
212
+ addSystemMsg(`Strategy updated.`);
213
+ }
214
+ else {
215
+ addMessage({ id: randomUUID(), type: "error", text: "Failed to update strategy.", timestamp: Date.now() });
216
+ }
217
+ }
218
+ }
219
+ setSettingsValues({ ...settingsValues });
220
+ setAppMode("settings-select");
221
+ setSettingsEdit(null);
222
+ // Re-show menu
223
+ addSystemMsg(formatSettingsDisplay(settingsValues));
224
+ }, [settingsEdit, settingsValues, addMessage, addSystemMsg]);
225
+ // ── Main input handler ──────────────────────────────────────────────────
65
226
  const handleSend = useCallback(async (text) => {
66
- // Slash commands work even without bridge
227
+ // Settings mode routing
228
+ if (appMode === "settings-select") {
229
+ handleSettingsSelect(text);
230
+ return;
231
+ }
232
+ if (appMode === "settings-edit") {
233
+ await handleSettingsSave(text);
234
+ return;
235
+ }
236
+ // Slash commands (chat mode)
67
237
  if (text.startsWith("/")) {
68
- const cmd = text.split(" ")[0].toLowerCase();
238
+ const parts = text.split(" ");
239
+ const cmd = parts[0].toLowerCase();
69
240
  switch (cmd) {
70
241
  case "/stop":
71
242
  case "/exit":
@@ -89,39 +260,61 @@ export function App({ config }) {
89
260
  exit();
90
261
  return;
91
262
  }
92
- case "/provider": {
93
- addSystemMsg("To change your LLM provider, run:\n" +
94
- " npx balchemy init\n" +
95
- "This starts the setup wizard where you can pick a new provider and model.");
263
+ case "/settings": {
264
+ await showSettings();
96
265
  return;
97
266
  }
98
267
  case "/help": {
99
268
  addSystemMsg("Commands:\n" +
100
- " /stop Stop agent and exit\n" +
269
+ " /settings View & change settings\n" +
101
270
  " /clear Clear chat history\n" +
271
+ " /stop Stop agent and exit\n" +
102
272
  " /new Create a new agent\n" +
103
273
  " /switch Switch to different agent\n" +
104
- " /provider Change LLM provider\n" +
105
274
  " /help Show this help");
106
275
  return;
107
276
  }
108
277
  case "/clear": {
109
278
  setMessages([]);
279
+ addSystemMsg("Chat cleared.");
110
280
  return;
111
281
  }
112
282
  default: {
113
- addSystemMsg(`Unknown command: ${cmd}. Type /help for commands.`);
283
+ addSystemMsg(`Unknown command: ${cmd}. Type /help for available commands.`);
114
284
  return;
115
285
  }
116
286
  }
117
287
  }
288
+ // Regular chat message
118
289
  if (bridgeRef.current) {
119
290
  await bridgeRef.current.sendUserMessage(text);
120
291
  }
121
292
  else {
122
293
  addSystemMsg("Agent not ready yet. Try again in a moment.");
123
294
  }
124
- }, [exit, addSystemMsg]);
125
- return (_jsxs(Box, { flexDirection: "column", height: "100%", children: [_jsxs(Box, { borderStyle: "single", borderColor: "cyan", borderBottom: true, borderTop: false, borderLeft: false, borderRight: false, paddingX: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: "BALCHEMY" }), _jsx(Text, { dimColor: true, children: " | " }), _jsx(Text, { dimColor: true, children: config.publicId }), _jsx(Text, { dimColor: true, children: " | " }), _jsx(Text, { color: status.sseConnected ? "green" : "yellow", children: status.sseConnected ? "LIVE" : "CONNECTING" }), _jsx(Text, { dimColor: true, children: " | " }), _jsx(Text, { dimColor: true, children: config.shadowMode ? "SHADOW" : "LIVE MODE" })] }), _jsxs(Box, { flexDirection: "row", flexGrow: 1, children: [_jsx(ChatPanel, { messages: messages, onSend: handleSend, inputActive: inputActive }), _jsx(StatusPanel, { status: status })] })] }));
295
+ }, [appMode, exit, addSystemMsg, handleSettingsSelect, handleSettingsSave, showSettings]);
296
+ // ── Input placeholder based on mode ─────────────────────────────────────
297
+ const inputPlaceholder = appMode === "settings-select"
298
+ ? "Type 1-5 to edit, /back to close..."
299
+ : appMode === "settings-edit"
300
+ ? `New value for ${settingsEdit?.label ?? "setting"}...`
301
+ : undefined;
302
+ // ── Render ──────────────────────────────────────────────────────────────
303
+ return (_jsxs(Box, { flexDirection: "column", height: "100%", children: [_jsxs(Box, { borderStyle: "single", borderColor: "cyan", borderBottom: true, borderTop: false, borderLeft: false, borderRight: false, paddingX: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: "BALCHEMY" }), _jsx(Text, { dimColor: true, children: " | " }), _jsx(Text, { dimColor: true, children: config.publicId }), _jsx(Text, { dimColor: true, children: " | " }), _jsx(Text, { color: status.sseConnected ? "green" : "yellow", children: status.sseConnected ? "LIVE" : "CONNECTING" }), _jsx(Text, { dimColor: true, children: " | " }), _jsx(Text, { dimColor: true, children: config.shadowMode ? "SHADOW" : "LIVE MODE" }), appMode !== "chat" && (_jsxs(_Fragment, { children: [_jsx(Text, { dimColor: true, children: " | " }), _jsx(Text, { color: "yellow", bold: true, children: "SETTINGS" })] }))] }), _jsxs(Box, { flexDirection: "row", flexGrow: 1, children: [_jsx(ChatPanel, { messages: messages, onSend: handleSend, inputActive: inputActive && !tradeConfirm, inputPlaceholder: inputPlaceholder }), _jsx(StatusPanel, { status: status })] }), tradeConfirm && (_jsxs(Box, { borderStyle: "round", borderColor: "yellow", paddingX: 1, paddingY: 0, children: [_jsx(Text, { color: "yellow", bold: true, children: "TRADE " }), _jsxs(Text, { color: "white", children: [tradeConfirm.preview, " "] }), _jsx(Text, { color: "yellow", children: "Confirm? " }), _jsx(TextInput, { placeholder: "y/n", onSubmit: handleConfirmInput }, confirmKey)] }))] }));
304
+ }
305
+ // ── Helpers ────────────────────────────────────────────────────────────────────
306
+ function formatSettingsDisplay(values) {
307
+ const lines = SETTINGS_ITEMS.map((item, i) => {
308
+ const val = values[item.key] ?? "?";
309
+ const display = val.length > 40 ? val.slice(0, 37) + "..." : val;
310
+ return ` ${i + 1} ${item.label.padEnd(16)} ${display}`;
311
+ });
312
+ return [
313
+ "Settings",
314
+ "\u2500".repeat(38),
315
+ ...lines,
316
+ "",
317
+ "Type number to edit \u00b7 /back to close",
318
+ ].join("\n");
126
319
  }
127
320
  //# sourceMappingURL=App.js.map