@virtuals-protocol/acp-node-v2 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/README.md +453 -0
  2. package/dist/acpAgent.d.ts +103 -0
  3. package/dist/acpAgent.d.ts.map +1 -0
  4. package/dist/acpAgent.js +423 -0
  5. package/dist/acpAgent.js.map +1 -0
  6. package/dist/acpJob.d.ts +35 -0
  7. package/dist/acpJob.d.ts.map +1 -0
  8. package/dist/acpJob.js +62 -0
  9. package/dist/acpJob.js.map +1 -0
  10. package/dist/clientFactory.d.ts +10 -0
  11. package/dist/clientFactory.d.ts.map +1 -0
  12. package/dist/clientFactory.js +28 -0
  13. package/dist/clientFactory.js.map +1 -0
  14. package/dist/clients/baseAcpClient.d.ts +43 -0
  15. package/dist/clients/baseAcpClient.d.ts.map +1 -0
  16. package/dist/clients/baseAcpClient.js +40 -0
  17. package/dist/clients/baseAcpClient.js.map +1 -0
  18. package/dist/clients/evmAcpClient.d.ts +33 -0
  19. package/dist/clients/evmAcpClient.d.ts.map +1 -0
  20. package/dist/clients/evmAcpClient.js +164 -0
  21. package/dist/clients/evmAcpClient.js.map +1 -0
  22. package/dist/clients/solanaAcpClient.d.ts +29 -0
  23. package/dist/clients/solanaAcpClient.d.ts.map +1 -0
  24. package/dist/clients/solanaAcpClient.js +102 -0
  25. package/dist/clients/solanaAcpClient.js.map +1 -0
  26. package/dist/core/acpAbi.d.ts +944 -0
  27. package/dist/core/acpAbi.d.ts.map +1 -0
  28. package/dist/core/acpAbi.js +750 -0
  29. package/dist/core/acpAbi.js.map +1 -0
  30. package/dist/core/assetToken.d.ts +16 -0
  31. package/dist/core/assetToken.d.ts.map +1 -0
  32. package/dist/core/assetToken.js +50 -0
  33. package/dist/core/assetToken.js.map +1 -0
  34. package/dist/core/chains.d.ts +36 -0
  35. package/dist/core/chains.d.ts.map +1 -0
  36. package/dist/core/chains.js +49 -0
  37. package/dist/core/chains.js.map +1 -0
  38. package/dist/core/constants.d.ts +25 -0
  39. package/dist/core/constants.d.ts.map +1 -0
  40. package/dist/core/constants.js +56 -0
  41. package/dist/core/constants.js.map +1 -0
  42. package/dist/core/fundTransferHookAbi.d.ts +464 -0
  43. package/dist/core/fundTransferHookAbi.d.ts.map +1 -0
  44. package/dist/core/fundTransferHookAbi.js +347 -0
  45. package/dist/core/fundTransferHookAbi.js.map +1 -0
  46. package/dist/core/operations.d.ts +72 -0
  47. package/dist/core/operations.d.ts.map +1 -0
  48. package/dist/core/operations.js +2 -0
  49. package/dist/core/operations.js.map +1 -0
  50. package/dist/events/acpApiClient.d.ts +11 -0
  51. package/dist/events/acpApiClient.d.ts.map +1 -0
  52. package/dist/events/acpApiClient.js +57 -0
  53. package/dist/events/acpApiClient.js.map +1 -0
  54. package/dist/events/acpHttpClient.d.ts +18 -0
  55. package/dist/events/acpHttpClient.d.ts.map +1 -0
  56. package/dist/events/acpHttpClient.js +78 -0
  57. package/dist/events/acpHttpClient.js.map +1 -0
  58. package/dist/events/socketTransport.d.ts +18 -0
  59. package/dist/events/socketTransport.d.ts.map +1 -0
  60. package/dist/events/socketTransport.js +117 -0
  61. package/dist/events/socketTransport.js.map +1 -0
  62. package/dist/events/sseTransport.d.ts +17 -0
  63. package/dist/events/sseTransport.d.ts.map +1 -0
  64. package/dist/events/sseTransport.js +101 -0
  65. package/dist/events/sseTransport.js.map +1 -0
  66. package/dist/events/types.d.ts +197 -0
  67. package/dist/events/types.d.ts.map +1 -0
  68. package/dist/events/types.js +13 -0
  69. package/dist/events/types.js.map +1 -0
  70. package/dist/examples/buyer-fund.d.ts +2 -0
  71. package/dist/examples/buyer-fund.d.ts.map +1 -0
  72. package/dist/examples/buyer-fund.js +51 -0
  73. package/dist/examples/buyer-fund.js.map +1 -0
  74. package/dist/examples/buyer-llm.d.ts +2 -0
  75. package/dist/examples/buyer-llm.d.ts.map +1 -0
  76. package/dist/examples/buyer-llm.js +92 -0
  77. package/dist/examples/buyer-llm.js.map +1 -0
  78. package/dist/examples/buyer.d.ts +2 -0
  79. package/dist/examples/buyer.d.ts.map +1 -0
  80. package/dist/examples/buyer.js +66 -0
  81. package/dist/examples/buyer.js.map +1 -0
  82. package/dist/examples/seller-fund.d.ts +2 -0
  83. package/dist/examples/seller-fund.d.ts.map +1 -0
  84. package/dist/examples/seller-fund.js +48 -0
  85. package/dist/examples/seller-fund.js.map +1 -0
  86. package/dist/examples/seller-llm.d.ts +2 -0
  87. package/dist/examples/seller-llm.d.ts.map +1 -0
  88. package/dist/examples/seller-llm.js +85 -0
  89. package/dist/examples/seller-llm.js.map +1 -0
  90. package/dist/examples/seller.d.ts +2 -0
  91. package/dist/examples/seller.d.ts.map +1 -0
  92. package/dist/examples/seller.js +50 -0
  93. package/dist/examples/seller.js.map +1 -0
  94. package/dist/examples-local/buyer-fund.d.ts +2 -0
  95. package/dist/examples-local/buyer-fund.d.ts.map +1 -0
  96. package/dist/examples-local/buyer-fund.js +69 -0
  97. package/dist/examples-local/buyer-fund.js.map +1 -0
  98. package/dist/examples-local/buyer-llm.d.ts +2 -0
  99. package/dist/examples-local/buyer-llm.d.ts.map +1 -0
  100. package/dist/examples-local/buyer-llm.js +112 -0
  101. package/dist/examples-local/buyer-llm.js.map +1 -0
  102. package/dist/examples-local/buyer-search.d.ts +2 -0
  103. package/dist/examples-local/buyer-search.d.ts.map +1 -0
  104. package/dist/examples-local/buyer-search.js +72 -0
  105. package/dist/examples-local/buyer-search.js.map +1 -0
  106. package/dist/examples-local/buyer.d.ts +2 -0
  107. package/dist/examples-local/buyer.d.ts.map +1 -0
  108. package/dist/examples-local/buyer.js +65 -0
  109. package/dist/examples-local/buyer.js.map +1 -0
  110. package/dist/examples-local/seller-dumb.d.ts +2 -0
  111. package/dist/examples-local/seller-dumb.d.ts.map +1 -0
  112. package/dist/examples-local/seller-dumb.js +42 -0
  113. package/dist/examples-local/seller-dumb.js.map +1 -0
  114. package/dist/examples-local/seller-fund.d.ts +2 -0
  115. package/dist/examples-local/seller-fund.d.ts.map +1 -0
  116. package/dist/examples-local/seller-fund.js +46 -0
  117. package/dist/examples-local/seller-fund.js.map +1 -0
  118. package/dist/examples-local/seller-llm.d.ts +2 -0
  119. package/dist/examples-local/seller-llm.d.ts.map +1 -0
  120. package/dist/examples-local/seller-llm.js +84 -0
  121. package/dist/examples-local/seller-llm.js.map +1 -0
  122. package/dist/examples-local/seller.d.ts +2 -0
  123. package/dist/examples-local/seller.d.ts.map +1 -0
  124. package/dist/examples-local/seller.js +50 -0
  125. package/dist/examples-local/seller.js.map +1 -0
  126. package/dist/index.d.ts +23 -0
  127. package/dist/index.d.ts.map +1 -0
  128. package/dist/index.js +28 -0
  129. package/dist/index.js.map +1 -0
  130. package/dist/jobSession.d.ts +37 -0
  131. package/dist/jobSession.d.ts.map +1 -0
  132. package/dist/jobSession.js +370 -0
  133. package/dist/jobSession.js.map +1 -0
  134. package/dist/providers/evm/alchemyEvmProviderAdapter.d.ts +28 -0
  135. package/dist/providers/evm/alchemyEvmProviderAdapter.d.ts.map +1 -0
  136. package/dist/providers/evm/alchemyEvmProviderAdapter.js +110 -0
  137. package/dist/providers/evm/alchemyEvmProviderAdapter.js.map +1 -0
  138. package/dist/providers/evm/privyAlchemyEvmProviderAdapter.d.ts +32 -0
  139. package/dist/providers/evm/privyAlchemyEvmProviderAdapter.d.ts.map +1 -0
  140. package/dist/providers/evm/privyAlchemyEvmProviderAdapter.js +252 -0
  141. package/dist/providers/evm/privyAlchemyEvmProviderAdapter.js.map +1 -0
  142. package/dist/providers/evm/viemProviderAdapter.d.ts +17 -0
  143. package/dist/providers/evm/viemProviderAdapter.d.ts.map +1 -0
  144. package/dist/providers/evm/viemProviderAdapter.js +37 -0
  145. package/dist/providers/evm/viemProviderAdapter.js.map +1 -0
  146. package/dist/providers/providerAuthClient.d.ts +18 -0
  147. package/dist/providers/providerAuthClient.d.ts.map +1 -0
  148. package/dist/providers/providerAuthClient.js +48 -0
  149. package/dist/providers/providerAuthClient.js.map +1 -0
  150. package/dist/providers/solana/solanaProviderAdapter.d.ts +12 -0
  151. package/dist/providers/solana/solanaProviderAdapter.d.ts.map +1 -0
  152. package/dist/providers/solana/solanaProviderAdapter.js +23 -0
  153. package/dist/providers/solana/solanaProviderAdapter.js.map +1 -0
  154. package/dist/providers/types.d.ts +45 -0
  155. package/dist/providers/types.d.ts.map +1 -0
  156. package/dist/providers/types.js +2 -0
  157. package/dist/providers/types.js.map +1 -0
  158. package/dist/utils/events.d.ts +17 -0
  159. package/dist/utils/events.d.ts.map +1 -0
  160. package/dist/utils/events.js +48 -0
  161. package/dist/utils/events.js.map +1 -0
  162. package/package.json +34 -0
@@ -0,0 +1,370 @@
1
+ import { AcpJob } from "./acpJob";
2
+ import { AssetToken } from "./core/assetToken";
3
+ const EVENT_TO_STATUS = {
4
+ "job.created": "open",
5
+ "budget.set": "budget_set",
6
+ "job.funded": "funded",
7
+ "job.submitted": "submitted",
8
+ "job.completed": "completed",
9
+ "job.rejected": "rejected",
10
+ "job.expired": "expired",
11
+ };
12
+ // ---------------------------------------------------------------------------
13
+ // Tool definitions
14
+ // ---------------------------------------------------------------------------
15
+ function param(name, type, description, required = true) {
16
+ return { name, type, description, required };
17
+ }
18
+ const TOOL_SEND_MESSAGE = {
19
+ name: "sendMessage",
20
+ description: "Send a message to the other parties in this job room.",
21
+ parameters: [
22
+ param("content", "string", "The message content"),
23
+ param("contentType", "string", "One of: text, proposal, deliverable, structured", false),
24
+ ],
25
+ };
26
+ const TOOL_SET_BUDGET = {
27
+ name: "setBudget",
28
+ description: "Propose a budget for this job (USDC amount).",
29
+ parameters: [param("amount", "number", "USDC amount for the budget")],
30
+ };
31
+ const TOOL_FUND = {
32
+ name: "fund",
33
+ description: "Fund this job with the agreed budget (USDC amount).",
34
+ parameters: [param("amount", "number", "USDC amount to fund")],
35
+ };
36
+ const TOOL_SUBMIT = {
37
+ name: "submit",
38
+ description: "Submit a deliverable for this job.",
39
+ parameters: [
40
+ param("deliverable", "string", "The deliverable content or reference"),
41
+ ],
42
+ };
43
+ const TOOL_COMPLETE = {
44
+ name: "complete",
45
+ description: "Approve and complete this job.",
46
+ parameters: [
47
+ param("reason", "string", "Reason for completion / evaluation notes"),
48
+ ],
49
+ };
50
+ const TOOL_REJECT = {
51
+ name: "reject",
52
+ description: "Reject this job or deliverable.",
53
+ parameters: [param("reason", "string", "Reason for rejection")],
54
+ };
55
+ const TOOL_WAIT = {
56
+ name: "wait",
57
+ description: "Do nothing and wait. Use this when there is no action required from you right now.",
58
+ parameters: [],
59
+ };
60
+ const TOOL_MATRIX = {
61
+ provider: {
62
+ open: [TOOL_SET_BUDGET, TOOL_SEND_MESSAGE, TOOL_WAIT],
63
+ budget_set: [TOOL_SET_BUDGET],
64
+ funded: [TOOL_SUBMIT],
65
+ submitted: [],
66
+ completed: [],
67
+ rejected: [],
68
+ },
69
+ client: {
70
+ open: [TOOL_SEND_MESSAGE, TOOL_WAIT],
71
+ budget_set: [TOOL_SEND_MESSAGE, TOOL_FUND, TOOL_WAIT],
72
+ funded: [],
73
+ submitted: [],
74
+ completed: [],
75
+ rejected: [],
76
+ },
77
+ evaluator: {
78
+ open: [],
79
+ budget_set: [],
80
+ funded: [],
81
+ submitted: [TOOL_COMPLETE, TOOL_REJECT],
82
+ completed: [],
83
+ rejected: [],
84
+ },
85
+ };
86
+ // ---------------------------------------------------------------------------
87
+ // JobSession
88
+ // ---------------------------------------------------------------------------
89
+ export class JobSession {
90
+ constructor(agent, agentAddress, jobId, chainId, roles, initialEntries = []) {
91
+ this.entries = [];
92
+ this._job = null;
93
+ this.agent = agent;
94
+ this.agentAddress = agentAddress.toLowerCase();
95
+ this.jobId = jobId;
96
+ this.chainId = chainId;
97
+ this.roles = roles;
98
+ this.entries.push(...initialEntries);
99
+ }
100
+ get job() {
101
+ return this._job;
102
+ }
103
+ async fetchJob() {
104
+ try {
105
+ const data = await this.agent.getApi().getJob(this.chainId, this.jobId);
106
+ if (!data) {
107
+ throw new Error(`Job ${this.jobId} not found on chain ${this.chainId}`);
108
+ }
109
+ this._job = AcpJob.fromOffChain(data);
110
+ return this._job;
111
+ }
112
+ catch {
113
+ throw new Error(`Failed to fetch job ${this.jobId} on chain ${this.chainId}`);
114
+ }
115
+ }
116
+ // -------------------------------------------------------------------------
117
+ // Entry management
118
+ // -------------------------------------------------------------------------
119
+ appendEntry(entry) {
120
+ this.entries.push(entry);
121
+ }
122
+ // -------------------------------------------------------------------------
123
+ // Derived status from entries
124
+ // -------------------------------------------------------------------------
125
+ get status() {
126
+ for (let i = this.entries.length - 1; i >= 0; i--) {
127
+ const entry = this.entries[i];
128
+ if (entry.kind === "system") {
129
+ const mapped = EVENT_TO_STATUS[entry.event.type];
130
+ if (mapped)
131
+ return mapped;
132
+ }
133
+ }
134
+ return "open";
135
+ }
136
+ // -------------------------------------------------------------------------
137
+ // Response gating — should this entry trigger an LLM call?
138
+ // -------------------------------------------------------------------------
139
+ shouldRespond(entry) {
140
+ if (entry.kind === "message") {
141
+ return entry.from.toLowerCase() !== this.agentAddress;
142
+ }
143
+ const RESPONDERS = {
144
+ "job.created": ["provider"],
145
+ "budget.set": ["client"],
146
+ "job.funded": ["provider"],
147
+ "job.submitted": ["evaluator"],
148
+ "job.completed": ["client", "provider"],
149
+ "job.rejected": [],
150
+ };
151
+ const allowed = RESPONDERS[entry.event.type];
152
+ if (!allowed)
153
+ return false;
154
+ return this.roles.some((r) => allowed.includes(r));
155
+ }
156
+ // -------------------------------------------------------------------------
157
+ // Tool discovery
158
+ // -------------------------------------------------------------------------
159
+ availableTools() {
160
+ const seen = new Set();
161
+ const tools = [];
162
+ const st = this.status;
163
+ for (const r of this.roles) {
164
+ for (const t of TOOL_MATRIX[r][st] ?? []) {
165
+ if (!seen.has(t.name)) {
166
+ seen.add(t.name);
167
+ tools.push(t);
168
+ }
169
+ }
170
+ }
171
+ if (tools.length === 0)
172
+ tools.push(TOOL_WAIT);
173
+ return tools;
174
+ }
175
+ // -------------------------------------------------------------------------
176
+ // Tool execution
177
+ // -------------------------------------------------------------------------
178
+ async executeTool(name, args) {
179
+ const available = this.availableTools().map((t) => t.name);
180
+ if (!available.includes(name)) {
181
+ throw new Error(`Tool "${name}" not available. Roles=${this.roles.join(",")}, status=${this.status}. Available: ${available.join(", ")}`);
182
+ }
183
+ switch (name) {
184
+ case "wait":
185
+ break;
186
+ case "sendMessage":
187
+ await this.sendMessage(args.content, args.contentType ?? "text");
188
+ break;
189
+ case "setBudget":
190
+ await this.setBudget(AssetToken.usdc(args.amount, this.chainId));
191
+ break;
192
+ case "fund":
193
+ await this.fund(AssetToken.usdc(args.amount, this.chainId));
194
+ break;
195
+ case "submit":
196
+ await this.submit(args.deliverable);
197
+ break;
198
+ case "complete":
199
+ await this.complete(args.reason);
200
+ break;
201
+ case "reject":
202
+ await this.reject(args.reason);
203
+ break;
204
+ default:
205
+ throw new Error(`Unknown tool: ${name}`);
206
+ }
207
+ }
208
+ // -------------------------------------------------------------------------
209
+ // Action methods (sugar over executeTool)
210
+ // -------------------------------------------------------------------------
211
+ async sendMessage(content, contentType = "text") {
212
+ this.agent.sendJobMessage(this.chainId, this.jobId, content, contentType);
213
+ }
214
+ async setBudget(amount) {
215
+ await this.agent.internalSetBudget(this.chainId, {
216
+ jobId: BigInt(this.jobId),
217
+ amount,
218
+ });
219
+ }
220
+ async setBudgetWithFundRequest(amount, transferAmount, destination) {
221
+ await this.agent.internalSetBudgetWithFundRequest(this.chainId, {
222
+ jobId: BigInt(this.jobId),
223
+ amount,
224
+ transferAmount,
225
+ destination,
226
+ });
227
+ }
228
+ async fund(amount) {
229
+ if (!this._job)
230
+ throw new Error("Job not loaded");
231
+ const effectiveAmount = amount ?? this._job.budget;
232
+ const intent = this._job.getFundRequestIntent();
233
+ if (intent) {
234
+ const transferAmount = await intent.resolveAmount(this.chainId, this.agent.getClient());
235
+ if (!transferAmount)
236
+ throw new Error("Could not resolve intent amount");
237
+ await this.agent.internalFundWithTransfer(this.chainId, {
238
+ jobId: BigInt(this.jobId),
239
+ amount: effectiveAmount,
240
+ transferAmount,
241
+ destination: intent.recipientAddress,
242
+ });
243
+ }
244
+ else {
245
+ await this.agent.internalFund(this.chainId, {
246
+ jobId: BigInt(this.jobId),
247
+ amount: effectiveAmount,
248
+ });
249
+ }
250
+ }
251
+ async submit(deliverable, transferAmount) {
252
+ if (!this._job)
253
+ throw new Error("Job not loaded");
254
+ if (transferAmount) {
255
+ await this.agent.internalSubmitWithTransfer(this.chainId, {
256
+ jobId: BigInt(this.jobId),
257
+ deliverable,
258
+ transferAmount,
259
+ });
260
+ }
261
+ else {
262
+ await this.agent.internalSubmit(this.chainId, {
263
+ jobId: BigInt(this.jobId),
264
+ deliverable,
265
+ });
266
+ }
267
+ }
268
+ async complete(reason) {
269
+ await this.agent.internalComplete(this.chainId, {
270
+ jobId: BigInt(this.jobId),
271
+ reason,
272
+ });
273
+ }
274
+ async reject(reason) {
275
+ await this.agent.internalReject(this.chainId, {
276
+ jobId: BigInt(this.jobId),
277
+ reason,
278
+ });
279
+ }
280
+ // -------------------------------------------------------------------------
281
+ // Context serialization
282
+ // -------------------------------------------------------------------------
283
+ async toContext() {
284
+ const lines = [];
285
+ for (const e of this.entries) {
286
+ if (e.kind === "system") {
287
+ let line = `[system] ${e.event.type} — ${JSON.stringify(e.event)}`;
288
+ if (e.event.type === "budget.set" && this._job) {
289
+ const fundRequest = this._job.getFundRequestIntent();
290
+ if (fundRequest) {
291
+ const resolved = await fundRequest.resolveAmount(this.chainId, this.agent.getClient());
292
+ if (resolved) {
293
+ line += ` | fund request: ${resolved.amount} ${resolved.symbol} to ${fundRequest.recipientAddress}`;
294
+ }
295
+ }
296
+ }
297
+ if (e.event.type === "job.submitted") {
298
+ const deliverable = this._job?.deliverable;
299
+ if (deliverable) {
300
+ line += ` | deliverable: ${deliverable}`;
301
+ }
302
+ if (this._job) {
303
+ const fundTransfer = this._job.getFundTransferIntent();
304
+ if (fundTransfer) {
305
+ const resolved = await fundTransfer.resolveAmount(this.chainId, this.agent.getClient());
306
+ if (resolved) {
307
+ line += ` | fund transfer: ${resolved.amount} ${resolved.symbol} to ${fundTransfer.recipientAddress}`;
308
+ }
309
+ }
310
+ }
311
+ }
312
+ lines.push(line);
313
+ }
314
+ else {
315
+ lines.push(`[${e.from}] ${e.content}`);
316
+ }
317
+ }
318
+ return lines.join("\n");
319
+ }
320
+ async toMessages() {
321
+ const result = [];
322
+ for (const e of this.entries) {
323
+ if (e.kind === "system") {
324
+ const event = e.event;
325
+ if (event.type === "budget.set") {
326
+ const budget = AssetToken.usdc(Number(event.amount), this.chainId).amount;
327
+ let content = `The budget for this job is ${budget} USDC.`;
328
+ if (this._job) {
329
+ const fundRequest = this._job.getFundRequestIntent();
330
+ if (fundRequest) {
331
+ const resolved = await fundRequest.resolveAmount(this.chainId, this.agent.getClient());
332
+ if (resolved) {
333
+ content += ` A fund transfer of ${resolved.amount} ${resolved.symbol} to ${fundRequest.recipientAddress} is requested.`;
334
+ }
335
+ }
336
+ }
337
+ result.push({ role: "system", content });
338
+ }
339
+ else if (event.type === "job.submitted") {
340
+ let content = `The provider has submitted a deliverable: ${this._job?.deliverable ?? "(pending)"}`;
341
+ if (this._job) {
342
+ const fundTransfer = this._job.getFundTransferIntent();
343
+ if (fundTransfer) {
344
+ const resolved = await fundTransfer.resolveAmount(this.chainId, this.agent.getClient());
345
+ if (resolved) {
346
+ content += ` A fund transfer of ${resolved.amount} ${resolved.symbol} to ${fundTransfer.recipientAddress} will be executed on completion.`;
347
+ }
348
+ }
349
+ }
350
+ result.push({ role: "system", content });
351
+ }
352
+ else {
353
+ result.push({
354
+ role: "system",
355
+ content: `[${event.type}] ${JSON.stringify(event)}`,
356
+ });
357
+ }
358
+ }
359
+ else {
360
+ const isOwnMessage = e.from.toLowerCase() === this.agentAddress;
361
+ result.push({
362
+ role: isOwnMessage ? "assistant" : "user",
363
+ content: isOwnMessage ? e.content : `[${e.from}]: ${e.content}`,
364
+ });
365
+ }
366
+ }
367
+ return result;
368
+ }
369
+ }
370
+ //# sourceMappingURL=jobSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobSession.js","sourceRoot":"","sources":["../src/jobSession.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { Address, Call, Chain, Hex, Log, TransactionReceipt } from "viem";
2
+ import type { GetLogsParams, IEvmProviderAdapter, ReadContractParams } from "../types";
3
+ export interface AlchemyChainConfig {
4
+ chains?: Chain[];
5
+ walletAddress: Address;
6
+ privateKey: Hex;
7
+ entityId: number;
8
+ }
9
+ export declare class AlchemyEvmProviderAdapter implements IEvmProviderAdapter {
10
+ readonly providerName: string;
11
+ readonly address: Address;
12
+ private readonly clients;
13
+ private constructor();
14
+ static create(params: AlchemyChainConfig): Promise<AlchemyEvmProviderAdapter>;
15
+ private getClient;
16
+ getAddress(): Promise<Address>;
17
+ getSupportedChainIds(): Promise<number[]>;
18
+ getNetworkContext(chainId: number): Promise<import("../..").NetworkContext>;
19
+ private getRandomNonce;
20
+ sendCalls(chainId: number, _calls: Call[]): Promise<Address | Address[]>;
21
+ getTransactionReceipt(chainId: number, hash: Address): Promise<TransactionReceipt>;
22
+ readContract(chainId: number, params: ReadContractParams): Promise<unknown>;
23
+ getLogs(chainId: number, params: GetLogsParams): Promise<Log[]>;
24
+ getBlockNumber(chainId: number): Promise<bigint>;
25
+ signMessage(chainId: number, _message: string): Promise<string>;
26
+ signTypedData(chainId: number, typedData: unknown): Promise<string>;
27
+ }
28
+ //# sourceMappingURL=alchemyEvmProviderAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alchemyEvmProviderAdapter.d.ts","sourceRoot":"","sources":["../../../src/providers/evm/alchemyEvmProviderAdapter.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAE/E,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,GAAG,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,yBAA0B,YAAW,mBAAmB;IACnE,SAAgB,YAAY,EAAE,MAAM,CAAa;IACjD,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAE9D,OAAO;WAQM,MAAM,CACjB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,yBAAyB,CAAC;IAqCrC,OAAO,CAAC,SAAS;IASX,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9B,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIzC,iBAAiB,CAAC,OAAO,EAAE,MAAM;IAIvC,OAAO,CAAC,cAAc;IAWhB,SAAS,CACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,IAAI,EAAE,GACb,OAAO,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC;IA0BzB,qBAAqB,CACzB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,kBAAkB,CAAC;IAIxB,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,OAAO,CAAC;IAIb,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAY/D,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhD,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI/D,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;CAG1E"}
@@ -0,0 +1,110 @@
1
+ import { LocalAccountSigner } from "@aa-sdk/core";
2
+ import { alchemy, defineAlchemyChain } from "@account-kit/infra";
3
+ import { createModularAccountV2Client, } from "@account-kit/smart-contracts";
4
+ import { createEvmNetworkContext, EVM_MAINNET_CHAINS } from "../../core/chains";
5
+ export class AlchemyEvmProviderAdapter {
6
+ constructor(address, clients) {
7
+ this.providerName = "Alchemy";
8
+ this.address = address;
9
+ this.clients = clients;
10
+ }
11
+ static async create(params) {
12
+ const clients = new Map();
13
+ const { chains = EVM_MAINNET_CHAINS } = params;
14
+ const alchemyChains = chains.map((chain) => defineAlchemyChain({
15
+ chain: chain,
16
+ rpcBaseUrl: `https://alchemy-proxy.virtuals.io/api/proxy/rpc?chainId=${chain.id}`,
17
+ }));
18
+ for (const chain of alchemyChains) {
19
+ const signer = LocalAccountSigner.privateKeyToAccountSigner(params.privateKey);
20
+ const client = await createModularAccountV2Client({
21
+ chain: chain,
22
+ transport: alchemy({
23
+ rpcUrl: "https://alchemy-proxy.virtuals.io/api/proxy/rpc",
24
+ }),
25
+ signer,
26
+ policyId: "186aaa4a-5f57-4156-83fb-e456365a8820",
27
+ accountAddress: params.walletAddress,
28
+ signerEntity: {
29
+ entityId: params.entityId,
30
+ isGlobalValidation: true,
31
+ },
32
+ });
33
+ clients.set(client.chain.id, client);
34
+ }
35
+ const address = params.walletAddress;
36
+ return new AlchemyEvmProviderAdapter(address, clients);
37
+ }
38
+ getClient(chainId) {
39
+ const c = this.clients.get(chainId);
40
+ if (!c)
41
+ throw new Error(`AlchemyEvmProviderAdapter: no client configured for chainId ${chainId}`);
42
+ return c;
43
+ }
44
+ async getAddress() {
45
+ return this.address;
46
+ }
47
+ async getSupportedChainIds() {
48
+ return Array.from(this.clients.keys());
49
+ }
50
+ async getNetworkContext(chainId) {
51
+ return createEvmNetworkContext(chainId);
52
+ }
53
+ getRandomNonce(bits = 152) {
54
+ const bytes = bits / 8;
55
+ const array = new Uint8Array(bytes);
56
+ crypto.getRandomValues(array);
57
+ let hex = Array.from(array, (b) => b.toString(16).padStart(2, "0")).join("");
58
+ return BigInt("0x" + hex);
59
+ }
60
+ async sendCalls(chainId, _calls) {
61
+ const client = this.getClient(chainId);
62
+ const { hash } = await client.sendUserOperation({
63
+ uo: _calls.map((call) => ({
64
+ target: call.to,
65
+ data: call.data ?? "0x",
66
+ ...(call.value != null && { value: call.value }),
67
+ })),
68
+ overrides: {
69
+ nonceKey: this.getRandomNonce(),
70
+ },
71
+ });
72
+ const receiptHash = await client.waitForUserOperationTransaction({
73
+ hash,
74
+ tag: "pending",
75
+ retries: {
76
+ intervalMs: 200,
77
+ multiplier: 1.1,
78
+ maxRetries: 10,
79
+ },
80
+ });
81
+ return receiptHash;
82
+ }
83
+ async getTransactionReceipt(chainId, hash) {
84
+ return this.getClient(chainId).getTransactionReceipt({ hash });
85
+ }
86
+ async readContract(chainId, params) {
87
+ return this.getClient(chainId).readContract(params);
88
+ }
89
+ async getLogs(chainId, params) {
90
+ const client = this.getClient(chainId);
91
+ return client.getFilterLogs({
92
+ filter: await client.createEventFilter({
93
+ address: params.address,
94
+ events: params.events,
95
+ fromBlock: params.fromBlock,
96
+ toBlock: params.toBlock ?? "latest",
97
+ }),
98
+ });
99
+ }
100
+ async getBlockNumber(chainId) {
101
+ return this.getClient(chainId).getBlockNumber();
102
+ }
103
+ async signMessage(chainId, _message) {
104
+ return this.getClient(chainId).signMessage({ message: _message });
105
+ }
106
+ async signTypedData(chainId, typedData) {
107
+ return this.getClient(chainId).signTypedData(typedData);
108
+ }
109
+ }
110
+ //# sourceMappingURL=alchemyEvmProviderAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alchemyEvmProviderAdapter.js","sourceRoot":"","sources":["../../../src/providers/evm/alchemyEvmProviderAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { type Address, type Call, type Chain, type Log, type TransactionReceipt } from "viem";
2
+ import type { GetLogsParams, IEvmProviderAdapter, ReadContractParams } from "../types";
3
+ export type SignFn = (payload: Uint8Array) => Promise<string>;
4
+ export interface PrivyAlchemyChainConfig {
5
+ chains?: Chain[];
6
+ walletAddress: Address;
7
+ walletId: string;
8
+ signerPrivateKey?: string;
9
+ signFn?: SignFn;
10
+ serverUrl?: string;
11
+ privyAppId?: string;
12
+ }
13
+ export declare class PrivyAlchemyEvmProviderAdapter implements IEvmProviderAdapter {
14
+ readonly providerName: string;
15
+ readonly address: Address;
16
+ private readonly chainClients;
17
+ private constructor();
18
+ static create(params: PrivyAlchemyChainConfig): Promise<PrivyAlchemyEvmProviderAdapter>;
19
+ private getClients;
20
+ getAddress(): Promise<Address>;
21
+ getSupportedChainIds(): Promise<number[]>;
22
+ getNetworkContext(chainId: number): Promise<import("../..").NetworkContext>;
23
+ private getRandomNonce;
24
+ sendCalls(chainId: number, _calls: Call[]): Promise<Address | Address[]>;
25
+ getTransactionReceipt(chainId: number, hash: Address): Promise<TransactionReceipt>;
26
+ readContract(chainId: number, params: ReadContractParams): Promise<unknown>;
27
+ getLogs(chainId: number, params: GetLogsParams): Promise<Log[]>;
28
+ getBlockNumber(chainId: number): Promise<bigint>;
29
+ signMessage(chainId: number, _message: string): Promise<string>;
30
+ signTypedData(chainId: number, typedData: unknown): Promise<string>;
31
+ }
32
+ //# sourceMappingURL=privyAlchemyEvmProviderAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privyAlchemyEvmProviderAdapter.d.ts","sourceRoot":"","sources":["../../../src/providers/evm/privyAlchemyEvmProviderAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,KAAK,EAEV,KAAK,GAAG,EAER,KAAK,kBAAkB,EACxB,MAAM,MAAM,CAAC;AAQd,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAkBlB,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE9D,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA6ND,qBAAa,8BAA+B,YAAW,mBAAmB;IACxE,SAAgB,YAAY,EAAE,MAAM,CAAmB;IACvD,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IAEzD,OAAO;WAQM,MAAM,CACjB,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,8BAA8B,CAAC;IAqE1C,OAAO,CAAC,UAAU;IASZ,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9B,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIzC,iBAAiB,CAAC,OAAO,EAAE,MAAM;IAIvC,OAAO,CAAC,cAAc;IAWhB,SAAS,CACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,IAAI,EAAE,GACb,OAAO,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC;IAwBzB,qBAAqB,CACzB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,kBAAkB,CAAC;IAMxB,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,OAAO,CAAC;IAIb,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAI/D,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhD,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM/D,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;CAK1E"}