kompass-sdk 0.1.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 (205) hide show
  1. package/dist/a2a/agent-card.d.ts +13 -0
  2. package/dist/a2a/agent-card.d.ts.map +1 -0
  3. package/dist/a2a/agent-card.js +52 -0
  4. package/dist/a2a/agent-card.js.map +1 -0
  5. package/dist/a2a/bridge.d.ts +52 -0
  6. package/dist/a2a/bridge.d.ts.map +1 -0
  7. package/dist/a2a/bridge.js +123 -0
  8. package/dist/a2a/bridge.js.map +1 -0
  9. package/dist/a2a/client.d.ts +34 -0
  10. package/dist/a2a/client.d.ts.map +1 -0
  11. package/dist/a2a/client.js +65 -0
  12. package/dist/a2a/client.js.map +1 -0
  13. package/dist/a2a/server.d.ts +17 -0
  14. package/dist/a2a/server.d.ts.map +1 -0
  15. package/dist/a2a/server.js +194 -0
  16. package/dist/a2a/server.js.map +1 -0
  17. package/dist/abi.d.ts +1068 -0
  18. package/dist/abi.d.ts.map +1 -0
  19. package/dist/abi.js +1372 -0
  20. package/dist/abi.js.map +1 -0
  21. package/dist/adapters/agentkit.d.ts +41 -0
  22. package/dist/adapters/agentkit.d.ts.map +1 -0
  23. package/dist/adapters/agentkit.js +67 -0
  24. package/dist/adapters/agentkit.js.map +1 -0
  25. package/dist/adapters/generic.d.ts +35 -0
  26. package/dist/adapters/generic.d.ts.map +1 -0
  27. package/dist/adapters/generic.js +47 -0
  28. package/dist/adapters/generic.js.map +1 -0
  29. package/dist/adapters/index.d.ts +5 -0
  30. package/dist/adapters/index.d.ts.map +1 -0
  31. package/dist/adapters/index.js +5 -0
  32. package/dist/adapters/index.js.map +1 -0
  33. package/dist/adapters/langchain.d.ts +26 -0
  34. package/dist/adapters/langchain.d.ts.map +1 -0
  35. package/dist/adapters/langchain.js +228 -0
  36. package/dist/adapters/langchain.js.map +1 -0
  37. package/dist/adapters/openclaw.d.ts +18 -0
  38. package/dist/adapters/openclaw.d.ts.map +1 -0
  39. package/dist/adapters/openclaw.js +168 -0
  40. package/dist/adapters/openclaw.js.map +1 -0
  41. package/dist/aggregator.d.ts +36 -0
  42. package/dist/aggregator.d.ts.map +1 -0
  43. package/dist/aggregator.js +168 -0
  44. package/dist/aggregator.js.map +1 -0
  45. package/dist/backends/acp.d.ts +29 -0
  46. package/dist/backends/acp.d.ts.map +1 -0
  47. package/dist/backends/acp.js +126 -0
  48. package/dist/backends/acp.js.map +1 -0
  49. package/dist/backends/types.d.ts +59 -0
  50. package/dist/backends/types.d.ts.map +1 -0
  51. package/dist/backends/types.js +2 -0
  52. package/dist/backends/types.js.map +1 -0
  53. package/dist/bridge.d.ts +35 -0
  54. package/dist/bridge.d.ts.map +1 -0
  55. package/dist/bridge.js +192 -0
  56. package/dist/bridge.js.map +1 -0
  57. package/dist/cli.d.ts +12 -0
  58. package/dist/cli.d.ts.map +1 -0
  59. package/dist/cli.js +331 -0
  60. package/dist/cli.js.map +1 -0
  61. package/dist/discover.d.ts +15 -0
  62. package/dist/discover.d.ts.map +1 -0
  63. package/dist/discover.js +163 -0
  64. package/dist/discover.js.map +1 -0
  65. package/dist/escrow.d.ts +45 -0
  66. package/dist/escrow.d.ts.map +1 -0
  67. package/dist/escrow.js +243 -0
  68. package/dist/escrow.js.map +1 -0
  69. package/dist/index.d.ts +63 -0
  70. package/dist/index.d.ts.map +1 -0
  71. package/dist/index.js +145 -0
  72. package/dist/index.js.map +1 -0
  73. package/dist/intents.d.ts +28 -0
  74. package/dist/intents.d.ts.map +1 -0
  75. package/dist/intents.js +111 -0
  76. package/dist/intents.js.map +1 -0
  77. package/dist/matching.d.ts +29 -0
  78. package/dist/matching.d.ts.map +1 -0
  79. package/dist/matching.js +147 -0
  80. package/dist/matching.js.map +1 -0
  81. package/dist/pipelineAbi.d.ts +113 -0
  82. package/dist/pipelineAbi.d.ts.map +1 -0
  83. package/dist/pipelineAbi.js +74 -0
  84. package/dist/pipelineAbi.js.map +1 -0
  85. package/dist/pipelines.d.ts +42 -0
  86. package/dist/pipelines.d.ts.map +1 -0
  87. package/dist/pipelines.js +185 -0
  88. package/dist/pipelines.js.map +1 -0
  89. package/dist/registry.d.ts +36 -0
  90. package/dist/registry.d.ts.map +1 -0
  91. package/dist/registry.js +187 -0
  92. package/dist/registry.js.map +1 -0
  93. package/dist/reputation.d.ts +10 -0
  94. package/dist/reputation.d.ts.map +1 -0
  95. package/dist/reputation.js +33 -0
  96. package/dist/reputation.js.map +1 -0
  97. package/dist/router.d.ts +72 -0
  98. package/dist/router.d.ts.map +1 -0
  99. package/dist/router.js +190 -0
  100. package/dist/router.js.map +1 -0
  101. package/dist/simple.d.ts +160 -0
  102. package/dist/simple.d.ts.map +1 -0
  103. package/dist/simple.js +237 -0
  104. package/dist/simple.js.map +1 -0
  105. package/dist/sources/a2a-wellknown.d.ts +8 -0
  106. package/dist/sources/a2a-wellknown.d.ts.map +1 -0
  107. package/dist/sources/a2a-wellknown.js +104 -0
  108. package/dist/sources/a2a-wellknown.js.map +1 -0
  109. package/dist/sources/acp.d.ts +7 -0
  110. package/dist/sources/acp.d.ts.map +1 -0
  111. package/dist/sources/acp.js +86 -0
  112. package/dist/sources/acp.js.map +1 -0
  113. package/dist/sources/adp.d.ts +7 -0
  114. package/dist/sources/adp.d.ts.map +1 -0
  115. package/dist/sources/adp.js +59 -0
  116. package/dist/sources/adp.js.map +1 -0
  117. package/dist/sources/erc8004.d.ts +7 -0
  118. package/dist/sources/erc8004.d.ts.map +1 -0
  119. package/dist/sources/erc8004.js +150 -0
  120. package/dist/sources/erc8004.js.map +1 -0
  121. package/dist/sources/index.d.ts +17 -0
  122. package/dist/sources/index.d.ts.map +1 -0
  123. package/dist/sources/index.js +35 -0
  124. package/dist/sources/index.js.map +1 -0
  125. package/dist/sources/kompass-registry.d.ts +8 -0
  126. package/dist/sources/kompass-registry.d.ts.map +1 -0
  127. package/dist/sources/kompass-registry.js +62 -0
  128. package/dist/sources/kompass-registry.js.map +1 -0
  129. package/dist/sources/l402-directory.d.ts +7 -0
  130. package/dist/sources/l402-directory.d.ts.map +1 -0
  131. package/dist/sources/l402-directory.js +42 -0
  132. package/dist/sources/l402-directory.js.map +1 -0
  133. package/dist/sources/mcp-registry.d.ts +8 -0
  134. package/dist/sources/mcp-registry.d.ts.map +1 -0
  135. package/dist/sources/mcp-registry.js +85 -0
  136. package/dist/sources/mcp-registry.js.map +1 -0
  137. package/dist/sources/skills.d.ts +8 -0
  138. package/dist/sources/skills.d.ts.map +1 -0
  139. package/dist/sources/skills.js +153 -0
  140. package/dist/sources/skills.js.map +1 -0
  141. package/dist/sources/types.d.ts +72 -0
  142. package/dist/sources/types.d.ts.map +1 -0
  143. package/dist/sources/types.js +8 -0
  144. package/dist/sources/types.js.map +1 -0
  145. package/dist/sources/x402-ecosystem.d.ts +7 -0
  146. package/dist/sources/x402-ecosystem.d.ts.map +1 -0
  147. package/dist/sources/x402-ecosystem.js +78 -0
  148. package/dist/sources/x402-ecosystem.js.map +1 -0
  149. package/dist/types.d.ts +133 -0
  150. package/dist/types.d.ts.map +1 -0
  151. package/dist/types.js +2 -0
  152. package/dist/types.js.map +1 -0
  153. package/dist/unified.d.ts +90 -0
  154. package/dist/unified.d.ts.map +1 -0
  155. package/dist/unified.js +107 -0
  156. package/dist/unified.js.map +1 -0
  157. package/dist/x402.d.ts +30 -0
  158. package/dist/x402.d.ts.map +1 -0
  159. package/dist/x402.js +79 -0
  160. package/dist/x402.js.map +1 -0
  161. package/package.json +61 -0
  162. package/scripts/bootstrap-agents.mjs +246 -0
  163. package/src/.gitkeep +0 -0
  164. package/src/a2a/agent-card.ts +66 -0
  165. package/src/a2a/bridge.ts +168 -0
  166. package/src/a2a/client.ts +92 -0
  167. package/src/a2a/server.ts +234 -0
  168. package/src/abi.ts +1373 -0
  169. package/src/adapters/agentkit.ts +83 -0
  170. package/src/adapters/generic.ts +62 -0
  171. package/src/adapters/index.ts +4 -0
  172. package/src/adapters/langchain.ts +282 -0
  173. package/src/adapters/openclaw.ts +203 -0
  174. package/src/aggregator.ts +203 -0
  175. package/src/backends/acp.ts +199 -0
  176. package/src/backends/types.ts +78 -0
  177. package/src/bridge.ts +263 -0
  178. package/src/cli.ts +397 -0
  179. package/src/discover.ts +187 -0
  180. package/src/escrow.ts +284 -0
  181. package/src/index.ts +245 -0
  182. package/src/intents.ts +166 -0
  183. package/src/matching.ts +192 -0
  184. package/src/pipelineAbi.ts +74 -0
  185. package/src/pipelines.ts +253 -0
  186. package/src/registry.ts +232 -0
  187. package/src/reputation.ts +43 -0
  188. package/src/router.ts +279 -0
  189. package/src/simple.ts +366 -0
  190. package/src/sources/a2a-wellknown.ts +120 -0
  191. package/src/sources/acp.ts +91 -0
  192. package/src/sources/adp.ts +64 -0
  193. package/src/sources/erc8004.ts +166 -0
  194. package/src/sources/index.ts +52 -0
  195. package/src/sources/kompass-registry.ts +67 -0
  196. package/src/sources/l402-directory.ts +51 -0
  197. package/src/sources/mcp-registry.ts +104 -0
  198. package/src/sources/skills.ts +161 -0
  199. package/src/sources/types.ts +82 -0
  200. package/src/sources/x402-ecosystem.ts +86 -0
  201. package/src/types.ts +147 -0
  202. package/src/unified.ts +155 -0
  203. package/src/x402.ts +122 -0
  204. package/tests/pipelineFlow.test.ts +239 -0
  205. package/tsconfig.json +20 -0
@@ -0,0 +1,163 @@
1
+ /** Execute a GraphQL query against the Ponder indexer */
2
+ async function queryIndexer(config, query, variables) {
3
+ const response = await fetch(config.indexerUrl, {
4
+ method: "POST",
5
+ headers: { "Content-Type": "application/json" },
6
+ body: JSON.stringify({ query, variables }),
7
+ });
8
+ if (!response.ok) {
9
+ throw new Error(`Indexer query failed: ${response.status} ${response.statusText}`);
10
+ }
11
+ const result = await response.json();
12
+ if (result.errors?.length) {
13
+ throw new Error(`Indexer GraphQL error: ${result.errors[0].message}`);
14
+ }
15
+ if (!result.data) {
16
+ throw new Error("Indexer returned no data");
17
+ }
18
+ return result.data;
19
+ }
20
+ /** Parse raw agent data from GraphQL into AgentProfile */
21
+ function parseAgent(raw) {
22
+ const paymentMode = raw.paymentMode ?? "unknown";
23
+ return {
24
+ id: raw.id,
25
+ ensNode: raw.ensNode,
26
+ ensName: raw.ensName ?? "",
27
+ agentType: raw.agentType ?? "unknown",
28
+ categories: raw.categories ?? "",
29
+ pricingModel: raw.pricingModel ?? "",
30
+ pricingRate: raw.pricingRate ?? "",
31
+ pricingToken: raw.pricingToken ?? "",
32
+ erc8004Id: raw.erc8004Id ?? "",
33
+ identityVerification: raw.identityVerification ?? "",
34
+ identityVerified: Boolean(raw.identityVerified),
35
+ paymentMode,
36
+ endpointMcp: raw.endpointMcp ?? "",
37
+ endpointA2a: raw.endpointA2a ?? "",
38
+ endpointX402: raw.endpointX402 ?? "",
39
+ x402Enabled: Boolean(raw.x402Enabled),
40
+ evaluatorDomains: raw.evaluatorDomains ?? "",
41
+ description: raw.description ?? "",
42
+ registered: raw.registered,
43
+ registeredAt: BigInt(raw.registeredAt),
44
+ updatedAt: BigInt(raw.updatedAt),
45
+ };
46
+ }
47
+ /**
48
+ * Discover agents matching criteria via the indexer's GraphQL API.
49
+ * Filters by category (substring match), agent type, and registration status.
50
+ */
51
+ export async function discover(config, options = {}) {
52
+ const { category, evaluatorDomain, agentType, paymentMode, requiresX402, verifiedOnly, limit = 50, } = options;
53
+ // Build where clause for Ponder GraphQL
54
+ const conditions = ['registered: true'];
55
+ if (agentType) {
56
+ conditions.push(`agentType: ${agentType}`);
57
+ }
58
+ if (category) {
59
+ conditions.push(`categories_contains: "${category}"`);
60
+ }
61
+ if (evaluatorDomain) {
62
+ conditions.push(`evaluatorDomains_contains: "${evaluatorDomain}"`);
63
+ }
64
+ if (paymentMode) {
65
+ conditions.push(`paymentMode: "${paymentMode}"`);
66
+ }
67
+ if (requiresX402) {
68
+ conditions.push("x402Enabled: true");
69
+ }
70
+ if (verifiedOnly) {
71
+ conditions.push("identityVerified: true");
72
+ }
73
+ const where = conditions.length > 0 ? `where: { ${conditions.join(", ")} }` : "";
74
+ const query = `
75
+ query {
76
+ agents(${where}, limit: ${limit}) {
77
+ items {
78
+ id
79
+ ensNode
80
+ ensName
81
+ agentType
82
+ categories
83
+ pricingModel
84
+ pricingRate
85
+ pricingToken
86
+ erc8004Id
87
+ identityVerification
88
+ identityVerified
89
+ paymentMode
90
+ endpointMcp
91
+ endpointA2a
92
+ endpointX402
93
+ x402Enabled
94
+ evaluatorDomains
95
+ description
96
+ registered
97
+ registeredAt
98
+ updatedAt
99
+ }
100
+ }
101
+ }
102
+ `;
103
+ const data = await queryIndexer(config, query);
104
+ let agents = data.agents.items.map(parseAgent);
105
+ // Client-side filtering for maxPrice (indexer stores as string)
106
+ if (options.maxPrice !== undefined) {
107
+ agents = agents.filter((a) => {
108
+ if (!a.pricingRate)
109
+ return true;
110
+ try {
111
+ return BigInt(a.pricingRate) <= options.maxPrice;
112
+ }
113
+ catch {
114
+ return true;
115
+ }
116
+ });
117
+ }
118
+ return agents;
119
+ }
120
+ /**
121
+ * Get a single agent's profile by address.
122
+ */
123
+ export async function getAgent(config, address) {
124
+ const query = `
125
+ query {
126
+ agent(id: "${address.toLowerCase()}") {
127
+ id
128
+ ensNode
129
+ ensName
130
+ agentType
131
+ categories
132
+ pricingModel
133
+ pricingRate
134
+ pricingToken
135
+ erc8004Id
136
+ identityVerification
137
+ identityVerified
138
+ paymentMode
139
+ endpointMcp
140
+ endpointA2a
141
+ endpointX402
142
+ x402Enabled
143
+ evaluatorDomains
144
+ description
145
+ registered
146
+ registeredAt
147
+ updatedAt
148
+ }
149
+ }
150
+ `;
151
+ const data = await queryIndexer(config, query);
152
+ return data.agent ? parseAgent(data.agent) : null;
153
+ }
154
+ /**
155
+ * Find evaluators by domain specialization.
156
+ */
157
+ export async function findEvaluator(config, domain) {
158
+ return discover(config, {
159
+ category: domain,
160
+ agentType: "evaluator",
161
+ });
162
+ }
163
+ //# sourceMappingURL=discover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { type Hex } from "viem";
2
+ import type { KompassConfig, CreateJobOptions, CreateJobResult, Job, MilestoneData, TxResult } from "./types.js";
3
+ /**
4
+ * Create a new job on the escrow contract.
5
+ * Supports both single-deliverable and multi-milestone jobs.
6
+ */
7
+ export declare function createJob(config: KompassConfig, options: CreateJobOptions): Promise<CreateJobResult>;
8
+ /**
9
+ * Set the budget for an Open job.
10
+ */
11
+ export declare function setBudget(config: KompassConfig, jobId: bigint, amount: bigint): Promise<TxResult>;
12
+ /**
13
+ * Fund a job, transitioning it from Open to Funded.
14
+ * Reads the job's budget for the expectedBudget parameter.
15
+ * Caller must have approved the escrow contract for the budget amount first.
16
+ */
17
+ export declare function fund(config: KompassConfig, jobId: bigint): Promise<TxResult>;
18
+ /**
19
+ * Submit a deliverable for a job or milestone.
20
+ * If milestoneIndex is provided, calls submitMilestone; otherwise calls submit.
21
+ */
22
+ export declare function submit(config: KompassConfig, jobId: bigint, deliverable: Hex, milestoneIndex?: number): Promise<TxResult>;
23
+ /**
24
+ * Complete a job or milestone (evaluator action).
25
+ * If milestoneIndex is provided, calls completeMilestone; otherwise calls complete.
26
+ */
27
+ export declare function complete(config: KompassConfig, jobId: bigint, reason?: Hex, milestoneIndex?: number): Promise<TxResult>;
28
+ /**
29
+ * Complete a job with partial payment (evaluator action).
30
+ * Releases percentageBps of the budget to the provider, refunds the rest.
31
+ */
32
+ export declare function completePartial(config: KompassConfig, jobId: bigint, percentageBps: number, reason?: Hex): Promise<TxResult>;
33
+ /**
34
+ * Reject a job (client in Open state, evaluator in Funded/Submitted state).
35
+ */
36
+ export declare function reject(config: KompassConfig, jobId: bigint, reason?: Hex): Promise<TxResult>;
37
+ /**
38
+ * Read a job's full data from the contract.
39
+ */
40
+ export declare function getJob(config: KompassConfig, jobId: bigint): Promise<Job>;
41
+ /**
42
+ * Read milestones for a job.
43
+ */
44
+ export declare function getMilestones(config: KompassConfig, jobId: bigint): Promise<MilestoneData[]>;
45
+ //# sourceMappingURL=escrow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escrow.d.ts","sourceRoot":"","sources":["../src/escrow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,GAAG,EAAyC,MAAM,MAAM,CAAC;AAErF,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,EAAa,aAAa,EAAmB,QAAQ,EAAE,MAAM,YAAY,CAAC;AAyB7I;;;GAGG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAqD1G;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAUvG;AAED;;;;GAIG;AACH,wBAAsB,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAwBlF;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAC1B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,GAAG,EAChB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,QAAQ,CAAC,CAsBnB;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,GAAG,EACZ,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,QAAQ,CAAC,CAuBnB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,GAAG,GACX,OAAO,CAAC,QAAQ,CAAC,CAYnB;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAYlG;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAuB/E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAalG"}
package/dist/escrow.js ADDED
@@ -0,0 +1,243 @@
1
+ import { parseEventLogs, zeroHash } from "viem";
2
+ import { KompassEscrowAbi } from "./abi.js";
3
+ const JOB_STATUS_MAP = {
4
+ 0: "Open",
5
+ 1: "Funded",
6
+ 2: "Submitted",
7
+ 3: "Completed",
8
+ 4: "Rejected",
9
+ 5: "Expired",
10
+ };
11
+ const MILESTONE_STATUS_MAP = {
12
+ 0: "Pending",
13
+ 1: "Submitted",
14
+ 2: "Approved",
15
+ 3: "Rejected",
16
+ };
17
+ function requireWallet(config) {
18
+ if (!config.walletClient) {
19
+ throw new Error("WalletClient required for write operations");
20
+ }
21
+ return config.walletClient;
22
+ }
23
+ /**
24
+ * Create a new job on the escrow contract.
25
+ * Supports both single-deliverable and multi-milestone jobs.
26
+ */
27
+ export async function createJob(config, options) {
28
+ const wallet = requireWallet(config);
29
+ const hook = options.hook ?? config.defaultHookAddress ?? "0x0000000000000000000000000000000000000000";
30
+ let txHash;
31
+ if (options.milestones && options.milestones.length > 0) {
32
+ const shares = options.milestones.map((m) => m.budgetShareBps);
33
+ txHash = await wallet.writeContract({
34
+ address: config.escrowAddress,
35
+ abi: KompassEscrowAbi,
36
+ functionName: "createJobWithMilestones",
37
+ args: [
38
+ options.provider,
39
+ options.evaluator,
40
+ options.expiredAt,
41
+ options.description,
42
+ hook,
43
+ shares,
44
+ ],
45
+ });
46
+ }
47
+ else {
48
+ txHash = await wallet.writeContract({
49
+ address: config.escrowAddress,
50
+ abi: KompassEscrowAbi,
51
+ functionName: "createJob",
52
+ args: [
53
+ options.provider,
54
+ options.evaluator,
55
+ options.expiredAt,
56
+ options.description,
57
+ hook,
58
+ ],
59
+ });
60
+ }
61
+ // Wait for receipt and extract jobId from JobCreated event
62
+ const receipt = await config.publicClient.waitForTransactionReceipt({ hash: txHash });
63
+ const logs = parseEventLogs({
64
+ abi: KompassEscrowAbi,
65
+ logs: receipt.logs,
66
+ eventName: "JobCreated",
67
+ });
68
+ if (logs.length === 0) {
69
+ throw new Error("JobCreated event not found in transaction receipt");
70
+ }
71
+ return {
72
+ txHash,
73
+ jobId: logs[0].args.jobId,
74
+ };
75
+ }
76
+ /**
77
+ * Set the budget for an Open job.
78
+ */
79
+ export async function setBudget(config, jobId, amount) {
80
+ const wallet = requireWallet(config);
81
+ const txHash = await wallet.writeContract({
82
+ address: config.escrowAddress,
83
+ abi: KompassEscrowAbi,
84
+ functionName: "setBudget",
85
+ args: [jobId, amount, "0x"],
86
+ });
87
+ await config.publicClient.waitForTransactionReceipt({ hash: txHash });
88
+ return { txHash };
89
+ }
90
+ /**
91
+ * Fund a job, transitioning it from Open to Funded.
92
+ * Reads the job's budget for the expectedBudget parameter.
93
+ * Caller must have approved the escrow contract for the budget amount first.
94
+ */
95
+ export async function fund(config, jobId) {
96
+ const wallet = requireWallet(config);
97
+ // Read current budget for front-running protection
98
+ const jobData = await config.publicClient.readContract({
99
+ address: config.escrowAddress,
100
+ abi: KompassEscrowAbi,
101
+ functionName: "jobs",
102
+ args: [jobId],
103
+ });
104
+ const budget = jobData[4]; // budget is index 4
105
+ if (budget === 0n) {
106
+ throw new Error("Job budget is 0 — set budget before funding");
107
+ }
108
+ const txHash = await wallet.writeContract({
109
+ address: config.escrowAddress,
110
+ abi: KompassEscrowAbi,
111
+ functionName: "fund",
112
+ args: [jobId, budget, "0x"],
113
+ });
114
+ await config.publicClient.waitForTransactionReceipt({ hash: txHash });
115
+ return { txHash };
116
+ }
117
+ /**
118
+ * Submit a deliverable for a job or milestone.
119
+ * If milestoneIndex is provided, calls submitMilestone; otherwise calls submit.
120
+ */
121
+ export async function submit(config, jobId, deliverable, milestoneIndex) {
122
+ const wallet = requireWallet(config);
123
+ let txHash;
124
+ if (milestoneIndex !== undefined) {
125
+ txHash = await wallet.writeContract({
126
+ address: config.escrowAddress,
127
+ abi: KompassEscrowAbi,
128
+ functionName: "submitMilestone",
129
+ args: [jobId, BigInt(milestoneIndex), deliverable],
130
+ });
131
+ }
132
+ else {
133
+ txHash = await wallet.writeContract({
134
+ address: config.escrowAddress,
135
+ abi: KompassEscrowAbi,
136
+ functionName: "submit",
137
+ args: [jobId, deliverable, "0x"],
138
+ });
139
+ }
140
+ await config.publicClient.waitForTransactionReceipt({ hash: txHash });
141
+ return { txHash };
142
+ }
143
+ /**
144
+ * Complete a job or milestone (evaluator action).
145
+ * If milestoneIndex is provided, calls completeMilestone; otherwise calls complete.
146
+ */
147
+ export async function complete(config, jobId, reason, milestoneIndex) {
148
+ const wallet = requireWallet(config);
149
+ const reasonHash = reason ?? zeroHash;
150
+ let txHash;
151
+ if (milestoneIndex !== undefined) {
152
+ txHash = await wallet.writeContract({
153
+ address: config.escrowAddress,
154
+ abi: KompassEscrowAbi,
155
+ functionName: "completeMilestone",
156
+ args: [jobId, BigInt(milestoneIndex), reasonHash],
157
+ });
158
+ }
159
+ else {
160
+ txHash = await wallet.writeContract({
161
+ address: config.escrowAddress,
162
+ abi: KompassEscrowAbi,
163
+ functionName: "complete",
164
+ args: [jobId, reasonHash, "0x"],
165
+ });
166
+ }
167
+ await config.publicClient.waitForTransactionReceipt({ hash: txHash });
168
+ return { txHash };
169
+ }
170
+ /**
171
+ * Complete a job with partial payment (evaluator action).
172
+ * Releases percentageBps of the budget to the provider, refunds the rest.
173
+ */
174
+ export async function completePartial(config, jobId, percentageBps, reason) {
175
+ const wallet = requireWallet(config);
176
+ const reasonHash = reason ?? zeroHash;
177
+ const txHash = await wallet.writeContract({
178
+ address: config.escrowAddress,
179
+ abi: KompassEscrowAbi,
180
+ functionName: "completePartial",
181
+ args: [jobId, percentageBps, reasonHash],
182
+ });
183
+ await config.publicClient.waitForTransactionReceipt({ hash: txHash });
184
+ return { txHash };
185
+ }
186
+ /**
187
+ * Reject a job (client in Open state, evaluator in Funded/Submitted state).
188
+ */
189
+ export async function reject(config, jobId, reason) {
190
+ const wallet = requireWallet(config);
191
+ const reasonHash = reason ?? zeroHash;
192
+ const txHash = await wallet.writeContract({
193
+ address: config.escrowAddress,
194
+ abi: KompassEscrowAbi,
195
+ functionName: "reject",
196
+ args: [jobId, reasonHash, "0x"],
197
+ });
198
+ await config.publicClient.waitForTransactionReceipt({ hash: txHash });
199
+ return { txHash };
200
+ }
201
+ /**
202
+ * Read a job's full data from the contract.
203
+ */
204
+ export async function getJob(config, jobId) {
205
+ const data = await config.publicClient.readContract({
206
+ address: config.escrowAddress,
207
+ abi: KompassEscrowAbi,
208
+ functionName: "jobs",
209
+ args: [jobId],
210
+ });
211
+ // Solidity struct auto-getter returns a tuple:
212
+ // (client, provider, evaluator, hook, budget, expiredAt, status, description, deliverable, milestoneCount, currentMilestone)
213
+ return {
214
+ client: data[0],
215
+ provider: data[1],
216
+ evaluator: data[2],
217
+ hook: data[3],
218
+ budget: data[4],
219
+ expiredAt: data[5],
220
+ status: JOB_STATUS_MAP[Number(data[6])] ?? "Open",
221
+ description: data[7],
222
+ deliverable: data[8],
223
+ milestoneCount: Number(data[9]),
224
+ currentMilestone: Number(data[10]),
225
+ };
226
+ }
227
+ /**
228
+ * Read milestones for a job.
229
+ */
230
+ export async function getMilestones(config, jobId) {
231
+ const data = await config.publicClient.readContract({
232
+ address: config.escrowAddress,
233
+ abi: KompassEscrowAbi,
234
+ functionName: "getMilestones",
235
+ args: [jobId],
236
+ });
237
+ return data.map((ms) => ({
238
+ budgetShareBps: Number(ms.budgetShareBps),
239
+ deliverable: ms.deliverable,
240
+ status: MILESTONE_STATUS_MAP[Number(ms.status)] ?? "Pending",
241
+ }));
242
+ }
243
+ //# sourceMappingURL=escrow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escrow.js","sourceRoot":"","sources":["../src/escrow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { type Address, type Hex } from "viem";
2
+ import type { KompassConfig, AgentProfile, CreateJobOptions, CreateJobResult, DiscoverOptions, Job, MilestoneData, RegisterProfile, ReputationSummary, TxResult } from "./types.js";
3
+ import type { IntentRoute, YieldIntent } from "./intents.js";
4
+ import type { X402ClientOptions } from "./x402.js";
5
+ export declare class Kompass {
6
+ private config;
7
+ constructor(config: KompassConfig);
8
+ discover(options?: DiscoverOptions): Promise<AgentProfile[]>;
9
+ getAgent(address: string): Promise<AgentProfile | null>;
10
+ findEvaluator(domain: string): Promise<AgentProfile[]>;
11
+ routeYieldIntent(intent: YieldIntent, options?: DiscoverOptions): Promise<IntentRoute>;
12
+ requestWithX402(url: string, init: RequestInit, options: X402ClientOptions): Promise<Response>;
13
+ buildYieldPipelinePlan(route: IntentRoute): import("./pipelines.js").YieldPipelinePlan;
14
+ createYieldPipeline(route: IntentRoute): Promise<import("./pipelines.js").CreatePipelineResult>;
15
+ createJob(options: CreateJobOptions): Promise<CreateJobResult>;
16
+ setBudget(jobId: bigint, amount: bigint): Promise<TxResult>;
17
+ fund(jobId: bigint): Promise<TxResult>;
18
+ submit(jobId: bigint, deliverable: Hex, milestoneIndex?: number): Promise<TxResult>;
19
+ complete(jobId: bigint, reason?: Hex, milestoneIndex?: number): Promise<TxResult>;
20
+ completePartial(jobId: bigint, percentageBps: number, reason?: Hex): Promise<TxResult>;
21
+ reject(jobId: bigint, reason?: Hex): Promise<TxResult>;
22
+ getJob(jobId: bigint): Promise<Job>;
23
+ getMilestones(jobId: bigint): Promise<MilestoneData[]>;
24
+ register(profile: RegisterProfile): Promise<TxResult>;
25
+ updateProfile(ensNode: Hex, updates: Partial<Omit<RegisterProfile, "ensNode">>): Promise<TxResult>;
26
+ deregister(): Promise<TxResult>;
27
+ getReputation(agentId: bigint, tag1?: string, tag2?: string): Promise<ReputationSummary>;
28
+ approveToken(spender: Address, amount: bigint): Promise<TxResult>;
29
+ getBalance(): Promise<{
30
+ address: Address;
31
+ eth: string;
32
+ usdc: string;
33
+ usdcRaw: string;
34
+ ethRaw: string;
35
+ }>;
36
+ }
37
+ export type { KompassConfig, AgentProfile, AgentType, PaymentMode, CreateJobOptions, CreateJobResult, DiscoverOptions, Job, JobStatus, MilestoneConfig, MilestoneData, MilestoneStatus, RegisterProfile, ReputationSummary, TxResult, } from "./types.js";
38
+ export type { AgentCapabilityRole, IntentRoute, YieldIntent, } from "./intents.js";
39
+ export type { X402ClientOptions, X402PaymentRequestContext, X402PaymentRequirement, X402PaymentResponse, } from "./x402.js";
40
+ export type { CreatePipelineOptions, CreatePipelineResult, PipelineSettlementMode, YieldPipelinePlan, YieldPipelineSubtask, } from "./pipelines.js";
41
+ export { discover, getAgent, findEvaluator } from "./discover.js";
42
+ export { createJob, setBudget, fund, submit, complete, completePartial, reject, getJob, getMilestones } from "./escrow.js";
43
+ export { register, updateProfile, deregister, computeENSIP25Key, setENSIP25Record } from "./registry.js";
44
+ export { getReputation } from "./reputation.js";
45
+ export { routeYieldIntent } from "./intents.js";
46
+ export { parseX402Requirement, requestWithX402 } from "./x402.js";
47
+ export { buildYieldPipelinePlan, createYieldPipeline } from "./pipelines.js";
48
+ export * as adapters from "./adapters/index.js";
49
+ export { KompassSimple } from "./simple.js";
50
+ export type { KompassSimpleConfig, HireOptions, HireResult, AcceptJobsOptions, OrchestrateOptions, OrchestrateResult } from "./simple.js";
51
+ export { AcpEscrowBackend } from "./backends/acp.js";
52
+ export type { EscrowBackend, AgentSearchResult, AgentOffering, JobResult, IncomingJob } from "./backends/types.js";
53
+ export { KompassUnified } from "./unified.js";
54
+ export type { UnifiedConfig, FindOptions, FindResult } from "./unified.js";
55
+ export { Aggregator } from "./aggregator.js";
56
+ export { rankAgents } from "./matching.js";
57
+ export { ProtocolBridge } from "./bridge.js";
58
+ export type { BridgeHireOptions, BridgeHireResult } from "./bridge.js";
59
+ export { CapabilityRouter } from "./router.js";
60
+ export type { DoOptions, DoResult, CapabilityOption, CostPreference } from "./router.js";
61
+ export { createAllSources } from "./sources/index.js";
62
+ export type { UnifiedAgent, AgentSource, AgentProtocol, SourceAdapter } from "./sources/types.js";
63
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}