@absol-labs/agent 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 (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +196 -0
  3. package/dist/discovery/registry.d.ts +68 -0
  4. package/dist/discovery/registry.d.ts.map +1 -0
  5. package/dist/discovery/registry.js +148 -0
  6. package/dist/discovery/registry.js.map +1 -0
  7. package/dist/frameworks/agentkit.d.ts +158 -0
  8. package/dist/frameworks/agentkit.d.ts.map +1 -0
  9. package/dist/frameworks/agentkit.js +339 -0
  10. package/dist/frameworks/agentkit.js.map +1 -0
  11. package/dist/frameworks/crewai.d.ts +19 -0
  12. package/dist/frameworks/crewai.d.ts.map +1 -0
  13. package/dist/frameworks/crewai.js +73 -0
  14. package/dist/frameworks/crewai.js.map +1 -0
  15. package/dist/frameworks/eliza.d.ts +393 -0
  16. package/dist/frameworks/eliza.d.ts.map +1 -0
  17. package/dist/frameworks/eliza.js +542 -0
  18. package/dist/frameworks/eliza.js.map +1 -0
  19. package/dist/frameworks/langchain.d.ts +31 -0
  20. package/dist/frameworks/langchain.d.ts.map +1 -0
  21. package/dist/frameworks/langchain.js +206 -0
  22. package/dist/frameworks/langchain.js.map +1 -0
  23. package/dist/index.d.ts +14 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +16 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/mandates/env.d.ts +51 -0
  28. package/dist/mandates/env.d.ts.map +1 -0
  29. package/dist/mandates/env.js +148 -0
  30. package/dist/mandates/env.js.map +1 -0
  31. package/dist/mandates/mandate.d.ts +214 -0
  32. package/dist/mandates/mandate.d.ts.map +1 -0
  33. package/dist/mandates/mandate.js +172 -0
  34. package/dist/mandates/mandate.js.map +1 -0
  35. package/dist/mcp/http-server.d.ts +2 -0
  36. package/dist/mcp/http-server.d.ts.map +1 -0
  37. package/dist/mcp/http-server.js +32 -0
  38. package/dist/mcp/http-server.js.map +1 -0
  39. package/dist/mcp/http.d.ts +114 -0
  40. package/dist/mcp/http.d.ts.map +1 -0
  41. package/dist/mcp/http.js +428 -0
  42. package/dist/mcp/http.js.map +1 -0
  43. package/dist/mcp/server.d.ts +119 -0
  44. package/dist/mcp/server.d.ts.map +1 -0
  45. package/dist/mcp/server.js +679 -0
  46. package/dist/mcp/server.js.map +1 -0
  47. package/dist/mcp/stdio.d.ts +2 -0
  48. package/dist/mcp/stdio.d.ts.map +1 -0
  49. package/dist/mcp/stdio.js +6 -0
  50. package/dist/mcp/stdio.js.map +1 -0
  51. package/dist/sdk/client.d.ts +78 -0
  52. package/dist/sdk/client.d.ts.map +1 -0
  53. package/dist/sdk/client.js +99 -0
  54. package/dist/sdk/client.js.map +1 -0
  55. package/dist/wallet/provider.d.ts +51 -0
  56. package/dist/wallet/provider.d.ts.map +1 -0
  57. package/dist/wallet/provider.js +107 -0
  58. package/dist/wallet/provider.js.map +1 -0
  59. package/dist/x402/facilitator.d.ts +315 -0
  60. package/dist/x402/facilitator.d.ts.map +1 -0
  61. package/dist/x402/facilitator.js +194 -0
  62. package/dist/x402/facilitator.js.map +1 -0
  63. package/dist/zktls/reclaim.d.ts +137 -0
  64. package/dist/zktls/reclaim.d.ts.map +1 -0
  65. package/dist/zktls/reclaim.js +245 -0
  66. package/dist/zktls/reclaim.js.map +1 -0
  67. package/package.json +86 -0
  68. package/src/discovery/registry.ts +255 -0
  69. package/src/frameworks/agentkit.ts +537 -0
  70. package/src/frameworks/crewai.ts +102 -0
  71. package/src/frameworks/eliza.ts +776 -0
  72. package/src/frameworks/langchain.ts +325 -0
  73. package/src/index.ts +179 -0
  74. package/src/mandates/env.ts +222 -0
  75. package/src/mandates/mandate.ts +280 -0
  76. package/src/mcp/http-server.ts +38 -0
  77. package/src/mcp/http.ts +620 -0
  78. package/src/mcp/server.ts +1006 -0
  79. package/src/mcp/stdio.ts +8 -0
  80. package/src/sdk/client.ts +222 -0
  81. package/src/wallet/provider.ts +197 -0
  82. package/src/x402/facilitator.ts +336 -0
  83. package/src/zktls/reclaim.ts +424 -0
@@ -0,0 +1,315 @@
1
+ import type { StreamProofClientConfig } from "@absol-labs/sdk";
2
+ import { z } from "zod";
3
+ import { type SignedSpendMandate } from "../mandates/mandate.js";
4
+ import { type VerifiedStreamAgentOpener } from "../sdk/client.js";
5
+ import { type ConsumerDeliveryProofService, type HttpsResponseMatch, type HttpsResponseRedaction, type VerifiedConsumedHttpsResponseProof } from "../zktls/reclaim.js";
6
+ export declare const X402_SCHEME: "streamproof-verified-stream";
7
+ export declare const verifiedStreamRequirementsSchema: z.ZodObject<{
8
+ operator: z.ZodString;
9
+ serviceRef: z.ZodString;
10
+ chainId: z.ZodNumber;
11
+ escrow: z.ZodString;
12
+ ratePerSecondUsdc: z.ZodBigInt;
13
+ maxDurationSeconds: z.ZodNumber;
14
+ maxBudgetUsdc: z.ZodBigInt;
15
+ }, "strip", z.ZodTypeAny, {
16
+ maxDurationSeconds: number;
17
+ chainId: number;
18
+ operator: string;
19
+ serviceRef: string;
20
+ escrow: string;
21
+ ratePerSecondUsdc: bigint;
22
+ maxBudgetUsdc: bigint;
23
+ }, {
24
+ maxDurationSeconds: number;
25
+ chainId: number;
26
+ operator: string;
27
+ serviceRef: string;
28
+ escrow: string;
29
+ ratePerSecondUsdc: bigint;
30
+ maxBudgetUsdc: bigint;
31
+ }>;
32
+ export interface VerifiedStreamRequirements extends z.infer<typeof verifiedStreamRequirementsSchema> {
33
+ }
34
+ export declare const x402StreamChallengeSchema: z.ZodObject<{
35
+ scheme: z.ZodLiteral<"streamproof-verified-stream">;
36
+ requirements: z.ZodObject<{
37
+ operator: z.ZodString;
38
+ serviceRef: z.ZodString;
39
+ chainId: z.ZodNumber;
40
+ escrow: z.ZodString;
41
+ ratePerSecondUsdc: z.ZodBigInt;
42
+ maxDurationSeconds: z.ZodNumber;
43
+ maxBudgetUsdc: z.ZodBigInt;
44
+ }, "strip", z.ZodTypeAny, {
45
+ maxDurationSeconds: number;
46
+ chainId: number;
47
+ operator: string;
48
+ serviceRef: string;
49
+ escrow: string;
50
+ ratePerSecondUsdc: bigint;
51
+ maxBudgetUsdc: bigint;
52
+ }, {
53
+ maxDurationSeconds: number;
54
+ chainId: number;
55
+ operator: string;
56
+ serviceRef: string;
57
+ escrow: string;
58
+ ratePerSecondUsdc: bigint;
59
+ maxBudgetUsdc: bigint;
60
+ }>;
61
+ }, "strip", z.ZodTypeAny, {
62
+ scheme: "streamproof-verified-stream";
63
+ requirements: {
64
+ maxDurationSeconds: number;
65
+ chainId: number;
66
+ operator: string;
67
+ serviceRef: string;
68
+ escrow: string;
69
+ ratePerSecondUsdc: bigint;
70
+ maxBudgetUsdc: bigint;
71
+ };
72
+ }, {
73
+ scheme: "streamproof-verified-stream";
74
+ requirements: {
75
+ maxDurationSeconds: number;
76
+ chainId: number;
77
+ operator: string;
78
+ serviceRef: string;
79
+ escrow: string;
80
+ ratePerSecondUsdc: bigint;
81
+ maxBudgetUsdc: bigint;
82
+ };
83
+ }>;
84
+ export interface X402StreamChallenge extends z.infer<typeof x402StreamChallengeSchema> {
85
+ }
86
+ export declare const x402OpenPayloadSchema: z.ZodObject<{
87
+ challenge: z.ZodObject<{
88
+ scheme: z.ZodLiteral<"streamproof-verified-stream">;
89
+ requirements: z.ZodObject<{
90
+ operator: z.ZodString;
91
+ serviceRef: z.ZodString;
92
+ chainId: z.ZodNumber;
93
+ escrow: z.ZodString;
94
+ ratePerSecondUsdc: z.ZodBigInt;
95
+ maxDurationSeconds: z.ZodNumber;
96
+ maxBudgetUsdc: z.ZodBigInt;
97
+ }, "strip", z.ZodTypeAny, {
98
+ maxDurationSeconds: number;
99
+ chainId: number;
100
+ operator: string;
101
+ serviceRef: string;
102
+ escrow: string;
103
+ ratePerSecondUsdc: bigint;
104
+ maxBudgetUsdc: bigint;
105
+ }, {
106
+ maxDurationSeconds: number;
107
+ chainId: number;
108
+ operator: string;
109
+ serviceRef: string;
110
+ escrow: string;
111
+ ratePerSecondUsdc: bigint;
112
+ maxBudgetUsdc: bigint;
113
+ }>;
114
+ }, "strip", z.ZodTypeAny, {
115
+ scheme: "streamproof-verified-stream";
116
+ requirements: {
117
+ maxDurationSeconds: number;
118
+ chainId: number;
119
+ operator: string;
120
+ serviceRef: string;
121
+ escrow: string;
122
+ ratePerSecondUsdc: bigint;
123
+ maxBudgetUsdc: bigint;
124
+ };
125
+ }, {
126
+ scheme: "streamproof-verified-stream";
127
+ requirements: {
128
+ maxDurationSeconds: number;
129
+ chainId: number;
130
+ operator: string;
131
+ serviceRef: string;
132
+ escrow: string;
133
+ ratePerSecondUsdc: bigint;
134
+ maxBudgetUsdc: bigint;
135
+ };
136
+ }>;
137
+ signedMandate: z.ZodObject<{
138
+ mandateId: z.ZodEffects<z.ZodString, string, string>;
139
+ owner: z.ZodEffects<z.ZodString, `0x${string}`, string>;
140
+ chainId: z.ZodNumber;
141
+ issuedAt: z.ZodNumber;
142
+ mandate: z.ZodObject<{
143
+ maxPerStreamUsdc: z.ZodBigInt;
144
+ maxTotalUsdc: z.ZodBigInt;
145
+ maxRatePerSecondUsdc: z.ZodBigInt;
146
+ maxDurationSeconds: z.ZodNumber;
147
+ allowedOperators: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodString, `0x${string}`, string>, "many">>;
148
+ expiresAt: z.ZodNumber;
149
+ }, "strip", z.ZodTypeAny, {
150
+ maxPerStreamUsdc: bigint;
151
+ maxTotalUsdc: bigint;
152
+ maxRatePerSecondUsdc: bigint;
153
+ maxDurationSeconds: number;
154
+ expiresAt: number;
155
+ allowedOperators?: `0x${string}`[] | undefined;
156
+ }, {
157
+ maxPerStreamUsdc: bigint;
158
+ maxTotalUsdc: bigint;
159
+ maxRatePerSecondUsdc: bigint;
160
+ maxDurationSeconds: number;
161
+ expiresAt: number;
162
+ allowedOperators?: string[] | undefined;
163
+ }>;
164
+ signature: z.ZodEffects<z.ZodString, string, string>;
165
+ }, "strip", z.ZodTypeAny, {
166
+ mandateId: string;
167
+ owner: `0x${string}`;
168
+ chainId: number;
169
+ issuedAt: number;
170
+ mandate: {
171
+ maxPerStreamUsdc: bigint;
172
+ maxTotalUsdc: bigint;
173
+ maxRatePerSecondUsdc: bigint;
174
+ maxDurationSeconds: number;
175
+ expiresAt: number;
176
+ allowedOperators?: `0x${string}`[] | undefined;
177
+ };
178
+ signature: string;
179
+ }, {
180
+ mandateId: string;
181
+ owner: string;
182
+ chainId: number;
183
+ issuedAt: number;
184
+ mandate: {
185
+ maxPerStreamUsdc: bigint;
186
+ maxTotalUsdc: bigint;
187
+ maxRatePerSecondUsdc: bigint;
188
+ maxDurationSeconds: number;
189
+ expiresAt: number;
190
+ allowedOperators?: string[] | undefined;
191
+ };
192
+ signature: string;
193
+ }>;
194
+ }, "strip", z.ZodTypeAny, {
195
+ signedMandate: {
196
+ mandateId: string;
197
+ owner: `0x${string}`;
198
+ chainId: number;
199
+ issuedAt: number;
200
+ mandate: {
201
+ maxPerStreamUsdc: bigint;
202
+ maxTotalUsdc: bigint;
203
+ maxRatePerSecondUsdc: bigint;
204
+ maxDurationSeconds: number;
205
+ expiresAt: number;
206
+ allowedOperators?: `0x${string}`[] | undefined;
207
+ };
208
+ signature: string;
209
+ };
210
+ challenge: {
211
+ scheme: "streamproof-verified-stream";
212
+ requirements: {
213
+ maxDurationSeconds: number;
214
+ chainId: number;
215
+ operator: string;
216
+ serviceRef: string;
217
+ escrow: string;
218
+ ratePerSecondUsdc: bigint;
219
+ maxBudgetUsdc: bigint;
220
+ };
221
+ };
222
+ }, {
223
+ signedMandate: {
224
+ mandateId: string;
225
+ owner: string;
226
+ chainId: number;
227
+ issuedAt: number;
228
+ mandate: {
229
+ maxPerStreamUsdc: bigint;
230
+ maxTotalUsdc: bigint;
231
+ maxRatePerSecondUsdc: bigint;
232
+ maxDurationSeconds: number;
233
+ expiresAt: number;
234
+ allowedOperators?: string[] | undefined;
235
+ };
236
+ signature: string;
237
+ };
238
+ challenge: {
239
+ scheme: "streamproof-verified-stream";
240
+ requirements: {
241
+ maxDurationSeconds: number;
242
+ chainId: number;
243
+ operator: string;
244
+ serviceRef: string;
245
+ escrow: string;
246
+ ratePerSecondUsdc: bigint;
247
+ maxBudgetUsdc: bigint;
248
+ };
249
+ };
250
+ }>;
251
+ export interface X402OpenPayload extends z.infer<typeof x402OpenPayloadSchema> {
252
+ }
253
+ export interface X402Facilitator {
254
+ /** Build the 402 challenge a server returns to prompt a verified stream. */
255
+ challenge(req: VerifiedStreamRequirements): X402StreamChallenge;
256
+ /** Verify + open the stream from an agent's signed payment payload. */
257
+ open(payloadHeader: string): Promise<{
258
+ streamId: `0x${string}`;
259
+ }>;
260
+ /** Prove the HTTPS response consumed after opening a verified stream. */
261
+ proveConsumedHttpsResponse(input: X402ConsumedHttpsResponseProofInput): Promise<VerifiedConsumedHttpsResponseProof>;
262
+ }
263
+ export interface X402ConsumedHttpsResponseProofInput {
264
+ readonly signedMandate: SignedSpendMandate;
265
+ readonly streamId?: `0x${string}`;
266
+ readonly operator?: `0x${string}`;
267
+ readonly serviceRef?: `0x${string}`;
268
+ readonly url: string;
269
+ readonly method?: "GET" | "POST" | "PUT";
270
+ readonly headers?: Record<string, string>;
271
+ readonly body?: string;
272
+ readonly secretHeaders?: Record<string, string>;
273
+ readonly responseMatches: readonly HttpsResponseMatch[];
274
+ readonly responseRedactions?: readonly HttpsResponseRedaction[];
275
+ readonly cookie?: string;
276
+ readonly secretParamValues?: Record<string, string>;
277
+ readonly geoLocation?: string;
278
+ readonly useTee?: boolean;
279
+ readonly zkEngine?: "snarkjs" | "stwo";
280
+ }
281
+ export interface VerifiedStreamFacilitatorOptions {
282
+ readonly sdkConfig: StreamProofClientConfig;
283
+ readonly createAgentClient?: (config: StreamProofClientConfig) => VerifiedStreamAgentOpener;
284
+ readonly deliveryProofs?: ConsumerDeliveryProofService;
285
+ readonly nowSeconds?: () => number;
286
+ readonly resolveSpentSoFarUsdc?: (signedMandate: SignedSpendMandate) => bigint | Promise<bigint>;
287
+ readonly resolveRevokedMandateIds?: (signedMandate: SignedSpendMandate) => Iterable<`0x${string}`> | Promise<Iterable<`0x${string}`>>;
288
+ }
289
+ export declare class X402PayloadError extends Error {
290
+ constructor(message: string);
291
+ }
292
+ export declare class SettlementTargetMismatchError extends Error {
293
+ constructor(message: string);
294
+ }
295
+ export declare class DeliveryProofUnavailableError extends Error {
296
+ constructor(message: string);
297
+ }
298
+ export declare class VerifiedStreamX402Facilitator implements X402Facilitator {
299
+ private readonly agentClient;
300
+ private readonly deliveryProofs;
301
+ private readonly sdkConfig;
302
+ private readonly nowSeconds;
303
+ private readonly resolveSpentSoFarUsdc;
304
+ private readonly resolveRevokedMandateIds;
305
+ constructor(options: VerifiedStreamFacilitatorOptions);
306
+ challenge(req: VerifiedStreamRequirements): X402StreamChallenge;
307
+ open(payloadHeader: string): Promise<{
308
+ streamId: `0x${string}`;
309
+ }>;
310
+ proveConsumedHttpsResponse(input: X402ConsumedHttpsResponseProofInput): Promise<VerifiedConsumedHttpsResponseProof>;
311
+ }
312
+ export declare function encodeX402PayloadHeader(payload: X402OpenPayload): string;
313
+ export declare function parseX402ChallengeJson(value: unknown): X402StreamChallenge;
314
+ export declare function parseX402PayloadHeader(payloadHeader: string): X402OpenPayload;
315
+ //# sourceMappingURL=facilitator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facilitator.d.ts","sourceRoot":"","sources":["../../src/x402/facilitator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,194 @@
1
+ import { z } from "zod";
2
+ import { signedSpendMandateSchema, } from "../mandates/mandate.js";
3
+ import { VerifiedStreamAgentClient, } from "../sdk/client.js";
4
+ export const X402_SCHEME = "streamproof-verified-stream";
5
+ const addressSchema = z.string().regex(/^0x[0-9a-fA-F]{40}$/);
6
+ const bytes32Schema = z.string().regex(/^0x[0-9a-fA-F]{64}$/);
7
+ export const verifiedStreamRequirementsSchema = z.object({
8
+ operator: addressSchema,
9
+ serviceRef: bytes32Schema,
10
+ chainId: z.number().int().positive(),
11
+ escrow: addressSchema,
12
+ ratePerSecondUsdc: z.bigint().positive(),
13
+ maxDurationSeconds: z.number().int().positive(),
14
+ maxBudgetUsdc: z.bigint().positive(),
15
+ });
16
+ export const x402StreamChallengeSchema = z.object({
17
+ scheme: z.literal(X402_SCHEME),
18
+ requirements: verifiedStreamRequirementsSchema,
19
+ });
20
+ export const x402OpenPayloadSchema = z.object({
21
+ challenge: x402StreamChallengeSchema,
22
+ signedMandate: signedSpendMandateSchema,
23
+ });
24
+ const warnedFacilitatorGaps = new Set();
25
+ /** Emits a stderr warning at most once per process for a given key. */
26
+ function warnFacilitatorOnce(key, message) {
27
+ if (warnedFacilitatorGaps.has(key)) {
28
+ return;
29
+ }
30
+ warnedFacilitatorGaps.add(key);
31
+ console.error(message);
32
+ }
33
+ export class X402PayloadError extends Error {
34
+ constructor(message) {
35
+ super(message);
36
+ this.name = "X402PayloadError";
37
+ }
38
+ }
39
+ export class SettlementTargetMismatchError extends Error {
40
+ constructor(message) {
41
+ super(message);
42
+ this.name = "SettlementTargetMismatchError";
43
+ }
44
+ }
45
+ export class DeliveryProofUnavailableError extends Error {
46
+ constructor(message) {
47
+ super(message);
48
+ this.name = "DeliveryProofUnavailableError";
49
+ }
50
+ }
51
+ export class VerifiedStreamX402Facilitator {
52
+ agentClient;
53
+ deliveryProofs;
54
+ sdkConfig;
55
+ nowSeconds;
56
+ resolveSpentSoFarUsdc;
57
+ resolveRevokedMandateIds;
58
+ constructor(options) {
59
+ this.sdkConfig = options.sdkConfig;
60
+ this.agentClient = (options.createAgentClient ?? defaultAgentClientFactory)(options.sdkConfig);
61
+ this.deliveryProofs = options.deliveryProofs;
62
+ this.nowSeconds =
63
+ options.nowSeconds ?? (() => Math.floor(Date.now() / 1000));
64
+ this.resolveSpentSoFarUsdc = options.resolveSpentSoFarUsdc ?? (() => 0n);
65
+ this.resolveRevokedMandateIds =
66
+ options.resolveRevokedMandateIds ?? (() => []);
67
+ // Fail-loud on the two mandate controls that require external state. This
68
+ // facilitator is stateless (no stream registry), so it cannot enforce the
69
+ // cumulative-cap or revocation without a wired resolver. Warn once so a
70
+ // deployment never silently ships with maxTotalUsdc / revocation disabled.
71
+ if (options.resolveSpentSoFarUsdc === undefined) {
72
+ warnFacilitatorOnce("x402-spent", "[metrik] x402 facilitator: no resolveSpentSoFarUsdc wired — the mandate cumulative cap (maxTotalUsdc) is NOT enforced across streams (per-stream/rate/duration/operator/expiry still are).");
73
+ }
74
+ if (options.resolveRevokedMandateIds === undefined) {
75
+ warnFacilitatorOnce("x402-revocation", "[metrik] x402 facilitator: no resolveRevokedMandateIds wired — revoked mandates will NOT be rejected until you wire a revocation store.");
76
+ }
77
+ }
78
+ challenge(req) {
79
+ const requirements = verifiedStreamRequirementsSchema.parse(req);
80
+ assertSettlementTarget(requirements, this.sdkConfig);
81
+ return { scheme: X402_SCHEME, requirements };
82
+ }
83
+ async open(payloadHeader) {
84
+ const payload = parseX402PayloadHeader(payloadHeader);
85
+ assertSettlementTarget(payload.challenge.requirements, this.sdkConfig);
86
+ const spentSoFarUsdc = await this.resolveSpentSoFarUsdc(payload.signedMandate);
87
+ const revokedMandateIds = await this.resolveRevokedMandateIds(payload.signedMandate);
88
+ const result = await this.agentClient.openVerifiedStream({
89
+ operator: payload.challenge.requirements.operator,
90
+ serviceRef: payload.challenge.requirements.serviceRef,
91
+ budgetUsdc: payload.challenge.requirements.maxBudgetUsdc,
92
+ ratePerSecondUsdc: payload.challenge.requirements.ratePerSecondUsdc,
93
+ maxDurationSeconds: payload.challenge.requirements.maxDurationSeconds,
94
+ signedMandate: payload.signedMandate,
95
+ spentSoFarUsdc,
96
+ nowSeconds: this.nowSeconds(),
97
+ revokedMandateIds,
98
+ });
99
+ return { streamId: result.streamId };
100
+ }
101
+ async proveConsumedHttpsResponse(input) {
102
+ if (this.deliveryProofs === undefined) {
103
+ throw new DeliveryProofUnavailableError("zkTLS delivery proofs are not configured on this x402 facilitator");
104
+ }
105
+ return await this.deliveryProofs.proveConsumedHttpsResponse({
106
+ url: input.url,
107
+ ...(input.method === undefined ? {} : { method: input.method }),
108
+ ...(input.headers === undefined ? {} : { headers: input.headers }),
109
+ ...(input.body === undefined ? {} : { body: input.body }),
110
+ ...(input.secretHeaders === undefined
111
+ ? {}
112
+ : { secretHeaders: input.secretHeaders }),
113
+ responseMatches: input.responseMatches,
114
+ ...(input.responseRedactions === undefined
115
+ ? {}
116
+ : { responseRedactions: input.responseRedactions }),
117
+ ...(input.cookie === undefined ? {} : { cookie: input.cookie }),
118
+ ...(input.secretParamValues === undefined
119
+ ? {}
120
+ : { secretParamValues: input.secretParamValues }),
121
+ ...(input.geoLocation === undefined
122
+ ? {}
123
+ : { geoLocation: input.geoLocation }),
124
+ ...(input.useTee === undefined ? {} : { useTee: input.useTee }),
125
+ ...(input.zkEngine === undefined ? {} : { zkEngine: input.zkEngine }),
126
+ delivery: {
127
+ owner: input.signedMandate.owner,
128
+ mandateId: input.signedMandate.mandateId,
129
+ ...(input.streamId === undefined ? {} : { streamId: input.streamId }),
130
+ ...(input.operator === undefined ? {} : { operator: input.operator }),
131
+ ...(input.serviceRef === undefined
132
+ ? {}
133
+ : { serviceRef: input.serviceRef }),
134
+ },
135
+ });
136
+ }
137
+ }
138
+ export function encodeX402PayloadHeader(payload) {
139
+ const parsed = x402OpenPayloadSchema.parse(payload);
140
+ const token = Buffer.from(stringifyX402Payload(parsed)).toString("base64url");
141
+ return `${X402_SCHEME} ${token}`;
142
+ }
143
+ export function parseX402ChallengeJson(value) {
144
+ const parsed = x402StreamChallengeSchema.safeParse(reviveBigInts(value));
145
+ if (!parsed.success) {
146
+ throw new X402PayloadError(parsed.error.issues.map((issue) => issue.message).join("; "));
147
+ }
148
+ return parsed.data;
149
+ }
150
+ export function parseX402PayloadHeader(payloadHeader) {
151
+ const [scheme, token] = payloadHeader.split(" ", 2);
152
+ if (scheme !== X402_SCHEME || token === undefined || token.trim() === "") {
153
+ throw new X402PayloadError("invalid x402 verified-stream payload header");
154
+ }
155
+ let decoded;
156
+ try {
157
+ decoded = JSON.parse(Buffer.from(token, "base64url").toString("utf8"));
158
+ }
159
+ catch (error) {
160
+ throw new X402PayloadError(`invalid x402 verified-stream payload encoding: ${error instanceof Error ? error.message : String(error)}`);
161
+ }
162
+ const parsed = x402OpenPayloadSchema.safeParse(reviveBigInts(decoded));
163
+ if (!parsed.success) {
164
+ throw new X402PayloadError(parsed.error.issues.map((issue) => issue.message).join("; "));
165
+ }
166
+ return parsed.data;
167
+ }
168
+ function defaultAgentClientFactory(config) {
169
+ return new VerifiedStreamAgentClient(config);
170
+ }
171
+ function assertSettlementTarget(requirements, sdkConfig) {
172
+ if (requirements.chainId !== sdkConfig.chain.id) {
173
+ throw new SettlementTargetMismatchError(`challenge chainId ${requirements.chainId} does not match configured chain ${sdkConfig.chain.id}`);
174
+ }
175
+ if (requirements.escrow.toLowerCase() !== sdkConfig.escrow.toLowerCase()) {
176
+ throw new SettlementTargetMismatchError(`challenge escrow ${requirements.escrow} does not match configured escrow ${sdkConfig.escrow}`);
177
+ }
178
+ }
179
+ function stringifyX402Payload(payload) {
180
+ return JSON.stringify(payload, (_key, value) => typeof value === "bigint" ? `${value.toString()}n` : value);
181
+ }
182
+ function reviveBigInts(value) {
183
+ if (Array.isArray(value)) {
184
+ return value.map((entry) => reviveBigInts(entry));
185
+ }
186
+ if (typeof value === "string" && /^\d+n$/.test(value)) {
187
+ return BigInt(value.slice(0, -1));
188
+ }
189
+ if (typeof value === "object" && value !== null) {
190
+ return Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, reviveBigInts(entry)]));
191
+ }
192
+ return value;
193
+ }
194
+ //# sourceMappingURL=facilitator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facilitator.js","sourceRoot":"","sources":["../../src/x402/facilitator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ import { verifyProof, type Proof as ReclaimProtocolProof, type VerifyProofResult } from "@reclaimprotocol/js-sdk";
2
+ import { z } from "zod";
3
+ declare const responseMatchSchema: z.ZodObject<{
4
+ type: z.ZodEnum<["regex", "contains"]>;
5
+ value: z.ZodString;
6
+ invert: z.ZodOptional<z.ZodBoolean>;
7
+ isOptional: z.ZodOptional<z.ZodBoolean>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ value: string;
10
+ type: "regex" | "contains";
11
+ invert?: boolean | undefined;
12
+ isOptional?: boolean | undefined;
13
+ }, {
14
+ value: string;
15
+ type: "regex" | "contains";
16
+ invert?: boolean | undefined;
17
+ isOptional?: boolean | undefined;
18
+ }>;
19
+ declare const responseRedactionSchema: z.ZodEffects<z.ZodObject<{
20
+ regex: z.ZodOptional<z.ZodString>;
21
+ jsonPath: z.ZodOptional<z.ZodString>;
22
+ xPath: z.ZodOptional<z.ZodString>;
23
+ hash: z.ZodOptional<z.ZodEnum<["oprf", "oprf-raw", "oprf-mpc"]>>;
24
+ }, "strip", z.ZodTypeAny, {
25
+ regex?: string | undefined;
26
+ jsonPath?: string | undefined;
27
+ xPath?: string | undefined;
28
+ hash?: "oprf" | "oprf-raw" | "oprf-mpc" | undefined;
29
+ }, {
30
+ regex?: string | undefined;
31
+ jsonPath?: string | undefined;
32
+ xPath?: string | undefined;
33
+ hash?: "oprf" | "oprf-raw" | "oprf-mpc" | undefined;
34
+ }>, {
35
+ regex?: string | undefined;
36
+ jsonPath?: string | undefined;
37
+ xPath?: string | undefined;
38
+ hash?: "oprf" | "oprf-raw" | "oprf-mpc" | undefined;
39
+ }, {
40
+ regex?: string | undefined;
41
+ jsonPath?: string | undefined;
42
+ xPath?: string | undefined;
43
+ hash?: "oprf" | "oprf-raw" | "oprf-mpc" | undefined;
44
+ }>;
45
+ export type HttpsResponseMatch = z.infer<typeof responseMatchSchema>;
46
+ export type HttpsResponseRedaction = z.infer<typeof responseRedactionSchema>;
47
+ export type ReclaimProof = ReclaimProtocolProof;
48
+ export interface DeliveryProofBinding {
49
+ readonly owner: `0x${string}`;
50
+ readonly streamId?: `0x${string}`;
51
+ readonly operator?: `0x${string}`;
52
+ readonly serviceRef?: `0x${string}`;
53
+ readonly mandateId?: `0x${string}`;
54
+ }
55
+ export interface ProveConsumedHttpsResponseInput {
56
+ readonly url: string;
57
+ readonly method?: "GET" | "POST" | "PUT";
58
+ readonly headers?: Record<string, string>;
59
+ readonly body?: string;
60
+ readonly secretHeaders?: Record<string, string>;
61
+ readonly responseMatches: readonly HttpsResponseMatch[];
62
+ readonly responseRedactions?: readonly HttpsResponseRedaction[];
63
+ readonly cookie?: string;
64
+ readonly secretParamValues?: Record<string, string>;
65
+ readonly geoLocation?: string;
66
+ readonly useTee?: boolean;
67
+ readonly zkEngine?: "snarkjs" | "stwo";
68
+ readonly delivery: DeliveryProofBinding;
69
+ }
70
+ export interface VerifiedConsumedHttpsResponseProof {
71
+ readonly proof: ReclaimProof;
72
+ readonly request: {
73
+ readonly url: string;
74
+ readonly method: "GET" | "POST" | "PUT";
75
+ readonly body: string | null;
76
+ readonly responseMatches: readonly HttpsResponseMatch[];
77
+ readonly responseRedactions: readonly HttpsResponseRedaction[];
78
+ };
79
+ readonly verification: {
80
+ readonly context: Record<string, unknown>;
81
+ readonly extractedParameters: Record<string, string>;
82
+ readonly publicData: unknown;
83
+ readonly isTeeAttestationVerified: boolean;
84
+ readonly isAttestorTeeAttestationVerified: boolean;
85
+ };
86
+ }
87
+ export interface ReclaimProofServiceConfig {
88
+ readonly applicationId: string;
89
+ readonly applicationSecret: string;
90
+ readonly logs?: boolean;
91
+ }
92
+ export interface ParsedReclaimProofEnv extends ReclaimProofServiceConfig {
93
+ }
94
+ export interface ReclaimClientLike {
95
+ zkFetch(url: string, options?: {
96
+ method: string;
97
+ body?: string;
98
+ headers?: Record<string, string>;
99
+ geoLocation?: string;
100
+ context?: {
101
+ contextAddress: string;
102
+ contextMessage: string;
103
+ };
104
+ useTee?: boolean;
105
+ zkEngine?: "snarkjs" | "stwo";
106
+ }, secretOptions?: {
107
+ headers?: Record<string, string>;
108
+ responseMatches?: readonly HttpsResponseMatch[];
109
+ responseRedactions?: readonly HttpsResponseRedaction[];
110
+ cookieStr?: string;
111
+ paramValues?: Record<string, string>;
112
+ }): Promise<ReclaimProof | undefined>;
113
+ }
114
+ export type VerifyProofFn = (proof: ReclaimProof, config: Parameters<typeof verifyProof>[1]) => Promise<VerifyProofResult>;
115
+ export interface ConsumerDeliveryProofService {
116
+ proveConsumedHttpsResponse(input: ProveConsumedHttpsResponseInput): Promise<VerifiedConsumedHttpsResponseProof>;
117
+ }
118
+ export declare class ResponseProofUnavailableError extends Error {
119
+ constructor(message: string);
120
+ }
121
+ export declare class ResponseProofVerificationError extends Error {
122
+ constructor(message: string);
123
+ }
124
+ export declare class ReclaimConsumerProofService implements ConsumerDeliveryProofService {
125
+ private readonly client;
126
+ private readonly config;
127
+ private readonly verifyProofImpl;
128
+ constructor(config: ReclaimProofServiceConfig, options?: {
129
+ readonly createClient?: (applicationId: string, applicationSecret: string, logs: boolean) => ReclaimClientLike;
130
+ readonly verifyProof?: VerifyProofFn;
131
+ });
132
+ proveConsumedHttpsResponse(input: ProveConsumedHttpsResponseInput): Promise<VerifiedConsumedHttpsResponseProof>;
133
+ }
134
+ export declare function parseReclaimProofEnv(env?: NodeJS.ProcessEnv): ParsedReclaimProofEnv | null;
135
+ export declare function createReclaimConsumerProofServiceFromEnv(env?: NodeJS.ProcessEnv): ReclaimConsumerProofService | null;
136
+ export {};
137
+ //# sourceMappingURL=reclaim.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reclaim.d.ts","sourceRoot":"","sources":["../../src/zktls/reclaim.ts"],"names":[],"mappings":"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"}