@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.
Files changed (146) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/LICENSE +21 -0
  3. package/README.md +439 -0
  4. package/dist/browser/index.js +7049 -0
  5. package/dist/browser/index.js.map +1 -0
  6. package/dist/browser/sardis.umd.js +7071 -0
  7. package/dist/browser/sardis.umd.js.map +1 -0
  8. package/dist/cjs/client.js +644 -0
  9. package/dist/cjs/client.js.map +1 -0
  10. package/dist/cjs/demo.js +699 -0
  11. package/dist/cjs/demo.js.map +1 -0
  12. package/dist/cjs/errors.js +630 -0
  13. package/dist/cjs/errors.js.map +1 -0
  14. package/dist/cjs/index.js +131 -0
  15. package/dist/cjs/index.js.map +1 -0
  16. package/dist/cjs/integrations/index.js +21 -0
  17. package/dist/cjs/integrations/index.js.map +1 -0
  18. package/dist/cjs/integrations/langchain.js +339 -0
  19. package/dist/cjs/integrations/langchain.js.map +1 -0
  20. package/dist/cjs/integrations/openai.js +505 -0
  21. package/dist/cjs/integrations/openai.js.map +1 -0
  22. package/dist/cjs/integrations/vercel-ai.js +198 -0
  23. package/dist/cjs/integrations/vercel-ai.js.map +1 -0
  24. package/dist/cjs/resources/a2a.js +158 -0
  25. package/dist/cjs/resources/a2a.js.map +1 -0
  26. package/dist/cjs/resources/agents.js +142 -0
  27. package/dist/cjs/resources/agents.js.map +1 -0
  28. package/dist/cjs/resources/base.js +124 -0
  29. package/dist/cjs/resources/base.js.map +1 -0
  30. package/dist/cjs/resources/cards.js +43 -0
  31. package/dist/cjs/resources/cards.js.map +1 -0
  32. package/dist/cjs/resources/holds.js +64 -0
  33. package/dist/cjs/resources/holds.js.map +1 -0
  34. package/dist/cjs/resources/index.js +31 -0
  35. package/dist/cjs/resources/index.js.map +1 -0
  36. package/dist/cjs/resources/ledger.js +43 -0
  37. package/dist/cjs/resources/ledger.js.map +1 -0
  38. package/dist/cjs/resources/marketplace.js +88 -0
  39. package/dist/cjs/resources/marketplace.js.map +1 -0
  40. package/dist/cjs/resources/payments.js +33 -0
  41. package/dist/cjs/resources/payments.js.map +1 -0
  42. package/dist/cjs/resources/policies.js +31 -0
  43. package/dist/cjs/resources/policies.js.map +1 -0
  44. package/dist/cjs/resources/transactions.js +37 -0
  45. package/dist/cjs/resources/transactions.js.map +1 -0
  46. package/dist/cjs/resources/ucp.js +133 -0
  47. package/dist/cjs/resources/ucp.js.map +1 -0
  48. package/dist/cjs/resources/wallets.js +109 -0
  49. package/dist/cjs/resources/wallets.js.map +1 -0
  50. package/dist/cjs/resources/webhooks.js +81 -0
  51. package/dist/cjs/resources/webhooks.js.map +1 -0
  52. package/dist/cjs/types.js +11 -0
  53. package/dist/cjs/types.js.map +1 -0
  54. package/dist/client.d.ts +419 -0
  55. package/dist/client.d.ts.map +1 -0
  56. package/dist/client.js +637 -0
  57. package/dist/client.js.map +1 -0
  58. package/dist/demo.d.ts +335 -0
  59. package/dist/demo.d.ts.map +1 -0
  60. package/dist/demo.js +694 -0
  61. package/dist/demo.js.map +1 -0
  62. package/dist/errors.d.ts +522 -0
  63. package/dist/errors.d.ts.map +1 -0
  64. package/dist/errors.js +612 -0
  65. package/dist/errors.js.map +1 -0
  66. package/dist/index.d.ts +83 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +85 -0
  69. package/dist/index.js.map +1 -0
  70. package/dist/integrations/index.d.ts +4 -0
  71. package/dist/integrations/index.d.ts.map +1 -0
  72. package/dist/integrations/index.js +5 -0
  73. package/dist/integrations/index.js.map +1 -0
  74. package/dist/integrations/langchain.d.ts +68 -0
  75. package/dist/integrations/langchain.d.ts.map +1 -0
  76. package/dist/integrations/langchain.js +335 -0
  77. package/dist/integrations/langchain.js.map +1 -0
  78. package/dist/integrations/openai.d.ts +97 -0
  79. package/dist/integrations/openai.d.ts.map +1 -0
  80. package/dist/integrations/openai.js +467 -0
  81. package/dist/integrations/openai.js.map +1 -0
  82. package/dist/integrations/vercel-ai.d.ts +180 -0
  83. package/dist/integrations/vercel-ai.d.ts.map +1 -0
  84. package/dist/integrations/vercel-ai.js +194 -0
  85. package/dist/integrations/vercel-ai.js.map +1 -0
  86. package/dist/resources/a2a.d.ts +254 -0
  87. package/dist/resources/a2a.d.ts.map +1 -0
  88. package/dist/resources/a2a.js +154 -0
  89. package/dist/resources/a2a.js.map +1 -0
  90. package/dist/resources/agents.d.ts +111 -0
  91. package/dist/resources/agents.d.ts.map +1 -0
  92. package/dist/resources/agents.js +138 -0
  93. package/dist/resources/agents.js.map +1 -0
  94. package/dist/resources/base.d.ts +115 -0
  95. package/dist/resources/base.d.ts.map +1 -0
  96. package/dist/resources/base.js +120 -0
  97. package/dist/resources/base.js.map +1 -0
  98. package/dist/resources/cards.d.ts +19 -0
  99. package/dist/resources/cards.d.ts.map +1 -0
  100. package/dist/resources/cards.js +39 -0
  101. package/dist/resources/cards.js.map +1 -0
  102. package/dist/resources/holds.d.ts +44 -0
  103. package/dist/resources/holds.d.ts.map +1 -0
  104. package/dist/resources/holds.js +60 -0
  105. package/dist/resources/holds.js.map +1 -0
  106. package/dist/resources/index.d.ts +16 -0
  107. package/dist/resources/index.d.ts.map +1 -0
  108. package/dist/resources/index.js +16 -0
  109. package/dist/resources/index.js.map +1 -0
  110. package/dist/resources/ledger.d.ts +38 -0
  111. package/dist/resources/ledger.d.ts.map +1 -0
  112. package/dist/resources/ledger.js +39 -0
  113. package/dist/resources/ledger.js.map +1 -0
  114. package/dist/resources/marketplace.d.ts +60 -0
  115. package/dist/resources/marketplace.d.ts.map +1 -0
  116. package/dist/resources/marketplace.js +84 -0
  117. package/dist/resources/marketplace.js.map +1 -0
  118. package/dist/resources/payments.d.ts +24 -0
  119. package/dist/resources/payments.d.ts.map +1 -0
  120. package/dist/resources/payments.js +29 -0
  121. package/dist/resources/payments.js.map +1 -0
  122. package/dist/resources/policies.d.ts +23 -0
  123. package/dist/resources/policies.d.ts.map +1 -0
  124. package/dist/resources/policies.js +27 -0
  125. package/dist/resources/policies.js.map +1 -0
  126. package/dist/resources/transactions.d.ts +32 -0
  127. package/dist/resources/transactions.d.ts.map +1 -0
  128. package/dist/resources/transactions.js +33 -0
  129. package/dist/resources/transactions.js.map +1 -0
  130. package/dist/resources/ucp.d.ts +218 -0
  131. package/dist/resources/ucp.d.ts.map +1 -0
  132. package/dist/resources/ucp.js +129 -0
  133. package/dist/resources/ucp.js.map +1 -0
  134. package/dist/resources/wallets.d.ts +71 -0
  135. package/dist/resources/wallets.d.ts.map +1 -0
  136. package/dist/resources/wallets.js +105 -0
  137. package/dist/resources/wallets.js.map +1 -0
  138. package/dist/resources/webhooks.d.ts +57 -0
  139. package/dist/resources/webhooks.d.ts.map +1 -0
  140. package/dist/resources/webhooks.js +77 -0
  141. package/dist/resources/webhooks.js.map +1 -0
  142. package/dist/types.d.ts +1045 -0
  143. package/dist/types.d.ts.map +1 -0
  144. package/dist/types.js +10 -0
  145. package/dist/types.js.map +1 -0
  146. 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"}