@varun-ai07/covenant-mcp 1.2.3 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1056 -170
- package/dist/abis/MultiTokenEscrow.json +836 -0
- package/dist/abis/v2/AgentRegistry.json +872 -0
- package/dist/abis/v2/DisputeResolution.json +493 -0
- package/dist/abis/v2/InsurancePool.json +645 -0
- package/dist/abis/v2/ReceiptVerifier.json +394 -0
- package/dist/abis/v2/RevisionManager.json +544 -0
- package/dist/abis/v2/TaskEscrow.json +1018 -0
- package/dist/cli.js +0 -0
- package/dist/config.d.ts +13 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +84 -25
- package/dist/config.js.map +1 -1
- package/dist/lib/did.d.ts +72 -0
- package/dist/lib/did.d.ts.map +1 -0
- package/dist/lib/did.js +115 -0
- package/dist/lib/did.js.map +1 -0
- package/dist/lib/formatResponse.d.ts +33 -0
- package/dist/lib/formatResponse.d.ts.map +1 -0
- package/dist/lib/formatResponse.js +92 -0
- package/dist/lib/formatResponse.js.map +1 -0
- package/dist/lib/schemaHelpers.d.ts +11 -0
- package/dist/lib/schemaHelpers.d.ts.map +1 -0
- package/dist/lib/schemaHelpers.js +11 -0
- package/dist/lib/schemaHelpers.js.map +1 -0
- package/dist/lib/store.d.ts +10 -0
- package/dist/lib/store.d.ts.map +1 -0
- package/dist/lib/store.js +39 -0
- package/dist/lib/store.js.map +1 -0
- package/dist/lib/verify.d.ts +21 -0
- package/dist/lib/verify.d.ts.map +1 -0
- package/dist/lib/verify.js +568 -0
- package/dist/lib/verify.js.map +1 -0
- package/dist/schemas.d.ts +5 -5
- package/dist/schemas.d.ts.map +1 -1
- package/dist/server.d.ts +1 -25
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +53 -37
- package/dist/server.js.map +1 -1
- package/dist/shared-types.d.ts +67 -0
- package/dist/shared-types.d.ts.map +1 -0
- package/dist/shared-types.js +86 -0
- package/dist/shared-types.js.map +1 -0
- package/dist/tools/account-abstraction.d.ts +3 -0
- package/dist/tools/account-abstraction.d.ts.map +1 -0
- package/dist/tools/account-abstraction.js +364 -0
- package/dist/tools/account-abstraction.js.map +1 -0
- package/dist/tools/batches.d.ts.map +1 -1
- package/dist/tools/batches.js +68 -37
- package/dist/tools/batches.js.map +1 -1
- package/dist/tools/bounties.d.ts +3 -0
- package/dist/tools/bounties.d.ts.map +1 -0
- package/dist/tools/bounties.js +304 -0
- package/dist/tools/bounties.js.map +1 -0
- package/dist/tools/bridge.d.ts +3 -0
- package/dist/tools/bridge.d.ts.map +1 -0
- package/dist/tools/bridge.js +190 -0
- package/dist/tools/bridge.js.map +1 -0
- package/dist/tools/collectives.d.ts.map +1 -1
- package/dist/tools/collectives.js +74 -46
- package/dist/tools/collectives.js.map +1 -1
- package/dist/tools/covenant-help.d.ts +3 -0
- package/dist/tools/covenant-help.d.ts.map +1 -0
- package/dist/tools/covenant-help.js +321 -0
- package/dist/tools/covenant-help.js.map +1 -0
- package/dist/tools/cross-chain.d.ts +3 -0
- package/dist/tools/cross-chain.d.ts.map +1 -0
- package/dist/tools/cross-chain.js +77 -0
- package/dist/tools/cross-chain.js.map +1 -0
- package/dist/tools/disputes.d.ts.map +1 -1
- package/dist/tools/disputes.js +39 -33
- package/dist/tools/disputes.js.map +1 -1
- package/dist/tools/escrow.d.ts.map +1 -1
- package/dist/tools/escrow.js +248 -199
- package/dist/tools/escrow.js.map +1 -1
- package/dist/tools/fiat-onramp.d.ts +3 -0
- package/dist/tools/fiat-onramp.d.ts.map +1 -0
- package/dist/tools/fiat-onramp.js +108 -0
- package/dist/tools/fiat-onramp.js.map +1 -0
- package/dist/tools/governance.d.ts +3 -0
- package/dist/tools/governance.d.ts.map +1 -0
- package/dist/tools/governance.js +271 -0
- package/dist/tools/governance.js.map +1 -0
- package/dist/tools/grants.d.ts +3 -0
- package/dist/tools/grants.d.ts.map +1 -0
- package/dist/tools/grants.js +269 -0
- package/dist/tools/grants.js.map +1 -0
- package/dist/tools/insurance.d.ts.map +1 -1
- package/dist/tools/insurance.js +92 -45
- package/dist/tools/insurance.js.map +1 -1
- package/dist/tools/market.d.ts.map +1 -1
- package/dist/tools/market.js +122 -103
- package/dist/tools/market.js.map +1 -1
- package/dist/tools/matching.d.ts +3 -0
- package/dist/tools/matching.d.ts.map +1 -0
- package/dist/tools/matching.js +233 -0
- package/dist/tools/matching.js.map +1 -0
- package/dist/tools/messaging.d.ts +3 -0
- package/dist/tools/messaging.d.ts.map +1 -0
- package/dist/tools/messaging.js +159 -0
- package/dist/tools/messaging.js.map +1 -0
- package/dist/tools/multi-token.d.ts +3 -0
- package/dist/tools/multi-token.d.ts.map +1 -0
- package/dist/tools/multi-token.js +274 -0
- package/dist/tools/multi-token.js.map +1 -0
- package/dist/tools/offchain-coordinator.d.ts +3 -0
- package/dist/tools/offchain-coordinator.d.ts.map +1 -0
- package/dist/tools/offchain-coordinator.js +436 -0
- package/dist/tools/offchain-coordinator.js.map +1 -0
- package/dist/tools/protocol.d.ts.map +1 -1
- package/dist/tools/protocol.js +19 -6
- package/dist/tools/protocol.js.map +1 -1
- package/dist/tools/receipts.d.ts.map +1 -1
- package/dist/tools/receipts.js +39 -39
- package/dist/tools/receipts.js.map +1 -1
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +90 -43
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/reputation-vc.d.ts +3 -0
- package/dist/tools/reputation-vc.d.ts.map +1 -0
- package/dist/tools/reputation-vc.js +438 -0
- package/dist/tools/reputation-vc.js.map +1 -0
- package/dist/tools/revisions.d.ts +3 -0
- package/dist/tools/revisions.d.ts.map +1 -0
- package/dist/tools/revisions.js +108 -0
- package/dist/tools/revisions.js.map +1 -0
- package/dist/tools/router.d.ts +3 -0
- package/dist/tools/router.d.ts.map +1 -0
- package/dist/tools/router.js +104 -0
- package/dist/tools/router.js.map +1 -0
- package/dist/tools/streaming.d.ts +3 -0
- package/dist/tools/streaming.d.ts.map +1 -0
- package/dist/tools/streaming.js +350 -0
- package/dist/tools/streaming.js.map +1 -0
- package/dist/tools/templates.d.ts +3 -0
- package/dist/tools/templates.d.ts.map +1 -0
- package/dist/tools/templates.js +392 -0
- package/dist/tools/templates.js.map +1 -0
- package/dist/tools/training.d.ts +3 -0
- package/dist/tools/training.d.ts.map +1 -0
- package/dist/tools/training.js +304 -0
- package/dist/tools/training.js.map +1 -0
- package/dist/tools/v2-settlement.d.ts +3 -0
- package/dist/tools/v2-settlement.d.ts.map +1 -0
- package/dist/tools/v2-settlement.js +226 -0
- package/dist/tools/v2-settlement.js.map +1 -0
- package/dist/tools/verification.d.ts +3 -0
- package/dist/tools/verification.d.ts.map +1 -0
- package/dist/tools/verification.js +215 -0
- package/dist/tools/verification.js.map +1 -0
- package/dist/tools/verify-deep.d.ts +3 -0
- package/dist/tools/verify-deep.d.ts.map +1 -0
- package/dist/tools/verify-deep.js +125 -0
- package/dist/tools/verify-deep.js.map +1 -0
- package/dist/types.d.ts +16 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -23
- package/dist/types.js.map +1 -1
- package/package.json +2 -1
package/dist/cli.js
CHANGED
|
File without changes
|
package/dist/config.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Address } from "viem";
|
|
2
|
-
import type { WalletMode, ContractConfig } from "./types.js";
|
|
2
|
+
import type { WalletMode, ContractConfig, ContractVersion } from "./types.js";
|
|
3
3
|
export declare const RPC_URL: string;
|
|
4
4
|
export declare const CHAIN: {
|
|
5
5
|
blockExplorers?: {
|
|
@@ -45,8 +45,10 @@ export declare const CHAIN: {
|
|
|
45
45
|
fees?: import("viem").ChainFees<undefined> | undefined;
|
|
46
46
|
formatters?: undefined;
|
|
47
47
|
prepareTransactionRequest?: ((args: import("viem").PrepareTransactionRequestParameters, options: {
|
|
48
|
+
client: import("viem").Client;
|
|
48
49
|
phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
|
|
49
50
|
}) => Promise<import("viem").PrepareTransactionRequestParameters>) | [fn: ((args: import("viem").PrepareTransactionRequestParameters, options: {
|
|
51
|
+
client: import("viem").Client;
|
|
50
52
|
phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
|
|
51
53
|
}) => Promise<import("viem").PrepareTransactionRequestParameters>) | undefined, options: {
|
|
52
54
|
runAt: readonly ("beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters")[];
|
|
@@ -366,8 +368,10 @@ export declare const CHAIN: {
|
|
|
366
368
|
};
|
|
367
369
|
};
|
|
368
370
|
prepareTransactionRequest?: ((args: import("viem").PrepareTransactionRequestParameters, options: {
|
|
371
|
+
client: import("viem").Client;
|
|
369
372
|
phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
|
|
370
373
|
}) => Promise<import("viem").PrepareTransactionRequestParameters>) | [fn: ((args: import("viem").PrepareTransactionRequestParameters, options: {
|
|
374
|
+
client: import("viem").Client;
|
|
371
375
|
phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
|
|
372
376
|
}) => Promise<import("viem").PrepareTransactionRequestParameters>) | undefined, options: {
|
|
373
377
|
runAt: readonly ("beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters")[];
|
|
@@ -379,6 +383,14 @@ export declare const CHAIN: {
|
|
|
379
383
|
readonly network: "base-sepolia";
|
|
380
384
|
};
|
|
381
385
|
export declare const ZERO_ADDRESS: Address;
|
|
386
|
+
export declare const CONTRACT_VERSION: ContractVersion;
|
|
387
|
+
/**
|
|
388
|
+
* Active contract addresses. When CONTRACT_VERSION=v2:
|
|
389
|
+
* - AgentRegistry, TaskEscrow, ReceiptVerifier → v2 addresses
|
|
390
|
+
* - AgentInsurance → InsurancePool v2 address
|
|
391
|
+
* - DisputeArbitration → DisputeResolution v2 address
|
|
392
|
+
* - All other v1 contracts (market, batches, collective, router, etc.) unchanged
|
|
393
|
+
*/
|
|
382
394
|
export declare const CONTRACTS: ContractConfig;
|
|
383
395
|
export declare const WALLET_MODE: WalletMode;
|
|
384
396
|
export declare const HTTP_PORT: number;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,OAAO,EAEb,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,OAAO,EAEb,MAAM,MAAM,CAAC;AAId,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAoB,eAAe,EAAwB,MAAM,YAAY,CAAC;AAQtH,eAAO,MAAM,OAAO,QAC4C,CAAC;AASjE,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wEAyBuE,CAAC;;;;;;;;;;;;;;qCAU7B,CAAC;;;;;;;;;;;;2BAenD,CAAC;+BAEU,CAAC;;;;;;8EAM8B,CAAA;;;8BAGvC,CAAC;;;;;;;;;;;;;;wBAoBN,CAAC;gCACiB,CAAA;;;0BAKO,CAAC;oBAC/B,CAAD;;;;;;;;;;;;;;8BAmBF,CAAC;;;;;0BASA,CAAF;iCACmB,CAAC;mCAEkC,CAAC;uBAEf,CAAC;uBACJ,CAAC;;;gCAGwB,CAAC;4BACjC,CAAC;oCAOtB,CAAC;0BACU,CAAC;oBAEf,CAAJ;0BAEE,CAAF;;;;8BAQM,CAAC;;;;;;;;;;;;;;;iCA8BJ,CAAC;mCAA4D,CAAC;;;;gCAEG,CAAC;4BAC/B,CAAC;oCACrB,CAAC;0BAAmD,CAAC;oBAC1C,CAAA;0BAAmD,CAAC;;;;8BAEA,CAAC;;;;;;;;;;;;;;;iCAU1E,CAAC;mCAA6D,CAAA;;;wBAEwB,CAAC;gCAGjG,CAAA;;;0BAIqC,CAAC;oBAE3B,CAAC;0BACQ,CAAC;;;;8BAKhB,CAAC;;;;;;;;;;;;;;;iCAoBN,CAAA;;;;wBAMO,CAAC;;;;0BAIwB,CAAC;oBACnB,CAAC;0BACc,CAAC;;;;8BAKL,CAAC;;;;;;;;;;;;;;;;mCAsBwB,CAAC;;;wBAM9C,CAAC;gCAEiB,CAAC;;;0BAKtB,CAAA;oBACkB,CAAC;0BAEf,CAAC;;;;;;qFAKmJ,CAAC;4BAAuD,CAAC;2BAAiD,CAAC;;;8BAAmJ,CAAC;;;;;;;;oBAAua,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA/RhzB,CAAC;AAMlB,eAAO,MAAM,YAAY,EACyB,OAAO,CAAC;AAgC1D,eAAO,MAAM,gBAAgB,EAAE,eAC4B,CAAC;AAE5D;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,EAAE,cAUjB,CAAC;AAMR,eAAO,MAAM,WAAW,EAAE,UACwC,CAAC;AAEnE,eAAO,MAAM,SAAS,QAAoD,CAAC;AAM3E;;;GAGG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAuBrC;AA6BD,wBAAgB,eAAe,IAAI,GAAG,CAQrC;AAED,wBAAgB,eAAe,IAAI,GAAG,CAcrC;AAED,wBAAgB,UAAU,IAAI,GAAG,CAWhC;AAiED,wBAAgB,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,GAAG,CAgBjD;AAeD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYrD;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAS7D"}
|
package/dist/config.js
CHANGED
|
@@ -6,6 +6,7 @@ import * as dotenv from "dotenv";
|
|
|
6
6
|
import { createWalletClient, createPublicClient, http, defineChain, } from "viem";
|
|
7
7
|
import { baseSepolia } from "viem/chains";
|
|
8
8
|
import { privateKeyToAccount } from "viem/accounts";
|
|
9
|
+
import { BASE_SEPOLIA_ADDRESSES } from "./shared-types.js";
|
|
9
10
|
dotenv.config({ quiet: true });
|
|
10
11
|
// ============================================================
|
|
11
12
|
// Network
|
|
@@ -21,33 +22,56 @@ export const CHAIN = RPC_URL.includes("127.0.0.1") || RPC_URL.includes("localhos
|
|
|
21
22
|
? hardhatLocal
|
|
22
23
|
: baseSepolia;
|
|
23
24
|
// ============================================================
|
|
24
|
-
// Contract Addresses
|
|
25
|
+
// Contract Addresses — Version-Aware
|
|
25
26
|
// ============================================================
|
|
26
27
|
export const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
AgentRegistry: (process.env.REGISTRY_ADDRESS ||
|
|
30
|
-
TaskEscrow: (process.env.ESCROW_ADDRESS ||
|
|
31
|
-
ReceiptVerifier: (process.env.VERIFIER_ADDRESS ||
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
28
|
+
// V1 addresses (original deployed contracts — defaults from canonical shared-types)
|
|
29
|
+
const _v1 = {
|
|
30
|
+
AgentRegistry: (process.env.REGISTRY_ADDRESS || BASE_SEPOLIA_ADDRESSES.AgentRegistry),
|
|
31
|
+
TaskEscrow: (process.env.ESCROW_ADDRESS || BASE_SEPOLIA_ADDRESSES.TaskEscrow),
|
|
32
|
+
ReceiptVerifier: (process.env.VERIFIER_ADDRESS || BASE_SEPOLIA_ADDRESSES.ReceiptVerifier),
|
|
33
|
+
OpenTaskMarket: (process.env.MARKET_ADDRESS || BASE_SEPOLIA_ADDRESSES.OpenTaskMarket),
|
|
34
|
+
ParallelTaskBatch: (process.env.BATCH_ADDRESS || BASE_SEPOLIA_ADDRESSES.ParallelTaskBatch),
|
|
35
|
+
AgentCollective: (process.env.COLLECTIVE_ADDRESS || BASE_SEPOLIA_ADDRESSES.AgentCollective),
|
|
36
|
+
AgentInsurance: (process.env.INSURANCE_ADDRESS || BASE_SEPOLIA_ADDRESSES.AgentInsurance),
|
|
37
|
+
DisputeArbitration: (process.env.DISPUTE_ADDRESS || BASE_SEPOLIA_ADDRESSES.DisputeArbitration),
|
|
38
|
+
Groth16VerifierCapability: (process.env.CAPABILITY_VERIFIER_ADDRESS || BASE_SEPOLIA_ADDRESSES.Groth16VerifierCapability),
|
|
39
|
+
CapabilityVerifier: (process.env.CAPABILITY_WRAPPER_ADDRESS || BASE_SEPOLIA_ADDRESSES.CapabilityVerifier),
|
|
40
|
+
Groth16VerifierReputation: (process.env.REPUTATION_VERIFIER_ADDRESS || BASE_SEPOLIA_ADDRESSES.Groth16VerifierReputation),
|
|
41
|
+
ReputationVerifier: (process.env.REPUTATION_WRAPPER_ADDRESS || BASE_SEPOLIA_ADDRESSES.ReputationVerifier),
|
|
42
|
+
COVENANTRouter: (process.env.ROUTER_ADDRESS || BASE_SEPOLIA_ADDRESSES.COVENANTRouter),
|
|
43
|
+
LitProtocolIntegration: (process.env.LIT_ADDRESS || BASE_SEPOLIA_ADDRESSES.LitProtocolIntegration),
|
|
44
|
+
AgentWallet: (process.env.WALLET_ADDRESS || BASE_SEPOLIA_ADDRESSES.AgentWallet),
|
|
45
|
+
};
|
|
46
|
+
// V2 addresses (minimal settlement contracts)
|
|
47
|
+
const _v2 = {
|
|
48
|
+
AgentRegistry: (process.env.AGENT_REGISTRY_V2 || ZERO_ADDRESS),
|
|
49
|
+
TaskEscrow: (process.env.TASK_ESCROW_V2 || ZERO_ADDRESS),
|
|
50
|
+
ReceiptVerifier: (process.env.RECEIPT_VERIFIER_V2 || ZERO_ADDRESS),
|
|
51
|
+
InsurancePool: (process.env.INSURANCE_POOL || ZERO_ADDRESS),
|
|
52
|
+
DisputeResolution: (process.env.DISPUTE_RESOLUTION || ZERO_ADDRESS),
|
|
53
|
+
MultiTokenEscrow: (process.env.MULTI_TOKEN_ESCROW || ZERO_ADDRESS),
|
|
54
|
+
RevisionManager: (process.env.REVISION_MANAGER_V2 || ZERO_ADDRESS),
|
|
50
55
|
};
|
|
56
|
+
export const CONTRACT_VERSION = process.env.CONTRACT_VERSION || "v1";
|
|
57
|
+
/**
|
|
58
|
+
* Active contract addresses. When CONTRACT_VERSION=v2:
|
|
59
|
+
* - AgentRegistry, TaskEscrow, ReceiptVerifier → v2 addresses
|
|
60
|
+
* - AgentInsurance → InsurancePool v2 address
|
|
61
|
+
* - DisputeArbitration → DisputeResolution v2 address
|
|
62
|
+
* - All other v1 contracts (market, batches, collective, router, etc.) unchanged
|
|
63
|
+
*/
|
|
64
|
+
export const CONTRACTS = CONTRACT_VERSION === "v2"
|
|
65
|
+
? {
|
|
66
|
+
..._v1,
|
|
67
|
+
AgentRegistry: _v2.AgentRegistry,
|
|
68
|
+
TaskEscrow: _v2.TaskEscrow,
|
|
69
|
+
ReceiptVerifier: _v2.ReceiptVerifier,
|
|
70
|
+
AgentInsurance: _v2.InsurancePool, // v1 name → v2 address
|
|
71
|
+
DisputeArbitration: _v2.DisputeResolution, // v1 name → v2 address
|
|
72
|
+
MultiTokenEscrow: _v2.MultiTokenEscrow,
|
|
73
|
+
}
|
|
74
|
+
: _v1;
|
|
51
75
|
// ============================================================
|
|
52
76
|
// Wallet Mode
|
|
53
77
|
// ============================================================
|
|
@@ -129,7 +153,12 @@ export function getAccount() {
|
|
|
129
153
|
const key = getPrivateKey();
|
|
130
154
|
if (!key)
|
|
131
155
|
return null;
|
|
132
|
-
|
|
156
|
+
try {
|
|
157
|
+
_account = privateKeyToAccount(key);
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
133
162
|
}
|
|
134
163
|
return _account;
|
|
135
164
|
}
|
|
@@ -148,11 +177,16 @@ import DisputeArbitrationAbi from "./abis/DisputeArbitration.json" with { type:
|
|
|
148
177
|
import COVENANTRouterAbi from "./abis/COVENANTRouter.json" with { type: "json" };
|
|
149
178
|
import LitProtocolIntegrationAbi from "./abis/LitProtocolIntegration.json" with { type: "json" };
|
|
150
179
|
import AgentWalletAbi from "./abis/AgentWallet.json" with { type: "json" };
|
|
180
|
+
import MultiTokenEscrowAbi from "./abis/MultiTokenEscrow.json" with { type: "json" };
|
|
151
181
|
// ZK Verifiers
|
|
152
182
|
import Groth16VerifierCapabilityAbi from "./abis/Groth16VerifierCapability.json" with { type: "json" };
|
|
153
183
|
import CapabilityVerifierAbi from "./abis/CapabilityVerifier.json" with { type: "json" };
|
|
154
184
|
import Groth16VerifierReputationAbi from "./abis/Groth16VerifierReputation.json" with { type: "json" };
|
|
155
185
|
import ReputationVerifierAbi from "./abis/ReputationVerifier.json" with { type: "json" };
|
|
186
|
+
// V2 ABIs — loaded dynamically via loadAbiV2(); static imports added as v2 artifacts are compiled
|
|
187
|
+
import fs from "node:fs";
|
|
188
|
+
import path from "node:path";
|
|
189
|
+
import { fileURLToPath } from "node:url";
|
|
156
190
|
const ABIS = {
|
|
157
191
|
// Core Protocol
|
|
158
192
|
AgentRegistry: AgentRegistryAbi.abi,
|
|
@@ -176,15 +210,40 @@ const ABIS = {
|
|
|
176
210
|
CapabilityVerifier: CapabilityVerifierAbi,
|
|
177
211
|
Groth16VerifierReputation: Groth16VerifierReputationAbi,
|
|
178
212
|
ReputationVerifier: ReputationVerifierAbi,
|
|
213
|
+
// Multi-Token Escrow
|
|
214
|
+
MultiTokenEscrow: MultiTokenEscrowAbi,
|
|
179
215
|
};
|
|
180
216
|
const ALLOWED_CONTRACTS = Object.keys(ABIS);
|
|
217
|
+
// V1→V2 contract name mapping (tools use v1 names, v2 ABIs have different names)
|
|
218
|
+
const V1_TO_V2_ABI_MAP = {
|
|
219
|
+
AgentInsurance: "InsurancePool",
|
|
220
|
+
DisputeArbitration: "DisputeResolution",
|
|
221
|
+
};
|
|
181
222
|
export function loadAbi(contractName) {
|
|
223
|
+
// When v2 is active, try v2 ABI first
|
|
224
|
+
if (CONTRACT_VERSION === "v2") {
|
|
225
|
+
const v2Name = V1_TO_V2_ABI_MAP[contractName] || contractName;
|
|
226
|
+
try {
|
|
227
|
+
const filePath = path.join(V2_ABI_DIR, `${v2Name}.json`);
|
|
228
|
+
if (fs.existsSync(filePath)) {
|
|
229
|
+
const artifact = JSON.parse(fs.readFileSync(filePath, "utf-8"));
|
|
230
|
+
return artifact.abi ?? artifact;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
catch { /* fall through to v1 ABI */ }
|
|
234
|
+
}
|
|
182
235
|
if (!ALLOWED_CONTRACTS.includes(contractName)) {
|
|
183
236
|
throw new Error(`Unknown contract: ${contractName}. Allowed: ${ALLOWED_CONTRACTS.join(", ")}`);
|
|
184
237
|
}
|
|
185
238
|
return ABIS[contractName];
|
|
186
239
|
}
|
|
187
240
|
// ============================================================
|
|
241
|
+
// V2 ABI Loader
|
|
242
|
+
// ============================================================
|
|
243
|
+
const _filename = fileURLToPath(import.meta.url);
|
|
244
|
+
const _dirname = path.dirname(_filename);
|
|
245
|
+
const V2_ABI_DIR = path.resolve(_dirname, "abis", "v2");
|
|
246
|
+
// ============================================================
|
|
188
247
|
// Chain helpers
|
|
189
248
|
// ============================================================
|
|
190
249
|
export function getExplorerTxUrl(hash) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,IAAI,EAEJ,WAAW,GACZ,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate a COVENANT DID from an Ethereum address.
|
|
3
|
+
* @example generateDID("0x70F6...") → "did:covenant:0x70F6..."
|
|
4
|
+
*/
|
|
5
|
+
export declare function generateDID(address: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* Parse a COVENANT DID and extract the Ethereum address.
|
|
8
|
+
* @example parseDID("did:covenant:0x70F6...") → "0x70F6..."
|
|
9
|
+
*/
|
|
10
|
+
export declare function parseDID(did: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* Validate a COVENANT DID string.
|
|
13
|
+
*/
|
|
14
|
+
export declare function isValidDID(value: string): boolean;
|
|
15
|
+
export declare const addressToDid: typeof generateDID;
|
|
16
|
+
export declare const didToAddress: typeof parseDID;
|
|
17
|
+
export declare const isDid: typeof isValidDID;
|
|
18
|
+
/**
|
|
19
|
+
* Hash a capability string to a deterministic bytes32.
|
|
20
|
+
* Used to include capability proofs in DID documents without
|
|
21
|
+
* exposing the raw strings on public credentials.
|
|
22
|
+
*/
|
|
23
|
+
export declare function hashCapability(capability: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* Hash an array of capabilities.
|
|
26
|
+
*/
|
|
27
|
+
export declare function hashCapabilities(capabilities: string[]): string[];
|
|
28
|
+
interface AgentDIDDocument {
|
|
29
|
+
"@context": string[];
|
|
30
|
+
id: string;
|
|
31
|
+
created: string;
|
|
32
|
+
verificationMethod: Array<{
|
|
33
|
+
id: string;
|
|
34
|
+
type: string;
|
|
35
|
+
controller: string;
|
|
36
|
+
blockchainAccountId: string;
|
|
37
|
+
}>;
|
|
38
|
+
capabilityInvocation: string[];
|
|
39
|
+
service?: Array<{
|
|
40
|
+
id: string;
|
|
41
|
+
type: string;
|
|
42
|
+
serviceEndpoint: string;
|
|
43
|
+
}>;
|
|
44
|
+
metadata: {
|
|
45
|
+
capabilities: string[];
|
|
46
|
+
capabilityHashes: string[];
|
|
47
|
+
reputation?: number;
|
|
48
|
+
tasksCompleted?: number;
|
|
49
|
+
tasksFailed?: number;
|
|
50
|
+
stakedAmount?: string;
|
|
51
|
+
attestationCount?: number;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Create a minimal DID document for a COVENANT agent.
|
|
56
|
+
*
|
|
57
|
+
* Includes:
|
|
58
|
+
* - Verification method tied to the Ethereum address
|
|
59
|
+
* - Capability hashes as metadata
|
|
60
|
+
* - Optional reputation data (populated when agent is registered)
|
|
61
|
+
*/
|
|
62
|
+
export declare function createDIDDocument(address: string, agentData?: {
|
|
63
|
+
name?: string;
|
|
64
|
+
capabilities?: string[];
|
|
65
|
+
reputation?: number;
|
|
66
|
+
tasksCompleted?: number;
|
|
67
|
+
tasksFailed?: number;
|
|
68
|
+
stakedAmount?: string;
|
|
69
|
+
attestationCount?: number;
|
|
70
|
+
}): AgentDIDDocument;
|
|
71
|
+
export {};
|
|
72
|
+
//# sourceMappingURL=did.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"did.d.ts","sourceRoot":"","sources":["../../src/lib/did.ts"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKnD;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAW5C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAQjD;AAGD,eAAO,MAAM,YAAY,oBAAc,CAAC;AACxC,eAAO,MAAM,YAAY,iBAAW,CAAC;AACrC,eAAO,MAAM,KAAK,mBAAa,CAAC;AAMhC;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAEjE;AAMD,UAAU,gBAAgB;IACxB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,KAAK,CAAC;QACxB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC,CAAC;IACH,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC,CAAC;IACH,QAAQ,EAAE;QACR,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE;IACV,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GACA,gBAAgB,CAoClB"}
|
package/dist/lib/did.js
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DID (Decentralized Identifier) Utilities
|
|
3
|
+
*
|
|
4
|
+
* W3C DID method for COVENANT agents.
|
|
5
|
+
* Format: did:covenant:<address>
|
|
6
|
+
*
|
|
7
|
+
* Used by reputation VC tools to create portable agent identities.
|
|
8
|
+
*/
|
|
9
|
+
import { keccak256, toBytes, isAddress } from "viem";
|
|
10
|
+
// ============================================================
|
|
11
|
+
// DID Format
|
|
12
|
+
// ============================================================
|
|
13
|
+
const DID_PREFIX = "did:covenant:";
|
|
14
|
+
/**
|
|
15
|
+
* Generate a COVENANT DID from an Ethereum address.
|
|
16
|
+
* @example generateDID("0x70F6...") → "did:covenant:0x70F6..."
|
|
17
|
+
*/
|
|
18
|
+
export function generateDID(address) {
|
|
19
|
+
if (!isAddress(address)) {
|
|
20
|
+
throw new Error(`Invalid Ethereum address: ${address}`);
|
|
21
|
+
}
|
|
22
|
+
return `${DID_PREFIX}${address.toLowerCase()}`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Parse a COVENANT DID and extract the Ethereum address.
|
|
26
|
+
* @example parseDID("did:covenant:0x70F6...") → "0x70F6..."
|
|
27
|
+
*/
|
|
28
|
+
export function parseDID(did) {
|
|
29
|
+
if (!did.startsWith(DID_PREFIX)) {
|
|
30
|
+
throw new Error(`Invalid DID format: expected did:covenant:0x..., got: ${did.slice(0, 20)}`);
|
|
31
|
+
}
|
|
32
|
+
const address = did.slice(DID_PREFIX.length);
|
|
33
|
+
if (!isAddress(address)) {
|
|
34
|
+
throw new Error(`Invalid address in DID: ${address}`);
|
|
35
|
+
}
|
|
36
|
+
return address;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Validate a COVENANT DID string.
|
|
40
|
+
*/
|
|
41
|
+
export function isValidDID(value) {
|
|
42
|
+
if (!value.startsWith(DID_PREFIX))
|
|
43
|
+
return false;
|
|
44
|
+
try {
|
|
45
|
+
parseDID(value);
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Backward-compatible aliases
|
|
53
|
+
export const addressToDid = generateDID;
|
|
54
|
+
export const didToAddress = parseDID;
|
|
55
|
+
export const isDid = isValidDID;
|
|
56
|
+
// ============================================================
|
|
57
|
+
// Capability Hashing
|
|
58
|
+
// ============================================================
|
|
59
|
+
/**
|
|
60
|
+
* Hash a capability string to a deterministic bytes32.
|
|
61
|
+
* Used to include capability proofs in DID documents without
|
|
62
|
+
* exposing the raw strings on public credentials.
|
|
63
|
+
*/
|
|
64
|
+
export function hashCapability(capability) {
|
|
65
|
+
return keccak256(toBytes(capability));
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Hash an array of capabilities.
|
|
69
|
+
*/
|
|
70
|
+
export function hashCapabilities(capabilities) {
|
|
71
|
+
return capabilities.map(hashCapability);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Create a minimal DID document for a COVENANT agent.
|
|
75
|
+
*
|
|
76
|
+
* Includes:
|
|
77
|
+
* - Verification method tied to the Ethereum address
|
|
78
|
+
* - Capability hashes as metadata
|
|
79
|
+
* - Optional reputation data (populated when agent is registered)
|
|
80
|
+
*/
|
|
81
|
+
export function createDIDDocument(address, agentData) {
|
|
82
|
+
const did = addressToDid(address);
|
|
83
|
+
const capabilityHashes = agentData?.capabilities
|
|
84
|
+
? hashCapabilities(agentData.capabilities)
|
|
85
|
+
: [];
|
|
86
|
+
const doc = {
|
|
87
|
+
"@context": [
|
|
88
|
+
"https://www.w3.org/ns/did/v1",
|
|
89
|
+
"https://covenant.io/did/v1",
|
|
90
|
+
"https://w3id.org/security/suites/secp256k1recovery-2020/v2",
|
|
91
|
+
],
|
|
92
|
+
id: did,
|
|
93
|
+
created: new Date().toISOString(),
|
|
94
|
+
verificationMethod: [
|
|
95
|
+
{
|
|
96
|
+
id: `${did}#controller`,
|
|
97
|
+
type: "EcdsaSecp256k1RecoveryMethod2020",
|
|
98
|
+
controller: did,
|
|
99
|
+
blockchainAccountId: `eip155:84532:${address}`,
|
|
100
|
+
},
|
|
101
|
+
],
|
|
102
|
+
capabilityInvocation: [`${did}#controller`],
|
|
103
|
+
metadata: {
|
|
104
|
+
capabilities: agentData?.capabilities ?? [],
|
|
105
|
+
capabilityHashes,
|
|
106
|
+
reputation: agentData?.reputation,
|
|
107
|
+
tasksCompleted: agentData?.tasksCompleted,
|
|
108
|
+
tasksFailed: agentData?.tasksFailed,
|
|
109
|
+
stakedAmount: agentData?.stakedAmount,
|
|
110
|
+
attestationCount: agentData?.attestationCount,
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
return doc;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=did.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"did.js","sourceRoot":"","sources":["../../src/lib/did.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface SuccessResponse {
|
|
2
|
+
success: true;
|
|
3
|
+
summary: string;
|
|
4
|
+
data: Record<string, unknown>;
|
|
5
|
+
txHash?: string;
|
|
6
|
+
basescanUrl?: string;
|
|
7
|
+
nextSteps?: string[];
|
|
8
|
+
workflowState?: Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
export interface ErrorResponse {
|
|
11
|
+
success: false;
|
|
12
|
+
error: string;
|
|
13
|
+
cause: string;
|
|
14
|
+
fix: string;
|
|
15
|
+
retryable: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function formatSuccess(summary: string, data: Record<string, unknown>, txHash?: string, nextSteps?: string[], workflowState?: Record<string, unknown>): {
|
|
18
|
+
content: Array<{
|
|
19
|
+
type: "text";
|
|
20
|
+
text: string;
|
|
21
|
+
}>;
|
|
22
|
+
};
|
|
23
|
+
export declare function formatStructuredError(error: string, cause: string, fix: string, retryable?: boolean): {
|
|
24
|
+
isError: true;
|
|
25
|
+
content: Array<{
|
|
26
|
+
type: "text";
|
|
27
|
+
text: string;
|
|
28
|
+
}>;
|
|
29
|
+
};
|
|
30
|
+
export declare function parseContractError(err: unknown): ErrorResponse;
|
|
31
|
+
export declare function validateWorkerRegistered(registry: any, workerAddress: string): Promise<ErrorResponse | null>;
|
|
32
|
+
export declare function validateBalance(publicClient: any, address: `0x${string}`, requiredEth: string, gasBufferEth?: string): Promise<ErrorResponse | null>;
|
|
33
|
+
//# sourceMappingURL=formatResponse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatResponse.d.ts","sourceRoot":"","sources":["../../src/lib/formatResponse.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,OAAO,CAAC;CACpB;AAID,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAAE,EACpB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACtC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAepD;AAID,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,SAAS,UAAO,GACf;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAYnE;AAID,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAsC9D;AAID,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,GAAG,EACb,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAU/B;AAED,wBAAsB,eAAe,CACnC,YAAY,EAAE,GAAG,EACjB,OAAO,EAAE,KAAK,MAAM,EAAE,EACtB,WAAW,EAAE,MAAM,EACnB,YAAY,SAAW,GACtB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAO/B"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { formatEther, parseEther } from "viem";
|
|
2
|
+
// ─── Success Formatter ────────────────────────────────────────
|
|
3
|
+
export function formatSuccess(summary, data, txHash, nextSteps, workflowState) {
|
|
4
|
+
const response = {
|
|
5
|
+
success: true,
|
|
6
|
+
summary,
|
|
7
|
+
data,
|
|
8
|
+
...(txHash && {
|
|
9
|
+
txHash,
|
|
10
|
+
basescanUrl: `https://sepolia.basescan.org/tx/${txHash}`,
|
|
11
|
+
}),
|
|
12
|
+
...(nextSteps && { nextSteps }),
|
|
13
|
+
...(workflowState && { workflowState }),
|
|
14
|
+
};
|
|
15
|
+
return {
|
|
16
|
+
content: [{ type: "text", text: JSON.stringify(response, null, 2) }],
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
// ─── Error Formatter ──────────────────────────────────────────
|
|
20
|
+
export function formatStructuredError(error, cause, fix, retryable = true) {
|
|
21
|
+
const response = {
|
|
22
|
+
success: false,
|
|
23
|
+
error,
|
|
24
|
+
cause,
|
|
25
|
+
fix,
|
|
26
|
+
retryable,
|
|
27
|
+
};
|
|
28
|
+
return {
|
|
29
|
+
isError: true,
|
|
30
|
+
content: [{ type: "text", text: JSON.stringify(response, null, 2) }],
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// ─── Contract Error Parser ────────────────────────────────────
|
|
34
|
+
export function parseContractError(err) {
|
|
35
|
+
const msg = String(err);
|
|
36
|
+
if (msg.includes("InsufficientStake")) {
|
|
37
|
+
return { success: false, error: "Registration failed: wallet does not have enough ETH for the stake deposit.", cause: "The wallet needs at least 0.001 ETH for the stake plus ~0.0002 ETH for gas.", fix: "Get free testnet ETH at https://app.optimism.io/faucet (select Base Sepolia). Then retry corven_register_agent.", retryable: true };
|
|
38
|
+
}
|
|
39
|
+
if (msg.includes("AlreadyRegistered")) {
|
|
40
|
+
return { success: false, error: "This wallet address is already registered as an agent.", cause: "corven_register_agent can only be called once per wallet address.", fix: "Use corven_get_agent with this wallet address to see the existing profile.", retryable: false };
|
|
41
|
+
}
|
|
42
|
+
if (msg.includes("AgentNotActive") || msg.includes("NotRegistered")) {
|
|
43
|
+
return { success: false, error: "The specified agent address is not registered or has been deactivated.", cause: "Either the wallet has never called corven_register_agent, or the agent was deactivated.", fix: "Call corven_get_agent with the address to check status. If not registered, call corven_register_agent first.", retryable: false };
|
|
44
|
+
}
|
|
45
|
+
if (msg.includes("InvalidStatus")) {
|
|
46
|
+
return { success: false, error: "This operation cannot be performed on a task in its current status.", cause: "Each task function is only valid at specific lifecycle states.", fix: "Call corven_get_task to see the current status. Funded -> corven_submit_work. Submitted -> corven_verify_task or corven_dispute_task.", retryable: false };
|
|
47
|
+
}
|
|
48
|
+
if (msg.includes("DeadlinePassed")) {
|
|
49
|
+
return { success: false, error: "The task deadline has already passed.", cause: "The Unix timestamp deadline set when the task was created has elapsed.", fix: "The task is now in Failed state. Call corven_get_task to confirm. If the worker submitted before deadline, call corven_dispute_task.", retryable: false };
|
|
50
|
+
}
|
|
51
|
+
if (msg.includes("NotAuthorized") || msg.includes("OwnableUnauthorizedAccount") || msg.includes("Unauthorized")) {
|
|
52
|
+
return { success: false, error: "Your wallet does not have permission to call this function.", cause: "Only the designated client, worker, or contract owner can call this function.", fix: "Ensure PRIVATE_KEY in your environment matches the client or worker address for this task.", retryable: false };
|
|
53
|
+
}
|
|
54
|
+
if (msg.includes("insufficient funds") || msg.includes("InsufficientFunds")) {
|
|
55
|
+
return { success: false, error: "Wallet does not have enough ETH to cover this transaction.", cause: "The total cost (payment amount + gas fee) exceeds the wallet balance.", fix: "Get free testnet ETH at https://app.optimism.io/faucet (select Base Sepolia). You need the payment amount plus approximately 0.0005 ETH for gas.", retryable: true };
|
|
56
|
+
}
|
|
57
|
+
if (msg.includes("SelfHire")) {
|
|
58
|
+
return { success: false, error: "You cannot hire yourself as the worker for your own task.", cause: "The client and worker wallet addresses must be different.", fix: "Call corven_find_workers to find a different registered agent.", retryable: false };
|
|
59
|
+
}
|
|
60
|
+
if (msg.includes("TaskNotFound") || msg.includes("task not found")) {
|
|
61
|
+
return { success: false, error: "No task found with that ID.", cause: "The taskId does not exist on this contract.", fix: "Call corven_get_client_tasks or corven_get_worker_tasks with your wallet address to find valid task IDs.", retryable: false };
|
|
62
|
+
}
|
|
63
|
+
if (msg.includes("BidAlreadySubmitted")) {
|
|
64
|
+
return { success: false, error: "You have already submitted a bid on this task.", cause: "Only one bid per worker per open task is allowed.", fix: "Call corven_get_bid to see your existing bid. To change your offer, call corven_withdraw_bid first, then resubmit.", retryable: false };
|
|
65
|
+
}
|
|
66
|
+
if (msg.includes("IPFS") || msg.includes("ipfs")) {
|
|
67
|
+
return { success: false, error: "IPFS hash could not be resolved.", cause: "The IPFS CID provided is not reachable through any gateway.", fix: "Re-upload your content to Pinata (pinata.cloud) and use the returned CID. Wait 30 seconds after upload for propagation.", retryable: true };
|
|
68
|
+
}
|
|
69
|
+
return { success: false, error: "Transaction failed with an unexpected error.", cause: msg.slice(0, 300), fix: "Verify all parameters are correct format (ETH as decimal strings, addresses as full 42-char 0x... values). Check wallet has enough ETH for gas.", retryable: true };
|
|
70
|
+
}
|
|
71
|
+
// ─── Pre-flight Validators ────────────────────────────────────
|
|
72
|
+
export async function validateWorkerRegistered(registry, workerAddress) {
|
|
73
|
+
try {
|
|
74
|
+
const worker = await registry.read.agents([workerAddress]);
|
|
75
|
+
if (!worker.isActive) {
|
|
76
|
+
return { success: false, error: `Worker address ${workerAddress} is not registered or has been deactivated.`, cause: "The TaskEscrow contract will reject tasks for unregistered workers.", fix: "Call corven_find_workers with the required capability to find registered workers.", retryable: false };
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return { success: false, error: `Could not verify worker ${workerAddress} -- address may not be registered.`, cause: "Registry lookup failed for this address.", fix: "Call corven_get_agent with the worker address to check registration.", retryable: false };
|
|
81
|
+
}
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
export async function validateBalance(publicClient, address, requiredEth, gasBufferEth = "0.0005") {
|
|
85
|
+
const balance = await publicClient.getBalance({ address });
|
|
86
|
+
const required = parseEther(requiredEth) + parseEther(gasBufferEth);
|
|
87
|
+
if (balance < required) {
|
|
88
|
+
return { success: false, error: `Insufficient ETH. Need ${formatEther(required)} ETH total, wallet has ${formatEther(balance)} ETH.`, cause: "Wallet balance does not cover payment amount plus gas fees.", fix: `Get free testnet ETH at https://app.optimism.io/faucet (select Base Sepolia). Add at least ${formatEther(required - balance)} ETH more.`, retryable: true };
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=formatResponse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatResponse.js","sourceRoot":"","sources":["../../src/lib/formatResponse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const ethAddress: z.ZodString;
|
|
3
|
+
export declare const ethAmount: z.ZodString;
|
|
4
|
+
export declare const ethStake: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
5
|
+
export declare const ipfsCid: z.ZodString;
|
|
6
|
+
export declare const unixDeadline: z.ZodNumber;
|
|
7
|
+
export declare const taskId: z.ZodNumber;
|
|
8
|
+
export declare const agentName: z.ZodString;
|
|
9
|
+
export declare const capabilities: z.ZodArray<z.ZodString, "many">;
|
|
10
|
+
export declare const priority: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
11
|
+
//# sourceMappingURL=schemaHelpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaHelpers.d.ts","sourceRoot":"","sources":["../../src/lib/schemaHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,UAAU,aAEtB,CAAC;AAEF,eAAO,MAAM,SAAS,aAErB,CAAC;AAEF,eAAO,MAAM,QAAQ,0CAEpB,CAAC;AAEF,eAAO,MAAM,OAAO,aAEnB,CAAC;AAEF,eAAO,MAAM,YAAY,aAExB,CAAC;AAEF,eAAO,MAAM,MAAM,aAElB,CAAC;AAEF,eAAO,MAAM,SAAS,aAErB,CAAC;AAEF,eAAO,MAAM,YAAY,iCAExB,CAAC;AAEF,eAAO,MAAM,QAAQ,0CAEpB,CAAC"}
|