aptos-x402 1.0.2 → 2.0.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 (147) hide show
  1. package/README.md +5 -0
  2. package/dist/agent/data-extractor.d.ts +13 -0
  3. package/dist/agent/data-extractor.d.ts.map +1 -0
  4. package/dist/agent/data-extractor.js +191 -0
  5. package/dist/agent/data-extractor.js.map +1 -0
  6. package/dist/agent/executor.d.ts +27 -0
  7. package/dist/agent/executor.d.ts.map +1 -0
  8. package/dist/agent/executor.js +245 -0
  9. package/dist/agent/executor.js.map +1 -0
  10. package/dist/agent/gemini-interpreter.d.ts +10 -0
  11. package/dist/agent/gemini-interpreter.d.ts.map +1 -0
  12. package/dist/agent/gemini-interpreter.js +142 -0
  13. package/dist/agent/gemini-interpreter.js.map +1 -0
  14. package/dist/agent/github-models.d.ts +30 -0
  15. package/dist/agent/github-models.d.ts.map +1 -0
  16. package/dist/agent/github-models.js +114 -0
  17. package/dist/agent/github-models.js.map +1 -0
  18. package/dist/agent/llm-chat.d.ts +16 -0
  19. package/dist/agent/llm-chat.d.ts.map +1 -0
  20. package/dist/agent/llm-chat.js +181 -0
  21. package/dist/agent/llm-chat.js.map +1 -0
  22. package/dist/agent/wallet.d.ts +32 -0
  23. package/dist/agent/wallet.d.ts.map +1 -0
  24. package/dist/agent/wallet.js +92 -0
  25. package/dist/agent/wallet.js.map +1 -0
  26. package/dist/arc8004/identity/agent-card.d.ts +66 -0
  27. package/dist/arc8004/identity/agent-card.d.ts.map +1 -0
  28. package/dist/arc8004/identity/agent-card.js +141 -0
  29. package/dist/arc8004/identity/agent-card.js.map +1 -0
  30. package/dist/arc8004/identity/index.d.ts +7 -0
  31. package/dist/arc8004/identity/index.d.ts.map +1 -0
  32. package/dist/arc8004/identity/index.js +7 -0
  33. package/dist/arc8004/identity/index.js.map +1 -0
  34. package/dist/arc8004/identity/registry.d.ts +60 -0
  35. package/dist/arc8004/identity/registry.d.ts.map +1 -0
  36. package/dist/arc8004/identity/registry.js +297 -0
  37. package/dist/arc8004/identity/registry.js.map +1 -0
  38. package/dist/arc8004/index.d.ts +21 -0
  39. package/dist/arc8004/index.d.ts.map +1 -0
  40. package/dist/arc8004/index.js +26 -0
  41. package/dist/arc8004/index.js.map +1 -0
  42. package/dist/arc8004/reputation/index.d.ts +7 -0
  43. package/dist/arc8004/reputation/index.d.ts.map +1 -0
  44. package/dist/arc8004/reputation/index.js +7 -0
  45. package/dist/arc8004/reputation/index.js.map +1 -0
  46. package/dist/arc8004/reputation/registry.d.ts +60 -0
  47. package/dist/arc8004/reputation/registry.d.ts.map +1 -0
  48. package/dist/arc8004/reputation/registry.js +373 -0
  49. package/dist/arc8004/reputation/registry.js.map +1 -0
  50. package/dist/arc8004/reputation/scoring.d.ts +60 -0
  51. package/dist/arc8004/reputation/scoring.d.ts.map +1 -0
  52. package/dist/arc8004/reputation/scoring.js +130 -0
  53. package/dist/arc8004/reputation/scoring.js.map +1 -0
  54. package/dist/arc8004/types.d.ts +268 -0
  55. package/dist/arc8004/types.d.ts.map +1 -0
  56. package/dist/arc8004/types.js +27 -0
  57. package/dist/arc8004/types.js.map +1 -0
  58. package/dist/arc8004/validation/index.d.ts +6 -0
  59. package/dist/arc8004/validation/index.d.ts.map +1 -0
  60. package/dist/arc8004/validation/index.js +6 -0
  61. package/dist/arc8004/validation/index.js.map +1 -0
  62. package/dist/arc8004/validation/registry.d.ts +72 -0
  63. package/dist/arc8004/validation/registry.d.ts.map +1 -0
  64. package/dist/arc8004/validation/registry.js +268 -0
  65. package/dist/arc8004/validation/registry.js.map +1 -0
  66. package/dist/db/index.d.ts +10 -0
  67. package/dist/db/index.d.ts.map +1 -0
  68. package/dist/db/index.js +14 -0
  69. package/dist/db/index.js.map +1 -0
  70. package/dist/db/schema.d.ts +2086 -0
  71. package/dist/db/schema.d.ts.map +1 -0
  72. package/dist/db/schema.js +220 -0
  73. package/dist/db/schema.js.map +1 -0
  74. package/dist/index.d.ts +9 -0
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +18 -0
  77. package/dist/index.js.map +1 -1
  78. package/dist/services/agent-summary.d.ts +24 -0
  79. package/dist/services/agent-summary.d.ts.map +1 -0
  80. package/dist/services/agent-summary.js +90 -0
  81. package/dist/services/agent-summary.js.map +1 -0
  82. package/dist/storage/agents.d.ts +36 -0
  83. package/dist/storage/agents.d.ts.map +1 -0
  84. package/dist/storage/agents.js +111 -0
  85. package/dist/storage/agents.js.map +1 -0
  86. package/dist/storage/apis.d.ts +20 -0
  87. package/dist/storage/apis.d.ts.map +1 -0
  88. package/dist/storage/apis.js +131 -0
  89. package/dist/storage/apis.js.map +1 -0
  90. package/dist/storage/chats.d.ts +44 -0
  91. package/dist/storage/chats.d.ts.map +1 -0
  92. package/dist/storage/chats.js +103 -0
  93. package/dist/storage/chats.js.map +1 -0
  94. package/dist/storage/user-wallets.d.ts +20 -0
  95. package/dist/storage/user-wallets.d.ts.map +1 -0
  96. package/dist/storage/user-wallets.js +52 -0
  97. package/dist/storage/user-wallets.js.map +1 -0
  98. package/dist/utils/agent-symbols.d.ts +20 -0
  99. package/dist/utils/agent-symbols.d.ts.map +1 -0
  100. package/dist/utils/agent-symbols.js +86 -0
  101. package/dist/utils/agent-symbols.js.map +1 -0
  102. package/dist/utils/server-user-id.d.ts +2 -0
  103. package/dist/utils/server-user-id.d.ts.map +1 -0
  104. package/dist/utils/server-user-id.js +9 -0
  105. package/dist/utils/server-user-id.js.map +1 -0
  106. package/dist/utils/user-id.d.ts +21 -0
  107. package/dist/utils/user-id.d.ts.map +1 -0
  108. package/dist/utils/user-id.js +102 -0
  109. package/dist/utils/user-id.js.map +1 -0
  110. package/dist/x402-axios.d.ts.map +1 -1
  111. package/dist/x402-axios.js +77 -4
  112. package/dist/x402-axios.js.map +1 -1
  113. package/dist/x402-middleware.d.ts +1 -1
  114. package/dist/x402-middleware.d.ts.map +1 -1
  115. package/package.json +16 -2
  116. package/dist/server/index.d.ts +0 -8
  117. package/dist/server/index.d.ts.map +0 -1
  118. package/dist/server/index.js +0 -8
  119. package/dist/server/index.js.map +0 -1
  120. package/dist/server/next.d.ts +0 -44
  121. package/dist/server/next.d.ts.map +0 -1
  122. package/dist/server/next.js +0 -210
  123. package/dist/server/next.js.map +0 -1
  124. package/dist/types/config.d.ts +0 -43
  125. package/dist/types/config.d.ts.map +0 -1
  126. package/dist/types/config.js +0 -6
  127. package/dist/types/config.js.map +0 -1
  128. package/dist/types/index.d.ts +0 -9
  129. package/dist/types/index.d.ts.map +0 -1
  130. package/dist/types/index.js +0 -7
  131. package/dist/types/index.js.map +0 -1
  132. package/dist/types/protocol.d.ts +0 -119
  133. package/dist/types/protocol.d.ts.map +0 -1
  134. package/dist/types/protocol.js +0 -12
  135. package/dist/types/protocol.js.map +0 -1
  136. package/dist/x402-client.d.ts +0 -56
  137. package/dist/x402-client.d.ts.map +0 -1
  138. package/dist/x402-client.js +0 -209
  139. package/dist/x402-client.js.map +0 -1
  140. package/dist/x402-fetch.d.ts +0 -59
  141. package/dist/x402-fetch.d.ts.map +0 -1
  142. package/dist/x402-fetch.js +0 -167
  143. package/dist/x402-fetch.js.map +0 -1
  144. package/dist/x402-request.d.ts +0 -57
  145. package/dist/x402-request.d.ts.map +0 -1
  146. package/dist/x402-request.js +0 -167
  147. package/dist/x402-request.js.map +0 -1
package/README.md CHANGED
@@ -20,6 +20,11 @@
20
20
 
21
21
  Built for **machine-to-machine micropayments**, this SDK provides zero-friction payment integration for Next.js applications with automatic payment handling, cryptographic verification, and **sub-second settlement times** (optimized from 2-3s to 200-500ms).
22
22
 
23
+ ### What’s new in 2.0.0
24
+ - 🛡️ **ARC-8004 Agent Trust Layer** (Aptos-native, inspired by ERC-8004): agent identities, reputation, and task validation.
25
+ - ✅ Frontend badges for Verified + Trust, with a verify API.
26
+ - 📚 Docs and API routes for ARC-8004 (identity, reputation, validation).
27
+
23
28
  > ⚡ **Performance:** Latest optimizations deliver **5-10x faster** payments with verification caching, async confirmation, and smart deduplication. See [PERFORMANCE_OPTIMIZATIONS.md](./PERFORMANCE_OPTIMIZATIONS.md) for details.
24
29
 
25
30
  <!-- ## Key Features
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Data Extractor
3
+ * Uses LLM (Gemini or GitHub Models) to extract and format specific data from API responses
4
+ */
5
+ export interface ExtractedData {
6
+ formattedResponse: string;
7
+ extractedData?: any;
8
+ }
9
+ /**
10
+ * Use LLM to extract specific data from API response based on user query
11
+ */
12
+ export declare function extractDataWithLLM(userQuery: string, apiData: any, apiName: string, modelName?: string): Promise<ExtractedData>;
13
+ //# sourceMappingURL=data-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-extractor.d.ts","sourceRoot":"","sources":["../../lib/agent/data-extractor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqBH,MAAM,WAAW,aAAa;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,GAAG,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAA+B,GACzC,OAAO,CAAC,aAAa,CAAC,CAyDxB"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Data Extractor
3
+ * Uses LLM (Gemini or GitHub Models) to extract and format specific data from API responses
4
+ */
5
+ import { ChatGoogleGenerativeAI } from '@langchain/google-genai';
6
+ import { invokeGitHubModel, isGitHubModel } from './github-models';
7
+ const GEMINI_API_KEY = process.env.GEMINI_API_KEY;
8
+ // Cache model instances to avoid re-initialization overhead
9
+ const modelCache = new Map();
10
+ function getModel(modelName) {
11
+ if (!modelCache.has(modelName)) {
12
+ modelCache.set(modelName, new ChatGoogleGenerativeAI({
13
+ modelName: modelName,
14
+ temperature: 0.1,
15
+ apiKey: GEMINI_API_KEY,
16
+ }));
17
+ }
18
+ return modelCache.get(modelName);
19
+ }
20
+ /**
21
+ * Use LLM to extract specific data from API response based on user query
22
+ */
23
+ export async function extractDataWithLLM(userQuery, apiData, apiName, modelName = 'gemini-2.0-flash-exp') {
24
+ // Check if this is a GitHub Model
25
+ if (isGitHubModel(modelName)) {
26
+ return extractDataWithGitHubModel(userQuery, apiData, apiName, modelName);
27
+ }
28
+ // If no Gemini API key, return raw data
29
+ if (!GEMINI_API_KEY || modelName === 'keyword') {
30
+ return {
31
+ formattedResponse: formatDataFallback(userQuery, apiData, apiName),
32
+ extractedData: apiData,
33
+ };
34
+ }
35
+ try {
36
+ const model = getModel(modelName);
37
+ // Optimize prompt - shorter and more direct for faster processing
38
+ // Truncate large API data to avoid token bloat
39
+ const dataStr = JSON.stringify(apiData);
40
+ const maxDataLength = 2000; // Limit data size to avoid huge prompts
41
+ const truncatedData = dataStr.length > maxDataLength
42
+ ? dataStr.substring(0, maxDataLength) + '...[truncated]'
43
+ : dataStr;
44
+ const prompt = `Query: "${userQuery}"
45
+ API: ${apiName}
46
+ Data: ${truncatedData}
47
+
48
+ Rules: Direct answer only, no intros. Extract what user asked. Brief.`;
49
+ const response = await model.invoke(prompt);
50
+ const formattedResponse = response.content?.toString().trim();
51
+ // Try to extract structured data if possible
52
+ let extractedData = apiData;
53
+ try {
54
+ // Look for JSON in the response (in case LLM provides structured data)
55
+ const jsonMatch = formattedResponse?.match(/\{[\s\S]*\}/);
56
+ if (jsonMatch) {
57
+ extractedData = JSON.parse(jsonMatch[0]);
58
+ }
59
+ }
60
+ catch {
61
+ // If no JSON, use original data
62
+ }
63
+ return {
64
+ formattedResponse: formattedResponse || formatDataFallback(userQuery, apiData, apiName),
65
+ extractedData,
66
+ };
67
+ }
68
+ catch (error) {
69
+ console.error('Error extracting data with LLM:', error);
70
+ return {
71
+ formattedResponse: formatDataFallback(userQuery, apiData, apiName),
72
+ extractedData: apiData,
73
+ };
74
+ }
75
+ }
76
+ /**
77
+ * Extract data with GitHub Models
78
+ */
79
+ async function extractDataWithGitHubModel(userQuery, apiData, apiName, modelName) {
80
+ try {
81
+ // Optimize prompt - shorter and more direct for faster processing
82
+ // Truncate large API data to avoid token bloat
83
+ const dataStr = JSON.stringify(apiData);
84
+ const maxDataLength = 2000; // Limit data size to avoid huge prompts
85
+ const truncatedData = dataStr.length > maxDataLength
86
+ ? dataStr.substring(0, maxDataLength) + '...[truncated]'
87
+ : dataStr;
88
+ // Use a safer prompt that's less likely to trigger content filters
89
+ const prompt = `User asked: ${userQuery}
90
+ API response from ${apiName}:
91
+ ${truncatedData}
92
+
93
+ Provide a concise summary answering the user's question. Be factual and direct.`;
94
+ const formattedResponse = await invokeGitHubModel(prompt, modelName);
95
+ // Try to extract structured data if possible
96
+ let extractedData = apiData;
97
+ try {
98
+ // Look for JSON in the response (in case LLM provides structured data)
99
+ const jsonMatch = formattedResponse.match(/\{[\s\S]*\}/);
100
+ if (jsonMatch) {
101
+ extractedData = JSON.parse(jsonMatch[0]);
102
+ }
103
+ }
104
+ catch {
105
+ // If no JSON, use original data
106
+ }
107
+ return {
108
+ formattedResponse: formattedResponse || formatDataFallback(userQuery, apiData, apiName),
109
+ extractedData,
110
+ };
111
+ }
112
+ catch (error) {
113
+ console.error('Error extracting data with GitHub Model:', error);
114
+ // If content filter error, try falling back to Gemini if available
115
+ if (error.message?.includes('content filter') || error.message?.includes('content management')) {
116
+ console.log('[Data Extractor] GitHub Model content filter triggered, falling back to Gemini...');
117
+ if (GEMINI_API_KEY) {
118
+ try {
119
+ return await extractDataWithLLM(userQuery, apiData, apiName, 'gemini-2.0-flash-exp');
120
+ }
121
+ catch (geminiError) {
122
+ console.error('Gemini fallback also failed:', geminiError);
123
+ }
124
+ }
125
+ }
126
+ // Fallback to smart formatter instead of raw JSON
127
+ return {
128
+ formattedResponse: formatDataSmart(userQuery, apiData, apiName),
129
+ extractedData: apiData,
130
+ };
131
+ }
132
+ }
133
+ /**
134
+ * Fallback formatter when LLM is not available
135
+ * Returns raw JSON - no API-specific logic. LLM should handle all extraction.
136
+ */
137
+ function formatDataFallback(userQuery, apiData, apiName) {
138
+ // Just return the raw data as JSON - no hardcoded API-specific logic
139
+ // The LLM handles all extraction and formatting when available
140
+ return JSON.stringify(apiData, null, 2);
141
+ }
142
+ /**
143
+ * Smart formatter that extracts relevant data based on API type and query
144
+ * Used when LLM extraction fails but we still want specific output
145
+ */
146
+ function formatDataSmart(userQuery, apiData, apiName) {
147
+ const lowerQuery = userQuery.toLowerCase();
148
+ // News API specific formatting
149
+ if (apiName.toLowerCase().includes('news') && apiData.headlines) {
150
+ const headlines = Array.isArray(apiData.headlines) ? apiData.headlines : [];
151
+ if (headlines.length > 0) {
152
+ return headlines.map((item, idx) => `${idx + 1}. ${item.title || item.headline || 'Untitled'}\n Source: ${item.source || 'Unknown'}\n ${item.publishedAt ? `Published: ${new Date(item.publishedAt).toLocaleDateString()}` : ''}`).join('\n\n');
153
+ }
154
+ }
155
+ // Weather API specific formatting
156
+ if (apiName.toLowerCase().includes('weather') && apiData.temperature) {
157
+ return `Temperature: ${apiData.temperature}°${apiData.unit || 'F'}\nCondition: ${apiData.condition || 'Unknown'}\nLocation: ${apiData.location || 'Unknown'}`;
158
+ }
159
+ // Stocks API specific formatting
160
+ if (apiName.toLowerCase().includes('stock') && apiData.price) {
161
+ return `Stock: ${apiData.symbol || 'Unknown'}\nPrice: $${apiData.price}\nChange: ${apiData.change || '0'}%`;
162
+ }
163
+ // If it's an array, show first few items
164
+ if (Array.isArray(apiData)) {
165
+ const items = apiData.slice(0, 5);
166
+ return items.map((item, idx) => {
167
+ if (typeof item === 'string')
168
+ return `${idx + 1}. ${item}`;
169
+ if (typeof item === 'object') {
170
+ const keys = Object.keys(item).slice(0, 3);
171
+ return `${idx + 1}. ${keys.map(k => `${k}: ${item[k]}`).join(', ')}`;
172
+ }
173
+ return `${idx + 1}. ${String(item)}`;
174
+ }).join('\n') + (apiData.length > 5 ? `\n\n... and ${apiData.length - 5} more items` : '');
175
+ }
176
+ // If it's an object, show key fields
177
+ if (typeof apiData === 'object' && apiData !== null) {
178
+ const keys = Object.keys(apiData).slice(0, 5);
179
+ const relevant = keys.filter(k => {
180
+ const val = apiData[k];
181
+ return val !== null && val !== undefined &&
182
+ (typeof val === 'string' || typeof val === 'number' || typeof val === 'boolean');
183
+ });
184
+ if (relevant.length > 0) {
185
+ return relevant.map(k => `${k}: ${apiData[k]}`).join('\n');
186
+ }
187
+ }
188
+ // Final fallback to JSON
189
+ return JSON.stringify(apiData, null, 2);
190
+ }
191
+ //# sourceMappingURL=data-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-extractor.js","sourceRoot":"","sources":["../../lib/agent/data-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Agent Executor
3
+ * Agent logic to parse queries and call APIs using Gemini AI for interpretation
4
+ */
5
+ import { Agent } from '../storage/agents';
6
+ export interface AgentResponse {
7
+ success: boolean;
8
+ message: string;
9
+ data?: any;
10
+ apiCalled?: string;
11
+ paymentHash?: string;
12
+ paymentAmount?: string;
13
+ error?: string;
14
+ llmUsed?: string;
15
+ }
16
+ /**
17
+ * Execute agent query by calling appropriate API
18
+ * @param agent - The agent configuration
19
+ * @param userQuery - The user's query/message
20
+ * @param options - Execution options including LLM and API selection
21
+ * @param userPrivateKey - Optional user's private key for payment (required for public agents)
22
+ */
23
+ export declare function executeAgentQuery(agent: Agent, userQuery: string, options?: {
24
+ llm?: string;
25
+ apiId?: string | null;
26
+ }, userPrivateKey?: string): Promise<AgentResponse>;
27
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../lib/agent/executor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAI1C,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAGD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IACR,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,EACD,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,aAAa,CAAC,CAyPxB"}
@@ -0,0 +1,245 @@
1
+ /**
2
+ * Agent Executor
3
+ * Agent logic to parse queries and call APIs using Gemini AI for interpretation
4
+ */
5
+ import { x402axios } from '../x402-axios';
6
+ import { getAllApis } from '../storage/apis';
7
+ import { processQueryWithLLM } from './llm-chat';
8
+ import { extractDataWithLLM } from './data-extractor';
9
+ /**
10
+ * Execute agent query by calling appropriate API
11
+ * @param agent - The agent configuration
12
+ * @param userQuery - The user's query/message
13
+ * @param options - Execution options including LLM and API selection
14
+ * @param userPrivateKey - Optional user's private key for payment (required for public agents)
15
+ */
16
+ export async function executeAgentQuery(agent, userQuery, options, userPrivateKey) {
17
+ try {
18
+ // Get available APIs for this agent
19
+ // Use relative URLs or detect from environment - will be resolved by x402axios
20
+ const allApis = getAllApis();
21
+ const availableApis = allApis.filter(api => agent.apiIds.includes(api.id));
22
+ if (availableApis.length === 0) {
23
+ return {
24
+ success: false,
25
+ message: 'This agent has no APIs configured. Please add APIs to the agent.',
26
+ error: 'NO_APIS_CONFIGURED',
27
+ };
28
+ }
29
+ // Process query with LLM or fallback
30
+ let llmResponse;
31
+ let llmUsed = 'keyword';
32
+ let selectedApi = null;
33
+ // Determine which model to use for LLM processing
34
+ let modelName = 'keyword';
35
+ if (options?.llm && options.llm !== 'keyword') {
36
+ // Check for GitHub Models
37
+ if (options.llm.startsWith('gpt-5') || options.llm.startsWith('grok-3') ||
38
+ options.llm.startsWith('gpt-4.1') || options.llm.startsWith('phi-4') ||
39
+ options.llm.startsWith('o4-mini')) {
40
+ modelName = options.llm;
41
+ llmUsed = options.llm === 'gpt-5-mini' ? 'GPT-5 Mini' :
42
+ options.llm === 'gpt-5-nano' ? 'GPT-5 Nano' :
43
+ options.llm === 'grok-3-mini' ? 'Grok 3 Mini' :
44
+ options.llm === 'gpt-4.1-mini' ? 'GPT-4.1 Mini' :
45
+ options.llm === 'gpt-4.1-nano' ? 'GPT-4.1 Nano' :
46
+ options.llm === 'phi-4-mini-reasoning' ? 'Phi-4 Mini Reasoning' :
47
+ options.llm === 'o4-mini' ? 'O4 Mini' :
48
+ options.llm;
49
+ }
50
+ else if (options.llm.startsWith('gemini')) {
51
+ const modelMap = {
52
+ 'gemini-2.5-flash': 'gemini-2.0-flash-exp',
53
+ };
54
+ modelName = modelMap[options.llm] || 'gemini-2.0-flash-exp';
55
+ llmUsed = 'Gemini 2.5 Flash';
56
+ }
57
+ else if (options.llm === 'claude-sonnet-4') {
58
+ return {
59
+ success: false,
60
+ message: 'This LLM is not yet available. Please select an enabled LLM.',
61
+ error: 'LLM_NOT_AVAILABLE',
62
+ };
63
+ }
64
+ }
65
+ // Process query with LLM (unless specific API is manually selected)
66
+ if (!options?.apiId) {
67
+ llmResponse = await processQueryWithLLM(userQuery, availableApis, agent.name || 'Agent', modelName);
68
+ // Update llmUsed if fallback occurred
69
+ if (llmResponse?.actualModelUsed) {
70
+ if (llmResponse.actualModelUsed === 'gemini-2.5-flash') {
71
+ llmUsed = 'Gemini 2.5 Flash';
72
+ }
73
+ }
74
+ // If LLM says no API call needed (greeting/casual), return conversational response
75
+ if (llmResponse && !llmResponse.shouldCallAPI) {
76
+ return {
77
+ success: true,
78
+ message: llmResponse.conversationalResponse || `Hello! I'm ${agent.name || 'your agent'}. How can I help you today?`,
79
+ llmUsed: options?.llm === 'keyword' ? undefined : llmUsed,
80
+ };
81
+ }
82
+ // Find the API if LLM suggested one
83
+ if (llmResponse?.apiId) {
84
+ selectedApi = availableApis.find(api => api.id === llmResponse.apiId) || null;
85
+ }
86
+ // If no API found, return error
87
+ if (!selectedApi) {
88
+ return {
89
+ success: false,
90
+ message: llmResponse?.conversationalResponse || 'I couldn\'t determine which API to use for your query. Please try rephrasing or select a specific API.',
91
+ error: 'NO_MATCHING_API',
92
+ llmUsed: options?.llm === 'keyword' ? undefined : llmUsed,
93
+ };
94
+ }
95
+ }
96
+ else {
97
+ // Specific API manually selected - use fast keyword check for greetings (skip LLM call)
98
+ // We should never call APIs for greetings, even if manually selected
99
+ const lowerQuery = userQuery.toLowerCase().trim();
100
+ const greetings = ['hello', 'hi', 'hey', 'howdy', 'greetings', 'good morning', 'good afternoon', 'good evening'];
101
+ const casual = ['thanks', 'thank you', 'ok', 'okay', 'yes', 'no', 'sure', 'alright', 'cool', 'nice', 'how are you', 'what\'s up'];
102
+ if (greetings.some(g => lowerQuery === g || lowerQuery.startsWith(g + ' ')) ||
103
+ casual.some(c => lowerQuery === c || lowerQuery.startsWith(c + ' '))) {
104
+ return {
105
+ success: true,
106
+ message: `Hello! I'm ${agent.name || 'your agent'}. How can I help you today?`,
107
+ llmUsed: undefined, // No LLM used for greeting check
108
+ };
109
+ }
110
+ selectedApi = availableApis.find(api => api.id === options.apiId) || null;
111
+ if (!selectedApi) {
112
+ return {
113
+ success: false,
114
+ message: `The requested API "${options.apiId}" is not available for this agent.`,
115
+ error: 'API_NOT_AVAILABLE',
116
+ };
117
+ }
118
+ }
119
+ // Determine which wallet to use for payment:
120
+ // - If userPrivateKey is provided: user is chatting with someone else's public agent -> use user's wallet
121
+ // - Otherwise: user owns the agent -> use agent's wallet
122
+ let paymentPrivateKey;
123
+ if (userPrivateKey) {
124
+ // User chatting with public agent owned by someone else - use user's wallet
125
+ paymentPrivateKey = userPrivateKey;
126
+ }
127
+ else {
128
+ // User owns the agent (or it's private) - use agent's wallet
129
+ paymentPrivateKey = agent.privateKey;
130
+ }
131
+ // Call the API using x402axios with appropriate private key
132
+ try {
133
+ const config = {
134
+ privateKey: paymentPrivateKey,
135
+ };
136
+ let response;
137
+ if (selectedApi.method === 'GET') {
138
+ response = await x402axios.get(selectedApi.url, config);
139
+ }
140
+ else if (selectedApi.method === 'POST') {
141
+ // For POST, you might want to extract data from query
142
+ // For now, just send empty body or query params
143
+ response = await x402axios.post(selectedApi.url, {}, config);
144
+ }
145
+ else {
146
+ response = await x402axios.get(selectedApi.url, config);
147
+ }
148
+ // Extract payment info if available
149
+ const paymentHash = response.paymentInfo?.transactionHash;
150
+ const paymentAmount = response.paymentInfo?.amount; // Amount in Octas
151
+ console.log('[Agent Executor] Payment info:', {
152
+ hasPaymentInfo: !!response.paymentInfo,
153
+ paymentHash,
154
+ paymentAmount,
155
+ fullPaymentInfo: response.paymentInfo
156
+ });
157
+ // Use LLM to extract and format specific data from API response
158
+ let finalMessage;
159
+ let extractedData = response.data;
160
+ if (options?.llm && options.llm !== 'keyword') {
161
+ // Determine the model name for data extraction
162
+ let extractionModelName = 'keyword';
163
+ if (options.llm.startsWith('gemini')) {
164
+ // Map LLM names for data extraction
165
+ const modelMap = {
166
+ 'gemini-2.5-flash': 'gemini-2.0-flash-exp',
167
+ };
168
+ extractionModelName = modelMap[options.llm] || 'gemini-2.0-flash-exp';
169
+ }
170
+ else if (options.llm.startsWith('gpt-5') || options.llm.startsWith('grok-3') ||
171
+ options.llm.startsWith('gpt-4.1') || options.llm.startsWith('phi-4') ||
172
+ options.llm.startsWith('o4-mini')) {
173
+ // Use GitHub Models directly
174
+ extractionModelName = options.llm;
175
+ }
176
+ // Extract specific data based on user query
177
+ const extraction = await extractDataWithLLM(userQuery, response.data, selectedApi.name, extractionModelName);
178
+ finalMessage = extraction.formattedResponse;
179
+ extractedData = extraction.extractedData;
180
+ }
181
+ else {
182
+ // Fallback: use conversational response or format data
183
+ finalMessage = llmResponse?.conversationalResponse ||
184
+ `Successfully retrieved data from ${selectedApi.name}`;
185
+ }
186
+ return {
187
+ success: true,
188
+ message: finalMessage,
189
+ data: extractedData,
190
+ apiCalled: selectedApi.name,
191
+ paymentHash,
192
+ paymentAmount, // Amount in Octas
193
+ llmUsed: options?.llm === 'keyword' ? undefined : llmUsed,
194
+ };
195
+ }
196
+ catch (apiError) {
197
+ // Handle x402 payment errors
198
+ if (apiError.response?.status === 402) {
199
+ return {
200
+ success: false,
201
+ message: 'Payment required but could not be processed. Please ensure the agent has sufficient funds.',
202
+ error: 'PAYMENT_REQUIRED',
203
+ apiCalled: selectedApi.name,
204
+ };
205
+ }
206
+ if (apiError.message?.includes('funds') || apiError.message?.includes('balance')) {
207
+ return {
208
+ success: false,
209
+ message: 'Insufficient funds. Please add more APT to this agent\'s wallet.',
210
+ error: 'INSUFFICIENT_FUNDS',
211
+ apiCalled: selectedApi.name,
212
+ };
213
+ }
214
+ // Handle network/fetch errors
215
+ const errorMessage = apiError.message || apiError.toString() || 'Unknown error';
216
+ const isNetworkError = errorMessage.includes('fetch failed') ||
217
+ errorMessage.includes('network') ||
218
+ errorMessage.includes('Failed to fetch');
219
+ if (isNetworkError) {
220
+ return {
221
+ success: false,
222
+ message: `Unable to reach ${selectedApi.name}. The API may be unavailable or the URL is incorrect.`,
223
+ error: 'NETWORK_ERROR',
224
+ apiCalled: selectedApi.name,
225
+ llmUsed: options?.llm === 'keyword' ? undefined : llmUsed,
226
+ };
227
+ }
228
+ return {
229
+ success: false,
230
+ message: `Error calling ${selectedApi.name}: ${errorMessage}`,
231
+ error: 'API_ERROR',
232
+ apiCalled: selectedApi.name,
233
+ llmUsed: options?.llm === 'keyword' ? undefined : llmUsed,
234
+ };
235
+ }
236
+ }
237
+ catch (error) {
238
+ return {
239
+ success: false,
240
+ message: `An error occurred: ${error.message || 'Unknown error'}`,
241
+ error: 'EXECUTION_ERROR',
242
+ };
243
+ }
244
+ }
245
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../lib/agent/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * LLM Query Interpreter
3
+ * Uses Google Gemini or GitHub Models to understand user queries and determine which API to call
4
+ */
5
+ import { ApiMetadata } from '../storage/apis';
6
+ /**
7
+ * Use LLM (Gemini or GitHub Models) to determine which API to call based on user query
8
+ */
9
+ export declare function interpretQueryWithGemini(userQuery: string, availableApis: ApiMetadata[], modelName?: string): Promise<ApiMetadata | null>;
10
+ //# sourceMappingURL=gemini-interpreter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-interpreter.d.ts","sourceRoot":"","sources":["../../lib/agent/gemini-interpreter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAc,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAS1D;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,WAAW,EAAE,EAC5B,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA8D7B"}