balchemy 0.1.24 → 0.2.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.
Files changed (50) hide show
  1. package/README.md +19 -4
  2. package/dist/colors.d.ts +37 -0
  3. package/dist/colors.d.ts.map +1 -0
  4. package/dist/colors.js +58 -0
  5. package/dist/colors.js.map +1 -0
  6. package/dist/index.d.ts +6 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +170 -43
  9. package/dist/index.js.map +1 -1
  10. package/dist/terminal-logo.d.ts.map +1 -1
  11. package/dist/terminal-logo.js +9 -14
  12. package/dist/terminal-logo.js.map +1 -1
  13. package/dist/tui/AgentBridge.d.ts +1 -0
  14. package/dist/tui/AgentBridge.d.ts.map +1 -1
  15. package/dist/tui/AgentBridge.js +97 -37
  16. package/dist/tui/AgentBridge.js.map +1 -1
  17. package/dist/tui/App.d.ts.map +1 -1
  18. package/dist/tui/App.js +6 -15
  19. package/dist/tui/App.js.map +1 -1
  20. package/dist/tui/ChatAgent.d.ts +3 -0
  21. package/dist/tui/ChatAgent.d.ts.map +1 -1
  22. package/dist/tui/ChatAgent.js +50 -13
  23. package/dist/tui/ChatAgent.js.map +1 -1
  24. package/dist/tui/ChatPanel.d.ts +2 -1
  25. package/dist/tui/ChatPanel.d.ts.map +1 -1
  26. package/dist/tui/ChatPanel.js +19 -7
  27. package/dist/tui/ChatPanel.js.map +1 -1
  28. package/dist/tui/SecretInput.d.ts +9 -0
  29. package/dist/tui/SecretInput.d.ts.map +1 -0
  30. package/dist/tui/SecretInput.js +32 -0
  31. package/dist/tui/SecretInput.js.map +1 -0
  32. package/dist/tui/Wizard.d.ts +20 -0
  33. package/dist/tui/Wizard.d.ts.map +1 -0
  34. package/dist/tui/Wizard.js +400 -0
  35. package/dist/tui/Wizard.js.map +1 -0
  36. package/dist/tui/setup-guidance.d.ts +2 -0
  37. package/dist/tui/setup-guidance.d.ts.map +1 -1
  38. package/dist/tui/setup-guidance.js +17 -14
  39. package/dist/tui/setup-guidance.js.map +1 -1
  40. package/dist/tui/start-wizard.d.ts +2 -0
  41. package/dist/tui/start-wizard.d.ts.map +1 -0
  42. package/dist/tui/start-wizard.js +30 -0
  43. package/dist/tui/start-wizard.js.map +1 -0
  44. package/dist/tui/utils.d.ts +3 -0
  45. package/dist/tui/utils.d.ts.map +1 -0
  46. package/dist/tui/utils.js +14 -0
  47. package/dist/tui/utils.js.map +1 -0
  48. package/dist/wizard.js +1 -1
  49. package/dist/wizard.js.map +1 -1
  50. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Wizard.d.ts","sourceRoot":"","sources":["../../src/tui/Wizard.tsx"],"names":[],"mappings":"AACA,OAAO,KAA2C,MAAM,OAAO,CAAC;AA0OhE,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,CAAC,MAAM,EAAE;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACxC,KAAK,IAAI,CAAC;CACZ;AAED,wBAAgB,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,WAAW,GAAG,KAAK,CAAC,YAAY,CA4X9E"}
@@ -0,0 +1,400 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // src/tui/Wizard.tsx — Ink-based onboarding wizard (replaces readline wizard)
3
+ import { useState, useCallback } from "react";
4
+ import { Box, Text, useApp, useInput, useStdout } from "ink";
5
+ import { Select, TextInput } from "@inkjs/ui";
6
+ import { SecretInput } from "./SecretInput.js";
7
+ import { saveAgent } from "../agent-store.js";
8
+ import * as fs from "node:fs";
9
+ import * as path from "node:path";
10
+ import { exec } from "node:child_process";
11
+ import { truncateEnd } from "./text-layout.js";
12
+ const PROVIDERS = [
13
+ {
14
+ name: "anthropic",
15
+ label: "Anthropic (Claude)",
16
+ baseUrl: "https://api.anthropic.com",
17
+ sdkProvider: "anthropic",
18
+ keyUrl: "https://console.anthropic.com/settings/keys",
19
+ models: [
20
+ { id: "claude-haiku-4-5-20251001", label: "Claude Haiku 4.5", tier: "fast", costHint: "$1/1M in · $5/1M out" },
21
+ { id: "claude-sonnet-4-6-20260217", label: "Claude Sonnet 4.6", tier: "balanced", costHint: "$3/1M in · $15/1M out" },
22
+ { id: "claude-opus-4-6-20260205", label: "Claude Opus 4.6", tier: "powerful", costHint: "$5/1M in · $25/1M out" },
23
+ ],
24
+ },
25
+ {
26
+ name: "openai",
27
+ label: "OpenAI (GPT)",
28
+ baseUrl: "https://api.openai.com/v1",
29
+ sdkProvider: "openai",
30
+ keyUrl: "https://platform.openai.com/api-keys",
31
+ models: [
32
+ { id: "gpt-5.4-nano", label: "GPT-5.4 Nano", tier: "fast", costHint: "$0.10/1M in · $0.40/1M out" },
33
+ { id: "gpt-5.4-mini", label: "GPT-5.4 Mini", tier: "fast", costHint: "$0.30/1M in · $1.20/1M out" },
34
+ { id: "gpt-5.4", label: "GPT-5.4", tier: "balanced", costHint: "$2.50/1M in · $10/1M out" },
35
+ { id: "o4-mini", label: "o4-mini (reasoning)", tier: "powerful", costHint: "$1.10/1M in · $4.40/1M out" },
36
+ ],
37
+ },
38
+ {
39
+ name: "gemini",
40
+ label: "Google (Gemini)",
41
+ baseUrl: "https://generativelanguage.googleapis.com/v1beta/openai",
42
+ sdkProvider: "openai",
43
+ keyUrl: "https://aistudio.google.com/apikey",
44
+ models: [
45
+ { id: "gemini-3.1-flash-lite", label: "Gemini 3.1 Flash-Lite", tier: "fast", costHint: "$0.02/1M in · $0.10/1M out" },
46
+ { id: "gemini-2.5-flash", label: "Gemini 2.5 Flash", tier: "fast", costHint: "$0.15/1M in · $0.60/1M out" },
47
+ { id: "gemini-3.1-pro", label: "Gemini 3.1 Pro", tier: "balanced", costHint: "$1.25/1M in · $10/1M out" },
48
+ { id: "gemini-2.5-pro", label: "Gemini 2.5 Pro", tier: "powerful", costHint: "$1.25/1M in · $10/1M out" },
49
+ ],
50
+ },
51
+ {
52
+ name: "grok",
53
+ label: "xAI (Grok)",
54
+ baseUrl: "https://api.x.ai/v1",
55
+ sdkProvider: "openai",
56
+ keyUrl: "https://console.x.ai/",
57
+ models: [
58
+ { id: "grok-4.1-fast", label: "Grok 4.1 Fast", tier: "fast", costHint: "$0.20/1M in · $0.50/1M out" },
59
+ { id: "grok-4", label: "Grok 4", tier: "balanced", costHint: "$2/1M in · $6/1M out" },
60
+ { id: "grok-4.20", label: "Grok 4.20", tier: "powerful", costHint: "$2/1M in · $6/1M out" },
61
+ ],
62
+ },
63
+ {
64
+ name: "openrouter",
65
+ label: "OpenRouter (multi-provider)",
66
+ baseUrl: "https://openrouter.ai/api/v1",
67
+ sdkProvider: "openai",
68
+ keyUrl: "https://openrouter.ai/keys",
69
+ models: [
70
+ { id: "google/gemini-2.5-flash", label: "Gemini 2.5 Flash", tier: "fast", costHint: "~$0.15/1M in" },
71
+ { id: "x-ai/grok-4.1-fast", label: "Grok 4.1 Fast", tier: "fast", costHint: "~$0.20/1M in" },
72
+ { id: "openai/gpt-5.4-mini", label: "GPT-5.4 Mini", tier: "fast", costHint: "~$0.30/1M in" },
73
+ { id: "anthropic/claude-sonnet-4-6", label: "Claude Sonnet 4.6", tier: "balanced", costHint: "~$3/1M in" },
74
+ { id: "anthropic/claude-opus-4-6", label: "Claude Opus 4.6", tier: "powerful", costHint: "~$5/1M in" },
75
+ ],
76
+ },
77
+ ];
78
+ // ── Walletless onboarding ────────────────────────────────────────────────────
79
+ const API_BASE = "https://api.balchemy.ai/api";
80
+ async function walletlessOnboard(agentName) {
81
+ const initRes = await fetch(`${API_BASE}/public/erc8004/onboarding/walletless/init`, {
82
+ method: "POST",
83
+ headers: { "Content-Type": "application/json" },
84
+ body: JSON.stringify({ agentId: agentName }),
85
+ });
86
+ const initData = (await initRes.json());
87
+ if (!initData.success || !initData.data?.tempId)
88
+ return null;
89
+ const provRes = await fetch(`${API_BASE}/public/erc8004/onboarding/walletless/provision`, {
90
+ method: "POST",
91
+ headers: { "Content-Type": "application/json" },
92
+ body: JSON.stringify({ tempId: initData.data.tempId }),
93
+ });
94
+ const provData = (await provRes.json());
95
+ if (!provData.success || !provData.data)
96
+ return null;
97
+ return provData.data;
98
+ }
99
+ // ── API key validation ───────────────────────────────────────────────────────
100
+ async function validateApiKey(provider, apiKey) {
101
+ try {
102
+ if (provider.sdkProvider === "anthropic") {
103
+ const res = await fetch("https://api.anthropic.com/v1/messages", {
104
+ method: "POST",
105
+ headers: {
106
+ "Content-Type": "application/json",
107
+ "x-api-key": apiKey,
108
+ "anthropic-version": "2023-06-01",
109
+ },
110
+ body: JSON.stringify({ model: "claude-haiku-4-5-20251001", max_tokens: 1, messages: [{ role: "user", content: "hi" }] }),
111
+ signal: AbortSignal.timeout(8_000),
112
+ });
113
+ return res.status !== 401 && res.status !== 403;
114
+ }
115
+ const baseUrl = provider.baseUrl.replace(/\/+$/, "");
116
+ const res = await fetch(`${baseUrl}/models`, {
117
+ headers: { Authorization: `Bearer ${apiKey}` },
118
+ signal: AbortSignal.timeout(8_000),
119
+ });
120
+ return res.status !== 401 && res.status !== 403;
121
+ }
122
+ catch {
123
+ return true; // network error — can't validate, continue
124
+ }
125
+ }
126
+ // ── File generation ──────────────────────────────────────────────────────────
127
+ function generateYaml(p, m, publicId, maxCost) {
128
+ const baseUrlLine = p.sdkProvider === "openai" && p.name !== "openai"
129
+ ? ` base_url: "${p.baseUrl}"\n`
130
+ : "";
131
+ return [
132
+ `# Balchemy Agent Configuration`,
133
+ `# Generated by balchemy`,
134
+ `# Agent: ${publicId} | Provider: ${p.label} | Model: ${m.id}`,
135
+ ``,
136
+ `mcp_endpoint: "\${MCP_ENDPOINT}"`,
137
+ `api_key: "\${BALCHEMY_API_KEY}"`,
138
+ ``,
139
+ `llm:`,
140
+ ` provider: ${p.sdkProvider}`,
141
+ ` api_key: "\${LLM_API_KEY}"`,
142
+ ` model: ${m.id}`,
143
+ baseUrlLine ? baseUrlLine.trimEnd() : null,
144
+ ` max_daily_usd: ${maxCost}`,
145
+ ` timeout_ms: 15000`,
146
+ ``,
147
+ `strategy: custom`,
148
+ `shadow_mode: false`,
149
+ ``,
150
+ `behavior_rules:`,
151
+ ``,
152
+ ].filter((l) => l !== null).join("\n");
153
+ }
154
+ function generateDotEnv(endpoint, apiKey, llmApiKey, publicId) {
155
+ return [
156
+ `# Balchemy Agent — ${publicId}`,
157
+ `# Keep this file private — never commit to git`,
158
+ ``,
159
+ `MCP_ENDPOINT=${endpoint}`,
160
+ `BALCHEMY_API_KEY=${apiKey}`,
161
+ `LLM_API_KEY=${llmApiKey}`,
162
+ ``,
163
+ ].join("\n");
164
+ }
165
+ function openBrowser(url) {
166
+ const cmd = process.platform === "darwin"
167
+ ? `open "${url}"`
168
+ : process.platform === "win32"
169
+ ? `start "${url}"`
170
+ : `xdg-open "${url}"`;
171
+ exec(cmd, () => { });
172
+ }
173
+ function maskValue(value, head = 8, tail = 4) {
174
+ if (value.length <= head + tail + 1)
175
+ return value;
176
+ return `${value.slice(0, head)}...${value.slice(-tail)}`;
177
+ }
178
+ export function Wizard({ outDir, onComplete }) {
179
+ const { exit } = useApp();
180
+ const { stdout } = useStdout();
181
+ const termWidth = stdout?.columns ?? 80;
182
+ const contentWidth = Math.max(30, Math.min(termWidth - 4, 76));
183
+ const [step, setStep] = useState("provider");
184
+ const [state, setState] = useState({
185
+ provider: null,
186
+ llmApiKey: "",
187
+ model: null,
188
+ agentType: null,
189
+ agentName: "",
190
+ mcpEndpoint: "",
191
+ balchemyApiKey: "",
192
+ publicId: "",
193
+ maxDailyCost: 5,
194
+ keyValid: null,
195
+ error: null,
196
+ });
197
+ const [inputKey, setInputKey] = useState(0);
198
+ // Esc → go back one step
199
+ useInput((_input, key) => {
200
+ if (key.escape) {
201
+ const backMap = {
202
+ apikey: "provider",
203
+ model: "apikey",
204
+ agent: "model",
205
+ "agent-name": "agent",
206
+ "agent-endpoint": "agent",
207
+ "agent-apikey": "agent-endpoint",
208
+ "daily-cost": "agent",
209
+ };
210
+ const prev = backMap[step];
211
+ if (prev) {
212
+ setStep(prev);
213
+ setState((s) => ({ ...s, error: null }));
214
+ setInputKey((k) => k + 1);
215
+ }
216
+ }
217
+ if (key.ctrl && _input === "c") {
218
+ exit();
219
+ }
220
+ });
221
+ // Step header
222
+ const stepNumbers = {
223
+ provider: 1, apikey: 2, model: 3, agent: 4,
224
+ "agent-name": 4, "agent-endpoint": 4, "agent-apikey": 4,
225
+ "daily-cost": 3, launching: 4, done: 4,
226
+ };
227
+ const stepLabels = {
228
+ provider: "LLM Provider", apikey: "Authentication", model: "Model Selection",
229
+ agent: "Agent Setup", "agent-name": "Agent Setup", "agent-endpoint": "Agent Setup",
230
+ "agent-apikey": "Agent Setup", "daily-cost": "Model Selection",
231
+ launching: "Launching", done: "Ready",
232
+ };
233
+ const currentStep = stepNumbers[step];
234
+ const totalSteps = 4;
235
+ // ── Provider step ──────────────────────────────────────────────────────
236
+ const providerOptions = PROVIDERS.map((p) => ({
237
+ label: p.label,
238
+ value: p.name,
239
+ }));
240
+ const handleProviderSelect = useCallback((value) => {
241
+ const provider = PROVIDERS.find((p) => p.name === value) ?? PROVIDERS[0];
242
+ setState((s) => ({ ...s, provider, error: null }));
243
+ openBrowser(provider.keyUrl);
244
+ setStep("apikey");
245
+ }, []);
246
+ // ── API key step ───────────────────────────────────────────────────────
247
+ const handleApiKeySubmit = useCallback(async (value) => {
248
+ if (!value.trim()) {
249
+ setState((s) => ({ ...s, error: "API key is required." }));
250
+ return;
251
+ }
252
+ const provider = state.provider;
253
+ if (!provider)
254
+ return;
255
+ setState((s) => ({ ...s, llmApiKey: value.trim(), keyValid: null, error: null }));
256
+ const valid = await validateApiKey(provider, value.trim());
257
+ setState((s) => ({ ...s, llmApiKey: value.trim(), keyValid: valid }));
258
+ if (valid === false) {
259
+ setState((s) => ({ ...s, error: "Key rejected by provider. Check and try again." }));
260
+ setInputKey((k) => k + 1);
261
+ return;
262
+ }
263
+ setStep("model");
264
+ }, [state.provider]);
265
+ // ── Model step ─────────────────────────────────────────────────────────
266
+ const modelOptions = (state.provider?.models ?? []).map((m) => ({
267
+ label: `${m.label} ${m.tier} — ${m.costHint}`,
268
+ value: m.id,
269
+ }));
270
+ const handleModelSelect = useCallback((value) => {
271
+ const model = state.provider?.models.find((m) => m.id === value) ?? state.provider?.models[0] ?? null;
272
+ setState((s) => ({ ...s, model, error: null }));
273
+ setStep("daily-cost");
274
+ setInputKey((k) => k + 1);
275
+ }, [state.provider]);
276
+ // ── Daily cost step ────────────────────────────────────────────────────
277
+ const handleDailyCost = useCallback((value) => {
278
+ const num = parseFloat(value.replace("$", "").trim() || "5");
279
+ const cost = Number.isFinite(num) && num > 0 ? num : 5;
280
+ setState((s) => ({ ...s, maxDailyCost: cost, error: null }));
281
+ setStep("agent");
282
+ }, []);
283
+ // ── Agent step ─────────────────────────────────────────────────────────
284
+ const agentOptions = [
285
+ { label: "Create new agent", value: "new" },
286
+ { label: "Connect existing agent", value: "existing" },
287
+ ];
288
+ const handleAgentSelect = useCallback((value) => {
289
+ setState((s) => ({ ...s, agentType: value, error: null }));
290
+ setInputKey((k) => k + 1);
291
+ if (value === "new") {
292
+ setStep("agent-name");
293
+ }
294
+ else {
295
+ setStep("agent-endpoint");
296
+ }
297
+ }, []);
298
+ // ── Agent name (new) ──────────────────────────────────────────────────
299
+ const handleAgentName = useCallback(async (value) => {
300
+ const name = value.trim() || `agent-${Date.now().toString(36)}`;
301
+ setState((s) => ({ ...s, agentName: name, error: null }));
302
+ setStep("launching");
303
+ const result = await walletlessOnboard(name);
304
+ if (!result) {
305
+ setState((s) => ({ ...s, error: "Onboarding failed. Check network and try again." }));
306
+ setStep("agent-name");
307
+ setInputKey((k) => k + 1);
308
+ return;
309
+ }
310
+ setState((s) => ({
311
+ ...s,
312
+ mcpEndpoint: result.endpoint,
313
+ balchemyApiKey: result.apiKey,
314
+ publicId: result.publicId,
315
+ }));
316
+ finalize(result.endpoint, result.apiKey, result.publicId);
317
+ }, [state]);
318
+ // ── Agent endpoint + key (existing) ───────────────────────────────────
319
+ const handleEndpoint = useCallback((value) => {
320
+ const endpoint = value.trim();
321
+ if (!endpoint) {
322
+ setState((s) => ({ ...s, error: "Endpoint is required." }));
323
+ return;
324
+ }
325
+ setState((s) => ({ ...s, mcpEndpoint: endpoint, error: null }));
326
+ setStep("agent-apikey");
327
+ setInputKey((k) => k + 1);
328
+ }, []);
329
+ const handleBalchemyApiKey = useCallback((value) => {
330
+ if (!value.trim()) {
331
+ setState((s) => ({ ...s, error: "API key is required." }));
332
+ return;
333
+ }
334
+ const apiKey = value.trim();
335
+ const publicId = state.mcpEndpoint.split("/").filter(Boolean).pop() ?? "unknown";
336
+ setState((s) => ({ ...s, balchemyApiKey: apiKey, publicId, error: null }));
337
+ setStep("launching");
338
+ finalize(state.mcpEndpoint, apiKey, publicId);
339
+ }, [state.mcpEndpoint]);
340
+ // ── Finalize ───────────────────────────────────────────────────────────
341
+ const finalize = useCallback((mcpEndpoint, apiKey, publicId) => {
342
+ const provider = state.provider;
343
+ const model = state.model;
344
+ const llmApiKey = state.llmApiKey;
345
+ const maxDailyCost = state.maxDailyCost;
346
+ // Write files
347
+ const yamlContent = generateYaml(provider, model, publicId, maxDailyCost);
348
+ const envContent = generateDotEnv(mcpEndpoint, apiKey, llmApiKey, publicId);
349
+ const yamlPath = path.join(outDir, "agent.config.yaml");
350
+ const envPath = path.join(outDir, ".env");
351
+ fs.writeFileSync(yamlPath, yamlContent, "utf8");
352
+ fs.writeFileSync(envPath, envContent, "utf8");
353
+ // Ensure .gitignore
354
+ const gitignorePath = path.join(outDir, ".gitignore");
355
+ let gitignore = "";
356
+ if (fs.existsSync(gitignorePath)) {
357
+ gitignore = fs.readFileSync(gitignorePath, "utf8");
358
+ }
359
+ if (!gitignore.includes(".env")) {
360
+ fs.appendFileSync(gitignorePath, "\n.env\n");
361
+ }
362
+ // Save to agent store
363
+ const llmBaseUrl = provider.name !== "openai" && provider.name !== "anthropic" ? provider.baseUrl : undefined;
364
+ saveAgent({
365
+ publicId,
366
+ mcpEndpoint,
367
+ apiKey,
368
+ llmProvider: provider.sdkProvider,
369
+ llmApiKey,
370
+ llmModel: model.id,
371
+ llmBaseUrl,
372
+ maxDailyLlmCost: maxDailyCost,
373
+ strategy: "custom",
374
+ shadowMode: false,
375
+ behaviorRules: {},
376
+ wallets: {},
377
+ createdAt: new Date().toISOString(),
378
+ });
379
+ setStep("done");
380
+ // Trigger TUI launch
381
+ setTimeout(() => {
382
+ onComplete({
383
+ mcpEndpoint,
384
+ apiKey,
385
+ llmProvider: provider.sdkProvider,
386
+ llmApiKey,
387
+ llmModel: model.id,
388
+ llmBaseUrl,
389
+ maxDailyLlmCost: maxDailyCost,
390
+ publicId,
391
+ strategy: "custom",
392
+ shadowMode: false,
393
+ behaviorRules: {},
394
+ });
395
+ }, 800);
396
+ }, [state, outDir, onComplete]);
397
+ // ── Render ─────────────────────────────────────────────────────────────
398
+ return (_jsxs(Box, { flexDirection: "column", paddingX: 1, paddingY: 1, children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { backgroundColor: "cyan", color: "black", bold: true, children: " BALCHEMY " }), _jsx(Text, { color: "white", bold: true, children: " Agent Setup" }), _jsxs(Text, { dimColor: true, children: [" Step ", currentStep, "/", totalSteps, " \u00B7 ", stepLabels[step]] })] }), _jsxs(Box, { flexDirection: "column", marginLeft: 1, children: [step === "provider" && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "white", bold: true, children: "Select your LLM provider:" }), _jsx(Text, { dimColor: true, children: truncateEnd("This determines which AI model powers your agent.", contentWidth) }), _jsx(Box, { marginTop: 1, children: _jsx(Select, { options: providerOptions, onChange: handleProviderSelect }) })] })), step === "apikey" && state.provider && (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: "white", bold: true, children: ["Paste your ", state.provider.label, " API key:"] }), _jsx(Text, { dimColor: true, children: truncateEnd(`Get one at: ${state.provider.keyUrl}`, contentWidth) }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: "Key " }), _jsx(SecretInput, { onSubmit: handleApiKeySubmit, placeholder: "Paste API key here..." }, inputKey)] })] })), step === "model" && state.provider && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "white", bold: true, children: "Select model:" }), _jsx(Text, { dimColor: true, children: truncateEnd("Faster models cost less. Powerful models analyze deeper.", contentWidth) }), _jsx(Box, { marginTop: 1, children: _jsx(Select, { options: modelOptions, onChange: handleModelSelect }) })] })), step === "daily-cost" && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "white", bold: true, children: "Max daily LLM spend (USD):" }), _jsx(Text, { dimColor: true, children: truncateEnd("Safety cap to prevent runaway API costs.", contentWidth) }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: "$ " }), _jsx(TextInput, { placeholder: "5", onSubmit: handleDailyCost }, inputKey)] })] })), step === "agent" && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "white", bold: true, children: "Agent setup:" }), _jsx(Text, { dimColor: true, children: truncateEnd("Create a new agent or connect to an existing one.", contentWidth) }), _jsx(Box, { marginTop: 1, children: _jsx(Select, { options: agentOptions, onChange: handleAgentSelect }) })] })), step === "agent-name" && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "white", bold: true, children: "Agent name:" }), _jsx(Text, { dimColor: true, children: truncateEnd("Give your agent a name (or press Enter for default).", contentWidth) }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: "Name " }), _jsx(TextInput, { placeholder: `agent-${Date.now().toString(36)}`, onSubmit: handleAgentName }, inputKey)] })] })), step === "agent-endpoint" && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "white", bold: true, children: "MCP endpoint:" }), _jsx(Text, { dimColor: true, children: truncateEnd("Your agent's MCP endpoint URL.", contentWidth) }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: "URL " }), _jsx(TextInput, { placeholder: "https://api.balchemy.ai/mcp/YOUR_PUBLIC_ID", onSubmit: handleEndpoint }, inputKey)] })] })), step === "agent-apikey" && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "white", bold: true, children: "Balchemy API key:" }), _jsx(Text, { dimColor: true, children: truncateEnd("Your agent's Balchemy API key.", contentWidth) }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: "Key " }), _jsx(SecretInput, { onSubmit: handleBalchemyApiKey, placeholder: "Paste Balchemy API key..." }, inputKey)] })] })), step === "launching" && (_jsx(Box, { flexDirection: "column", children: _jsx(Text, { color: "cyan", children: "Setting up agent..." }) })), step === "done" && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "green", bold: true, children: "Agent configured!" }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { dimColor: true, children: ["Agent ", state.publicId] }), _jsxs(Text, { dimColor: true, children: ["Model ", state.model?.label ?? "?"] }), _jsxs(Text, { dimColor: true, children: ["API Key ", maskValue(state.balchemyApiKey, 10, 4)] })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "cyan", children: "Starting live cockpit..." }) })] }))] }), state.error && (_jsxs(Box, { marginTop: 1, marginLeft: 1, children: [_jsx(Text, { color: "red", bold: true, children: "Error: " }), _jsx(Text, { color: "red", children: state.error })] })), _jsx(Box, { marginTop: 1, paddingX: 1, children: _jsx(Box, { borderStyle: "round", borderColor: "gray", paddingX: 1, children: _jsx(Text, { dimColor: true, children: truncateEnd("Esc back ^C quit", contentWidth) }) }) })] }));
399
+ }
400
+ //# sourceMappingURL=Wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Wizard.js","sourceRoot":"","sources":["../../src/tui/Wizard.tsx"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@ export type SetupChain = "solana" | "base";
2
2
  export interface SetupStatusSnapshot {
3
3
  developerWalletBound?: boolean;
4
4
  rootWalletKind?: "evm" | "solana";
5
+ rootWalletKinds?: Array<"evm" | "solana">;
6
+ evmWalletBound?: boolean;
5
7
  walletsConfigured?: boolean;
6
8
  tradingConfigured?: boolean;
7
9
  slippageConfigured?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"setup-guidance.d.ts","sourceRoot":"","sources":["../../src/tui/setup-guidance.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE3C,MAAM,WAAW,mBAAmB;IAClC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAClC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,UAAU,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAYD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,IAAI,CAQxE;AAED,wBAAgB,wBAAwB,CACtC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,mBAAmB,CAiBrB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,kBAAkB,GAAG,UAAU,GAAG,wBAAwB,GAAG,UAAU,GAAG,UAAU,GAAG,eAAe,CAUvK;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,GAAG,OAAO,CAKxE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CA+B7E"}
1
+ {"version":3,"file":"setup-guidance.d.ts","sourceRoot":"","sources":["../../src/tui/setup-guidance.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE3C,MAAM,WAAW,mBAAmB;IAClC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAClC,eAAe,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;IAC1C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,UAAU,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAYD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,IAAI,CAQxE;AAED,wBAAgB,wBAAwB,CACtC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,mBAAmB,CAuBrB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,kBAAkB,GAAG,UAAU,GAAG,wBAAwB,GAAG,UAAU,GAAG,UAAU,GAAG,eAAe,CASvK;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,GAAG,OAAO,CAMxE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CA2B7E"}
@@ -23,18 +23,24 @@ export function parseNetworkSelection(value) {
23
23
  return chains.length > 0 ? chains : null;
24
24
  }
25
25
  export function parseSetupStatusSnapshot(structured) {
26
+ const rootWalletKinds = Array.isArray(structured?.rootWalletKinds)
27
+ ? structured.rootWalletKinds.filter((kind) => kind === "evm" || kind === "solana")
28
+ : [];
29
+ const rootWalletKind = structured?.rootWalletKind === "evm" || structured?.rootWalletKind === "solana"
30
+ ? structured.rootWalletKind
31
+ : undefined;
26
32
  return {
27
33
  developerWalletBound: structured?.developerWalletBound === true
28
34
  || structured?.walletBound === true
29
35
  || structured?.rootWalletBound === true,
30
- rootWalletKind: structured?.rootWalletKind === "evm" || structured?.rootWalletKind === "solana"
31
- ? structured.rootWalletKind
32
- : undefined,
36
+ rootWalletKind,
37
+ rootWalletKinds,
38
+ evmWalletBound: structured?.evmWalletBound === true || rootWalletKind === "evm" || rootWalletKinds.includes("evm"),
33
39
  walletsConfigured: structured?.walletsConfigured === true,
34
40
  tradingConfigured: structured?.tradingConfigured === true,
35
41
  slippageConfigured: structured?.slippageConfigured === true,
36
42
  strategyConfigured: structured?.strategyConfigured === true,
37
- solanaWalletBound: structured?.solanaWalletBound === true,
43
+ solanaWalletBound: structured?.solanaWalletBound === true || rootWalletKind === "solana" || rootWalletKinds.includes("solana"),
38
44
  selectedChains: normalizeSelectedChains(structured?.selectedChains),
39
45
  nextStep: typeof structured?.nextStep === "string" ? structured.nextStep : null,
40
46
  };
@@ -43,14 +49,12 @@ export function getInitialSetupStep(status) {
43
49
  const selectedChains = status.selectedChains ?? [];
44
50
  if (!status.developerWalletBound && selectedChains.length === 0)
45
51
  return "networks";
46
- if (!status.developerWalletBound && selectedChains.includes("base"))
52
+ if (selectedChains.includes("base") && !status.evmWalletBound)
47
53
  return "developer-wallet";
48
- if (!status.developerWalletBound && selectedChains.includes("solana") && !status.solanaWalletBound)
54
+ if (selectedChains.includes("solana") && !status.solanaWalletBound)
49
55
  return "solana-recovery-wallet";
50
56
  if (!status.walletsConfigured)
51
57
  return "networks";
52
- if (selectedChains.includes("solana") && !status.solanaWalletBound)
53
- return "solana-recovery-wallet";
54
58
  if (!status.slippageConfigured)
55
59
  return "slippage";
56
60
  if (!status.strategyConfigured && !status.tradingConfigured)
@@ -62,6 +66,8 @@ export function isSetupReady(status) {
62
66
  return false;
63
67
  if (status.nextStep)
64
68
  return false;
69
+ if (status.selectedChains?.includes("base") && !status.evmWalletBound)
70
+ return false;
65
71
  if (status.selectedChains?.includes("solana") && !status.solanaWalletBound)
66
72
  return false;
67
73
  return status.tradingConfigured === true && status.walletsConfigured === true;
@@ -71,18 +77,15 @@ export function buildSetupRequiredMessage(status) {
71
77
  if (!status.developerWalletBound && selectedChains.length === 0) {
72
78
  return "Setup incomplete. I will guide you here in chat. First: choose the trading networks: Solana, Base (EVM), or both.";
73
79
  }
74
- if (!status.developerWalletBound && selectedChains.includes("base")) {
80
+ if (selectedChains.includes("base") && !status.evmWalletBound) {
75
81
  return "Setup incomplete. Base trading requires your Base/EVM 0x developer wallet for recovery and Hub access.";
76
82
  }
77
- if (!status.developerWalletBound && selectedChains.includes("solana") && !status.solanaWalletBound) {
78
- return "Setup incomplete. Solana-only setup does not require a Base wallet. First: provide your Solana developer/recovery wallet.";
83
+ if (selectedChains.includes("solana") && !status.solanaWalletBound) {
84
+ return "Setup incomplete. Solana trading requires your Solana root/recovery/withdrawal wallet. This same address is used for Solana withdrawals.";
79
85
  }
80
86
  if (!status.walletsConfigured) {
81
87
  return "Setup incomplete. Next: choose the trading networks: Solana, Base (EVM), or both. I will create the selected trading wallets.";
82
88
  }
83
- if (status.selectedChains?.includes("solana") && !status.solanaWalletBound) {
84
- return "Setup incomplete. Solana trading was selected. Next: provide your Solana recovery/withdrawal wallet.";
85
- }
86
89
  if (!status.slippageConfigured) {
87
90
  return "Setup incomplete. Next: configure slippage. You can answer in percent or bps, for example 3% = 300 bps.";
88
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"setup-guidance.js","sourceRoot":"","sources":["../../src/tui/setup-guidance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-guidance.js","sourceRoot":"","sources":["../../src/tui/setup-guidance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function startWizard(outDir: string): Promise<void>;
2
+ //# sourceMappingURL=start-wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-wizard.d.ts","sourceRoot":"","sources":["../../src/tui/start-wizard.tsx"],"names":[],"mappings":"AAQA,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B/D"}
@@ -0,0 +1,30 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { render } from "ink";
3
+ import { Wizard } from "./Wizard.js";
4
+ import { startTui } from "./start.js";
5
+ import { enterInteractiveScreen, leaveInteractiveScreen } from "./terminal-session.js";
6
+ export async function startWizard(outDir) {
7
+ enterInteractiveScreen();
8
+ return new Promise((resolve) => {
9
+ const { unmount } = render(_jsx(Wizard, { outDir: outDir, onComplete: (config) => {
10
+ unmount();
11
+ leaveInteractiveScreen();
12
+ const tuiConfig = {
13
+ mcpEndpoint: config.mcpEndpoint,
14
+ apiKey: config.apiKey,
15
+ llmProvider: config.llmProvider,
16
+ llmApiKey: config.llmApiKey,
17
+ llmModel: config.llmModel,
18
+ llmBaseUrl: config.llmBaseUrl,
19
+ maxDailyLlmCost: config.maxDailyLlmCost,
20
+ publicId: config.publicId,
21
+ strategy: config.strategy,
22
+ shadowMode: config.shadowMode,
23
+ behaviorRules: config.behaviorRules,
24
+ autoSeedSubscriptions: false,
25
+ };
26
+ void startTui(tuiConfig).then(resolve);
27
+ } }));
28
+ });
29
+ }
30
+ //# sourceMappingURL=start-wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-wizard.js","sourceRoot":"","sources":["../../src/tui/start-wizard.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEvF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAc;IAC9C,sBAAsB,EAAE,CAAC;IAEzB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACnC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CACxB,KAAC,MAAM,IACL,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE;gBACrB,OAAO,EAAE,CAAC;gBACV,sBAAsB,EAAE,CAAC;gBAEzB,MAAM,SAAS,GAAc;oBAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,eAAe,EAAE,MAAM,CAAC,eAAe;oBACvC,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,qBAAqB,EAAE,KAAK;iBAC7B,CAAC;gBAEF,KAAK,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC,GACD,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Map provider + baseUrl to a human-readable label. */
2
+ export declare function resolveProviderLabel(provider: string, baseUrl?: string): string;
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/tui/utils.ts"],"names":[],"mappings":"AAEA,wDAAwD;AACxD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAM/E"}