@varun-ai07/covenant-mcp 1.2.2 → 1.3.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 (165) hide show
  1. package/README.md +128 -12
  2. package/dist/abis/MultiTokenEscrow.json +836 -0
  3. package/dist/abis/v2/AgentRegistry.json +872 -0
  4. package/dist/abis/v2/DisputeResolution.json +493 -0
  5. package/dist/abis/v2/InsurancePool.json +645 -0
  6. package/dist/abis/v2/ReceiptVerifier.json +394 -0
  7. package/dist/abis/v2/RevisionManager.json +544 -0
  8. package/dist/abis/v2/TaskEscrow.json +1018 -0
  9. package/dist/cli.js +0 -0
  10. package/dist/config.d.ts +13 -1
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +84 -25
  13. package/dist/config.js.map +1 -1
  14. package/dist/handlers/wallet.d.ts.map +1 -1
  15. package/dist/handlers/wallet.js +1 -1
  16. package/dist/handlers/wallet.js.map +1 -1
  17. package/dist/lib/did.d.ts +72 -0
  18. package/dist/lib/did.d.ts.map +1 -0
  19. package/dist/lib/did.js +115 -0
  20. package/dist/lib/did.js.map +1 -0
  21. package/dist/lib/events.d.ts.map +1 -1
  22. package/dist/lib/events.js +2 -2
  23. package/dist/lib/events.js.map +1 -1
  24. package/dist/lib/formatResponse.d.ts +33 -0
  25. package/dist/lib/formatResponse.d.ts.map +1 -0
  26. package/dist/lib/formatResponse.js +92 -0
  27. package/dist/lib/formatResponse.js.map +1 -0
  28. package/dist/lib/schemaHelpers.d.ts +11 -0
  29. package/dist/lib/schemaHelpers.d.ts.map +1 -0
  30. package/dist/lib/schemaHelpers.js +11 -0
  31. package/dist/lib/schemaHelpers.js.map +1 -0
  32. package/dist/lib/store.d.ts +10 -0
  33. package/dist/lib/store.d.ts.map +1 -0
  34. package/dist/lib/store.js +39 -0
  35. package/dist/lib/store.js.map +1 -0
  36. package/dist/lib/verify.d.ts +21 -0
  37. package/dist/lib/verify.d.ts.map +1 -0
  38. package/dist/lib/verify.js +568 -0
  39. package/dist/lib/verify.js.map +1 -0
  40. package/dist/schemas.d.ts +5 -5
  41. package/dist/schemas.d.ts.map +1 -1
  42. package/dist/server.d.ts +1 -25
  43. package/dist/server.d.ts.map +1 -1
  44. package/dist/server.js +53 -37
  45. package/dist/server.js.map +1 -1
  46. package/dist/tools/account-abstraction.d.ts +3 -0
  47. package/dist/tools/account-abstraction.d.ts.map +1 -0
  48. package/dist/tools/account-abstraction.js +364 -0
  49. package/dist/tools/account-abstraction.js.map +1 -0
  50. package/dist/tools/batches.d.ts.map +1 -1
  51. package/dist/tools/batches.js +68 -37
  52. package/dist/tools/batches.js.map +1 -1
  53. package/dist/tools/bounties.d.ts +3 -0
  54. package/dist/tools/bounties.d.ts.map +1 -0
  55. package/dist/tools/bounties.js +304 -0
  56. package/dist/tools/bounties.js.map +1 -0
  57. package/dist/tools/bridge.d.ts +3 -0
  58. package/dist/tools/bridge.d.ts.map +1 -0
  59. package/dist/tools/bridge.js +190 -0
  60. package/dist/tools/bridge.js.map +1 -0
  61. package/dist/tools/collectives.d.ts.map +1 -1
  62. package/dist/tools/collectives.js +75 -48
  63. package/dist/tools/collectives.js.map +1 -1
  64. package/dist/tools/covenant-help.d.ts +3 -0
  65. package/dist/tools/covenant-help.d.ts.map +1 -0
  66. package/dist/tools/covenant-help.js +321 -0
  67. package/dist/tools/covenant-help.js.map +1 -0
  68. package/dist/tools/cross-chain.d.ts +3 -0
  69. package/dist/tools/cross-chain.d.ts.map +1 -0
  70. package/dist/tools/cross-chain.js +77 -0
  71. package/dist/tools/cross-chain.js.map +1 -0
  72. package/dist/tools/disputes.d.ts.map +1 -1
  73. package/dist/tools/disputes.js +39 -33
  74. package/dist/tools/disputes.js.map +1 -1
  75. package/dist/tools/escrow.d.ts.map +1 -1
  76. package/dist/tools/escrow.js +277 -202
  77. package/dist/tools/escrow.js.map +1 -1
  78. package/dist/tools/fiat-onramp.d.ts +3 -0
  79. package/dist/tools/fiat-onramp.d.ts.map +1 -0
  80. package/dist/tools/fiat-onramp.js +108 -0
  81. package/dist/tools/fiat-onramp.js.map +1 -0
  82. package/dist/tools/governance.d.ts +3 -0
  83. package/dist/tools/governance.d.ts.map +1 -0
  84. package/dist/tools/governance.js +271 -0
  85. package/dist/tools/governance.js.map +1 -0
  86. package/dist/tools/grants.d.ts +3 -0
  87. package/dist/tools/grants.d.ts.map +1 -0
  88. package/dist/tools/grants.js +269 -0
  89. package/dist/tools/grants.js.map +1 -0
  90. package/dist/tools/insurance.d.ts.map +1 -1
  91. package/dist/tools/insurance.js +92 -45
  92. package/dist/tools/insurance.js.map +1 -1
  93. package/dist/tools/market.d.ts.map +1 -1
  94. package/dist/tools/market.js +122 -103
  95. package/dist/tools/market.js.map +1 -1
  96. package/dist/tools/matching.d.ts +3 -0
  97. package/dist/tools/matching.d.ts.map +1 -0
  98. package/dist/tools/matching.js +233 -0
  99. package/dist/tools/matching.js.map +1 -0
  100. package/dist/tools/messaging.d.ts +3 -0
  101. package/dist/tools/messaging.d.ts.map +1 -0
  102. package/dist/tools/messaging.js +159 -0
  103. package/dist/tools/messaging.js.map +1 -0
  104. package/dist/tools/multi-token.d.ts +3 -0
  105. package/dist/tools/multi-token.d.ts.map +1 -0
  106. package/dist/tools/multi-token.js +274 -0
  107. package/dist/tools/multi-token.js.map +1 -0
  108. package/dist/tools/offchain-coordinator.d.ts +3 -0
  109. package/dist/tools/offchain-coordinator.d.ts.map +1 -0
  110. package/dist/tools/offchain-coordinator.js +436 -0
  111. package/dist/tools/offchain-coordinator.js.map +1 -0
  112. package/dist/tools/protocol.d.ts.map +1 -1
  113. package/dist/tools/protocol.js +19 -6
  114. package/dist/tools/protocol.js.map +1 -1
  115. package/dist/tools/receipts.d.ts.map +1 -1
  116. package/dist/tools/receipts.js +45 -22
  117. package/dist/tools/receipts.js.map +1 -1
  118. package/dist/tools/registry.d.ts.map +1 -1
  119. package/dist/tools/registry.js +90 -43
  120. package/dist/tools/registry.js.map +1 -1
  121. package/dist/tools/reputation-vc.d.ts +3 -0
  122. package/dist/tools/reputation-vc.d.ts.map +1 -0
  123. package/dist/tools/reputation-vc.js +438 -0
  124. package/dist/tools/reputation-vc.js.map +1 -0
  125. package/dist/tools/revisions.d.ts +3 -0
  126. package/dist/tools/revisions.d.ts.map +1 -0
  127. package/dist/tools/revisions.js +108 -0
  128. package/dist/tools/revisions.js.map +1 -0
  129. package/dist/tools/router.d.ts +3 -0
  130. package/dist/tools/router.d.ts.map +1 -0
  131. package/dist/tools/router.js +104 -0
  132. package/dist/tools/router.js.map +1 -0
  133. package/dist/tools/streaming.d.ts +3 -0
  134. package/dist/tools/streaming.d.ts.map +1 -0
  135. package/dist/tools/streaming.js +350 -0
  136. package/dist/tools/streaming.js.map +1 -0
  137. package/dist/tools/templates.d.ts +3 -0
  138. package/dist/tools/templates.d.ts.map +1 -0
  139. package/dist/tools/templates.js +392 -0
  140. package/dist/tools/templates.js.map +1 -0
  141. package/dist/tools/training.d.ts +3 -0
  142. package/dist/tools/training.d.ts.map +1 -0
  143. package/dist/tools/training.js +304 -0
  144. package/dist/tools/training.js.map +1 -0
  145. package/dist/tools/v2-settlement.d.ts +3 -0
  146. package/dist/tools/v2-settlement.d.ts.map +1 -0
  147. package/dist/tools/v2-settlement.js +226 -0
  148. package/dist/tools/v2-settlement.js.map +1 -0
  149. package/dist/tools/verification.d.ts +3 -0
  150. package/dist/tools/verification.d.ts.map +1 -0
  151. package/dist/tools/verification.js +215 -0
  152. package/dist/tools/verification.js.map +1 -0
  153. package/dist/tools/verify-deep.d.ts +3 -0
  154. package/dist/tools/verify-deep.d.ts.map +1 -0
  155. package/dist/tools/verify-deep.js +125 -0
  156. package/dist/tools/verify-deep.js.map +1 -0
  157. package/dist/types.d.ts +16 -3
  158. package/dist/types.d.ts.map +1 -1
  159. package/dist/types.js +4 -23
  160. package/dist/types.js.map +1 -1
  161. package/dist/utils.d.ts +2 -3
  162. package/dist/utils.d.ts.map +1 -1
  163. package/dist/utils.js +8 -34
  164. package/dist/utils.js.map +1 -1
  165. package/package.json +3 -1
package/dist/server.js CHANGED
@@ -1,31 +1,7 @@
1
1
  /**
2
2
  * COVENANT MCP Server — tool registration hub.
3
3
  *
4
- * Registers 70 MCP tools (all prefixed with corven_) across 9 contracts:
5
- * AgentRegistry (6): corven_register_agent, corven_get_agent, corven_find_workers,
6
- * corven_add_stake, corven_deactivate_agent, corven_get_all_agents
7
- * TaskEscrow (19): corven_create_task, corven_get_task, corven_submit_work, corven_verify_task,
8
- * corven_dispute_task, corven_create_task_with_priority, corven_create_milestone_task,
9
- * corven_submit_milestone, corven_verify_milestone, corven_get_milestone,
10
- * corven_get_milestone_count, corven_create_subtask, corven_get_child_tasks,
11
- * corven_submit_query, corven_respond_to_query, corven_get_query,
12
- * corven_get_query_count, corven_get_client_tasks, corven_get_worker_tasks
13
- * ReceiptVerifier (4): corven_get_receipts, corven_verify_receipt, corven_create_receipt, corven_get_receipt_count
14
- * Protocol (2): corven_get_stats, corven_get_leaderboard
15
- * OpenTaskMarket (11): corven_post_open_task, corven_get_open_task, corven_submit_bid, corven_get_bid,
16
- * corven_select_worker, corven_make_counter_offer, corven_accept_counter_offer,
17
- * corven_withdraw_bid, corven_cancel_open_task, corven_complete_open_task,
18
- * corven_reject_counter_offer
19
- * ParallelTaskBatch (7):corven_create_batch, corven_get_batch, corven_get_batch_status,
20
- * corven_aggregate_results, corven_get_batch_counter, corven_check_batch_submitted,
21
- * corven_get_aggregated_result
22
- * AgentCollective (7): corven_create_collective, corven_join_collective, corven_launch_collective_task,
23
- * corven_get_collective, corven_get_collective_counter, corven_submit_deliverable,
24
- * corven_claim_deliverable
25
- * DisputeArbitration (4):corven_file_dispute, corven_cast_vote, corven_get_dispute, corven_get_dispute_counter
26
- * AgentInsurance (10): corven_claim_insurance, corven_get_claim, corven_get_claim_counter,
27
- * corven_get_coverage_percent, corven_join_insurance_pool, corven_pay_premium,
28
- * corven_vote_on_claim, corven_pay_claim, corven_get_pool_balance, corven_get_member_info
4
+ * 12 files, ~70 tools. Settlement onchain, coordination offchain.
29
5
  */
30
6
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
31
7
  import { registerAgentTools } from "./tools/registry.js";
@@ -37,24 +13,64 @@ import { registerBatchTools } from "./tools/batches.js";
37
13
  import { registerCollectiveTools } from "./tools/collectives.js";
38
14
  import { registerDisputeTools } from "./tools/disputes.js";
39
15
  import { registerInsuranceTools } from "./tools/insurance.js";
16
+ import { registerVerificationTools } from "./tools/verification.js";
17
+ import { registerRouterTools } from "./tools/router.js";
18
+ import { registerOffchainCoordinatorTools } from "./tools/offchain-coordinator.js";
19
+ import { registerMultiTokenTools } from "./tools/multi-token.js";
20
+ import { registerReputationVCTools } from "./tools/reputation-vc.js";
21
+ import { registerCovenantHelpTools } from "./tools/covenant-help.js";
22
+ import { registerAATools } from "./tools/account-abstraction.js";
23
+ import { registerFiatOnrampTools } from "./tools/fiat-onramp.js";
24
+ import { registerTemplateTools } from "./tools/templates.js";
25
+ import { registerMatchingTools } from "./tools/matching.js";
26
+ import { registerMessagingTools } from "./tools/messaging.js";
27
+ import { registerCrossChainTools } from "./tools/cross-chain.js";
28
+ import { registerStreamingTools } from "./tools/streaming.js";
29
+ import { registerGovernanceTools } from "./tools/governance.js";
30
+ import { registerBountyTools } from "./tools/bounties.js";
31
+ import { registerBridgeTools } from "./tools/bridge.js";
32
+ import { registerGrantTools } from "./tools/grants.js";
33
+ import { registerTrainingTools } from "./tools/training.js";
34
+ import { registerVerifyDeepTools } from "./tools/verify-deep.js";
35
+ import { registerRevisionTools } from "./tools/revisions.js";
40
36
  import { info } from "./logger.js";
41
37
  export function createServer() {
42
38
  const server = new McpServer({
43
39
  name: "covenant-mcp",
44
40
  version: "1.0.0",
45
41
  });
46
- // Phase 1 tools
47
- registerAgentTools(server);
48
- registerEscrowTools(server);
49
- registerReceiptTools(server);
50
- registerProtocolTools(server);
51
- // Phase 4 tools
52
- registerMarketTools(server);
53
- registerBatchTools(server);
54
- registerCollectiveTools(server);
55
- registerDisputeTools(server);
56
- registerInsuranceTools(server);
57
- info("[SERVER] Registered 70 corven_ MCP tools across 9 contracts");
42
+ // Settlement layer (onchain)
43
+ registerAgentTools(server); // AgentRegistry
44
+ registerEscrowTools(server); // TaskEscrow
45
+ registerReceiptTools(server); // ReceiptVerifier
46
+ registerProtocolTools(server); // Protocol stats
47
+ registerMarketTools(server); // OpenTaskMarket
48
+ registerBatchTools(server); // ParallelTaskBatch
49
+ registerCollectiveTools(server); // AgentCollective
50
+ registerDisputeTools(server); // DisputeArbitration
51
+ registerInsuranceTools(server); // AgentInsurance
52
+ registerVerificationTools(server); // ZK + ERC-8004
53
+ registerRouterTools(server); // COVENANTRouter
54
+ registerMultiTokenTools(server); // MultiTokenEscrow
55
+ registerReputationVCTools(server); // Reputation VCs + DID
56
+ registerAATools(server); // Account Abstraction (Smart Wallet + Paymaster)
57
+ // Meta & coordination tools (offchain)
58
+ registerCovenantHelpTools(server); // Protocol guide + workflow sequences
59
+ registerTemplateTools(server); // Task templates with auto-pricing
60
+ registerMatchingTools(server); // Smart worker matching (multi-factor scoring)
61
+ registerOffchainCoordinatorTools(server); // Profiles, matching, templates, marketplace
62
+ registerMessagingTools(server); // Agent messaging (in-memory MVP)
63
+ registerFiatOnrampTools(server); // Fiat on-ramp URLs (MoonPay/Transak)
64
+ registerCrossChainTools(server); // Cross-chain config & supported chains
65
+ registerStreamingTools(server); // Streaming pay-per-second payments
66
+ registerGovernanceTools(server); // Governance DAO (in-memory MVP)
67
+ registerBountyTools(server); // Bounty Board (in-memory MVP)
68
+ registerBridgeTools(server); // Cross-chain bridge estimates & status
69
+ registerGrantTools(server); // Grant Program (in-memory MVP)
70
+ registerTrainingTools(server); // Training Marketplace (in-memory MVP)
71
+ registerVerifyDeepTools(server); // Deep project verification (off-chain analysis)
72
+ registerRevisionTools(server); // RevisionManager — revision tracking
73
+ info("[SERVER] corven_ MCP tools registered");
58
74
  return server;
59
75
  }
60
76
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,gBAAgB;IAChB,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE9B,gBAAgB;IAChB,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAE/B,IAAI,CAAC,6DAA6D,CAAC,CAAC;IACpE,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,6BAA6B;IAC7B,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAO,gBAAgB;IAClD,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAM,aAAa;IAC/C,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAK,kBAAkB;IACpD,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAI,iBAAiB;IACnD,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAM,iBAAiB;IACnD,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAO,oBAAoB;IACtD,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAE,kBAAkB;IACpD,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAK,qBAAqB;IACvD,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAG,iBAAiB;IACnD,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAA,gBAAgB;IAClD,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAM,iBAAiB;IACnD,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAE,mBAAmB;IACrD,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,uBAAuB;IAC1D,eAAe,CAAC,MAAM,CAAC,CAAC,CAAW,iDAAiD;IAEpF,uCAAuC;IACvC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,sCAAsC;IACzE,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAK,mCAAmC;IACtE,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAK,+CAA+C;IAClF,gCAAgC,CAAC,MAAM,CAAC,CAAC,CAAC,6CAA6C;IACvF,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAS,kCAAkC;IAC1E,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAQ,sCAAsC;IAC9E,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAQ,wCAAwC;IAChF,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAQ,oCAAoC;IAC3E,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAO,iCAAiC;IACxE,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAW,+BAA+B;IACtE,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAW,wCAAwC;IAC/E,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAY,gCAAgC;IACvE,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAS,uCAAuC;IAC9E,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAQ,iDAAiD;IACzF,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAU,sCAAsC;IAE9E,IAAI,CAAC,uCAAuC,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerAATools(server: McpServer): void;
3
+ //# sourceMappingURL=account-abstraction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-abstraction.d.ts","sourceRoot":"","sources":["../../src/tools/account-abstraction.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwKzE,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0SvD"}
@@ -0,0 +1,364 @@
1
+ /**
2
+ * Account Abstraction MCP Tools
3
+ *
4
+ * corven_create_smart_wallet — Deploy a new AgentSmartWallet
5
+ * corven_get_smart_wallet — Get wallet details (limits, pause, balance)
6
+ * corven_set_spending_limit — Controller sets daily/tx limits
7
+ * corven_set_recipient — Controller manages whitelist
8
+ * corven_emergency_pause — Controller pauses/unpauses
9
+ */
10
+ import { z } from "zod";
11
+ import { parseEther, formatEther } from "viem";
12
+ import { getAccount, getWalletClient, getPublicClient, getExplorerTxUrl } from "../config.js";
13
+ import { formatReadResult } from "../handlers/transactions.js";
14
+ import { formatSuccess, formatStructuredError, parseContractError } from "../lib/formatResponse.js";
15
+ import { ethAddress, ethAmount } from "../lib/schemaHelpers.js";
16
+ import fs from "node:fs";
17
+ import path from "node:path";
18
+ // ─── Inline ABI for AgentSmartWallet ──────────────────────────
19
+ // Matches the Solidity contract at contracts/v2/core/AgentSmartWallet.sol
20
+ const AgentSmartWalletAbi = [
21
+ { type: "constructor", inputs: [
22
+ { name: "_controller", type: "address" },
23
+ { name: "_dailyLimit", type: "uint256" },
24
+ { name: "_perTxLimit", type: "uint256" },
25
+ ], stateMutability: "nonpayable" },
26
+ { type: "receive", stateMutability: "payable" },
27
+ { type: "function", name: "controller", inputs: [], outputs: [{ type: "address" }], stateMutability: "view" },
28
+ { type: "function", name: "dailyLimit", inputs: [], outputs: [{ type: "uint256" }], stateMutability: "view" },
29
+ { type: "function", name: "perTxLimit", inputs: [], outputs: [{ type: "uint256" }], stateMutability: "view" },
30
+ { type: "function", name: "dailySpent", inputs: [], outputs: [{ type: "uint256" }], stateMutability: "view" },
31
+ { type: "function", name: "lastResetDay", inputs: [], outputs: [{ type: "uint256" }], stateMutability: "view" },
32
+ { type: "function", name: "paused", inputs: [], outputs: [{ type: "bool" }], stateMutability: "view" },
33
+ { type: "function", name: "allowedRecipients", inputs: [{ name: "", type: "address" }], outputs: [{ type: "bool" }], stateMutability: "view" },
34
+ { type: "function", name: "owner", inputs: [], outputs: [{ type: "address" }], stateMutability: "view" },
35
+ { type: "function", name: "getRemainingDailyAllowance", inputs: [], outputs: [{ type: "uint256" }], stateMutability: "view" },
36
+ { type: "function", name: "getBalance", inputs: [], outputs: [{ type: "uint256" }], stateMutability: "view" },
37
+ { type: "function", name: "execute", inputs: [
38
+ { name: "to", type: "address" },
39
+ { name: "value", type: "uint256" },
40
+ { name: "data", type: "bytes" },
41
+ ], outputs: [{ name: "result", type: "bytes" }], stateMutability: "nonpayable" },
42
+ { type: "function", name: "setDailyLimit", inputs: [{ name: "_limit", type: "uint256" }], outputs: [], stateMutability: "nonpayable" },
43
+ { type: "function", name: "setPerTxLimit", inputs: [{ name: "_limit", type: "uint256" }], outputs: [], stateMutability: "nonpayable" },
44
+ { type: "function", name: "setRecipient", inputs: [
45
+ { name: "_recipient", type: "address" },
46
+ { name: "_allowed", type: "bool" },
47
+ ], outputs: [], stateMutability: "nonpayable" },
48
+ { type: "function", name: "setPaused", inputs: [{ name: "_paused", type: "bool" }], outputs: [], stateMutability: "nonpayable" },
49
+ { type: "function", name: "setController", inputs: [{ name: "_controller", type: "address" }], outputs: [], stateMutability: "nonpayable" },
50
+ ];
51
+ // ─── Bytecode loader ──────────────────────────────────────────
52
+ function loadSmartWalletBytecode() {
53
+ // Resolve from the MCP package root
54
+ const candidates = [
55
+ // Relative to this source file (mcp/src/tools -> mcp -> contracts)
56
+ path.resolve(process.cwd(), "../contracts/artifacts/contracts/v2/core/AgentSmartWallet.sol/AgentSmartWallet.json"),
57
+ // Absolute project layout
58
+ path.resolve(process.cwd(), "contracts/artifacts/contracts/v2/core/AgentSmartWallet.sol/AgentSmartWallet.json"),
59
+ ];
60
+ for (const artifactPath of candidates) {
61
+ if (fs.existsSync(artifactPath)) {
62
+ const artifact = JSON.parse(fs.readFileSync(artifactPath, "utf-8"));
63
+ return artifact.bytecode;
64
+ }
65
+ }
66
+ throw new Error("AgentSmartWallet artifact not found. Run: cd /home/vxrun/Projects/varun/contracts && npx hardhat compile");
67
+ }
68
+ // ─── Deploy helper ────────────────────────────────────────────
69
+ async function deploySmartWallet(controller, dailyLimitWei, perTxLimitWei) {
70
+ const wallet = getWalletClient();
71
+ const publicClient = getPublicClient();
72
+ const account = getAccount();
73
+ if (!wallet || !account) {
74
+ return { status: "error", error: "No wallet client available. Set PRIVATE_KEY and COVENANT_WALLET_MODE=autonomous." };
75
+ }
76
+ try {
77
+ const bytecode = loadSmartWalletBytecode();
78
+ const hash = await wallet.deployContract({
79
+ abi: AgentSmartWalletAbi,
80
+ bytecode,
81
+ args: [controller, dailyLimitWei, perTxLimitWei],
82
+ account,
83
+ });
84
+ console.error(`[TX] Deploy AgentSmartWallet: ${hash}`);
85
+ console.error(`[TX] Explorer: ${getExplorerTxUrl(hash)}`);
86
+ const receipt = await publicClient.waitForTransactionReceipt({
87
+ hash,
88
+ timeout: 60_000,
89
+ });
90
+ return {
91
+ status: "success",
92
+ txHash: hash,
93
+ blockNumber: receipt.blockNumber,
94
+ gasUsed: receipt.gasUsed,
95
+ };
96
+ }
97
+ catch (error) {
98
+ const msg = error?.message || String(error);
99
+ return { status: "error", error: msg.slice(0, 500) };
100
+ }
101
+ }
102
+ // ─── Write helper (for existing contracts) ────────────────────
103
+ async function executeWalletWrite(walletAddress, functionName, args) {
104
+ const wallet = getWalletClient();
105
+ const publicClient = getPublicClient();
106
+ const account = getAccount();
107
+ if (!wallet || !account) {
108
+ return { status: "error", error: "No wallet client available. Set PRIVATE_KEY and COVENANT_WALLET_MODE=autonomous." };
109
+ }
110
+ try {
111
+ const { request } = await publicClient.simulateContract({
112
+ address: walletAddress,
113
+ abi: AgentSmartWalletAbi,
114
+ functionName,
115
+ args: args,
116
+ account,
117
+ });
118
+ const hash = await wallet.writeContract(request);
119
+ console.error(`[TX] ${functionName}: ${hash}`);
120
+ const receipt = await publicClient.waitForTransactionReceipt({
121
+ hash,
122
+ timeout: 60_000,
123
+ });
124
+ return {
125
+ status: "success",
126
+ txHash: hash,
127
+ blockNumber: receipt.blockNumber,
128
+ gasUsed: receipt.gasUsed,
129
+ };
130
+ }
131
+ catch (error) {
132
+ const msg = error?.message || String(error);
133
+ const revertMatch = msg.match(/revert(?:ed| reason)?\s*:?\s*"?([^"\n]+)"?/i);
134
+ return {
135
+ status: "error",
136
+ error: revertMatch ? `Transaction reverted: ${revertMatch[1]}` : msg.slice(0, 500),
137
+ reason: msg,
138
+ };
139
+ }
140
+ }
141
+ // ─── Error helper ─────────────────────────────────────────────
142
+ function txErrorMessage(result) {
143
+ if (result.status === "error")
144
+ return result.error;
145
+ if (result.status === "prepared")
146
+ return "Transaction prepared but not sent (prepare-only mode).";
147
+ return "Unknown error.";
148
+ }
149
+ // ─── Register tools ───────────────────────────────────────────
150
+ export function registerAATools(server) {
151
+ // ──────────────────────────────────────────────────────────────
152
+ // corven_create_smart_wallet
153
+ // ──────────────────────────────────────────────────────────────
154
+ server.registerTool("corven_create_smart_wallet", {
155
+ title: "Deploy Smart Wallet",
156
+ description: "Deploy a new AgentSmartWallet for the caller. Creates an ERC-4337 compatible smart account with spending limits, recipient whitelist, and emergency pause.\n" +
157
+ "USE WHEN: An agent needs a dedicated smart wallet with safety guardrails. The deployer becomes the owner (agent EOA) and controller (human guardian).\n" +
158
+ "REQUIRES: PRIVATE_KEY set in .env. Wallet needs ~0.001 ETH for gas.\n" +
159
+ "RETURNS: Wallet address, controller, daily limit, per-tx limit, Basescan link.\n" +
160
+ "COMES BEFORE: corven_set_recipient to whitelist payment targets. corven_set_spending_limit to adjust limits.\n" +
161
+ "NOTE: The controller can pause the wallet, change limits, and manage the whitelist. The agent can only execute transactions within the set limits.",
162
+ inputSchema: {
163
+ controller: ethAddress.describe("Human controller address (can pause, set limits, manage whitelist)"),
164
+ dailyLimit: ethAmount.describe("Daily spending limit in ETH (e.g. '1.0')"),
165
+ perTxLimit: ethAmount.describe("Per-transaction cap in ETH (e.g. '0.1')"),
166
+ },
167
+ }, async ({ controller, dailyLimit, perTxLimit }) => {
168
+ try {
169
+ const account = getAccount();
170
+ if (!account) {
171
+ return formatStructuredError("No private key configured.", "PRIVATE_KEY environment variable is not set.", "Set PRIVATE_KEY in your .env file.", false);
172
+ }
173
+ const dailyLimitWei = parseEther(dailyLimit);
174
+ const perTxLimitWei = parseEther(perTxLimit);
175
+ const result = await deploySmartWallet(controller, dailyLimitWei, perTxLimitWei);
176
+ if (result.status === "success") {
177
+ const publicClient = getPublicClient();
178
+ const receipt = await publicClient.getTransactionReceipt({ hash: result.txHash });
179
+ const walletAddr = receipt.contractAddress;
180
+ return formatSuccess(`AgentSmartWallet deployed. Agent = owner, human = controller.`, {
181
+ walletAddress: walletAddr || "Check Basescan for contract address",
182
+ owner: account.address,
183
+ controller,
184
+ dailyLimit: `${dailyLimit} ETH`,
185
+ perTxLimit: `${perTxLimit} ETH`,
186
+ }, result.txHash, [
187
+ "Call corven_set_recipient to whitelist addresses the wallet can send to.",
188
+ "Call corven_set_spending_limit to adjust daily/tx limits.",
189
+ "The controller can call corven_emergency_pause to freeze the wallet.",
190
+ ]);
191
+ }
192
+ return {
193
+ content: [{ type: "text", text: `Deployment failed: ${txErrorMessage(result)}` }],
194
+ isError: true,
195
+ };
196
+ }
197
+ catch (e) {
198
+ const parsed = parseContractError(e);
199
+ return formatStructuredError(parsed.error, parsed.cause, parsed.fix, parsed.retryable);
200
+ }
201
+ });
202
+ // ──────────────────────────────────────────────────────────────
203
+ // corven_get_smart_wallet
204
+ // ──────────────────────────────────────────────────────────────
205
+ server.registerTool("corven_get_smart_wallet", {
206
+ title: "Get Smart Wallet Details",
207
+ description: "Read all details of an AgentSmartWallet: owner, controller, limits, daily spend, pause status, balance.\n" +
208
+ "USE WHEN: Checking current spending limits. Verifying pause status. Checking remaining daily allowance.\n" +
209
+ "REQUIRES: Nothing. Free read-only call.\n" +
210
+ "RETURNS: Owner, controller, daily limit, per-tx limit, daily spent, remaining allowance, pause status, balance.\n" +
211
+ "NOTE: Daily counter resets at midnight UTC automatically.",
212
+ inputSchema: {
213
+ walletAddress: ethAddress.describe("The AgentSmartWallet contract address"),
214
+ },
215
+ }, async ({ walletAddress }) => {
216
+ try {
217
+ const publicClient = getPublicClient();
218
+ const addr = walletAddress;
219
+ const [owner, controller, dailyLimit, perTxLimit, dailySpent, lastResetDay, paused, balance, remainingAllowance] = await Promise.all([
220
+ publicClient.readContract({ address: addr, abi: AgentSmartWalletAbi, functionName: "owner" }),
221
+ publicClient.readContract({ address: addr, abi: AgentSmartWalletAbi, functionName: "controller" }),
222
+ publicClient.readContract({ address: addr, abi: AgentSmartWalletAbi, functionName: "dailyLimit" }),
223
+ publicClient.readContract({ address: addr, abi: AgentSmartWalletAbi, functionName: "perTxLimit" }),
224
+ publicClient.readContract({ address: addr, abi: AgentSmartWalletAbi, functionName: "dailySpent" }),
225
+ publicClient.readContract({ address: addr, abi: AgentSmartWalletAbi, functionName: "lastResetDay" }),
226
+ publicClient.readContract({ address: addr, abi: AgentSmartWalletAbi, functionName: "paused" }),
227
+ publicClient.readContract({ address: addr, abi: AgentSmartWalletAbi, functionName: "getBalance" }),
228
+ publicClient.readContract({ address: addr, abi: AgentSmartWalletAbi, functionName: "getRemainingDailyAllowance" }),
229
+ ]);
230
+ return formatReadResult({
231
+ walletAddress: walletAddress,
232
+ owner,
233
+ controller,
234
+ dailyLimit: formatEther(dailyLimit) + " ETH",
235
+ perTxLimit: formatEther(perTxLimit) + " ETH",
236
+ dailySpent: formatEther(dailySpent) + " ETH",
237
+ remainingDailyAllowance: formatEther(remainingAllowance) + " ETH",
238
+ lastResetDay: Number(lastResetDay),
239
+ paused: paused ? "YES" : "NO",
240
+ balance: formatEther(balance) + " ETH",
241
+ }, `Smart Wallet ${walletAddress}`);
242
+ }
243
+ catch (e) {
244
+ const parsed = parseContractError(e);
245
+ return formatStructuredError(parsed.error, parsed.cause, parsed.fix, parsed.retryable);
246
+ }
247
+ });
248
+ // ──────────────────────────────────────────────────────────────
249
+ // corven_set_spending_limit
250
+ // ──────────────────────────────────────────────────────────────
251
+ server.registerTool("corven_set_spending_limit", {
252
+ title: "Set Spending Limits",
253
+ description: "Controller sets the daily and/or per-transaction spending limits on an AgentSmartWallet.\n" +
254
+ "USE WHEN: The agent needs higher/lower limits. Adjusting guardrails for a specific workload.\n" +
255
+ "REQUIRES: PRIVATE_KEY must be the controller address. Only the human controller can call this.\n" +
256
+ "RETURNS: Updated limits, transaction confirmation.\n" +
257
+ "NOTE: The agent (owner) CANNOT call this -- only the controller can adjust limits.",
258
+ inputSchema: {
259
+ walletAddress: ethAddress.describe("The AgentSmartWallet contract address"),
260
+ dailyLimit: ethAmount.optional().describe("New daily spending limit in ETH (omit to keep current)"),
261
+ perTxLimit: ethAmount.optional().describe("New per-transaction cap in ETH (omit to keep current)"),
262
+ },
263
+ }, async ({ walletAddress, dailyLimit, perTxLimit }) => {
264
+ try {
265
+ if (!dailyLimit && !perTxLimit) {
266
+ return formatStructuredError("No limits provided.", "At least one of dailyLimit or perTxLimit must be specified.", "Provide dailyLimit and/or perTxLimit in ETH.", false);
267
+ }
268
+ const results = [];
269
+ if (dailyLimit) {
270
+ const result = await executeWalletWrite(walletAddress, "setDailyLimit", [parseEther(dailyLimit)]);
271
+ if (result.status === "success") {
272
+ results.push(`Daily limit set to ${dailyLimit} ETH`);
273
+ }
274
+ else {
275
+ return { content: [{ type: "text", text: `Failed: ${result.status === "error" ? result.error : "unknown error"}` }], isError: true };
276
+ }
277
+ }
278
+ if (perTxLimit) {
279
+ const result = await executeWalletWrite(walletAddress, "setPerTxLimit", [parseEther(perTxLimit)]);
280
+ if (result.status === "success") {
281
+ results.push(`Per-tx limit set to ${perTxLimit} ETH`);
282
+ }
283
+ else {
284
+ return { content: [{ type: "text", text: `Failed: ${result.status === "error" ? result.error : "unknown error"}` }], isError: true };
285
+ }
286
+ }
287
+ return formatSuccess(`Spending limits updated.`, {
288
+ walletAddress,
289
+ ...(dailyLimit && { dailyLimit: `${dailyLimit} ETH` }),
290
+ ...(perTxLimit && { perTxLimit: `${perTxLimit} ETH` }),
291
+ changes: results,
292
+ });
293
+ }
294
+ catch (e) {
295
+ const parsed = parseContractError(e);
296
+ return formatStructuredError(parsed.error, parsed.cause, parsed.fix, parsed.retryable);
297
+ }
298
+ });
299
+ // ──────────────────────────────────────────────────────────────
300
+ // corven_set_recipient
301
+ // ──────────────────────────────────────────────────────────────
302
+ server.registerTool("corven_set_recipient", {
303
+ title: "Manage Recipient Whitelist",
304
+ description: "Controller adds or removes an address from the wallet's recipient whitelist. The agent can only send ETH to whitelisted addresses.\n" +
305
+ "USE WHEN: Whitelisting a new payment target (e.g., a worker agent, a contract). Removing a compromised address.\n" +
306
+ "REQUIRES: PRIVATE_KEY must be the controller address. Only the human controller can call this.\n" +
307
+ "RETURNS: Recipient address, allowed status, transaction confirmation.\n" +
308
+ "NOTE: Without whitelisting, the agent's execute() calls will revert with 'Recipient not whitelisted'.",
309
+ inputSchema: {
310
+ walletAddress: ethAddress.describe("The AgentSmartWallet contract address"),
311
+ recipient: ethAddress.describe("Address to add/remove from whitelist"),
312
+ allowed: z.boolean().describe("true = add to whitelist, false = remove from whitelist"),
313
+ },
314
+ }, async ({ walletAddress, recipient, allowed }) => {
315
+ try {
316
+ const result = await executeWalletWrite(walletAddress, "setRecipient", [recipient, allowed]);
317
+ if (result.status === "success") {
318
+ return formatSuccess(`Recipient ${allowed ? "whitelisted" : "removed"}.`, {
319
+ walletAddress,
320
+ recipient,
321
+ allowed: allowed ? "WHITELISTED" : "REMOVED",
322
+ }, result.txHash);
323
+ }
324
+ return { content: [{ type: "text", text: `Failed: ${result.status === "error" ? result.error : "unknown error"}` }], isError: true };
325
+ }
326
+ catch (e) {
327
+ const parsed = parseContractError(e);
328
+ return formatStructuredError(parsed.error, parsed.cause, parsed.fix, parsed.retryable);
329
+ }
330
+ });
331
+ // ──────────────────────────────────────────────────────────────
332
+ // corven_emergency_pause
333
+ // ──────────────────────────────────────────────────────────────
334
+ server.registerTool("corven_emergency_pause", {
335
+ title: "Emergency Pause/Unpause",
336
+ description: "Controller pauses or unpauses the AgentSmartWallet. When paused, all execute() calls revert -- the agent cannot send any ETH.\n" +
337
+ "USE WHEN: Suspecting the agent is compromised. Pre-maintenance freeze. Unpausing after resolving an incident.\n" +
338
+ "REQUIRES: PRIVATE_KEY must be the controller address. Only the human controller can call this.\n" +
339
+ "RETURNS: Pause status, transaction confirmation.\n" +
340
+ "NOTE: This is an emergency safety mechanism. The agent cannot unpause itself.",
341
+ inputSchema: {
342
+ walletAddress: ethAddress.describe("The AgentSmartWallet contract address"),
343
+ paused: z.boolean().describe("true = pause (freeze), false = unpause (resume)"),
344
+ },
345
+ }, async ({ walletAddress, paused }) => {
346
+ try {
347
+ const result = await executeWalletWrite(walletAddress, "setPaused", [paused]);
348
+ if (result.status === "success") {
349
+ return formatSuccess(paused
350
+ ? "Wallet PAUSED. All outbound transfers are frozen."
351
+ : "Wallet UNPAUSED. Agent can resume transactions.", {
352
+ walletAddress,
353
+ status: paused ? "PAUSED" : "ACTIVE",
354
+ }, result.txHash);
355
+ }
356
+ return { content: [{ type: "text", text: `Failed: ${result.status === "error" ? result.error : "unknown error"}` }], isError: true };
357
+ }
358
+ catch (e) {
359
+ const parsed = parseContractError(e);
360
+ return formatStructuredError(parsed.error, parsed.cause, parsed.fix, parsed.retryable);
361
+ }
362
+ });
363
+ }
364
+ //# sourceMappingURL=account-abstraction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-abstraction.js","sourceRoot":"","sources":["../../src/tools/account-abstraction.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"batches.d.ts","sourceRoot":"","sources":["../../src/tools/batches.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA2BzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwO1D"}
1
+ {"version":3,"file":"batches.d.ts","sourceRoot":"","sources":["../../src/tools/batches.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA2BzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+P1D"}