@sardis/sdk 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +47 -0
- package/LICENSE +21 -0
- package/README.md +439 -0
- package/dist/browser/index.js +7049 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/sardis.umd.js +7071 -0
- package/dist/browser/sardis.umd.js.map +1 -0
- package/dist/cjs/client.js +644 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/demo.js +699 -0
- package/dist/cjs/demo.js.map +1 -0
- package/dist/cjs/errors.js +630 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/index.js +131 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/integrations/index.js +21 -0
- package/dist/cjs/integrations/index.js.map +1 -0
- package/dist/cjs/integrations/langchain.js +339 -0
- package/dist/cjs/integrations/langchain.js.map +1 -0
- package/dist/cjs/integrations/openai.js +505 -0
- package/dist/cjs/integrations/openai.js.map +1 -0
- package/dist/cjs/integrations/vercel-ai.js +198 -0
- package/dist/cjs/integrations/vercel-ai.js.map +1 -0
- package/dist/cjs/resources/a2a.js +158 -0
- package/dist/cjs/resources/a2a.js.map +1 -0
- package/dist/cjs/resources/agents.js +142 -0
- package/dist/cjs/resources/agents.js.map +1 -0
- package/dist/cjs/resources/base.js +124 -0
- package/dist/cjs/resources/base.js.map +1 -0
- package/dist/cjs/resources/cards.js +43 -0
- package/dist/cjs/resources/cards.js.map +1 -0
- package/dist/cjs/resources/holds.js +64 -0
- package/dist/cjs/resources/holds.js.map +1 -0
- package/dist/cjs/resources/index.js +31 -0
- package/dist/cjs/resources/index.js.map +1 -0
- package/dist/cjs/resources/ledger.js +43 -0
- package/dist/cjs/resources/ledger.js.map +1 -0
- package/dist/cjs/resources/marketplace.js +88 -0
- package/dist/cjs/resources/marketplace.js.map +1 -0
- package/dist/cjs/resources/payments.js +33 -0
- package/dist/cjs/resources/payments.js.map +1 -0
- package/dist/cjs/resources/policies.js +31 -0
- package/dist/cjs/resources/policies.js.map +1 -0
- package/dist/cjs/resources/transactions.js +37 -0
- package/dist/cjs/resources/transactions.js.map +1 -0
- package/dist/cjs/resources/ucp.js +133 -0
- package/dist/cjs/resources/ucp.js.map +1 -0
- package/dist/cjs/resources/wallets.js +109 -0
- package/dist/cjs/resources/wallets.js.map +1 -0
- package/dist/cjs/resources/webhooks.js +81 -0
- package/dist/cjs/resources/webhooks.js.map +1 -0
- package/dist/cjs/types.js +11 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/client.d.ts +419 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +637 -0
- package/dist/client.js.map +1 -0
- package/dist/demo.d.ts +335 -0
- package/dist/demo.d.ts.map +1 -0
- package/dist/demo.js +694 -0
- package/dist/demo.js.map +1 -0
- package/dist/errors.d.ts +522 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +612 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +83 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +85 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/index.d.ts +4 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +5 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/integrations/langchain.d.ts +68 -0
- package/dist/integrations/langchain.d.ts.map +1 -0
- package/dist/integrations/langchain.js +335 -0
- package/dist/integrations/langchain.js.map +1 -0
- package/dist/integrations/openai.d.ts +97 -0
- package/dist/integrations/openai.d.ts.map +1 -0
- package/dist/integrations/openai.js +467 -0
- package/dist/integrations/openai.js.map +1 -0
- package/dist/integrations/vercel-ai.d.ts +180 -0
- package/dist/integrations/vercel-ai.d.ts.map +1 -0
- package/dist/integrations/vercel-ai.js +194 -0
- package/dist/integrations/vercel-ai.js.map +1 -0
- package/dist/resources/a2a.d.ts +254 -0
- package/dist/resources/a2a.d.ts.map +1 -0
- package/dist/resources/a2a.js +154 -0
- package/dist/resources/a2a.js.map +1 -0
- package/dist/resources/agents.d.ts +111 -0
- package/dist/resources/agents.d.ts.map +1 -0
- package/dist/resources/agents.js +138 -0
- package/dist/resources/agents.js.map +1 -0
- package/dist/resources/base.d.ts +115 -0
- package/dist/resources/base.d.ts.map +1 -0
- package/dist/resources/base.js +120 -0
- package/dist/resources/base.js.map +1 -0
- package/dist/resources/cards.d.ts +19 -0
- package/dist/resources/cards.d.ts.map +1 -0
- package/dist/resources/cards.js +39 -0
- package/dist/resources/cards.js.map +1 -0
- package/dist/resources/holds.d.ts +44 -0
- package/dist/resources/holds.d.ts.map +1 -0
- package/dist/resources/holds.js +60 -0
- package/dist/resources/holds.js.map +1 -0
- package/dist/resources/index.d.ts +16 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +16 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/ledger.d.ts +38 -0
- package/dist/resources/ledger.d.ts.map +1 -0
- package/dist/resources/ledger.js +39 -0
- package/dist/resources/ledger.js.map +1 -0
- package/dist/resources/marketplace.d.ts +60 -0
- package/dist/resources/marketplace.d.ts.map +1 -0
- package/dist/resources/marketplace.js +84 -0
- package/dist/resources/marketplace.js.map +1 -0
- package/dist/resources/payments.d.ts +24 -0
- package/dist/resources/payments.d.ts.map +1 -0
- package/dist/resources/payments.js +29 -0
- package/dist/resources/payments.js.map +1 -0
- package/dist/resources/policies.d.ts +23 -0
- package/dist/resources/policies.d.ts.map +1 -0
- package/dist/resources/policies.js +27 -0
- package/dist/resources/policies.js.map +1 -0
- package/dist/resources/transactions.d.ts +32 -0
- package/dist/resources/transactions.d.ts.map +1 -0
- package/dist/resources/transactions.js +33 -0
- package/dist/resources/transactions.js.map +1 -0
- package/dist/resources/ucp.d.ts +218 -0
- package/dist/resources/ucp.d.ts.map +1 -0
- package/dist/resources/ucp.js +129 -0
- package/dist/resources/ucp.js.map +1 -0
- package/dist/resources/wallets.d.ts +71 -0
- package/dist/resources/wallets.d.ts.map +1 -0
- package/dist/resources/wallets.js +105 -0
- package/dist/resources/wallets.js.map +1 -0
- package/dist/resources/webhooks.d.ts +57 -0
- package/dist/resources/webhooks.d.ts.map +1 -0
- package/dist/resources/webhooks.js +77 -0
- package/dist/resources/webhooks.js.map +1 -0
- package/dist/types.d.ts +1045 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -0
- package/package.json +114 -0
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSardisTools = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
/**
|
|
6
|
+
* Create Sardis tools for Vercel AI SDK integration.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { generateText } from 'ai';
|
|
11
|
+
* import { SardisClient } from '@sardis/sdk';
|
|
12
|
+
* import { createSardisTools } from '@sardis/sdk/integrations/vercel-ai';
|
|
13
|
+
*
|
|
14
|
+
* const client = new SardisClient({ apiKey: 'your-api-key' });
|
|
15
|
+
* const tools = createSardisTools(client, {
|
|
16
|
+
* walletId: 'wallet_123',
|
|
17
|
+
* agentId: 'agent_456'
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* const result = await generateText({
|
|
21
|
+
* model: yourModel,
|
|
22
|
+
* tools,
|
|
23
|
+
* prompt: 'Pay $50 to OpenAI for API credits'
|
|
24
|
+
* });
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
const createSardisTools = (client, options = {}) => {
|
|
28
|
+
const sardis = client;
|
|
29
|
+
const defaultWalletId = options.walletId || process.env.SARDIS_WALLET_ID || '';
|
|
30
|
+
const defaultChain = options.chain || 'base_sepolia';
|
|
31
|
+
const defaultToken = options.token || 'USDC';
|
|
32
|
+
return {
|
|
33
|
+
/**
|
|
34
|
+
* Execute a secure payment using Sardis MPC wallet.
|
|
35
|
+
*/
|
|
36
|
+
payVendor: {
|
|
37
|
+
description: 'Execute a secure payment using Sardis MPC wallet. Validates against spending policies before execution.',
|
|
38
|
+
parameters: zod_1.z.object({
|
|
39
|
+
amount: zod_1.z.number().describe('The amount to pay in USD (or token units).'),
|
|
40
|
+
vendor: zod_1.z.string().describe('The name of the merchant or service provider.'),
|
|
41
|
+
vendorAddress: zod_1.z.string().optional().describe('The wallet address of the vendor (0x...).'),
|
|
42
|
+
purpose: zod_1.z.string().optional().describe('The reason for the payment, used for policy validation.'),
|
|
43
|
+
walletId: zod_1.z.string().optional().describe('The wallet ID to pay from. Defaults to configured wallet.'),
|
|
44
|
+
token: zod_1.z.enum(['USDC', 'USDT', 'PYUSD', 'EURC']).optional().describe('The stablecoin to use. Defaults to USDC.'),
|
|
45
|
+
chain: zod_1.z.string().optional().describe('The chain to use (e.g. base_sepolia). Defaults to configured chain.'),
|
|
46
|
+
domain: zod_1.z.string().optional().describe('Policy context label (e.g. aws.amazon.com). Defaults to vendor.'),
|
|
47
|
+
}),
|
|
48
|
+
execute: async ({ amount, vendor, vendorAddress, purpose, walletId, token, chain, domain, }) => {
|
|
49
|
+
if (!sardis) {
|
|
50
|
+
return {
|
|
51
|
+
success: false,
|
|
52
|
+
error: "SardisClient not initialized. Please provide a client instance."
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
const effectiveWalletId = walletId || defaultWalletId;
|
|
56
|
+
if (!effectiveWalletId) {
|
|
57
|
+
return {
|
|
58
|
+
success: false,
|
|
59
|
+
error: "No wallet ID provided. Set walletId in options or SARDIS_WALLET_ID env var."
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
const effectiveToken = token || defaultToken;
|
|
64
|
+
const effectiveChain = chain || defaultChain;
|
|
65
|
+
const effectiveDomain = domain || vendor;
|
|
66
|
+
if (!vendorAddress) {
|
|
67
|
+
return {
|
|
68
|
+
success: false,
|
|
69
|
+
error: "Missing vendorAddress (destination). Provide a wallet address (0x...) for the vendor."
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
const result = await sardis.wallets.transfer(effectiveWalletId, {
|
|
73
|
+
destination: vendorAddress,
|
|
74
|
+
amount: amount.toString(),
|
|
75
|
+
token: effectiveToken,
|
|
76
|
+
chain: effectiveChain,
|
|
77
|
+
domain: effectiveDomain,
|
|
78
|
+
memo: purpose,
|
|
79
|
+
});
|
|
80
|
+
return {
|
|
81
|
+
success: true,
|
|
82
|
+
status: result.status,
|
|
83
|
+
transactionHash: result.tx_hash,
|
|
84
|
+
chain: result.chain,
|
|
85
|
+
auditAnchor: result.audit_anchor,
|
|
86
|
+
message: `Payment of $${amount} ${effectiveToken} to ${vendor} ${result.status === 'completed' ? 'completed' : 'initiated'} successfully.`
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
const errorMessage = error instanceof Error ? error.message : 'Payment failed';
|
|
91
|
+
// Check if this is a policy violation
|
|
92
|
+
if (errorMessage.includes('policy') || errorMessage.includes('blocked') || errorMessage.includes('limit')) {
|
|
93
|
+
return {
|
|
94
|
+
success: false,
|
|
95
|
+
blocked: true,
|
|
96
|
+
error: errorMessage,
|
|
97
|
+
message: `Payment to ${vendor} was blocked by spending policy: ${errorMessage}`
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
success: false,
|
|
102
|
+
error: errorMessage
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
/**
|
|
108
|
+
* Check wallet balance before making a payment.
|
|
109
|
+
*/
|
|
110
|
+
checkBalance: {
|
|
111
|
+
description: 'Check the current balance of a Sardis wallet.',
|
|
112
|
+
parameters: zod_1.z.object({
|
|
113
|
+
walletId: zod_1.z.string().optional().describe('The wallet ID to check. Defaults to configured wallet.'),
|
|
114
|
+
token: zod_1.z.enum(['USDC', 'USDT', 'PYUSD', 'EURC']).optional().describe('The token to check balance for.'),
|
|
115
|
+
chain: zod_1.z.string().optional().describe('The chain to check balance on.'),
|
|
116
|
+
}),
|
|
117
|
+
execute: async ({ walletId, token, chain }) => {
|
|
118
|
+
if (!sardis) {
|
|
119
|
+
return {
|
|
120
|
+
success: false,
|
|
121
|
+
error: "SardisClient not initialized"
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
const effectiveWalletId = walletId || defaultWalletId;
|
|
125
|
+
if (!effectiveWalletId) {
|
|
126
|
+
return {
|
|
127
|
+
success: false,
|
|
128
|
+
error: "No wallet ID provided"
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
try {
|
|
132
|
+
const balance = await sardis.wallets.getBalance(effectiveWalletId, chain || defaultChain, token || defaultToken);
|
|
133
|
+
return {
|
|
134
|
+
success: true,
|
|
135
|
+
walletId: balance.wallet_id,
|
|
136
|
+
balance: balance.balance,
|
|
137
|
+
token: balance.token,
|
|
138
|
+
chain: balance.chain,
|
|
139
|
+
address: balance.address
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
return {
|
|
144
|
+
success: false,
|
|
145
|
+
error: error instanceof Error ? error.message : 'Failed to get balance'
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
},
|
|
150
|
+
/**
|
|
151
|
+
* Get wallet information.
|
|
152
|
+
*/
|
|
153
|
+
getWallet: {
|
|
154
|
+
description: 'Get information about a Sardis wallet including spending limits.',
|
|
155
|
+
parameters: zod_1.z.object({
|
|
156
|
+
walletId: zod_1.z.string().optional().describe('The wallet ID to get info for. Defaults to configured wallet.'),
|
|
157
|
+
}),
|
|
158
|
+
execute: async ({ walletId }) => {
|
|
159
|
+
if (!sardis) {
|
|
160
|
+
return {
|
|
161
|
+
success: false,
|
|
162
|
+
error: "SardisClient not initialized"
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
const effectiveWalletId = walletId || defaultWalletId;
|
|
166
|
+
if (!effectiveWalletId) {
|
|
167
|
+
return {
|
|
168
|
+
success: false,
|
|
169
|
+
error: "No wallet ID provided"
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
try {
|
|
173
|
+
const wallet = await sardis.wallets.get(effectiveWalletId);
|
|
174
|
+
return {
|
|
175
|
+
success: true,
|
|
176
|
+
wallet: {
|
|
177
|
+
id: wallet.id,
|
|
178
|
+
agentId: wallet.agent_id,
|
|
179
|
+
currency: wallet.currency,
|
|
180
|
+
limitPerTx: wallet.limit_per_tx,
|
|
181
|
+
limitTotal: wallet.limit_total,
|
|
182
|
+
isActive: wallet.is_active,
|
|
183
|
+
addresses: wallet.addresses
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
return {
|
|
189
|
+
success: false,
|
|
190
|
+
error: error instanceof Error ? error.message : 'Failed to get wallet'
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
},
|
|
195
|
+
};
|
|
196
|
+
};
|
|
197
|
+
exports.createSardisTools = createSardisTools;
|
|
198
|
+
//# sourceMappingURL=vercel-ai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vercel-ai.js","sourceRoot":"","sources":["../../../src/integrations/vercel-ai.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* A2A (Agent-to-Agent) resource
|
|
4
|
+
*
|
|
5
|
+
* Provides inter-agent communication capabilities:
|
|
6
|
+
* - Discover other agents via agent cards
|
|
7
|
+
* - Send payment requests
|
|
8
|
+
* - Verify credentials
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.A2AResource = void 0;
|
|
12
|
+
const base_js_1 = require("./base.js");
|
|
13
|
+
// ============ Resource ============
|
|
14
|
+
class A2AResource extends base_js_1.BaseResource {
|
|
15
|
+
/**
|
|
16
|
+
* Discover an agent by URL
|
|
17
|
+
*
|
|
18
|
+
* Fetches the agent card from /.well-known/agent-card.json
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const agent = await client.a2a.discoverAgent('https://agent.example.com');
|
|
23
|
+
* console.log(agent.card?.capabilities);
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
async discoverAgent(agentUrl, forceRefresh) {
|
|
27
|
+
return this._post('/api/v2/a2a/discover', {
|
|
28
|
+
agent_url: agentUrl,
|
|
29
|
+
force_refresh: forceRefresh,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get our own agent card
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* const myCard = await client.a2a.getAgentCard();
|
|
38
|
+
* console.log(myCard.capabilities);
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
async getAgentCard() {
|
|
42
|
+
return this._get('/api/v2/a2a/agent-card');
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* List all discovered agents
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* const agents = await client.a2a.listAgents({
|
|
50
|
+
* capability: 'payment.execute',
|
|
51
|
+
* available_only: true,
|
|
52
|
+
* });
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
async listAgents(options) {
|
|
56
|
+
const response = await this._get('/api/v2/a2a/agents', options);
|
|
57
|
+
if (Array.isArray(response)) {
|
|
58
|
+
return response;
|
|
59
|
+
}
|
|
60
|
+
return response.agents || [];
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Send a payment request to another agent
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* const response = await client.a2a.sendPaymentRequest({
|
|
68
|
+
* recipient_agent_url: 'https://merchant.example.com',
|
|
69
|
+
* amount_minor: 5000,
|
|
70
|
+
* token: 'USDC',
|
|
71
|
+
* chain: 'base',
|
|
72
|
+
* destination: '0x...',
|
|
73
|
+
* purpose: 'Order #12345',
|
|
74
|
+
* });
|
|
75
|
+
*
|
|
76
|
+
* if (response.success) {
|
|
77
|
+
* console.log('Payment tx:', response.tx_hash);
|
|
78
|
+
* }
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
async sendPaymentRequest(input) {
|
|
82
|
+
return this._post('/api/v2/a2a/payment-request', input);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Request credential verification from another agent
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* const response = await client.a2a.verifyCredential({
|
|
90
|
+
* recipient_agent_url: 'https://verifier.example.com',
|
|
91
|
+
* credential_type: 'mandate',
|
|
92
|
+
* credential_data: mandate,
|
|
93
|
+
* });
|
|
94
|
+
*
|
|
95
|
+
* if (response.valid) {
|
|
96
|
+
* console.log('Credential verified!');
|
|
97
|
+
* }
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
async verifyCredential(input) {
|
|
101
|
+
return this._post('/api/v2/a2a/verify-credential', input);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Send a raw A2A message to another agent
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* ```typescript
|
|
108
|
+
* const response = await client.a2a.sendMessage(
|
|
109
|
+
* 'https://agent.example.com',
|
|
110
|
+
* {
|
|
111
|
+
* message_type: 'custom',
|
|
112
|
+
* payload: { action: 'notify', data: {...} },
|
|
113
|
+
* }
|
|
114
|
+
* );
|
|
115
|
+
* ```
|
|
116
|
+
*/
|
|
117
|
+
async sendMessage(recipientUrl, message) {
|
|
118
|
+
return this._post('/api/v2/a2a/messages', {
|
|
119
|
+
recipient_url: recipientUrl,
|
|
120
|
+
...message,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* List recent A2A messages
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```typescript
|
|
128
|
+
* const messages = await client.a2a.listMessages({
|
|
129
|
+
* direction: 'inbound',
|
|
130
|
+
* message_type: 'payment_request',
|
|
131
|
+
* });
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
async listMessages(options) {
|
|
135
|
+
const response = await this._get('/api/v2/a2a/messages', options);
|
|
136
|
+
if (Array.isArray(response)) {
|
|
137
|
+
return response;
|
|
138
|
+
}
|
|
139
|
+
return response.messages || [];
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Register an agent for discovery
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* ```typescript
|
|
146
|
+
* await client.a2a.registerAgent({
|
|
147
|
+
* agent_id: 'my_agent',
|
|
148
|
+
* agent_name: 'My Agent',
|
|
149
|
+
* agent_url: 'https://my-agent.example.com',
|
|
150
|
+
* });
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
async registerAgent(input) {
|
|
154
|
+
return this._post('/api/v2/a2a/agents/register', input);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
exports.A2AResource = A2AResource;
|
|
158
|
+
//# sourceMappingURL=a2a.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2a.js","sourceRoot":"","sources":["../../../src/resources/a2a.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,uCAAyC;AAiIzC,qCAAqC;AAErC,MAAa,WAAY,SAAQ,sBAAY;IAC3C;;;;;;;;;;OAUG;IACH,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,YAAsB;QAC1D,OAAO,IAAI,CAAC,KAAK,CAAkB,sBAAsB,EAAE;YACzD,SAAS,EAAE,QAAQ;YACnB,aAAa,EAAE,YAAY;SAC5B,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,IAAI,CAAY,wBAAwB,CAAC,CAAC;IACxD,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,UAAU,CAAC,OAKhB;QACC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAC9B,oBAAoB,EACpB,OAAO,CACR,CAAC;QAEF,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,CAAC,kBAAkB,CAAC,KAA0B;QACjD,OAAO,IAAI,CAAC,KAAK,CAAkB,6BAA6B,EAAE,KAAK,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,gBAAgB,CAAC,KAA4B;QACjD,OAAO,IAAI,CAAC,KAAK,CAAqB,+BAA+B,EAAE,KAAK,CAAC,CAAC;IAChF,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,WAAW,CACf,YAAoB,EACpB,OAA4B;QAE5B,OAAO,IAAI,CAAC,KAAK,CAAa,sBAAsB,EAAE;YACpD,aAAa,EAAE,YAAY;YAC3B,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,YAAY,CAAC,OAMlB;QACC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAC9B,sBAAsB,EACtB,OAAO,CACR,CAAC;QAEF,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;IACjC,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,aAAa,CAAC,KAKnB;QACC,OAAO,IAAI,CAAC,KAAK,CAAkB,6BAA6B,EAAE,KAAK,CAAC,CAAC;IAC3E,CAAC;CACF;AAhLD,kCAgLC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Agents resource
|
|
4
|
+
*
|
|
5
|
+
* Agents are the core identity entities in Sardis. They can:
|
|
6
|
+
* - Own wallets
|
|
7
|
+
* - Issue mandates
|
|
8
|
+
* - Be subject to spending policies
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.AgentsResource = void 0;
|
|
12
|
+
const base_js_1 = require("./base.js");
|
|
13
|
+
class AgentsResource extends base_js_1.BaseResource {
|
|
14
|
+
_normalize(agent) {
|
|
15
|
+
// Provide backwards-compatible alias: id := agent_id
|
|
16
|
+
if (!agent.id) {
|
|
17
|
+
agent.id = agent.agent_id;
|
|
18
|
+
}
|
|
19
|
+
return agent;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Create a new agent
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* const agent = await client.agents.create({
|
|
27
|
+
* name: 'Shopping Agent',
|
|
28
|
+
* description: 'Agent for e-commerce purchases',
|
|
29
|
+
* spending_limits: {
|
|
30
|
+
* per_transaction: '100.00',
|
|
31
|
+
* daily: '500.00',
|
|
32
|
+
* },
|
|
33
|
+
* });
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
async create(input, options) {
|
|
37
|
+
const agent = await this._post('/api/v2/agents', input, options);
|
|
38
|
+
return this._normalize(agent);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Get an agent by ID
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* const agent = await client.agents.get('agent_abc123');
|
|
46
|
+
* console.log(agent.name, agent.is_active);
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
async get(agentId, options) {
|
|
50
|
+
const agent = await this._get(`/api/v2/agents/${agentId}`, undefined, options);
|
|
51
|
+
return this._normalize(agent);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* List all agents
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* // List all agents
|
|
59
|
+
* const agents = await client.agents.list();
|
|
60
|
+
*
|
|
61
|
+
* // List with pagination
|
|
62
|
+
* const page = await client.agents.list({ limit: 10, offset: 20 });
|
|
63
|
+
*
|
|
64
|
+
* // List only active agents
|
|
65
|
+
* const active = await client.agents.list({ is_active: true });
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
async list(options) {
|
|
69
|
+
const params = {};
|
|
70
|
+
if (options?.limit !== undefined) {
|
|
71
|
+
params.limit = options.limit;
|
|
72
|
+
}
|
|
73
|
+
if (options?.offset !== undefined) {
|
|
74
|
+
params.offset = options.offset;
|
|
75
|
+
}
|
|
76
|
+
if (options?.is_active !== undefined) {
|
|
77
|
+
params.is_active = options.is_active;
|
|
78
|
+
}
|
|
79
|
+
const response = await this._get('/api/v2/agents', Object.keys(params).length > 0 ? params : undefined);
|
|
80
|
+
// Handle both array and object response formats
|
|
81
|
+
if (Array.isArray(response)) {
|
|
82
|
+
return response.map((a) => this._normalize(a));
|
|
83
|
+
}
|
|
84
|
+
return (response.agents || []).map((a) => this._normalize(a));
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Update an agent
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* const updated = await client.agents.update('agent_abc123', {
|
|
92
|
+
* name: 'Updated Name',
|
|
93
|
+
* is_active: false,
|
|
94
|
+
* });
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
async update(agentId, input) {
|
|
98
|
+
const agent = await this._patch(`/api/v2/agents/${agentId}`, input);
|
|
99
|
+
return this._normalize(agent);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Delete an agent
|
|
103
|
+
*
|
|
104
|
+
* Note: This is a soft delete - the agent is deactivated, not removed.
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* ```typescript
|
|
108
|
+
* await client.agents.delete('agent_abc123');
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
async delete(agentId) {
|
|
112
|
+
await this._delete(`/api/v2/agents/${agentId}`);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Get an agent's associated wallet
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```typescript
|
|
119
|
+
* const wallet = await client.agents.getWallet('agent_abc123');
|
|
120
|
+
* console.log(wallet.addresses);
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
async getWallet(agentId) {
|
|
124
|
+
return this._get(`/api/v2/agents/${agentId}/wallet`);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Create a wallet for an agent
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* ```typescript
|
|
131
|
+
* const wallet = await client.agents.createWallet('agent_abc123', {
|
|
132
|
+
* currency: 'USDC',
|
|
133
|
+
* limit_per_tx: '100.00',
|
|
134
|
+
* });
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
async createWallet(agentId, options) {
|
|
138
|
+
return this._post(`/api/v2/agents/${agentId}/wallet`, options || {});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
exports.AgentsResource = AgentsResource;
|
|
142
|
+
//# sourceMappingURL=agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../../src/resources/agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Base resource class for all API resources.
|
|
4
|
+
*
|
|
5
|
+
* Provides common HTTP methods with support for:
|
|
6
|
+
* - Request options (params, data, signal, timeout)
|
|
7
|
+
* - Request cancellation via AbortController
|
|
8
|
+
* - Consistent error handling
|
|
9
|
+
*
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.BaseResource = void 0;
|
|
14
|
+
/**
|
|
15
|
+
* Abstract base class for API resources.
|
|
16
|
+
*
|
|
17
|
+
* All resource classes extend this class to gain access to
|
|
18
|
+
* HTTP methods that integrate with the SardisClient.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* class MyResource extends BaseResource {
|
|
23
|
+
* async getItem(id: string, options?: RequestOptions) {
|
|
24
|
+
* return this._get<Item>(`/api/v2/items/${id}`, undefined, options);
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
class BaseResource {
|
|
30
|
+
/**
|
|
31
|
+
* Creates a new BaseResource instance.
|
|
32
|
+
*
|
|
33
|
+
* @param client - The SardisClient instance
|
|
34
|
+
*/
|
|
35
|
+
constructor(client) {
|
|
36
|
+
this.client = client;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Performs a GET request.
|
|
40
|
+
*
|
|
41
|
+
* @typeParam T - The expected response type
|
|
42
|
+
* @param path - API path
|
|
43
|
+
* @param params - Query parameters
|
|
44
|
+
* @param options - Request options (signal, timeout)
|
|
45
|
+
* @returns The response data
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* const result = await this._get<Item[]>('/api/v2/items', { limit: 10 });
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
async _get(path, params, options) {
|
|
53
|
+
return this.client.request('GET', path, { ...options, params: params ?? options?.params });
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Performs a POST request.
|
|
57
|
+
*
|
|
58
|
+
* @typeParam T - The expected response type
|
|
59
|
+
* @param path - API path
|
|
60
|
+
* @param data - Request body
|
|
61
|
+
* @param options - Request options (signal, timeout)
|
|
62
|
+
* @returns The response data
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* const result = await this._post<Item>('/api/v2/items', { name: 'New Item' });
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
async _post(path, data, options) {
|
|
70
|
+
return this.client.request('POST', path, { ...options, data: data ?? options?.data });
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Performs a PATCH request.
|
|
74
|
+
*
|
|
75
|
+
* @typeParam T - The expected response type
|
|
76
|
+
* @param path - API path
|
|
77
|
+
* @param data - Request body with partial updates
|
|
78
|
+
* @param options - Request options (signal, timeout)
|
|
79
|
+
* @returns The response data
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```typescript
|
|
83
|
+
* const result = await this._patch<Item>('/api/v2/items/123', { name: 'Updated' });
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
async _patch(path, data, options) {
|
|
87
|
+
return this.client.request('PATCH', path, { ...options, data: data ?? options?.data });
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Performs a PUT request.
|
|
91
|
+
*
|
|
92
|
+
* @typeParam T - The expected response type
|
|
93
|
+
* @param path - API path
|
|
94
|
+
* @param data - Request body
|
|
95
|
+
* @param options - Request options (signal, timeout)
|
|
96
|
+
* @returns The response data
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* ```typescript
|
|
100
|
+
* const result = await this._put<Item>('/api/v2/items/123', { name: 'Replaced' });
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
async _put(path, data, options) {
|
|
104
|
+
return this.client.request('PUT', path, { ...options, data: data ?? options?.data });
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Performs a DELETE request.
|
|
108
|
+
*
|
|
109
|
+
* @typeParam T - The expected response type
|
|
110
|
+
* @param path - API path
|
|
111
|
+
* @param options - Request options (signal, timeout)
|
|
112
|
+
* @returns The response data (if any)
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```typescript
|
|
116
|
+
* await this._delete('/api/v2/items/123');
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
async _delete(path, options) {
|
|
120
|
+
return this.client.request('DELETE', path, options);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
exports.BaseResource = BaseResource;
|
|
124
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/resources/base.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAKH;;;;;;;;;;;;;;GAcG;AACH,MAAsB,YAAY;IAOhC;;;;OAIG;IACH,YAAY,MAAoB;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;;;;;;;;;;OAaG;IACO,KAAK,CAAC,IAAI,CAClB,IAAY,EACZ,MAAgC,EAChC,OAAwB;QAExB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAChG,CAAC;IAED;;;;;;;;;;;;;OAaG;IACO,KAAK,CAAC,KAAK,CACnB,IAAY,EACZ,IAAc,EACd,OAAwB;QAExB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAI,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED;;;;;;;;;;;;;OAaG;IACO,KAAK,CAAC,MAAM,CACpB,IAAY,EACZ,IAAc,EACd,OAAwB;QAExB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAI,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED;;;;;;;;;;;;;OAaG;IACO,KAAK,CAAC,IAAI,CAClB,IAAY,EACZ,IAAc,EACd,OAAwB;QAExB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED;;;;;;;;;;;;OAYG;IACO,KAAK,CAAC,OAAO,CAAI,IAAY,EAAE,OAAwB;QAC/D,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAI,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;CACF;AAxHD,oCAwHC"}
|