@blockrun/llm 3.10.0 → 3.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1,8 +1,183 @@
1
1
  import * as _anthropic_ai_sdk from '@anthropic-ai/sdk';
2
2
 
3
+ /**
4
+ * Smart Router Types
5
+ *
6
+ * Four classification tiers — REASONING is distinct from COMPLEX because
7
+ * reasoning tasks need different models (o3, gemini-pro) than general
8
+ * complex tasks (gpt-4o, sonnet-4).
9
+ *
10
+ * Scoring uses weighted float dimensions with sigmoid confidence calibration.
11
+ */
12
+ type Tier = "SIMPLE" | "MEDIUM" | "COMPLEX" | "REASONING";
13
+ type RoutingDecision$1 = {
14
+ model: string;
15
+ tier: Tier;
16
+ confidence: number;
17
+ method: "rules" | "llm" | "portfolio";
18
+ reasoning: string;
19
+ costEstimate: number;
20
+ baselineCost: number;
21
+ savings: number;
22
+ agenticScore?: number;
23
+ /** Which tier configs were used (auto/eco/premium/agentic) — avoids re-derivation in the host */
24
+ tierConfigs?: Record<Tier, TierConfig>;
25
+ /** Which routing profile was applied */
26
+ profile?: "auto" | "eco" | "premium" | "agentic";
27
+ /** Ordered, capability-eligible candidates. The first entry is `model`. */
28
+ candidates?: string[];
29
+ /** Explainable request classification used by the portfolio router. */
30
+ taskType?: TaskType;
31
+ /** Router implementation that made the selection. */
32
+ routerVersion?: "v2-rules" | "v3-portfolio";
33
+ /** Explainable local portfolio score breakdown, ordered with `candidates`. */
34
+ candidateScores?: Array<{
35
+ model: string;
36
+ score: number;
37
+ quality: number;
38
+ cost: number;
39
+ speed: number;
40
+ reliability: number;
41
+ }>;
42
+ };
43
+ type TaskType = "chat" | "extraction" | "code_edit" | "code_agent" | "tool_agent" | "tool_agent_parallel" | "debug" | "reasoning" | "reasoning_mcq" | "reasoning_math" | "long_context" | "vision";
44
+ type TierConfig = {
45
+ primary: string;
46
+ fallback: string[];
47
+ };
48
+ type ScoringConfig = {
49
+ tokenCountThresholds: {
50
+ simple: number;
51
+ complex: number;
52
+ };
53
+ codeKeywords: string[];
54
+ reasoningKeywords: string[];
55
+ simpleKeywords: string[];
56
+ technicalKeywords: string[];
57
+ creativeKeywords: string[];
58
+ imperativeVerbs: string[];
59
+ constraintIndicators: string[];
60
+ outputFormatKeywords: string[];
61
+ referenceKeywords: string[];
62
+ negationKeywords: string[];
63
+ domainSpecificKeywords: string[];
64
+ agenticTaskKeywords: string[];
65
+ dimensionWeights: Record<string, number>;
66
+ tierBoundaries: {
67
+ simpleMedium: number;
68
+ mediumComplex: number;
69
+ complexReasoning: number;
70
+ };
71
+ confidenceSteepness: number;
72
+ confidenceThreshold: number;
73
+ };
74
+ type ClassifierConfig = {
75
+ llmModel: string;
76
+ llmMaxTokens: number;
77
+ llmTemperature: number;
78
+ promptTruncationChars: number;
79
+ cacheTtlMs: number;
80
+ };
81
+ type OverridesConfig = {
82
+ maxTokensForceComplex: number;
83
+ structuredOutputMinTier: Tier;
84
+ ambiguousDefaultTier: Tier;
85
+ /**
86
+ * When enabled, prefer models optimized for agentic workflows.
87
+ * Agentic models continue autonomously with multi-step tasks
88
+ * instead of stopping and waiting for user input.
89
+ */
90
+ agenticMode?: boolean;
91
+ };
92
+ /**
93
+ * Time-windowed promotion that temporarily overrides tier routing.
94
+ * Active promotions are auto-applied; expired ones are ignored at runtime.
95
+ */
96
+ type Promotion = {
97
+ /** Human-readable label (e.g. "GLM-5 Launch Promo") */
98
+ name: string;
99
+ /** ISO date string, promotion starts (inclusive). e.g. "2026-04-01" */
100
+ startDate: string;
101
+ /** ISO date string, promotion ends (exclusive). e.g. "2026-04-15" */
102
+ endDate: string;
103
+ /** Partial tier overrides — merged into the active tier configs (primary/fallback) */
104
+ tierOverrides: Partial<Record<Tier, Partial<TierConfig>>>;
105
+ /** Which profiles this applies to. Default: all profiles. */
106
+ profiles?: Array<"auto" | "eco" | "premium" | "agentic">;
107
+ };
108
+ type RoutingConfig = {
109
+ version: string;
110
+ /** Enables a one-line rollback to the established V2 rules selector. */
111
+ strategy?: "rules" | "portfolio";
112
+ /**
113
+ * Locally recompute a comparison strategy without changing the model that
114
+ * actually serves the request. The host emits only decision metadata via
115
+ * `onShadowRouted`; it never persists prompt content or makes a second call.
116
+ */
117
+ shadow?: {
118
+ strategy: "rules" | "portfolio";
119
+ sampleRate?: number;
120
+ };
121
+ /** Calibratable local portfolio scoring weights; values are relative, not probabilities. */
122
+ portfolio?: {
123
+ auto: {
124
+ quality: number;
125
+ capability: number;
126
+ cost: number;
127
+ speed: number;
128
+ reliability: number;
129
+ legacy: number;
130
+ };
131
+ eco: {
132
+ quality: number;
133
+ capability: number;
134
+ cost: number;
135
+ speed: number;
136
+ reliability: number;
137
+ legacy: number;
138
+ };
139
+ premium: {
140
+ quality: number;
141
+ capability: number;
142
+ cost: number;
143
+ speed: number;
144
+ reliability: number;
145
+ legacy: number;
146
+ };
147
+ highStakesBoost: {
148
+ quality: number;
149
+ reliability: number;
150
+ };
151
+ latencySensitiveSpeedBoost: number;
152
+ /** A candidate materially below the best task affinity cannot win on cost alone. */
153
+ affinityFloorGap: {
154
+ auto: number;
155
+ eco: number;
156
+ premium: number;
157
+ };
158
+ };
159
+ classifier: ClassifierConfig;
160
+ scoring: ScoringConfig;
161
+ tiers: Record<Tier, TierConfig>;
162
+ /**
163
+ * Tier configs for agentic mode — models that excel at multi-step tasks.
164
+ * Set to `null` to disable agentic tier selection entirely (forces all
165
+ * requests through `tiers`, even when tools are present in the request).
166
+ */
167
+ agenticTiers?: Record<Tier, TierConfig> | null;
168
+ /** Tier configs for eco profile — ultra cost-optimized (blockrun/eco). `null` falls back to `tiers`. */
169
+ ecoTiers?: Record<Tier, TierConfig> | null;
170
+ /** Tier configs for premium profile — best quality (blockrun/premium). `null` falls back to `tiers`. */
171
+ premiumTiers?: Record<Tier, TierConfig> | null;
172
+ /** Time-windowed promotions that temporarily override tier routing */
173
+ promotions?: Promotion[];
174
+ overrides: OverridesConfig;
175
+ };
176
+
3
177
  /**
4
178
  * Type definitions for BlockRun LLM SDK
5
179
  */
180
+
6
181
  interface FunctionDefinition {
7
182
  name: string;
8
183
  description?: string;
@@ -77,6 +252,8 @@ interface ChatResponse {
77
252
  model?: string;
78
253
  settlementSkipped?: boolean;
79
254
  };
255
+ /** Present when a `blockrun/auto|eco|premium` alias selected the model locally. */
256
+ routing?: RoutingDecision;
80
257
  }
81
258
  interface Model {
82
259
  id: string;
@@ -313,24 +490,21 @@ interface ChatCompletionOptions {
313
490
  fallbackModels?: string[];
314
491
  }
315
492
  type RoutingProfile = "eco" | "auto" | "premium";
316
- type RoutingTier = "SIMPLE" | "MEDIUM" | "COMPLEX" | "REASONING";
317
- interface RoutingDecision {
318
- model: string;
319
- tier: RoutingTier;
320
- confidence: number;
321
- method: "rules" | "llm";
322
- reasoning: string;
323
- costEstimate: number;
324
- baselineCost: number;
325
- savings: number;
326
- /** Routing profile applied by clawrouter (may include "agentic" on gateway responses). */
327
- profile?: RoutingProfile | "agentic";
328
- /** Score used when agentic routing is active. */
329
- agenticScore?: number;
493
+ type RoutingTier = Tier;
494
+ /**
495
+ * Request classification produced by the bundled Router Core V3 portfolio
496
+ * router. Present on decisions with `method: "portfolio"`.
497
+ */
498
+ type RoutingTaskType = TaskType;
499
+ /** Primary model + ordered fallbacks for one routing tier. */
500
+ type RoutingTierConfig = RoutingConfig["tiers"][Tier];
501
+ interface RoutingDecision extends RoutingDecision$1 {
330
502
  /**
331
- * Remaining tier models with known pricing, in fallback order. `chat()`
332
- * walks this list when the primary model hits a transient error
333
- * (timeout, network, 5xx). Excludes the primary itself.
503
+ * Remaining gateway-callable models, in the router's ranked order.
504
+ * `chat()` walks this list when the primary model hits a transient error
505
+ * (timeout, network, 429, 5xx). Excludes the primary itself. The router's
506
+ * proxy-namespace `free/*` ids appear here as their `nvidia/*` gateway
507
+ * ids (or are dropped when the mapping is proxy-only).
334
508
  */
335
509
  fallbacks?: string[];
336
510
  }
@@ -340,6 +514,12 @@ interface SmartChatOptions extends ChatOptions {
340
514
  /** Maximum output tokens (used for cost estimation) */
341
515
  maxOutputTokens?: number;
342
516
  }
517
+ interface SmartChatCompletionOptions extends ChatCompletionOptions {
518
+ /** Routing profile: eco (budget), auto (balanced), premium (best quality) */
519
+ routingProfile?: RoutingProfile;
520
+ /** Maximum output tokens used for route cost/capacity estimation. */
521
+ maxOutputTokens?: number;
522
+ }
343
523
  interface SmartChatResponse {
344
524
  /** The AI response text */
345
525
  response: string;
@@ -348,6 +528,14 @@ interface SmartChatResponse {
348
528
  /** Routing decision metadata */
349
529
  routing: RoutingDecision;
350
530
  }
531
+ interface SmartChatCompletionResponse {
532
+ /** Full OpenAI-compatible response, including tool calls. */
533
+ response: ChatResponse;
534
+ /** Model selected before any transient runtime fallback. */
535
+ model: string;
536
+ /** Local routing decision and ordered fallback candidates. */
537
+ routing: RoutingDecision;
538
+ }
351
539
  interface SearchResult {
352
540
  query: string;
353
541
  summary: string;
@@ -1020,11 +1208,20 @@ declare class LLMClient {
1020
1208
  * console.log(response); // 'The capital of France is Paris.'
1021
1209
  */
1022
1210
  chat(model: string, prompt: string, options?: ChatOptions): Promise<string>;
1211
+ private makeRoutingDecision;
1212
+ /**
1213
+ * Inspect a local routing decision without making or paying for a model call.
1214
+ * The first invocation may fetch the public model catalog for current prices.
1215
+ */
1216
+ route(prompt: string, options?: SmartChatOptions): Promise<RoutingDecision>;
1023
1217
  /**
1024
1218
  * Smart chat with automatic model routing.
1025
1219
  *
1026
- * Uses ClawRouter's 14-dimension rule-based scoring algorithm (<1ms, 100% local)
1027
- * to select the cheapest model that can handle your request.
1220
+ * Uses BlockRun's product-neutral Router Core portfolio strategy: it
1221
+ * classifies the task shape locally (no
1222
+ * extra model call), enforces capability constraints as hard filters, and
1223
+ * ranks an ordered candidate portfolio — the cheapest model that can handle
1224
+ * the request wins, and the rest become the transient-error fallback chain.
1028
1225
  *
1029
1226
  * @param prompt - User message
1030
1227
  * @param options - Optional chat and routing parameters
@@ -1034,7 +1231,8 @@ declare class LLMClient {
1034
1231
  * ```ts
1035
1232
  * const result = await client.smartChat('What is 2+2?');
1036
1233
  * console.log(result.response); // '4'
1037
- * console.log(result.model); // 'google/gemini-2.5-flash-lite'
1234
+ * console.log(result.model); // 'google/gemini-3.5-flash'
1235
+ * console.log(result.routing.method); // 'portfolio'
1038
1236
  * console.log(result.routing.savings); // 0.78 (78% savings)
1039
1237
  * ```
1040
1238
  *
@@ -1048,21 +1246,14 @@ declare class LLMClient {
1048
1246
  * ```
1049
1247
  */
1050
1248
  smartChat(prompt: string, options?: SmartChatOptions): Promise<SmartChatResponse>;
1249
+ /** Route a full Agent/tool conversation while preserving its complete response. */
1250
+ smartChatCompletion(messages: ChatMessage[], options?: SmartChatCompletionOptions): Promise<SmartChatCompletionResponse>;
1051
1251
  /**
1052
1252
  * Get model pricing map (cached).
1053
1253
  * Fetches from API on first call, then returns cached result.
1054
1254
  */
1055
1255
  private getModelPricing;
1056
- /**
1057
- * Fetch model pricing from API.
1058
- *
1059
- * For flat-billed models (e.g. ZAI GLM-5 family at $0.001/call) the
1060
- * router still expects per-token rates, so we synthesise an equivalent
1061
- * per-token price assuming ~1500 total tokens per call. Without this,
1062
- * flat models would resolve to inputPrice=outputPrice=0 and the router
1063
- * would treat them as free, biasing routing decisions and reporting
1064
- * inflated savings %.
1065
- */
1256
+ /** Fetch model pricing from the live catalog, preserving flat billing. */
1066
1257
  private fetchModelPricing;
1067
1258
  /**
1068
1259
  * Full chat completion interface (OpenAI-compatible).
@@ -2732,6 +2923,8 @@ declare class SolanaLLMClient {
2732
2923
  private sessionTotalUsd;
2733
2924
  private sessionCalls;
2734
2925
  private addressCache;
2926
+ private modelPricingCache;
2927
+ private modelPricingPromise;
2735
2928
  constructor(options?: SolanaLLMClientOptions);
2736
2929
  /** Get Solana wallet address (public key in base58). */
2737
2930
  getWalletAddress(): Promise<string>;
@@ -2739,6 +2932,13 @@ declare class SolanaLLMClient {
2739
2932
  chat(model: string, prompt: string, options?: ChatOptions): Promise<string>;
2740
2933
  /** Full chat completion (OpenAI-compatible). */
2741
2934
  chatCompletion(model: string, messages: ChatMessage[], options?: ChatCompletionOptions): Promise<ChatResponse>;
2935
+ private getModelPricing;
2936
+ /** Inspect a Solana route without making or paying for a model call. */
2937
+ route(prompt: string, options?: SmartChatOptions): Promise<RoutingDecision>;
2938
+ /** Smart one-line chat paid on Solana. */
2939
+ smartChat(prompt: string, options?: SmartChatOptions): Promise<SmartChatResponse>;
2940
+ /** Smart full message/tool completion paid on Solana. */
2941
+ smartChatCompletion(messages: ChatMessage[], options?: SmartChatCompletionOptions): Promise<SmartChatCompletionResponse>;
2742
2942
  /** List available models. */
2743
2943
  listModels(): Promise<Model[]>;
2744
2944
  /**
@@ -3081,6 +3281,8 @@ interface OpenAIChatCompletionResponse {
3081
3281
  completion_tokens: number;
3082
3282
  total_tokens: number;
3083
3283
  };
3284
+ /** BlockRun extension present when a `blockrun/*` Auto alias was used. */
3285
+ routing?: RoutingDecision;
3084
3286
  }
3085
3287
  interface OpenAIChatCompletionChunk {
3086
3288
  id: string;
@@ -3238,4 +3440,4 @@ declare function validateTemperature(temperature?: number): void;
3238
3440
  */
3239
3441
  declare function validateTopP(topP?: number): void;
3240
3442
 
3241
- export { APIError, AnthropicClient, type AudioModel, type AudioTrack, BASE_CHAIN_ID, type BarResolution, type BlockRunAnthropicOptions, BlockrunClient, type BlockrunClientOptions, BlockrunError, type CallInitiatedResponse, type CallModel, type CallOptions, type CallStatusResponse, type ChatChoice, type ChatCompletionOptions, type ChatMessage, type ChatOptions, type ChatResponse, type ChatResponseWithCost, type ChatUsage, type CostEntry, type CostEstimate, type CreatePaymentOptions, type FunctionCall, type FunctionDefinition, type HistoryOptions, ImageClient, type ImageClientOptions, type ImageData, type ImageEditOptions, type ImageGenerateOptions, type ImageModel, type ImageResponse, KNOWN_PROVIDERS, LLMClient, type LLMClientOptions, type ListOptions, type MarketSession, type Model, MusicClient, type MusicClientOptions, type MusicGenerateOptions, type MusicResponse, NETWORK_ALIASES, type NewsSearchSource, OpenAI, type OpenAIChatCompletionChoice, type OpenAIChatCompletionChunk, type OpenAIChatCompletionParams, type OpenAIChatCompletionResponse, type OpenAIClientOptions, PHONE_PRICES, PORTRAIT_ENROLLMENT_PRICE_USD, PaymentError, type PaymentLinks, type PhoneBuyOptions, type PhoneBuyResponse, PhoneClient, type PhoneClientOptions, type PhoneListResponse, type PhoneLookupResponse, type PhoneNumberRecord, type PhoneReleaseResponse, type PhoneRenewResponse, type PollOptions, PortraitClient, type PortraitClientOptions, type PortraitEnrollOptions, type PortraitEnrollResponse, type PriceBar, type PriceCategory, PriceClient, type PriceClientOptions, type PriceHistoryResponse, type PriceOptions, type PricePoint, RPC_PRICE_USD, type ResponseFormat, RetiredEndpointError, type RoutingDecision, type RoutingProfile, type RoutingTier, type RpcBatchRequest, RpcClient, type RpcClientOptions, type RpcError, type RpcNetwork, type RpcResponse, type RssSearchSource, SOLANA_NETWORK, SOLANA_WALLET_FILE as SOLANA_WALLET_FILE_PATH, SUPPORTED_NETWORKS, SearchClient, type SearchClientOptions, type SearchOptions, type SearchParameters, type SearchResult, type SearchSource, type SearchUsage, type SmartChatOptions, type SmartChatResponse, SolanaLLMClient, type SolanaLLMClientOptions, type SolanaWalletInfo, type SoundEffectOptions, type SpeechAudio, SpeechClient, type SpeechClientOptions, type SpeechGenerateOptions, type SpeechModel, type SpeechResponse, type SpeechVoice, type Spending, type SpendingReport, type StockMarket, SurfClient, type SurfClientOptions, type SymbolListResponse, type Tool, type ToolCall, type ToolChoice, USDC_BASE, USDC_BASE_CONTRACT, USDC_SOLANA, VideoClient, type VideoClientOptions, type VideoClip, type VideoGenerateOptions, type VideoModel, type VideoResponse, VoiceClient, type VoiceClientOptions, type VoiceInfo, type VoicePreset, WALLET_DIR_PATH, WALLET_FILE_PATH, type WalletInfo, type WebSearchSource, type XSearchSource, clearCache, createPaymentPayload, createSolanaPaymentPayload, createSolanaWallet, createWallet, LLMClient as default, extractPaymentDetails, formatFundingMessageCompact, formatNeedsFundingMessage, formatSolanaWalletMigrationNotice, formatWalletCreatedMessage, formatWalletMigrationNotice, getCached, getCachedByRequest, getCostLogSummary, getCostSummary, getEip681Uri, getOrCreateSolanaWallet, getOrCreateWallet, getPaymentLinks, getWalletAddress, importSolanaWallet, importWallet, listDiscoveredSolanaWallets, listDiscoveredWallets, loadSolanaWallet, loadWallet, logCost, parsePaymentRequired, saveSolanaWallet, saveToCache, saveWallet, scanSolanaWallets, scanWallets, setCache, setupAgentSolanaWallet, setupAgentWallet, solanaClient, solanaKeyToBytes, solanaPublicKey, status, validateMaxTokens, validateModel, validateTemperature, validateTopP };
3443
+ export { APIError, AnthropicClient, type AudioModel, type AudioTrack, BASE_CHAIN_ID, type BarResolution, type BlockRunAnthropicOptions, BlockrunClient, type BlockrunClientOptions, BlockrunError, type CallInitiatedResponse, type CallModel, type CallOptions, type CallStatusResponse, type ChatChoice, type ChatCompletionOptions, type ChatMessage, type ChatOptions, type ChatResponse, type ChatResponseWithCost, type ChatUsage, type CostEntry, type CostEstimate, type CreatePaymentOptions, type FunctionCall, type FunctionDefinition, type HistoryOptions, ImageClient, type ImageClientOptions, type ImageData, type ImageEditOptions, type ImageGenerateOptions, type ImageModel, type ImageResponse, KNOWN_PROVIDERS, LLMClient, type LLMClientOptions, type ListOptions, type MarketSession, type Model, MusicClient, type MusicClientOptions, type MusicGenerateOptions, type MusicResponse, NETWORK_ALIASES, type NewsSearchSource, OpenAI, type OpenAIChatCompletionChoice, type OpenAIChatCompletionChunk, type OpenAIChatCompletionParams, type OpenAIChatCompletionResponse, type OpenAIClientOptions, PHONE_PRICES, PORTRAIT_ENROLLMENT_PRICE_USD, PaymentError, type PaymentLinks, type PhoneBuyOptions, type PhoneBuyResponse, PhoneClient, type PhoneClientOptions, type PhoneListResponse, type PhoneLookupResponse, type PhoneNumberRecord, type PhoneReleaseResponse, type PhoneRenewResponse, type PollOptions, PortraitClient, type PortraitClientOptions, type PortraitEnrollOptions, type PortraitEnrollResponse, type PriceBar, type PriceCategory, PriceClient, type PriceClientOptions, type PriceHistoryResponse, type PriceOptions, type PricePoint, RPC_PRICE_USD, type ResponseFormat, RetiredEndpointError, type RoutingDecision, type RoutingProfile, type RoutingTaskType, type RoutingTier, type RoutingTierConfig, type RpcBatchRequest, RpcClient, type RpcClientOptions, type RpcError, type RpcNetwork, type RpcResponse, type RssSearchSource, SOLANA_NETWORK, SOLANA_WALLET_FILE as SOLANA_WALLET_FILE_PATH, SUPPORTED_NETWORKS, SearchClient, type SearchClientOptions, type SearchOptions, type SearchParameters, type SearchResult, type SearchSource, type SearchUsage, type SmartChatCompletionOptions, type SmartChatCompletionResponse, type SmartChatOptions, type SmartChatResponse, SolanaLLMClient, type SolanaLLMClientOptions, type SolanaWalletInfo, type SoundEffectOptions, type SpeechAudio, SpeechClient, type SpeechClientOptions, type SpeechGenerateOptions, type SpeechModel, type SpeechResponse, type SpeechVoice, type Spending, type SpendingReport, type StockMarket, SurfClient, type SurfClientOptions, type SymbolListResponse, type Tool, type ToolCall, type ToolChoice, USDC_BASE, USDC_BASE_CONTRACT, USDC_SOLANA, VideoClient, type VideoClientOptions, type VideoClip, type VideoGenerateOptions, type VideoModel, type VideoResponse, VoiceClient, type VoiceClientOptions, type VoiceInfo, type VoicePreset, WALLET_DIR_PATH, WALLET_FILE_PATH, type WalletInfo, type WebSearchSource, type XSearchSource, clearCache, createPaymentPayload, createSolanaPaymentPayload, createSolanaWallet, createWallet, LLMClient as default, extractPaymentDetails, formatFundingMessageCompact, formatNeedsFundingMessage, formatSolanaWalletMigrationNotice, formatWalletCreatedMessage, formatWalletMigrationNotice, getCached, getCachedByRequest, getCostLogSummary, getCostSummary, getEip681Uri, getOrCreateSolanaWallet, getOrCreateWallet, getPaymentLinks, getWalletAddress, importSolanaWallet, importWallet, listDiscoveredSolanaWallets, listDiscoveredWallets, loadSolanaWallet, loadWallet, logCost, parsePaymentRequired, saveSolanaWallet, saveToCache, saveWallet, scanSolanaWallets, scanWallets, setCache, setupAgentSolanaWallet, setupAgentWallet, solanaClient, solanaKeyToBytes, solanaPublicKey, status, validateMaxTokens, validateModel, validateTemperature, validateTopP };