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.
- package/README.md +5 -0
- package/dist/agent/data-extractor.d.ts +13 -0
- package/dist/agent/data-extractor.d.ts.map +1 -0
- package/dist/agent/data-extractor.js +191 -0
- package/dist/agent/data-extractor.js.map +1 -0
- package/dist/agent/executor.d.ts +27 -0
- package/dist/agent/executor.d.ts.map +1 -0
- package/dist/agent/executor.js +245 -0
- package/dist/agent/executor.js.map +1 -0
- package/dist/agent/gemini-interpreter.d.ts +10 -0
- package/dist/agent/gemini-interpreter.d.ts.map +1 -0
- package/dist/agent/gemini-interpreter.js +142 -0
- package/dist/agent/gemini-interpreter.js.map +1 -0
- package/dist/agent/github-models.d.ts +30 -0
- package/dist/agent/github-models.d.ts.map +1 -0
- package/dist/agent/github-models.js +114 -0
- package/dist/agent/github-models.js.map +1 -0
- package/dist/agent/llm-chat.d.ts +16 -0
- package/dist/agent/llm-chat.d.ts.map +1 -0
- package/dist/agent/llm-chat.js +181 -0
- package/dist/agent/llm-chat.js.map +1 -0
- package/dist/agent/wallet.d.ts +32 -0
- package/dist/agent/wallet.d.ts.map +1 -0
- package/dist/agent/wallet.js +92 -0
- package/dist/agent/wallet.js.map +1 -0
- package/dist/arc8004/identity/agent-card.d.ts +66 -0
- package/dist/arc8004/identity/agent-card.d.ts.map +1 -0
- package/dist/arc8004/identity/agent-card.js +141 -0
- package/dist/arc8004/identity/agent-card.js.map +1 -0
- package/dist/arc8004/identity/index.d.ts +7 -0
- package/dist/arc8004/identity/index.d.ts.map +1 -0
- package/dist/arc8004/identity/index.js +7 -0
- package/dist/arc8004/identity/index.js.map +1 -0
- package/dist/arc8004/identity/registry.d.ts +60 -0
- package/dist/arc8004/identity/registry.d.ts.map +1 -0
- package/dist/arc8004/identity/registry.js +297 -0
- package/dist/arc8004/identity/registry.js.map +1 -0
- package/dist/arc8004/index.d.ts +21 -0
- package/dist/arc8004/index.d.ts.map +1 -0
- package/dist/arc8004/index.js +26 -0
- package/dist/arc8004/index.js.map +1 -0
- package/dist/arc8004/reputation/index.d.ts +7 -0
- package/dist/arc8004/reputation/index.d.ts.map +1 -0
- package/dist/arc8004/reputation/index.js +7 -0
- package/dist/arc8004/reputation/index.js.map +1 -0
- package/dist/arc8004/reputation/registry.d.ts +60 -0
- package/dist/arc8004/reputation/registry.d.ts.map +1 -0
- package/dist/arc8004/reputation/registry.js +373 -0
- package/dist/arc8004/reputation/registry.js.map +1 -0
- package/dist/arc8004/reputation/scoring.d.ts +60 -0
- package/dist/arc8004/reputation/scoring.d.ts.map +1 -0
- package/dist/arc8004/reputation/scoring.js +130 -0
- package/dist/arc8004/reputation/scoring.js.map +1 -0
- package/dist/arc8004/types.d.ts +268 -0
- package/dist/arc8004/types.d.ts.map +1 -0
- package/dist/arc8004/types.js +27 -0
- package/dist/arc8004/types.js.map +1 -0
- package/dist/arc8004/validation/index.d.ts +6 -0
- package/dist/arc8004/validation/index.d.ts.map +1 -0
- package/dist/arc8004/validation/index.js +6 -0
- package/dist/arc8004/validation/index.js.map +1 -0
- package/dist/arc8004/validation/registry.d.ts +72 -0
- package/dist/arc8004/validation/registry.d.ts.map +1 -0
- package/dist/arc8004/validation/registry.js +268 -0
- package/dist/arc8004/validation/registry.js.map +1 -0
- package/dist/db/index.d.ts +10 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +14 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/schema.d.ts +2086 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +220 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -1
- package/dist/services/agent-summary.d.ts +24 -0
- package/dist/services/agent-summary.d.ts.map +1 -0
- package/dist/services/agent-summary.js +90 -0
- package/dist/services/agent-summary.js.map +1 -0
- package/dist/storage/agents.d.ts +36 -0
- package/dist/storage/agents.d.ts.map +1 -0
- package/dist/storage/agents.js +111 -0
- package/dist/storage/agents.js.map +1 -0
- package/dist/storage/apis.d.ts +20 -0
- package/dist/storage/apis.d.ts.map +1 -0
- package/dist/storage/apis.js +131 -0
- package/dist/storage/apis.js.map +1 -0
- package/dist/storage/chats.d.ts +44 -0
- package/dist/storage/chats.d.ts.map +1 -0
- package/dist/storage/chats.js +103 -0
- package/dist/storage/chats.js.map +1 -0
- package/dist/storage/user-wallets.d.ts +20 -0
- package/dist/storage/user-wallets.d.ts.map +1 -0
- package/dist/storage/user-wallets.js +52 -0
- package/dist/storage/user-wallets.js.map +1 -0
- package/dist/utils/agent-symbols.d.ts +20 -0
- package/dist/utils/agent-symbols.d.ts.map +1 -0
- package/dist/utils/agent-symbols.js +86 -0
- package/dist/utils/agent-symbols.js.map +1 -0
- package/dist/utils/server-user-id.d.ts +2 -0
- package/dist/utils/server-user-id.d.ts.map +1 -0
- package/dist/utils/server-user-id.js +9 -0
- package/dist/utils/server-user-id.js.map +1 -0
- package/dist/utils/user-id.d.ts +21 -0
- package/dist/utils/user-id.d.ts.map +1 -0
- package/dist/utils/user-id.js +102 -0
- package/dist/utils/user-id.js.map +1 -0
- package/dist/x402-axios.d.ts.map +1 -1
- package/dist/x402-axios.js +77 -4
- package/dist/x402-axios.js.map +1 -1
- package/dist/x402-middleware.d.ts +1 -1
- package/dist/x402-middleware.d.ts.map +1 -1
- package/package.json +16 -2
- package/dist/server/index.d.ts +0 -8
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js +0 -8
- package/dist/server/index.js.map +0 -1
- package/dist/server/next.d.ts +0 -44
- package/dist/server/next.d.ts.map +0 -1
- package/dist/server/next.js +0 -210
- package/dist/server/next.js.map +0 -1
- package/dist/types/config.d.ts +0 -43
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/config.js +0 -6
- package/dist/types/config.js.map +0 -1
- package/dist/types/index.d.ts +0 -9
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -7
- package/dist/types/index.js.map +0 -1
- package/dist/types/protocol.d.ts +0 -119
- package/dist/types/protocol.d.ts.map +0 -1
- package/dist/types/protocol.js +0 -12
- package/dist/types/protocol.js.map +0 -1
- package/dist/x402-client.d.ts +0 -56
- package/dist/x402-client.d.ts.map +0 -1
- package/dist/x402-client.js +0 -209
- package/dist/x402-client.js.map +0 -1
- package/dist/x402-fetch.d.ts +0 -59
- package/dist/x402-fetch.d.ts.map +0 -1
- package/dist/x402-fetch.js +0 -167
- package/dist/x402-fetch.js.map +0 -1
- package/dist/x402-request.d.ts +0 -57
- package/dist/x402-request.d.ts.map +0 -1
- package/dist/x402-request.js +0 -167
- 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"}
|