@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,154 @@
1
+ /**
2
+ * A2A (Agent-to-Agent) resource
3
+ *
4
+ * Provides inter-agent communication capabilities:
5
+ * - Discover other agents via agent cards
6
+ * - Send payment requests
7
+ * - Verify credentials
8
+ */
9
+ import { BaseResource } from './base.js';
10
+ // ============ Resource ============
11
+ export class A2AResource extends BaseResource {
12
+ /**
13
+ * Discover an agent by URL
14
+ *
15
+ * Fetches the agent card from /.well-known/agent-card.json
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const agent = await client.a2a.discoverAgent('https://agent.example.com');
20
+ * console.log(agent.card?.capabilities);
21
+ * ```
22
+ */
23
+ async discoverAgent(agentUrl, forceRefresh) {
24
+ return this._post('/api/v2/a2a/discover', {
25
+ agent_url: agentUrl,
26
+ force_refresh: forceRefresh,
27
+ });
28
+ }
29
+ /**
30
+ * Get our own agent card
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * const myCard = await client.a2a.getAgentCard();
35
+ * console.log(myCard.capabilities);
36
+ * ```
37
+ */
38
+ async getAgentCard() {
39
+ return this._get('/api/v2/a2a/agent-card');
40
+ }
41
+ /**
42
+ * List all discovered agents
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * const agents = await client.a2a.listAgents({
47
+ * capability: 'payment.execute',
48
+ * available_only: true,
49
+ * });
50
+ * ```
51
+ */
52
+ async listAgents(options) {
53
+ const response = await this._get('/api/v2/a2a/agents', options);
54
+ if (Array.isArray(response)) {
55
+ return response;
56
+ }
57
+ return response.agents || [];
58
+ }
59
+ /**
60
+ * Send a payment request to another agent
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * const response = await client.a2a.sendPaymentRequest({
65
+ * recipient_agent_url: 'https://merchant.example.com',
66
+ * amount_minor: 5000,
67
+ * token: 'USDC',
68
+ * chain: 'base',
69
+ * destination: '0x...',
70
+ * purpose: 'Order #12345',
71
+ * });
72
+ *
73
+ * if (response.success) {
74
+ * console.log('Payment tx:', response.tx_hash);
75
+ * }
76
+ * ```
77
+ */
78
+ async sendPaymentRequest(input) {
79
+ return this._post('/api/v2/a2a/payment-request', input);
80
+ }
81
+ /**
82
+ * Request credential verification from another agent
83
+ *
84
+ * @example
85
+ * ```typescript
86
+ * const response = await client.a2a.verifyCredential({
87
+ * recipient_agent_url: 'https://verifier.example.com',
88
+ * credential_type: 'mandate',
89
+ * credential_data: mandate,
90
+ * });
91
+ *
92
+ * if (response.valid) {
93
+ * console.log('Credential verified!');
94
+ * }
95
+ * ```
96
+ */
97
+ async verifyCredential(input) {
98
+ return this._post('/api/v2/a2a/verify-credential', input);
99
+ }
100
+ /**
101
+ * Send a raw A2A message to another agent
102
+ *
103
+ * @example
104
+ * ```typescript
105
+ * const response = await client.a2a.sendMessage(
106
+ * 'https://agent.example.com',
107
+ * {
108
+ * message_type: 'custom',
109
+ * payload: { action: 'notify', data: {...} },
110
+ * }
111
+ * );
112
+ * ```
113
+ */
114
+ async sendMessage(recipientUrl, message) {
115
+ return this._post('/api/v2/a2a/messages', {
116
+ recipient_url: recipientUrl,
117
+ ...message,
118
+ });
119
+ }
120
+ /**
121
+ * List recent A2A messages
122
+ *
123
+ * @example
124
+ * ```typescript
125
+ * const messages = await client.a2a.listMessages({
126
+ * direction: 'inbound',
127
+ * message_type: 'payment_request',
128
+ * });
129
+ * ```
130
+ */
131
+ async listMessages(options) {
132
+ const response = await this._get('/api/v2/a2a/messages', options);
133
+ if (Array.isArray(response)) {
134
+ return response;
135
+ }
136
+ return response.messages || [];
137
+ }
138
+ /**
139
+ * Register an agent for discovery
140
+ *
141
+ * @example
142
+ * ```typescript
143
+ * await client.a2a.registerAgent({
144
+ * agent_id: 'my_agent',
145
+ * agent_name: 'My Agent',
146
+ * agent_url: 'https://my-agent.example.com',
147
+ * });
148
+ * ```
149
+ */
150
+ async registerAgent(input) {
151
+ return this._post('/api/v2/a2a/agents/register', input);
152
+ }
153
+ }
154
+ //# sourceMappingURL=a2a.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a2a.js","sourceRoot":"","sources":["../../src/resources/a2a.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAiIzC,qCAAqC;AAErC,MAAM,OAAO,WAAY,SAAQ,YAAY;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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Agents resource
3
+ *
4
+ * Agents are the core identity entities in Sardis. They can:
5
+ * - Own wallets
6
+ * - Issue mandates
7
+ * - Be subject to spending policies
8
+ */
9
+ import { BaseResource } from './base.js';
10
+ import type { Agent, CreateAgentInput, UpdateAgentInput, ListAgentsOptions, RequestOptions } from '../types.js';
11
+ export declare class AgentsResource extends BaseResource {
12
+ private _normalize;
13
+ /**
14
+ * Create a new agent
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const agent = await client.agents.create({
19
+ * name: 'Shopping Agent',
20
+ * description: 'Agent for e-commerce purchases',
21
+ * spending_limits: {
22
+ * per_transaction: '100.00',
23
+ * daily: '500.00',
24
+ * },
25
+ * });
26
+ * ```
27
+ */
28
+ create(input: CreateAgentInput, options?: RequestOptions): Promise<Agent>;
29
+ /**
30
+ * Get an agent by ID
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * const agent = await client.agents.get('agent_abc123');
35
+ * console.log(agent.name, agent.is_active);
36
+ * ```
37
+ */
38
+ get(agentId: string, options?: RequestOptions): Promise<Agent>;
39
+ /**
40
+ * List all agents
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * // List all agents
45
+ * const agents = await client.agents.list();
46
+ *
47
+ * // List with pagination
48
+ * const page = await client.agents.list({ limit: 10, offset: 20 });
49
+ *
50
+ * // List only active agents
51
+ * const active = await client.agents.list({ is_active: true });
52
+ * ```
53
+ */
54
+ list(options?: ListAgentsOptions): Promise<Agent[]>;
55
+ /**
56
+ * Update an agent
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * const updated = await client.agents.update('agent_abc123', {
61
+ * name: 'Updated Name',
62
+ * is_active: false,
63
+ * });
64
+ * ```
65
+ */
66
+ update(agentId: string, input: UpdateAgentInput): Promise<Agent>;
67
+ /**
68
+ * Delete an agent
69
+ *
70
+ * Note: This is a soft delete - the agent is deactivated, not removed.
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ * await client.agents.delete('agent_abc123');
75
+ * ```
76
+ */
77
+ delete(agentId: string): Promise<void>;
78
+ /**
79
+ * Get an agent's associated wallet
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * const wallet = await client.agents.getWallet('agent_abc123');
84
+ * console.log(wallet.addresses);
85
+ * ```
86
+ */
87
+ getWallet(agentId: string): Promise<{
88
+ wallet_id: string;
89
+ addresses: Record<string, string>;
90
+ }>;
91
+ /**
92
+ * Create a wallet for an agent
93
+ *
94
+ * @example
95
+ * ```typescript
96
+ * const wallet = await client.agents.createWallet('agent_abc123', {
97
+ * currency: 'USDC',
98
+ * limit_per_tx: '100.00',
99
+ * });
100
+ * ```
101
+ */
102
+ createWallet(agentId: string, options?: {
103
+ currency?: string;
104
+ limit_per_tx?: string;
105
+ limit_total?: string;
106
+ }): Promise<{
107
+ wallet_id: string;
108
+ addresses: Record<string, string>;
109
+ }>;
110
+ }
111
+ //# sourceMappingURL=agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/resources/agents.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EACV,KAAK,EACL,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACf,MAAM,aAAa,CAAC;AAErB,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,UAAU;IAQlB;;;;;;;;;;;;;;OAcG;IACG,MAAM,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC;IAK/E;;;;;;;;OAQG;IACG,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC;IAKpE;;;;;;;;;;;;;;OAcG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAyBzD;;;;;;;;;;OAUG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC;IAKtE;;;;;;;;;OASG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C;;;;;;;;OAQG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IAInG;;;;;;;;;;OAUG;IACG,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GACA,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CAGrE"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Agents resource
3
+ *
4
+ * Agents are the core identity entities in Sardis. They can:
5
+ * - Own wallets
6
+ * - Issue mandates
7
+ * - Be subject to spending policies
8
+ */
9
+ import { BaseResource } from './base.js';
10
+ export class AgentsResource extends BaseResource {
11
+ _normalize(agent) {
12
+ // Provide backwards-compatible alias: id := agent_id
13
+ if (!agent.id) {
14
+ agent.id = agent.agent_id;
15
+ }
16
+ return agent;
17
+ }
18
+ /**
19
+ * Create a new agent
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const agent = await client.agents.create({
24
+ * name: 'Shopping Agent',
25
+ * description: 'Agent for e-commerce purchases',
26
+ * spending_limits: {
27
+ * per_transaction: '100.00',
28
+ * daily: '500.00',
29
+ * },
30
+ * });
31
+ * ```
32
+ */
33
+ async create(input, options) {
34
+ const agent = await this._post('/api/v2/agents', input, options);
35
+ return this._normalize(agent);
36
+ }
37
+ /**
38
+ * Get an agent by ID
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * const agent = await client.agents.get('agent_abc123');
43
+ * console.log(agent.name, agent.is_active);
44
+ * ```
45
+ */
46
+ async get(agentId, options) {
47
+ const agent = await this._get(`/api/v2/agents/${agentId}`, undefined, options);
48
+ return this._normalize(agent);
49
+ }
50
+ /**
51
+ * List all agents
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * // List all agents
56
+ * const agents = await client.agents.list();
57
+ *
58
+ * // List with pagination
59
+ * const page = await client.agents.list({ limit: 10, offset: 20 });
60
+ *
61
+ * // List only active agents
62
+ * const active = await client.agents.list({ is_active: true });
63
+ * ```
64
+ */
65
+ async list(options) {
66
+ const params = {};
67
+ if (options?.limit !== undefined) {
68
+ params.limit = options.limit;
69
+ }
70
+ if (options?.offset !== undefined) {
71
+ params.offset = options.offset;
72
+ }
73
+ if (options?.is_active !== undefined) {
74
+ params.is_active = options.is_active;
75
+ }
76
+ const response = await this._get('/api/v2/agents', Object.keys(params).length > 0 ? params : undefined);
77
+ // Handle both array and object response formats
78
+ if (Array.isArray(response)) {
79
+ return response.map((a) => this._normalize(a));
80
+ }
81
+ return (response.agents || []).map((a) => this._normalize(a));
82
+ }
83
+ /**
84
+ * Update an agent
85
+ *
86
+ * @example
87
+ * ```typescript
88
+ * const updated = await client.agents.update('agent_abc123', {
89
+ * name: 'Updated Name',
90
+ * is_active: false,
91
+ * });
92
+ * ```
93
+ */
94
+ async update(agentId, input) {
95
+ const agent = await this._patch(`/api/v2/agents/${agentId}`, input);
96
+ return this._normalize(agent);
97
+ }
98
+ /**
99
+ * Delete an agent
100
+ *
101
+ * Note: This is a soft delete - the agent is deactivated, not removed.
102
+ *
103
+ * @example
104
+ * ```typescript
105
+ * await client.agents.delete('agent_abc123');
106
+ * ```
107
+ */
108
+ async delete(agentId) {
109
+ await this._delete(`/api/v2/agents/${agentId}`);
110
+ }
111
+ /**
112
+ * Get an agent's associated wallet
113
+ *
114
+ * @example
115
+ * ```typescript
116
+ * const wallet = await client.agents.getWallet('agent_abc123');
117
+ * console.log(wallet.addresses);
118
+ * ```
119
+ */
120
+ async getWallet(agentId) {
121
+ return this._get(`/api/v2/agents/${agentId}/wallet`);
122
+ }
123
+ /**
124
+ * Create a wallet for an agent
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * const wallet = await client.agents.createWallet('agent_abc123', {
129
+ * currency: 'USDC',
130
+ * limit_per_tx: '100.00',
131
+ * });
132
+ * ```
133
+ */
134
+ async createWallet(agentId, options) {
135
+ return this._post(`/api/v2/agents/${agentId}/wallet`, options || {});
136
+ }
137
+ }
138
+ //# 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,115 @@
1
+ /**
2
+ * Base resource class for all API resources.
3
+ *
4
+ * Provides common HTTP methods with support for:
5
+ * - Request options (params, data, signal, timeout)
6
+ * - Request cancellation via AbortController
7
+ * - Consistent error handling
8
+ *
9
+ * @packageDocumentation
10
+ */
11
+ import type { SardisClient } from '../client.js';
12
+ import type { RequestOptions } from '../types.js';
13
+ /**
14
+ * Abstract base class for API resources.
15
+ *
16
+ * All resource classes extend this class to gain access to
17
+ * HTTP methods that integrate with the SardisClient.
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * class MyResource extends BaseResource {
22
+ * async getItem(id: string, options?: RequestOptions) {
23
+ * return this._get<Item>(`/api/v2/items/${id}`, undefined, options);
24
+ * }
25
+ * }
26
+ * ```
27
+ */
28
+ export declare abstract class BaseResource {
29
+ /**
30
+ * The SardisClient instance used for HTTP requests.
31
+ * @internal
32
+ */
33
+ protected client: SardisClient;
34
+ /**
35
+ * Creates a new BaseResource instance.
36
+ *
37
+ * @param client - The SardisClient instance
38
+ */
39
+ constructor(client: SardisClient);
40
+ /**
41
+ * Performs a GET request.
42
+ *
43
+ * @typeParam T - The expected response type
44
+ * @param path - API path
45
+ * @param params - Query parameters
46
+ * @param options - Request options (signal, timeout)
47
+ * @returns The response data
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * const result = await this._get<Item[]>('/api/v2/items', { limit: 10 });
52
+ * ```
53
+ */
54
+ protected _get<T>(path: string, params?: Record<string, unknown>, options?: RequestOptions): Promise<T>;
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
+ protected _post<T>(path: string, data?: unknown, options?: RequestOptions): Promise<T>;
70
+ /**
71
+ * Performs a PATCH request.
72
+ *
73
+ * @typeParam T - The expected response type
74
+ * @param path - API path
75
+ * @param data - Request body with partial updates
76
+ * @param options - Request options (signal, timeout)
77
+ * @returns The response data
78
+ *
79
+ * @example
80
+ * ```typescript
81
+ * const result = await this._patch<Item>('/api/v2/items/123', { name: 'Updated' });
82
+ * ```
83
+ */
84
+ protected _patch<T>(path: string, data?: unknown, options?: RequestOptions): Promise<T>;
85
+ /**
86
+ * Performs a PUT request.
87
+ *
88
+ * @typeParam T - The expected response type
89
+ * @param path - API path
90
+ * @param data - Request body
91
+ * @param options - Request options (signal, timeout)
92
+ * @returns The response data
93
+ *
94
+ * @example
95
+ * ```typescript
96
+ * const result = await this._put<Item>('/api/v2/items/123', { name: 'Replaced' });
97
+ * ```
98
+ */
99
+ protected _put<T>(path: string, data?: unknown, options?: RequestOptions): Promise<T>;
100
+ /**
101
+ * Performs a DELETE request.
102
+ *
103
+ * @typeParam T - The expected response type
104
+ * @param path - API path
105
+ * @param options - Request options (signal, timeout)
106
+ * @returns The response data (if any)
107
+ *
108
+ * @example
109
+ * ```typescript
110
+ * await this._delete('/api/v2/items/123');
111
+ * ```
112
+ */
113
+ protected _delete<T>(path: string, options?: RequestOptions): Promise<T>;
114
+ }
115
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/resources/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;;;;;GAcG;AACH,8BAAsB,YAAY;IAChC;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC;IAE/B;;;;OAIG;gBACS,MAAM,EAAE,YAAY;IAIhC;;;;;;;;;;;;;OAaG;cACa,IAAI,CAAC,CAAC,EACpB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,CAAC,CAAC;IAIb;;;;;;;;;;;;;OAaG;cACa,KAAK,CAAC,CAAC,EACrB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,CAAC,CAAC;IAIb;;;;;;;;;;;;;OAaG;cACa,MAAM,CAAC,CAAC,EACtB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,CAAC,CAAC;IAIb;;;;;;;;;;;;;OAaG;cACa,IAAI,CAAC,CAAC,EACpB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,CAAC,CAAC;IAIb;;;;;;;;;;;;OAYG;cACa,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;CAG/E"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Base resource class for all API resources.
3
+ *
4
+ * Provides common HTTP methods with support for:
5
+ * - Request options (params, data, signal, timeout)
6
+ * - Request cancellation via AbortController
7
+ * - Consistent error handling
8
+ *
9
+ * @packageDocumentation
10
+ */
11
+ /**
12
+ * Abstract base class for API resources.
13
+ *
14
+ * All resource classes extend this class to gain access to
15
+ * HTTP methods that integrate with the SardisClient.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * class MyResource extends BaseResource {
20
+ * async getItem(id: string, options?: RequestOptions) {
21
+ * return this._get<Item>(`/api/v2/items/${id}`, undefined, options);
22
+ * }
23
+ * }
24
+ * ```
25
+ */
26
+ export class BaseResource {
27
+ /**
28
+ * Creates a new BaseResource instance.
29
+ *
30
+ * @param client - The SardisClient instance
31
+ */
32
+ constructor(client) {
33
+ this.client = client;
34
+ }
35
+ /**
36
+ * Performs a GET request.
37
+ *
38
+ * @typeParam T - The expected response type
39
+ * @param path - API path
40
+ * @param params - Query parameters
41
+ * @param options - Request options (signal, timeout)
42
+ * @returns The response data
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * const result = await this._get<Item[]>('/api/v2/items', { limit: 10 });
47
+ * ```
48
+ */
49
+ async _get(path, params, options) {
50
+ return this.client.request('GET', path, { ...options, params: params ?? options?.params });
51
+ }
52
+ /**
53
+ * Performs a POST request.
54
+ *
55
+ * @typeParam T - The expected response type
56
+ * @param path - API path
57
+ * @param data - Request body
58
+ * @param options - Request options (signal, timeout)
59
+ * @returns The response data
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * const result = await this._post<Item>('/api/v2/items', { name: 'New Item' });
64
+ * ```
65
+ */
66
+ async _post(path, data, options) {
67
+ return this.client.request('POST', path, { ...options, data: data ?? options?.data });
68
+ }
69
+ /**
70
+ * Performs a PATCH request.
71
+ *
72
+ * @typeParam T - The expected response type
73
+ * @param path - API path
74
+ * @param data - Request body with partial updates
75
+ * @param options - Request options (signal, timeout)
76
+ * @returns The response data
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * const result = await this._patch<Item>('/api/v2/items/123', { name: 'Updated' });
81
+ * ```
82
+ */
83
+ async _patch(path, data, options) {
84
+ return this.client.request('PATCH', path, { ...options, data: data ?? options?.data });
85
+ }
86
+ /**
87
+ * Performs a PUT request.
88
+ *
89
+ * @typeParam T - The expected response type
90
+ * @param path - API path
91
+ * @param data - Request body
92
+ * @param options - Request options (signal, timeout)
93
+ * @returns The response data
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * const result = await this._put<Item>('/api/v2/items/123', { name: 'Replaced' });
98
+ * ```
99
+ */
100
+ async _put(path, data, options) {
101
+ return this.client.request('PUT', path, { ...options, data: data ?? options?.data });
102
+ }
103
+ /**
104
+ * Performs a DELETE request.
105
+ *
106
+ * @typeParam T - The expected response type
107
+ * @param path - API path
108
+ * @param options - Request options (signal, timeout)
109
+ * @returns The response data (if any)
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * await this._delete('/api/v2/items/123');
114
+ * ```
115
+ */
116
+ async _delete(path, options) {
117
+ return this.client.request('DELETE', path, options);
118
+ }
119
+ }
120
+ //# 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,MAAM,OAAgB,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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Cards Resource
3
+ *
4
+ * Virtual card issuance + simulated purchase demo flow.
5
+ */
6
+ import { BaseResource } from './base.js';
7
+ import type { Card, CardTransaction, IssueCardInput, UpdateCardLimitsInput, SimulateCardPurchaseInput, SimulateCardPurchaseResponse, RequestOptions } from '../types.js';
8
+ export declare class CardsResource extends BaseResource {
9
+ issue(input: IssueCardInput, options?: RequestOptions): Promise<Card>;
10
+ list(wallet_id?: string, options?: RequestOptions): Promise<Card[]>;
11
+ get(card_id: string, options?: RequestOptions): Promise<Card>;
12
+ freeze(card_id: string, options?: RequestOptions): Promise<Card>;
13
+ unfreeze(card_id: string, options?: RequestOptions): Promise<Card>;
14
+ cancel(card_id: string, options?: RequestOptions): Promise<void>;
15
+ updateLimits(card_id: string, input: UpdateCardLimitsInput, options?: RequestOptions): Promise<Card>;
16
+ transactions(card_id: string, limit?: number, options?: RequestOptions): Promise<CardTransaction[]>;
17
+ simulatePurchase(card_id: string, input: SimulateCardPurchaseInput, options?: RequestOptions): Promise<SimulateCardPurchaseResponse>;
18
+ }
19
+ //# sourceMappingURL=cards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cards.d.ts","sourceRoot":"","sources":["../../src/resources/cards.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EACV,IAAI,EACJ,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,yBAAyB,EACzB,4BAA4B,EAC5B,cAAc,EACf,MAAM,aAAa,CAAC;AAErB,qBAAa,aAAc,SAAQ,YAAY;IACvC,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE,IAAI,CACR,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,IAAI,EAAE,CAAC;IAMZ,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhE,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,qBAAqB,EAC5B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC;IAIV,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAQvG,gBAAgB,CACpB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,yBAAyB,EAChC,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,4BAA4B,CAAC;CAOzC"}