@paylobster/mcp-server 1.0.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/resources/index.d.ts.map +1 -1
  2. package/dist/resources/index.js +99 -0
  3. package/dist/resources/index.js.map +1 -1
  4. package/dist/server.d.ts.map +1 -1
  5. package/dist/server.js +475 -1
  6. package/dist/server.js.map +1 -1
  7. package/dist/tools/bridge.d.ts +142 -0
  8. package/dist/tools/bridge.d.ts.map +1 -0
  9. package/dist/tools/bridge.js +121 -0
  10. package/dist/tools/bridge.js.map +1 -0
  11. package/dist/tools/cascade.d.ts +59 -0
  12. package/dist/tools/cascade.d.ts.map +1 -0
  13. package/dist/tools/cascade.js +119 -0
  14. package/dist/tools/cascade.js.map +1 -0
  15. package/dist/tools/compliance.d.ts +36 -0
  16. package/dist/tools/compliance.d.ts.map +1 -0
  17. package/dist/tools/compliance.js +57 -0
  18. package/dist/tools/compliance.js.map +1 -0
  19. package/dist/tools/credit.d.ts +46 -0
  20. package/dist/tools/credit.d.ts.map +1 -0
  21. package/dist/tools/credit.js +102 -0
  22. package/dist/tools/credit.js.map +1 -0
  23. package/dist/tools/disputes.d.ts +71 -0
  24. package/dist/tools/disputes.d.ts.map +1 -0
  25. package/dist/tools/disputes.js +121 -0
  26. package/dist/tools/disputes.js.map +1 -0
  27. package/dist/tools/intent.d.ts +78 -0
  28. package/dist/tools/intent.d.ts.map +1 -0
  29. package/dist/tools/intent.js +192 -0
  30. package/dist/tools/intent.js.map +1 -0
  31. package/dist/tools/portfolio.d.ts +44 -0
  32. package/dist/tools/portfolio.d.ts.map +1 -0
  33. package/dist/tools/portfolio.js +166 -0
  34. package/dist/tools/portfolio.js.map +1 -0
  35. package/dist/tools/revenue.d.ts +42 -0
  36. package/dist/tools/revenue.d.ts.map +1 -0
  37. package/dist/tools/revenue.js +67 -0
  38. package/dist/tools/revenue.js.map +1 -0
  39. package/dist/tools/streaming.d.ts +60 -0
  40. package/dist/tools/streaming.d.ts.map +1 -0
  41. package/dist/tools/streaming.js +163 -0
  42. package/dist/tools/streaming.js.map +1 -0
  43. package/dist/tools/swap.d.ts +93 -0
  44. package/dist/tools/swap.d.ts.map +1 -0
  45. package/dist/tools/swap.js +150 -0
  46. package/dist/tools/swap.js.map +1 -0
  47. package/dist/types/index.d.ts +10 -0
  48. package/dist/types/index.d.ts.map +1 -1
  49. package/dist/utils/contracts.d.ts +316 -0
  50. package/dist/utils/contracts.d.ts.map +1 -1
  51. package/dist/utils/contracts.js +205 -5
  52. package/dist/utils/contracts.js.map +1 -1
  53. package/package.json +1 -1
@@ -0,0 +1,46 @@
1
+ import { z } from 'zod';
2
+ import { Address } from 'viem';
3
+ import { ContractClient } from '../utils/contracts';
4
+ export declare const getCreditScoreSchema: z.ZodObject<{
5
+ address: z.ZodString;
6
+ }, "strip", z.ZodTypeAny, {
7
+ address: string;
8
+ }, {
9
+ address: string;
10
+ }>;
11
+ export declare const requestCreditLineSchema: z.ZodObject<{
12
+ amount: z.ZodString;
13
+ duration: z.ZodString;
14
+ collateral: z.ZodOptional<z.ZodString>;
15
+ }, "strip", z.ZodTypeAny, {
16
+ amount: string;
17
+ duration: string;
18
+ collateral?: string | undefined;
19
+ }, {
20
+ amount: string;
21
+ duration: string;
22
+ collateral?: string | undefined;
23
+ }>;
24
+ export declare function getCreditScore(params: z.infer<typeof getCreditScoreSchema>, client: ContractClient): Promise<{
25
+ address: Address;
26
+ score: number;
27
+ limit: string;
28
+ available: string;
29
+ inUse: string;
30
+ paymentHistory: {
31
+ onTime: number;
32
+ late: number;
33
+ defaulted: number;
34
+ };
35
+ utilization: number;
36
+ age: number;
37
+ }>;
38
+ export declare function requestCreditLine(params: z.infer<typeof requestCreditLineSchema>, client: ContractClient): Promise<{
39
+ transactionHash: string;
40
+ requestId: string;
41
+ amount: string;
42
+ duration: number;
43
+ collateral: string;
44
+ status: string;
45
+ }>;
46
+ //# sourceMappingURL=credit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credit.d.ts","sourceRoot":"","sources":["../../src/tools/credit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAc,MAAM,oBAAoB,CAAC;AAEhE,eAAO,MAAM,oBAAoB;;;;;;EAE/B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;EAIlC,CAAC;AAEH,wBAAsB,cAAc,CAClC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,EAC5C,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE;QACd,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC,CAqCD;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,EAC/C,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC;IACT,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CA4CD"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.requestCreditLineSchema = exports.getCreditScoreSchema = void 0;
4
+ exports.getCreditScore = getCreditScore;
5
+ exports.requestCreditLine = requestCreditLine;
6
+ const zod_1 = require("zod");
7
+ const contracts_1 = require("../utils/contracts");
8
+ exports.getCreditScoreSchema = zod_1.z.object({
9
+ address: zod_1.z.string().describe('Agent address'),
10
+ });
11
+ exports.requestCreditLineSchema = zod_1.z.object({
12
+ amount: zod_1.z.string().describe('Requested credit line amount in USDC'),
13
+ duration: zod_1.z.string().describe('ISO 8601 duration (e.g., P30D for 30 days)'),
14
+ collateral: zod_1.z.string().optional().describe('Collateral amount in USDC'),
15
+ });
16
+ async function getCreditScore(params, client) {
17
+ const publicClient = client.getPublicClient();
18
+ const contracts = client.getContracts();
19
+ try {
20
+ const address = params.address;
21
+ // Get credit score and history
22
+ const [score, creditLimit, available, inUse, onTime, late, defaulted, accountAge] = await publicClient.readContract({
23
+ address: contracts.credit,
24
+ abi: contracts_1.CREDIT_ABI,
25
+ functionName: 'getCreditScore',
26
+ args: [address],
27
+ });
28
+ const utilization = creditLimit > BigInt(0)
29
+ ? Number(inUse) / Number(creditLimit) * 100
30
+ : 0;
31
+ return {
32
+ address,
33
+ score: Number(score),
34
+ limit: client.formatUSDC(creditLimit),
35
+ available: client.formatUSDC(available),
36
+ inUse: client.formatUSDC(inUse),
37
+ paymentHistory: {
38
+ onTime: Number(onTime),
39
+ late: Number(late),
40
+ defaulted: Number(defaulted),
41
+ },
42
+ utilization,
43
+ age: Number(accountAge),
44
+ };
45
+ }
46
+ catch (error) {
47
+ throw new Error(`Failed to fetch credit score: ${error.message}`);
48
+ }
49
+ }
50
+ async function requestCreditLine(params, client) {
51
+ const account = client.getAccount();
52
+ const walletClient = client.getWalletClient();
53
+ const publicClient = client.getPublicClient();
54
+ const contracts = client.getContracts();
55
+ try {
56
+ const amount = client.parseUSDC(params.amount);
57
+ const durationMs = parseDuration(params.duration);
58
+ const durationDays = Math.floor(durationMs / (24 * 60 * 60 * 1000));
59
+ const collateral = params.collateral ? client.parseUSDC(params.collateral) : BigInt(0);
60
+ const hash = await walletClient.writeContract({
61
+ address: contracts.credit,
62
+ abi: contracts_1.CREDIT_ABI,
63
+ functionName: 'requestCreditLine',
64
+ args: [amount, BigInt(durationDays), collateral],
65
+ account,
66
+ });
67
+ const receipt = await publicClient.waitForTransactionReceipt({ hash });
68
+ // Parse request ID from event logs
69
+ let requestId = '0';
70
+ if (receipt.logs && receipt.logs.length > 0) {
71
+ const requestLog = receipt.logs.find((log) => log.topics && log.topics.length > 1);
72
+ if (requestLog && requestLog.topics) {
73
+ requestId = BigInt(requestLog.topics[1]).toString();
74
+ }
75
+ }
76
+ return {
77
+ transactionHash: hash,
78
+ requestId,
79
+ amount: params.amount,
80
+ duration: durationDays,
81
+ collateral: params.collateral || '0',
82
+ status: 'pending',
83
+ };
84
+ }
85
+ catch (error) {
86
+ throw new Error(`Failed to request credit line: ${error.message}`);
87
+ }
88
+ }
89
+ function parseDuration(duration) {
90
+ const days = duration.match(/P(\d+)D/);
91
+ const hours = duration.match(/PT?(\d+)H/);
92
+ const minutes = duration.match(/PT?(\d+)M/);
93
+ let ms = 0;
94
+ if (days)
95
+ ms += parseInt(days[1]) * 24 * 60 * 60 * 1000;
96
+ if (hours)
97
+ ms += parseInt(hours[1]) * 60 * 60 * 1000;
98
+ if (minutes)
99
+ ms += parseInt(minutes[1]) * 60 * 1000;
100
+ return ms || 30 * 24 * 60 * 60 * 1000; // Default 30 days
101
+ }
102
+ //# sourceMappingURL=credit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credit.js","sourceRoot":"","sources":["../../src/tools/credit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import { z } from 'zod';
2
+ import { Address } from 'viem';
3
+ import { ContractClient } from '../utils/contracts';
4
+ export declare const openDisputeSchema: z.ZodObject<{
5
+ escrowId: z.ZodString;
6
+ reason: z.ZodString;
7
+ evidence: z.ZodOptional<z.ZodString>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ reason: string;
10
+ escrowId: string;
11
+ evidence?: string | undefined;
12
+ }, {
13
+ reason: string;
14
+ escrowId: string;
15
+ evidence?: string | undefined;
16
+ }>;
17
+ export declare const submitEvidenceSchema: z.ZodObject<{
18
+ disputeId: z.ZodString;
19
+ evidence: z.ZodString;
20
+ description: z.ZodString;
21
+ }, "strip", z.ZodTypeAny, {
22
+ description: string;
23
+ evidence: string;
24
+ disputeId: string;
25
+ }, {
26
+ description: string;
27
+ evidence: string;
28
+ disputeId: string;
29
+ }>;
30
+ export declare const getDisputeSchema: z.ZodObject<{
31
+ disputeId: z.ZodString;
32
+ }, "strip", z.ZodTypeAny, {
33
+ disputeId: string;
34
+ }, {
35
+ disputeId: string;
36
+ }>;
37
+ export declare function openDispute(params: z.infer<typeof openDisputeSchema>, client: ContractClient): Promise<{
38
+ disputeId: string;
39
+ transactionHash: string;
40
+ escrowId: string;
41
+ reason: string;
42
+ status: string;
43
+ createdAt: number;
44
+ }>;
45
+ export declare function submitEvidence(params: z.infer<typeof submitEvidenceSchema>, client: ContractClient): Promise<{
46
+ transactionHash: string;
47
+ disputeId: string;
48
+ evidence: string;
49
+ submittedBy: Address;
50
+ timestamp: number;
51
+ }>;
52
+ export declare function getDispute(params: z.infer<typeof getDisputeSchema>, client: ContractClient): Promise<{
53
+ disputeId: string;
54
+ escrowId: string;
55
+ plaintiff: Address;
56
+ defendant: Address;
57
+ reason: string;
58
+ status: 'open' | 'reviewing' | 'resolved-plaintiff' | 'resolved-defendant' | 'canceled';
59
+ evidence: Array<{
60
+ submitter: Address;
61
+ hash: string;
62
+ description: string;
63
+ timestamp: number;
64
+ }>;
65
+ resolution?: {
66
+ winner: Address;
67
+ resolvedAt: number;
68
+ resolver: Address;
69
+ };
70
+ }>;
71
+ //# sourceMappingURL=disputes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disputes.d.ts","sourceRoot":"","sources":["../../src/tools/disputes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAe,MAAM,oBAAoB,CAAC;AAEjE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;EAI5B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAI/B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;EAE3B,CAAC;AAEH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,EACzC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CA0CD;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,EAC5C,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC;IACT,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CA6BD;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,EACxC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,oBAAoB,GAAG,oBAAoB,GAAG,UAAU,CAAC;IACxF,QAAQ,EAAE,KAAK,CAAC;QACd,SAAS,EAAE,OAAO,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,UAAU,CAAC,EAAE;QACX,MAAM,EAAE,OAAO,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;CACH,CAAC,CA2CD"}
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDisputeSchema = exports.submitEvidenceSchema = exports.openDisputeSchema = void 0;
4
+ exports.openDispute = openDispute;
5
+ exports.submitEvidence = submitEvidence;
6
+ exports.getDispute = getDispute;
7
+ const zod_1 = require("zod");
8
+ const contracts_1 = require("../utils/contracts");
9
+ exports.openDisputeSchema = zod_1.z.object({
10
+ escrowId: zod_1.z.string().describe('Escrow ID to dispute'),
11
+ reason: zod_1.z.string().describe('Reason for dispute'),
12
+ evidence: zod_1.z.string().optional().describe('Initial evidence (IPFS hash or URL)'),
13
+ });
14
+ exports.submitEvidenceSchema = zod_1.z.object({
15
+ disputeId: zod_1.z.string().describe('Dispute ID'),
16
+ evidence: zod_1.z.string().describe('Evidence (IPFS hash or URL)'),
17
+ description: zod_1.z.string().describe('Description of evidence'),
18
+ });
19
+ exports.getDisputeSchema = zod_1.z.object({
20
+ disputeId: zod_1.z.string().describe('Dispute ID'),
21
+ });
22
+ async function openDispute(params, client) {
23
+ const account = client.getAccount();
24
+ const walletClient = client.getWalletClient();
25
+ const publicClient = client.getPublicClient();
26
+ const contracts = client.getContracts();
27
+ try {
28
+ const escrowId = BigInt(params.escrowId);
29
+ const evidenceHash = params.evidence || '';
30
+ const hash = await walletClient.writeContract({
31
+ address: contracts.dispute,
32
+ abi: contracts_1.DISPUTE_ABI,
33
+ functionName: 'openDispute',
34
+ args: [escrowId, params.reason, evidenceHash],
35
+ account,
36
+ });
37
+ const receipt = await publicClient.waitForTransactionReceipt({ hash });
38
+ // Parse dispute ID from event logs
39
+ let disputeId = '0';
40
+ if (receipt.logs && receipt.logs.length > 0) {
41
+ const disputeOpenedLog = receipt.logs.find((log) => log.topics && log.topics.length > 1);
42
+ if (disputeOpenedLog && disputeOpenedLog.topics) {
43
+ disputeId = BigInt(disputeOpenedLog.topics[1]).toString();
44
+ }
45
+ }
46
+ return {
47
+ disputeId,
48
+ transactionHash: hash,
49
+ escrowId: params.escrowId,
50
+ reason: params.reason,
51
+ status: 'open',
52
+ createdAt: Date.now(),
53
+ };
54
+ }
55
+ catch (error) {
56
+ throw new Error(`Failed to open dispute: ${error.message}`);
57
+ }
58
+ }
59
+ async function submitEvidence(params, client) {
60
+ const account = client.getAccount();
61
+ const walletClient = client.getWalletClient();
62
+ const publicClient = client.getPublicClient();
63
+ const contracts = client.getContracts();
64
+ try {
65
+ const disputeId = BigInt(params.disputeId);
66
+ const hash = await walletClient.writeContract({
67
+ address: contracts.dispute,
68
+ abi: contracts_1.DISPUTE_ABI,
69
+ functionName: 'submitEvidence',
70
+ args: [disputeId, params.evidence, params.description],
71
+ account,
72
+ });
73
+ await publicClient.waitForTransactionReceipt({ hash });
74
+ return {
75
+ transactionHash: hash,
76
+ disputeId: params.disputeId,
77
+ evidence: params.evidence,
78
+ submittedBy: account.address,
79
+ timestamp: Date.now(),
80
+ };
81
+ }
82
+ catch (error) {
83
+ throw new Error(`Failed to submit evidence: ${error.message}`);
84
+ }
85
+ }
86
+ async function getDispute(params, client) {
87
+ const publicClient = client.getPublicClient();
88
+ const contracts = client.getContracts();
89
+ try {
90
+ const disputeId = BigInt(params.disputeId);
91
+ const [escrowId, plaintiff, defendant, reason, status, createdAt] = await publicClient.readContract({
92
+ address: contracts.dispute,
93
+ abi: contracts_1.DISPUTE_ABI,
94
+ functionName: 'getDispute',
95
+ args: [disputeId],
96
+ });
97
+ // Map status codes
98
+ const statusMap = {
99
+ 0: 'open',
100
+ 1: 'reviewing',
101
+ 2: 'resolved-plaintiff',
102
+ 3: 'resolved-defendant',
103
+ 4: 'canceled',
104
+ };
105
+ // Fetch evidence (would query events in real implementation)
106
+ const evidence = [];
107
+ return {
108
+ disputeId: params.disputeId,
109
+ escrowId: escrowId.toString(),
110
+ plaintiff: plaintiff,
111
+ defendant: defendant,
112
+ reason: reason,
113
+ status: statusMap[status],
114
+ evidence,
115
+ };
116
+ }
117
+ catch (error) {
118
+ throw new Error(`Failed to fetch dispute: ${error.message}`);
119
+ }
120
+ }
121
+ //# sourceMappingURL=disputes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disputes.js","sourceRoot":"","sources":["../../src/tools/disputes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import { z } from 'zod';
2
+ import { Address } from 'viem';
3
+ import { ContractClient } from '../utils/contracts';
4
+ export declare const postIntentSchema: z.ZodObject<{
5
+ description: z.ZodString;
6
+ tags: z.ZodArray<z.ZodString, "many">;
7
+ budget: z.ZodString;
8
+ deadline: z.ZodString;
9
+ requirements: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ description: string;
12
+ tags: string[];
13
+ budget: string;
14
+ deadline: string;
15
+ requirements?: Record<string, any> | undefined;
16
+ }, {
17
+ description: string;
18
+ tags: string[];
19
+ budget: string;
20
+ deadline: string;
21
+ requirements?: Record<string, any> | undefined;
22
+ }>;
23
+ export declare const searchIntentsSchema: z.ZodObject<{
24
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
25
+ minBudget: z.ZodOptional<z.ZodString>;
26
+ maxBudget: z.ZodOptional<z.ZodString>;
27
+ limit: z.ZodDefault<z.ZodNumber>;
28
+ }, "strip", z.ZodTypeAny, {
29
+ limit: number;
30
+ tags?: string[] | undefined;
31
+ minBudget?: string | undefined;
32
+ maxBudget?: string | undefined;
33
+ }, {
34
+ limit?: number | undefined;
35
+ tags?: string[] | undefined;
36
+ minBudget?: string | undefined;
37
+ maxBudget?: string | undefined;
38
+ }>;
39
+ export declare const acceptOfferSchema: z.ZodObject<{
40
+ intentId: z.ZodString;
41
+ offerId: z.ZodString;
42
+ }, "strip", z.ZodTypeAny, {
43
+ intentId: string;
44
+ offerId: string;
45
+ }, {
46
+ intentId: string;
47
+ offerId: string;
48
+ }>;
49
+ export declare function postIntent(params: z.infer<typeof postIntentSchema>, client: ContractClient): Promise<{
50
+ intentId: string;
51
+ transactionHash: string;
52
+ description: string;
53
+ tags: string[];
54
+ budget: string;
55
+ deadline: number;
56
+ status: string;
57
+ }>;
58
+ export declare function searchIntents(params: z.infer<typeof searchIntentsSchema>, client: ContractClient): Promise<{
59
+ intents: Array<{
60
+ intentId: string;
61
+ poster: Address;
62
+ description: string;
63
+ tags: string[];
64
+ budget: string;
65
+ deadline: number;
66
+ offers: number;
67
+ status: string;
68
+ }>;
69
+ total: number;
70
+ }>;
71
+ export declare function acceptOffer(params: z.infer<typeof acceptOfferSchema>, client: ContractClient): Promise<{
72
+ transactionHash: string;
73
+ intentId: string;
74
+ offerId: string;
75
+ provider: Address;
76
+ escrowId: string;
77
+ }>;
78
+ //# sourceMappingURL=intent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent.d.ts","sourceRoot":"","sources":["../../src/tools/intent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAc,MAAM,oBAAoB,CAAC;AAEhE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;EAM3B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAK9B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;EAG5B,CAAC;AAEH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,EACxC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC;IACT,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CA+CD;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,EAC3C,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC;IACT,OAAO,EAAE,KAAK,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,OAAO,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAuFD;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,EACzC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC;IACT,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CA2CD"}
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.acceptOfferSchema = exports.searchIntentsSchema = exports.postIntentSchema = void 0;
4
+ exports.postIntent = postIntent;
5
+ exports.searchIntents = searchIntents;
6
+ exports.acceptOffer = acceptOffer;
7
+ const zod_1 = require("zod");
8
+ const contracts_1 = require("../utils/contracts");
9
+ exports.postIntentSchema = zod_1.z.object({
10
+ description: zod_1.z.string().describe('Service intent description'),
11
+ tags: zod_1.z.array(zod_1.z.string()).describe('Service tags for discovery'),
12
+ budget: zod_1.z.string().describe('Maximum budget in USDC'),
13
+ deadline: zod_1.z.string().describe('ISO 8601 duration or timestamp'),
14
+ requirements: zod_1.z.record(zod_1.z.any()).optional(),
15
+ });
16
+ exports.searchIntentsSchema = zod_1.z.object({
17
+ tags: zod_1.z.array(zod_1.z.string()).optional().describe('Filter by tags'),
18
+ minBudget: zod_1.z.string().optional().describe('Minimum budget in USDC'),
19
+ maxBudget: zod_1.z.string().optional().describe('Maximum budget in USDC'),
20
+ limit: zod_1.z.number().default(20),
21
+ });
22
+ exports.acceptOfferSchema = zod_1.z.object({
23
+ intentId: zod_1.z.string().describe('Intent ID'),
24
+ offerId: zod_1.z.string().describe('Offer ID to accept'),
25
+ });
26
+ async function postIntent(params, client) {
27
+ const account = client.getAccount();
28
+ const walletClient = client.getWalletClient();
29
+ const publicClient = client.getPublicClient();
30
+ const contracts = client.getContracts();
31
+ try {
32
+ const budget = client.parseUSDC(params.budget);
33
+ const deadlineMs = parseDeadline(params.deadline);
34
+ const deadlineSeconds = Math.floor(deadlineMs / 1000);
35
+ const metadata = JSON.stringify({
36
+ requirements: params.requirements || {},
37
+ });
38
+ const hash = await walletClient.writeContract({
39
+ address: contracts.intent,
40
+ abi: contracts_1.INTENT_ABI,
41
+ functionName: 'postIntent',
42
+ args: [params.description, params.tags, budget, BigInt(deadlineSeconds), metadata],
43
+ account,
44
+ });
45
+ const receipt = await publicClient.waitForTransactionReceipt({ hash });
46
+ // Parse intent ID from event logs
47
+ let intentId = '0';
48
+ if (receipt.logs && receipt.logs.length > 0) {
49
+ const intentPostedLog = receipt.logs.find((log) => log.topics && log.topics.length > 1);
50
+ if (intentPostedLog && intentPostedLog.topics) {
51
+ intentId = BigInt(intentPostedLog.topics[1]).toString();
52
+ }
53
+ }
54
+ return {
55
+ intentId,
56
+ transactionHash: hash,
57
+ description: params.description,
58
+ tags: params.tags,
59
+ budget: params.budget,
60
+ deadline: deadlineMs,
61
+ status: 'open',
62
+ };
63
+ }
64
+ catch (error) {
65
+ throw new Error(`Failed to post intent: ${error.message}`);
66
+ }
67
+ }
68
+ async function searchIntents(params, client) {
69
+ const publicClient = client.getPublicClient();
70
+ const contracts = client.getContracts();
71
+ try {
72
+ // Get IntentPosted events
73
+ const latestBlock = await publicClient.getBlockNumber();
74
+ const fromBlock = latestBlock - BigInt(10000); // Last ~10k blocks
75
+ const logs = await publicClient.getLogs({
76
+ address: contracts.intent,
77
+ event: contracts_1.INTENT_ABI.find(e => e.type === 'event' && e.name === 'IntentPosted'),
78
+ fromBlock,
79
+ toBlock: 'latest',
80
+ });
81
+ const intents = [];
82
+ for (const log of logs) {
83
+ const { intentId, poster } = log.args;
84
+ try {
85
+ const [description, tags, budget, deadline, status, offerCount] = await publicClient.readContract({
86
+ address: contracts.intent,
87
+ abi: contracts_1.INTENT_ABI,
88
+ functionName: 'getIntent',
89
+ args: [intentId],
90
+ });
91
+ const budgetFormatted = client.formatUSDC(budget);
92
+ // Apply filters
93
+ if (params.tags && params.tags.length > 0) {
94
+ const intentTags = tags;
95
+ const hasMatchingTag = params.tags.some(tag => intentTags.includes(tag));
96
+ if (!hasMatchingTag)
97
+ continue;
98
+ }
99
+ if (params.minBudget && parseFloat(budgetFormatted) < parseFloat(params.minBudget)) {
100
+ continue;
101
+ }
102
+ if (params.maxBudget && parseFloat(budgetFormatted) > parseFloat(params.maxBudget)) {
103
+ continue;
104
+ }
105
+ const statusMap = {
106
+ 0: 'open',
107
+ 1: 'accepted',
108
+ 2: 'completed',
109
+ 3: 'canceled',
110
+ };
111
+ intents.push({
112
+ intentId: intentId.toString(),
113
+ poster: poster,
114
+ description: description,
115
+ tags: tags,
116
+ budget: budgetFormatted,
117
+ deadline: Number(deadline) * 1000,
118
+ offers: Number(offerCount),
119
+ status: statusMap[Number(status)],
120
+ });
121
+ }
122
+ catch (e) {
123
+ continue;
124
+ }
125
+ }
126
+ const limitedIntents = intents.slice(0, params.limit);
127
+ return {
128
+ intents: limitedIntents,
129
+ total: limitedIntents.length,
130
+ };
131
+ }
132
+ catch (error) {
133
+ throw new Error(`Failed to search intents: ${error.message}`);
134
+ }
135
+ }
136
+ async function acceptOffer(params, client) {
137
+ const account = client.getAccount();
138
+ const walletClient = client.getWalletClient();
139
+ const publicClient = client.getPublicClient();
140
+ const contracts = client.getContracts();
141
+ try {
142
+ const intentId = BigInt(params.intentId);
143
+ const offerId = BigInt(params.offerId);
144
+ const hash = await walletClient.writeContract({
145
+ address: contracts.intent,
146
+ abi: contracts_1.INTENT_ABI,
147
+ functionName: 'acceptOffer',
148
+ args: [intentId, offerId],
149
+ account,
150
+ });
151
+ const receipt = await publicClient.waitForTransactionReceipt({ hash });
152
+ // Parse offer details and escrow ID from events
153
+ let escrowId = '0';
154
+ let provider = '0x0000000000000000000000000000000000000000';
155
+ if (receipt.logs && receipt.logs.length > 0) {
156
+ const offerAcceptedLog = receipt.logs.find((log) => log.topics && log.topics.length > 2);
157
+ if (offerAcceptedLog && offerAcceptedLog.topics) {
158
+ escrowId = BigInt(offerAcceptedLog.topics[2]).toString();
159
+ }
160
+ }
161
+ return {
162
+ transactionHash: hash,
163
+ intentId: params.intentId,
164
+ offerId: params.offerId,
165
+ provider,
166
+ escrowId,
167
+ };
168
+ }
169
+ catch (error) {
170
+ throw new Error(`Failed to accept offer: ${error.message}`);
171
+ }
172
+ }
173
+ function parseDeadline(deadline) {
174
+ // Try parsing as ISO date first
175
+ const date = new Date(deadline);
176
+ if (!isNaN(date.getTime())) {
177
+ return date.getTime();
178
+ }
179
+ // Otherwise parse as duration from now
180
+ const days = deadline.match(/P(\d+)D/);
181
+ const hours = deadline.match(/PT?(\d+)H/);
182
+ const minutes = deadline.match(/PT?(\d+)M/);
183
+ let ms = Date.now();
184
+ if (days)
185
+ ms += parseInt(days[1]) * 24 * 60 * 60 * 1000;
186
+ if (hours)
187
+ ms += parseInt(hours[1]) * 60 * 60 * 1000;
188
+ if (minutes)
189
+ ms += parseInt(minutes[1]) * 60 * 1000;
190
+ return ms;
191
+ }
192
+ //# sourceMappingURL=intent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent.js","sourceRoot":"","sources":["../../src/tools/intent.ts"],"names":[],"mappings":"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"}