aether-agent-sdk 1.0.0 → 1.0.1
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/src/agents/AgentRegistry.d.ts +48 -0
- package/dist/src/agents/AgentRegistry.d.ts.map +1 -0
- package/dist/src/agents/AgentRegistry.js +114 -0
- package/dist/src/agents/AgentRegistry.js.map +1 -0
- package/dist/src/agents/AnalyzerAgent.d.ts +18 -0
- package/dist/src/agents/AnalyzerAgent.d.ts.map +1 -0
- package/dist/src/agents/AnalyzerAgent.js +129 -0
- package/dist/src/agents/AnalyzerAgent.js.map +1 -0
- package/dist/src/agents/IntelligentVerifierAgent.d.ts +46 -0
- package/dist/src/agents/IntelligentVerifierAgent.d.ts.map +1 -0
- package/dist/src/agents/IntelligentVerifierAgent.js +262 -0
- package/dist/src/agents/IntelligentVerifierAgent.js.map +1 -0
- package/dist/src/agents/SettlementAgent.d.ts +14 -0
- package/dist/src/agents/SettlementAgent.d.ts.map +1 -0
- package/dist/src/agents/SettlementAgent.js +146 -0
- package/dist/src/agents/SettlementAgent.js.map +1 -0
- package/dist/src/agents/SettlementAgentEnhanced.d.ts +33 -0
- package/dist/src/agents/SettlementAgentEnhanced.d.ts.map +1 -0
- package/dist/src/agents/SettlementAgentEnhanced.js +219 -0
- package/dist/src/agents/SettlementAgentEnhanced.js.map +1 -0
- package/dist/src/agents/VerifierAgent.d.ts +30 -0
- package/dist/src/agents/VerifierAgent.d.ts.map +1 -0
- package/dist/src/agents/VerifierAgent.js +181 -0
- package/dist/src/agents/VerifierAgent.js.map +1 -0
- package/dist/src/agents/index.d.ts +7 -0
- package/dist/src/agents/index.d.ts.map +1 -0
- package/dist/src/agents/index.js +11 -0
- package/dist/src/agents/index.js.map +1 -0
- package/dist/src/facilitator/X402FacilitatorServer.d.ts +17 -0
- package/dist/src/facilitator/X402FacilitatorServer.d.ts.map +1 -0
- package/dist/src/facilitator/X402FacilitatorServer.js +172 -0
- package/dist/src/facilitator/X402FacilitatorServer.js.map +1 -0
- package/dist/src/facilitator/index.d.ts +7 -0
- package/dist/src/facilitator/index.d.ts.map +1 -0
- package/dist/src/facilitator/index.js +11 -0
- package/dist/src/facilitator/index.js.map +1 -0
- package/dist/src/index.d.ts +19 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +39 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/modes/HumanInTheLoopMode.d.ts +92 -0
- package/dist/src/modes/HumanInTheLoopMode.d.ts.map +1 -0
- package/dist/src/modes/HumanInTheLoopMode.js +234 -0
- package/dist/src/modes/HumanInTheLoopMode.js.map +1 -0
- package/dist/src/modes/index.d.ts +8 -0
- package/dist/src/modes/index.d.ts.map +1 -0
- package/dist/src/modes/index.js +11 -0
- package/dist/src/modes/index.js.map +1 -0
- package/dist/src/protocols/A2ANegotiation.d.ts +122 -0
- package/dist/src/protocols/A2ANegotiation.d.ts.map +1 -0
- package/dist/src/protocols/A2ANegotiation.js +230 -0
- package/dist/src/protocols/A2ANegotiation.js.map +1 -0
- package/dist/src/protocols/A2AProtocol.d.ts +49 -0
- package/dist/src/protocols/A2AProtocol.d.ts.map +1 -0
- package/dist/src/protocols/A2AProtocol.js +126 -0
- package/dist/src/protocols/A2AProtocol.js.map +1 -0
- package/dist/src/protocols/AP2Protocol.d.ts +57 -0
- package/dist/src/protocols/AP2Protocol.d.ts.map +1 -0
- package/dist/src/protocols/AP2Protocol.js +121 -0
- package/dist/src/protocols/AP2Protocol.js.map +1 -0
- package/dist/src/protocols/index.d.ts +10 -0
- package/dist/src/protocols/index.d.ts.map +1 -0
- package/dist/src/protocols/index.js +15 -0
- package/dist/src/protocols/index.js.map +1 -0
- package/dist/src/services/index.d.ts +8 -0
- package/dist/src/services/index.d.ts.map +1 -0
- package/dist/src/services/index.js +13 -0
- package/dist/src/services/index.js.map +1 -0
- package/dist/src/utils/env.d.ts +15 -0
- package/dist/src/utils/env.d.ts.map +1 -0
- package/dist/src/utils/env.js +39 -0
- package/dist/src/utils/env.js.map +1 -0
- package/dist/src/utils/index.d.ts +7 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +12 -0
- package/dist/src/utils/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.VerifierAgent = void 0;
|
|
7
|
+
const standards_agent_kit_1 = require("@hashgraphonline/standards-agent-kit");
|
|
8
|
+
const HCS10ConnectionManager_1 = require("../protocols/HCS10ConnectionManager");
|
|
9
|
+
const HCS10TransactionApproval_1 = require("../protocols/HCS10TransactionApproval");
|
|
10
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
+
const dotenv_1 = __importDefault(require("dotenv"));
|
|
12
|
+
// Load environment variables
|
|
13
|
+
dotenv_1.default.config();
|
|
14
|
+
class VerifierAgent {
|
|
15
|
+
hcsClient;
|
|
16
|
+
messageHandlers;
|
|
17
|
+
connectionManager;
|
|
18
|
+
transactionApproval;
|
|
19
|
+
constructor() {
|
|
20
|
+
// Get agent credentials from environment variables
|
|
21
|
+
const agentId = process.env.VERIFIER_AGENT_ID;
|
|
22
|
+
const privateKey = process.env.VERIFIER_PRIVATE_KEY;
|
|
23
|
+
if (!agentId || !privateKey) {
|
|
24
|
+
throw new Error('Missing required environment variables: VERIFIER_AGENT_ID and VERIFIER_PRIVATE_KEY');
|
|
25
|
+
}
|
|
26
|
+
// Check if we have a placeholder private key
|
|
27
|
+
if (privateKey.startsWith('placeholder-key-for-')) {
|
|
28
|
+
console.warn('⚠️ Using placeholder private key. Agent registration may not have captured the actual private key.');
|
|
29
|
+
console.warn('⚠️ For now, we\'ll use the main Hedera account for testing.');
|
|
30
|
+
// Use the main Hedera account credentials for testing
|
|
31
|
+
const mainAccountId = process.env.HEDERA_ACCOUNT_ID;
|
|
32
|
+
const mainPrivateKey = process.env.HEDERA_PRIVATE_KEY;
|
|
33
|
+
if (!mainAccountId || !mainPrivateKey) {
|
|
34
|
+
throw new Error('Missing main Hedera credentials for fallback');
|
|
35
|
+
}
|
|
36
|
+
// Initialize HCS10Client with main account for now
|
|
37
|
+
this.hcsClient = new standards_agent_kit_1.HCS10Client(mainAccountId, mainPrivateKey, 'testnet');
|
|
38
|
+
// Initialize connection manager and transaction approval (optional)
|
|
39
|
+
const useConnections = process.env.USE_HCS10_CONNECTIONS === 'true';
|
|
40
|
+
if (useConnections) {
|
|
41
|
+
this.connectionManager = new HCS10ConnectionManager_1.HCS10ConnectionManager(this.hcsClient, mainAccountId);
|
|
42
|
+
this.transactionApproval = new HCS10TransactionApproval_1.HCS10TransactionApproval(this.hcsClient, mainAccountId);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// Initialize HCS10Client with actual agent credentials
|
|
47
|
+
this.hcsClient = new standards_agent_kit_1.HCS10Client(agentId, privateKey, 'testnet');
|
|
48
|
+
// Initialize connection manager and transaction approval (optional)
|
|
49
|
+
const useConnections = process.env.USE_HCS10_CONNECTIONS === 'true';
|
|
50
|
+
if (useConnections) {
|
|
51
|
+
this.connectionManager = new HCS10ConnectionManager_1.HCS10ConnectionManager(this.hcsClient, agentId);
|
|
52
|
+
this.transactionApproval = new HCS10TransactionApproval_1.HCS10TransactionApproval(this.hcsClient, agentId);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Initialize message handlers map
|
|
56
|
+
this.messageHandlers = new Map();
|
|
57
|
+
}
|
|
58
|
+
async init() {
|
|
59
|
+
try {
|
|
60
|
+
// Get topic ID from environment
|
|
61
|
+
const topicId = process.env.VERIFIER_TOPIC_ID;
|
|
62
|
+
if (!topicId) {
|
|
63
|
+
throw new Error('Missing required environment variable: VERIFIER_TOPIC_ID');
|
|
64
|
+
}
|
|
65
|
+
console.log(chalk_1.default.green('VerifierAgent initialized and ready to process messages'));
|
|
66
|
+
console.log(`🔗 VerifierAgent initialized for Hedera testnet`);
|
|
67
|
+
console.log(`🆔 Agent ID: ${process.env.VERIFIER_AGENT_ID}`);
|
|
68
|
+
console.log(`📡 Topic ID: ${topicId}`);
|
|
69
|
+
console.log(`🔄 Polling for messages every 5 seconds...`);
|
|
70
|
+
// Start polling for messages
|
|
71
|
+
this.startMessagePolling(topicId);
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
console.error('❌ Failed to initialize VerifierAgent:', error);
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
startMessagePolling(topicId) {
|
|
79
|
+
// Poll for messages every 5 seconds
|
|
80
|
+
setInterval(async () => {
|
|
81
|
+
try {
|
|
82
|
+
const result = await this.hcsClient.getMessages(topicId);
|
|
83
|
+
if (result.messages && result.messages.length > 0) {
|
|
84
|
+
console.log(chalk_1.default.green(`📨 Found ${result.messages.length} new message(s)`));
|
|
85
|
+
for (const message of result.messages) {
|
|
86
|
+
await this.handleMessage(message);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
console.error('❌ Error polling for messages:', error);
|
|
92
|
+
}
|
|
93
|
+
}, 5000); // Poll every 5 seconds
|
|
94
|
+
}
|
|
95
|
+
async handleMessage(message) {
|
|
96
|
+
try {
|
|
97
|
+
// Parse message.contents as JSON (HCS10Client returns messages with contents field)
|
|
98
|
+
const parsed = JSON.parse(message.contents || message.data || '{}');
|
|
99
|
+
// Log received message type
|
|
100
|
+
console.log(chalk_1.default.green(`Received message type: ${parsed.type}`));
|
|
101
|
+
// Handle different message types
|
|
102
|
+
if (parsed.type === 'analysis_proposal') {
|
|
103
|
+
await this.validateProposal(parsed);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
// Check for custom handlers
|
|
107
|
+
const handler = this.messageHandlers.get(parsed.type);
|
|
108
|
+
if (handler) {
|
|
109
|
+
await handler(parsed);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
console.log(`No handler registered for message type: ${parsed.type}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
console.error('❌ Error handling message:', error);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
async validateProposal(proposal) {
|
|
121
|
+
try {
|
|
122
|
+
console.log(chalk_1.default.green('Validating proposal...'));
|
|
123
|
+
// Simple validation: approved = proposal.meetsThreshold
|
|
124
|
+
const approved = proposal.meetsThreshold || false;
|
|
125
|
+
// Create result object
|
|
126
|
+
const result = {
|
|
127
|
+
type: 'verification_result',
|
|
128
|
+
originalProposal: proposal,
|
|
129
|
+
approved: approved,
|
|
130
|
+
reasoning: approved
|
|
131
|
+
? `Proposal approved: meets threshold requirements (${proposal.meetsThreshold})`
|
|
132
|
+
: `Proposal rejected: does not meet threshold requirements (${proposal.meetsThreshold})`,
|
|
133
|
+
timestamp: Date.now()
|
|
134
|
+
};
|
|
135
|
+
if (approved) {
|
|
136
|
+
console.log(chalk_1.default.green('✓ Approved'));
|
|
137
|
+
// Send result via hcsClient.sendMessage to SETTLEMENT_TOPIC_ID
|
|
138
|
+
const settlementTopicId = process.env.SETTLEMENT_TOPIC_ID;
|
|
139
|
+
if (!settlementTopicId) {
|
|
140
|
+
throw new Error('Missing required environment variable: SETTLEMENT_TOPIC_ID');
|
|
141
|
+
}
|
|
142
|
+
await this.hcsClient.sendMessage(settlementTopicId, JSON.stringify(result));
|
|
143
|
+
console.log(`📤 Verification result sent to settlement topic: ${settlementTopicId}`);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
console.log(chalk_1.default.yellow('✗ Rejected'));
|
|
147
|
+
}
|
|
148
|
+
// Result is sent via HCS message, no need to return
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
console.error('❌ Error validating proposal:', error);
|
|
152
|
+
throw error;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Register custom message handlers for specific message types
|
|
157
|
+
* @param type - The message type to handle
|
|
158
|
+
* @param handler - The handler function to call when this message type is received
|
|
159
|
+
*/
|
|
160
|
+
onMessage(type, handler) {
|
|
161
|
+
this.messageHandlers.set(type, handler);
|
|
162
|
+
console.log(`📝 Registered handler for message type: ${type}`);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Get connection manager instance (if initialized)
|
|
166
|
+
*/
|
|
167
|
+
getConnectionManager() {
|
|
168
|
+
return this.connectionManager;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Get transaction approval manager instance (if initialized)
|
|
172
|
+
*/
|
|
173
|
+
getTransactionApproval() {
|
|
174
|
+
return this.transactionApproval;
|
|
175
|
+
}
|
|
176
|
+
getHcsClient() {
|
|
177
|
+
return this.hcsClient;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
exports.VerifierAgent = VerifierAgent;
|
|
181
|
+
//# sourceMappingURL=VerifierAgent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VerifierAgent.js","sourceRoot":"","sources":["../../../src/agents/VerifierAgent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Aether Agent SDK - Agents Module
|
|
4
|
+
*
|
|
5
|
+
* Export agent classes
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.SettlementAgent = void 0;
|
|
9
|
+
var SettlementAgent_1 = require("./SettlementAgent");
|
|
10
|
+
Object.defineProperty(exports, "SettlementAgent", { enumerable: true, get: function () { return SettlementAgent_1.SettlementAgent; } });
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,qDAAmD;AAA1C,kHAAA,eAAe,OAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare class X402FacilitatorServer {
|
|
2
|
+
private connection;
|
|
3
|
+
private agentWallet?;
|
|
4
|
+
private usdcMint;
|
|
5
|
+
constructor();
|
|
6
|
+
verify(paymentHeader: string, paymentRequirements: any): Promise<any>;
|
|
7
|
+
private validatePaymentLocally;
|
|
8
|
+
settle(paymentHeader: string, paymentRequirements: any): Promise<any>;
|
|
9
|
+
private executeUSDCTransfer;
|
|
10
|
+
getSupportedSchemes(): {
|
|
11
|
+
kinds: Array<{
|
|
12
|
+
scheme: string;
|
|
13
|
+
network: string;
|
|
14
|
+
}>;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=X402FacilitatorServer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"X402FacilitatorServer.d.ts","sourceRoot":"","sources":["../../../src/facilitator/X402FacilitatorServer.ts"],"names":[],"mappings":"AAYA,qBAAa,qBAAqB;IAChC,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAW;;IAqBrB,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAwB3E,OAAO,CAAC,sBAAsB;IA+CxB,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YAuC7D,mBAAmB;IAwDjC,mBAAmB,IAAI;QAAE,KAAK,EAAE,KAAK,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;CAO7E"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.X402FacilitatorServer = void 0;
|
|
7
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
8
|
+
const spl_token_1 = require("@solana/spl-token");
|
|
9
|
+
const env_1 = require("../utils/env");
|
|
10
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
+
const bs58_1 = __importDefault(require("bs58"));
|
|
12
|
+
(0, env_1.loadEnvIfNeeded)();
|
|
13
|
+
class X402FacilitatorServer {
|
|
14
|
+
connection;
|
|
15
|
+
agentWallet;
|
|
16
|
+
usdcMint;
|
|
17
|
+
constructor() {
|
|
18
|
+
const rpcUrl = process.env.SOLANA_RPC_URL || 'https://api.devnet.solana.com';
|
|
19
|
+
const agentPrivateKey = process.env.AGENT_PRIVATE_KEY;
|
|
20
|
+
const usdcMint = process.env.USDC_MINT || '4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU';
|
|
21
|
+
this.connection = new web3_js_1.Connection(rpcUrl, 'confirmed');
|
|
22
|
+
this.usdcMint = new web3_js_1.PublicKey(usdcMint);
|
|
23
|
+
if (agentPrivateKey) {
|
|
24
|
+
try {
|
|
25
|
+
const privateKeyBytes = bs58_1.default.decode(agentPrivateKey);
|
|
26
|
+
this.agentWallet = web3_js_1.Keypair.fromSecretKey(privateKeyBytes);
|
|
27
|
+
console.log(chalk_1.default.green(`✅ Facilitator initialized with wallet: ${this.agentWallet.publicKey.toBase58()}`));
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.error(chalk_1.default.red('❌ Failed to load agent wallet:'), error);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async verify(paymentHeader, paymentRequirements) {
|
|
35
|
+
try {
|
|
36
|
+
console.log(chalk_1.default.blue('🔍 Facilitator: Verifying payment...'));
|
|
37
|
+
const paymentPayload = JSON.parse(Buffer.from(paymentHeader, 'base64').toString());
|
|
38
|
+
const isValid = this.validatePaymentLocally(paymentPayload, paymentRequirements);
|
|
39
|
+
if (isValid) {
|
|
40
|
+
console.log(chalk_1.default.green('✅ Facilitator: Payment verification successful'));
|
|
41
|
+
return { isValid: true, invalidReason: null };
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
console.log(chalk_1.default.red('❌ Facilitator: Payment verification failed'));
|
|
45
|
+
return { isValid: false, invalidReason: 'Local validation failed' };
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
console.error('❌ Facilitator: Verification error:', error);
|
|
50
|
+
return {
|
|
51
|
+
isValid: false,
|
|
52
|
+
invalidReason: `Verification error: ${error.message}`
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
validatePaymentLocally(paymentPayload, requirements) {
|
|
57
|
+
try {
|
|
58
|
+
if (paymentPayload.x402Version !== 1) {
|
|
59
|
+
console.log(chalk_1.default.red('❌ Invalid x402 version'));
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
if (paymentPayload.scheme !== requirements.scheme) {
|
|
63
|
+
console.log(chalk_1.default.red('❌ Scheme mismatch'));
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
if (paymentPayload.network !== 'solana-devnet') {
|
|
67
|
+
console.log(chalk_1.default.red('❌ Network mismatch - expected solana-devnet'));
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
const authorization = paymentPayload.payload?.authorization;
|
|
71
|
+
if (!authorization) {
|
|
72
|
+
console.log(chalk_1.default.red('❌ No authorization found'));
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
if (authorization.value !== requirements.maxAmountRequired) {
|
|
76
|
+
console.log(chalk_1.default.red('❌ Amount mismatch'));
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
if (authorization.to !== requirements.payTo) {
|
|
80
|
+
console.log(chalk_1.default.red('❌ Recipient mismatch'));
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
const now = Math.floor(Date.now() / 1000);
|
|
84
|
+
if (authorization.validBefore && now > authorization.validBefore) {
|
|
85
|
+
console.log(chalk_1.default.red('❌ Payment expired'));
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
console.log(chalk_1.default.green('✅ All local validations passed'));
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
console.error('❌ Local validation error:', error);
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async settle(paymentHeader, paymentRequirements) {
|
|
97
|
+
try {
|
|
98
|
+
console.log(chalk_1.default.blue('🏦 Facilitator: Settling payment on Solana...'));
|
|
99
|
+
const paymentPayload = JSON.parse(Buffer.from(paymentHeader, 'base64').toString());
|
|
100
|
+
const txHash = await this.executeUSDCTransfer(paymentPayload, paymentRequirements);
|
|
101
|
+
if (txHash) {
|
|
102
|
+
console.log(chalk_1.default.green('✅ Facilitator: Payment settled successfully'));
|
|
103
|
+
console.log(chalk_1.default.blue(`📋 Transaction Signature: ${txHash}`));
|
|
104
|
+
console.log(chalk_1.default.blue(`📋 Network: solana-devnet`));
|
|
105
|
+
return {
|
|
106
|
+
success: true,
|
|
107
|
+
error: null,
|
|
108
|
+
txHash: txHash,
|
|
109
|
+
networkId: 'solana-devnet'
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
console.log(chalk_1.default.red('❌ Facilitator: Payment settlement failed'));
|
|
114
|
+
return {
|
|
115
|
+
success: false,
|
|
116
|
+
error: 'Failed to execute transfer',
|
|
117
|
+
txHash: null,
|
|
118
|
+
networkId: null
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
console.error('❌ Facilitator: Settlement error:', error);
|
|
124
|
+
return {
|
|
125
|
+
success: false,
|
|
126
|
+
error: `Settlement error: ${error.message}`,
|
|
127
|
+
txHash: null,
|
|
128
|
+
networkId: null
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
async executeUSDCTransfer(paymentPayload, requirements) {
|
|
133
|
+
try {
|
|
134
|
+
console.log(chalk_1.default.blue('💰 Executing USDC transfer on Solana...'));
|
|
135
|
+
if (!this.agentWallet) {
|
|
136
|
+
throw new Error('Agent wallet not initialized');
|
|
137
|
+
}
|
|
138
|
+
const authorization = paymentPayload.payload?.authorization;
|
|
139
|
+
if (!authorization) {
|
|
140
|
+
throw new Error('No authorization found in payment payload');
|
|
141
|
+
}
|
|
142
|
+
const recipientAddress = new web3_js_1.PublicKey(authorization.to);
|
|
143
|
+
const amount = Number(authorization.value);
|
|
144
|
+
const token = new spl_token_1.Token(this.connection, this.usdcMint, spl_token_1.TOKEN_PROGRAM_ID, this.agentWallet);
|
|
145
|
+
const fromTokenAccount = await token.getOrCreateAssociatedAccountInfo(this.agentWallet.publicKey);
|
|
146
|
+
const toTokenAccount = await token.getOrCreateAssociatedAccountInfo(recipientAddress);
|
|
147
|
+
console.log(chalk_1.default.blue(`📋 Current USDC balance: ${Number(fromTokenAccount.amount) / 1_000_000} USDC`));
|
|
148
|
+
console.log(chalk_1.default.blue(`📋 Transfer amount: ${amount / 1_000_000} USDC`));
|
|
149
|
+
console.log(chalk_1.default.blue(`📋 Recipient: ${recipientAddress.toBase58()}`));
|
|
150
|
+
if (Number(fromTokenAccount.amount) < amount) {
|
|
151
|
+
throw new Error(`Insufficient USDC balance: ${Number(fromTokenAccount.amount) / 1_000_000} < ${amount / 1_000_000}`);
|
|
152
|
+
}
|
|
153
|
+
console.log(chalk_1.default.yellow('📋 Submitting transaction...'));
|
|
154
|
+
const signature = await token.transfer(fromTokenAccount.address, toTokenAccount.address, this.agentWallet, [], amount);
|
|
155
|
+
console.log(chalk_1.default.green(`✅ Transfer confirmed: ${signature}`));
|
|
156
|
+
return signature;
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
console.error('❌ USDC transfer error:', error);
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
getSupportedSchemes() {
|
|
164
|
+
return {
|
|
165
|
+
kinds: [
|
|
166
|
+
{ scheme: 'exact', network: 'solana-devnet' }
|
|
167
|
+
]
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
exports.X402FacilitatorServer = X402FacilitatorServer;
|
|
172
|
+
//# sourceMappingURL=X402FacilitatorServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"X402FacilitatorServer.js","sourceRoot":"","sources":["../../../src/facilitator/X402FacilitatorServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/facilitator/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Aether Agent SDK - Facilitator Module
|
|
4
|
+
*
|
|
5
|
+
* Export x402 facilitator for Solana
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.X402FacilitatorServer = void 0;
|
|
9
|
+
var X402FacilitatorServer_1 = require("./X402FacilitatorServer");
|
|
10
|
+
Object.defineProperty(exports, "X402FacilitatorServer", { enumerable: true, get: function () { return X402FacilitatorServer_1.X402FacilitatorServer; } });
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/facilitator/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,iEAA+D;AAAtD,8HAAA,qBAAqB,OAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Aether Agent SDK
|
|
3
|
+
*
|
|
4
|
+
* Autonomous Agent Ecosystem SDK for Solana with x402 Payment Protocol
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
export * from './agents';
|
|
9
|
+
export * from './facilitator';
|
|
10
|
+
export * from './utils';
|
|
11
|
+
/**
|
|
12
|
+
* SDK Version
|
|
13
|
+
*/
|
|
14
|
+
export declare const VERSION = "1.0.0";
|
|
15
|
+
/**
|
|
16
|
+
* SDK Name
|
|
17
|
+
*/
|
|
18
|
+
export declare const SDK_NAME = "aether-agent-sdk";
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,cAAc,UAAU,CAAA;AAGxB,cAAc,eAAe,CAAA;AAG7B,cAAc,SAAS,CAAA;AAEvB;;GAEG;AACH,eAAO,MAAM,OAAO,UAAU,CAAA;AAE9B;;GAEG;AACH,eAAO,MAAM,QAAQ,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Aether Agent SDK
|
|
4
|
+
*
|
|
5
|
+
* Autonomous Agent Ecosystem SDK for Solana with x402 Payment Protocol
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
21
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
22
|
+
};
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.SDK_NAME = exports.VERSION = void 0;
|
|
25
|
+
// Agents
|
|
26
|
+
__exportStar(require("./agents"), exports);
|
|
27
|
+
// Facilitator
|
|
28
|
+
__exportStar(require("./facilitator"), exports);
|
|
29
|
+
// Utils
|
|
30
|
+
__exportStar(require("./utils"), exports);
|
|
31
|
+
/**
|
|
32
|
+
* SDK Version
|
|
33
|
+
*/
|
|
34
|
+
exports.VERSION = '1.0.0';
|
|
35
|
+
/**
|
|
36
|
+
* SDK Name
|
|
37
|
+
*/
|
|
38
|
+
exports.SDK_NAME = 'aether-agent-sdk';
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;AAEH,SAAS;AACT,2CAAwB;AAExB,cAAc;AACd,gDAA6B;AAE7B,QAAQ;AACR,0CAAuB;AAEvB;;GAEG;AACU,QAAA,OAAO,GAAG,OAAO,CAAA;AAE9B;;GAEG;AACU,QAAA,QAAQ,GAAG,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Human-in-the-Loop Mode
|
|
3
|
+
*
|
|
4
|
+
* This module implements human approval workflows for autonomous agents.
|
|
5
|
+
* When enabled, agents will pause and request human approval for:
|
|
6
|
+
* - High-value payments
|
|
7
|
+
* - Sensitive operations
|
|
8
|
+
* - Custom-defined approval thresholds
|
|
9
|
+
*
|
|
10
|
+
* Used for the hackathon bonus points requirement
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Approval Request
|
|
14
|
+
*/
|
|
15
|
+
export interface ApprovalRequest {
|
|
16
|
+
requestId: string;
|
|
17
|
+
action: string;
|
|
18
|
+
description: string;
|
|
19
|
+
details: any;
|
|
20
|
+
createdAt: number;
|
|
21
|
+
status?: "pending" | "approved" | "rejected" | "expired";
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Approval Result
|
|
25
|
+
*/
|
|
26
|
+
export interface ApprovalResult {
|
|
27
|
+
approved: boolean;
|
|
28
|
+
requestId: string;
|
|
29
|
+
timestamp: number;
|
|
30
|
+
reason?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Human-in-the-Loop Configuration
|
|
34
|
+
*/
|
|
35
|
+
export interface HITLConfig {
|
|
36
|
+
enabled: boolean;
|
|
37
|
+
requireApprovalFor?: string[];
|
|
38
|
+
approvalThresholds?: {
|
|
39
|
+
payment?: number;
|
|
40
|
+
transaction?: number;
|
|
41
|
+
custom?: Map<string, number>;
|
|
42
|
+
};
|
|
43
|
+
timeout?: number;
|
|
44
|
+
autoApproveTimeout?: boolean;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Human-in-the-Loop Mode Implementation
|
|
48
|
+
*/
|
|
49
|
+
export declare class HumanInTheLoopMode {
|
|
50
|
+
private config;
|
|
51
|
+
private pendingRequests;
|
|
52
|
+
private rl?;
|
|
53
|
+
private callbacks;
|
|
54
|
+
constructor(config?: HITLConfig);
|
|
55
|
+
/**
|
|
56
|
+
* Check if action requires human approval
|
|
57
|
+
*/
|
|
58
|
+
requiresApproval(action: string, details: any): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Request human approval
|
|
61
|
+
*/
|
|
62
|
+
requestApproval(request: Omit<ApprovalRequest, 'requestId' | 'createdAt' | 'status'>): Promise<ApprovalResult>;
|
|
63
|
+
/**
|
|
64
|
+
* Request approval via CLI
|
|
65
|
+
*/
|
|
66
|
+
private requestCLIApproval;
|
|
67
|
+
/**
|
|
68
|
+
* Create approval result
|
|
69
|
+
*/
|
|
70
|
+
private createApprovalResult;
|
|
71
|
+
/**
|
|
72
|
+
* Get pending requests
|
|
73
|
+
*/
|
|
74
|
+
getPendingRequests(): ApprovalRequest[];
|
|
75
|
+
/**
|
|
76
|
+
* Enable HITL mode
|
|
77
|
+
*/
|
|
78
|
+
enable(): void;
|
|
79
|
+
/**
|
|
80
|
+
* Disable HITL mode
|
|
81
|
+
*/
|
|
82
|
+
disable(): void;
|
|
83
|
+
/**
|
|
84
|
+
* Set approval threshold for payments
|
|
85
|
+
*/
|
|
86
|
+
setPaymentThreshold(threshold: number): void;
|
|
87
|
+
/**
|
|
88
|
+
* Cleanup
|
|
89
|
+
*/
|
|
90
|
+
cleanup(): void;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=HumanInTheLoopMode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HumanInTheLoopMode.d.ts","sourceRoot":"","sources":["../../../src/modes/HumanInTheLoopMode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,GAAG,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAA;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,kBAAkB,CAAC,EAAE;QACnB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAC7B,CAAA;IACD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,EAAE,CAAC,CAAoB;IAC/B,OAAO,CAAC,SAAS,CAA2D;gBAEhE,MAAM,CAAC,EAAE,UAAU;IAc/B;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO;IA+BvD;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IA2CpH;;OAEG;YACW,kBAAkB;IA0ChC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkB5B;;OAEG;IACH,kBAAkB,IAAI,eAAe,EAAE;IAIvC;;OAEG;IACH,MAAM,IAAI,IAAI;IAKd;;OAEG;IACH,OAAO,IAAI,IAAI;IAKf;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAQ5C;;OAEG;IACH,OAAO,IAAI,IAAI;CAKhB"}
|