@absol-labs/agent 0.6.0 → 0.7.1

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 (47) hide show
  1. package/README.md +21 -5
  2. package/dist/index.d.ts +6 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +6 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/wallet/autonomous-wallet-broker.d.ts +97 -0
  7. package/dist/wallet/autonomous-wallet-broker.d.ts.map +1 -0
  8. package/dist/wallet/autonomous-wallet-broker.js +478 -0
  9. package/dist/wallet/autonomous-wallet-broker.js.map +1 -0
  10. package/dist/wallet/autonomous-wallet-protocol.d.ts +56 -0
  11. package/dist/wallet/autonomous-wallet-protocol.d.ts.map +1 -0
  12. package/dist/wallet/autonomous-wallet-protocol.js +15 -0
  13. package/dist/wallet/autonomous-wallet-protocol.js.map +1 -0
  14. package/dist/wallet/autonomous-wallet.d.ts +106 -0
  15. package/dist/wallet/autonomous-wallet.d.ts.map +1 -0
  16. package/dist/wallet/autonomous-wallet.js +494 -0
  17. package/dist/wallet/autonomous-wallet.js.map +1 -0
  18. package/dist/wallet/privy-broker-server-entry.d.ts +2 -0
  19. package/dist/wallet/privy-broker-server-entry.d.ts.map +1 -0
  20. package/dist/wallet/privy-broker-server-entry.js +8 -0
  21. package/dist/wallet/privy-broker-server-entry.js.map +1 -0
  22. package/dist/wallet/privy-broker-server.d.ts +29 -0
  23. package/dist/wallet/privy-broker-server.d.ts.map +1 -0
  24. package/dist/wallet/privy-broker-server.js +480 -0
  25. package/dist/wallet/privy-broker-server.js.map +1 -0
  26. package/dist/wallet/privy-session-broker.d.ts +109 -0
  27. package/dist/wallet/privy-session-broker.d.ts.map +1 -0
  28. package/dist/wallet/privy-session-broker.js +372 -0
  29. package/dist/wallet/privy-session-broker.js.map +1 -0
  30. package/dist/wallet/privy-session-provider.d.ts +21 -0
  31. package/dist/wallet/privy-session-provider.d.ts.map +1 -0
  32. package/dist/wallet/privy-session-provider.js +94 -0
  33. package/dist/wallet/privy-session-provider.js.map +1 -0
  34. package/dist/wallet/provider.d.ts +51 -2
  35. package/dist/wallet/provider.d.ts.map +1 -1
  36. package/dist/wallet/provider.js +138 -1
  37. package/dist/wallet/provider.js.map +1 -1
  38. package/package.json +3 -1
  39. package/src/index.ts +73 -0
  40. package/src/wallet/autonomous-wallet-broker.ts +774 -0
  41. package/src/wallet/autonomous-wallet-protocol.ts +71 -0
  42. package/src/wallet/autonomous-wallet.ts +779 -0
  43. package/src/wallet/privy-broker-server-entry.ts +9 -0
  44. package/src/wallet/privy-broker-server.ts +573 -0
  45. package/src/wallet/privy-session-broker.ts +634 -0
  46. package/src/wallet/privy-session-provider.ts +129 -0
  47. package/src/wallet/provider.ts +260 -3
@@ -0,0 +1,372 @@
1
+ import { createHash, randomBytes, timingSafeEqual } from "node:crypto";
2
+ import { streamEscrowV2Abi } from "@absol-labs/shared";
3
+ import { decodeFunctionData, getAddress, isAddress, } from "viem";
4
+ import { z } from "zod";
5
+ import { checkMandate, signedSpendMandateSchema, verifyMandateOwnerSignature, verifySignedMandate, } from "../mandates/mandate.js";
6
+ import { invocationCapabilityDomainName, invocationCapabilityDomainVersion, invocationCapabilitySchema, } from "../capability/invocation-capability.js";
7
+ export const PRIVY_BROKER_CHAIN_ID = 84532;
8
+ export const PRIVY_BROKER_CAIP2 = "eip155:84532";
9
+ export const PRIVY_BROKER_ESCROW = "0x0f09f36Ccc05A7c9882F438721C08De314dFd46C";
10
+ export const PRIVY_BROKER_USDC = "0x036CbD53842c5426634e7929541eC2318f3dCF7e";
11
+ export const PRIVY_POLICY_MAX_TOTAL_USDC = 1000000n;
12
+ export const PRIVY_POLICY_MAX_RATE_USDC = 1000n;
13
+ export const PRIVY_POLICY_MAX_DURATION_SECONDS = 3_600;
14
+ export const PRIVY_MAX_SESSION_SECONDS = 86_400;
15
+ const wireMandateSchema = z.object({
16
+ mandateId: z.string(),
17
+ owner: z.string(),
18
+ chainId: z.number().int(),
19
+ issuedAt: z.number().int(),
20
+ mandate: z.object({
21
+ maxPerStreamUsdc: z.coerce.bigint(),
22
+ maxTotalUsdc: z.coerce.bigint(),
23
+ maxRatePerSecondUsdc: z.coerce.bigint(),
24
+ maxDurationSeconds: z.number().int(),
25
+ allowedOperators: z.array(z.string()).optional(),
26
+ expiresAt: z.number().int(),
27
+ }),
28
+ signature: z.string(),
29
+ });
30
+ const transactionSchema = z.object({
31
+ from: z.string().refine(isAddress),
32
+ to: z.string().refine(isAddress),
33
+ data: z.string().regex(/^0x[0-9a-fA-F]*$/),
34
+ value: z.union([z.string(), z.number(), z.bigint()]).optional(),
35
+ chainId: z.union([z.string(), z.number()]).optional(),
36
+ });
37
+ export class PrivySessionBrokerError extends Error {
38
+ code;
39
+ constructor(code, message, options) {
40
+ super(message, options);
41
+ this.code = code;
42
+ this.name = "PrivySessionBrokerError";
43
+ }
44
+ }
45
+ export class PrivySessionBroker {
46
+ dependencies;
47
+ locks = new Map();
48
+ constructor(dependencies) {
49
+ this.dependencies = dependencies;
50
+ }
51
+ async createSession(input) {
52
+ const now = this.now();
53
+ const auth = await this.dependencies.provider
54
+ .verifyAccessToken(input.accessToken)
55
+ .catch((error) => {
56
+ throw new PrivySessionBrokerError("unauthorized", "Privy access token is invalid", { cause: error });
57
+ });
58
+ const address = requireAddress(input.address);
59
+ const wallets = await this.dependencies.provider.getUserWallets(auth.userId);
60
+ const wallet = wallets.find((candidate) => candidate.id === input.walletId &&
61
+ candidate.address.toLowerCase() === address.toLowerCase() &&
62
+ candidate.chain_type === "ethereum" &&
63
+ candidate.connector_type === "embedded" &&
64
+ candidate.wallet_client_type === "privy");
65
+ if (!wallet?.id) {
66
+ throw new PrivySessionBrokerError("unauthorized", "wallet is not a user-owned Privy embedded Ethereum wallet");
67
+ }
68
+ const signedMandate = parseWireMandate(input.signedMandate);
69
+ if (signedMandate.owner.toLowerCase() !== address.toLowerCase() ||
70
+ signedMandate.chainId !== PRIVY_BROKER_CHAIN_ID) {
71
+ throw new PrivySessionBrokerError("policy-denied", "mandate owner or chain does not match the embedded wallet");
72
+ }
73
+ const verified = await verifySignedMandate(signedMandate, {
74
+ nowSeconds: now,
75
+ });
76
+ if (!verified.allowed) {
77
+ throw new PrivySessionBrokerError("policy-denied", `mandate denied: ${verified.reason}`);
78
+ }
79
+ assertMandateWithinPrivyPolicy(signedMandate);
80
+ const expiresAt = Math.min(signedMandate.mandate.expiresAt, now + PRIVY_MAX_SESSION_SECONDS);
81
+ const token = randomBytes(32).toString("base64url");
82
+ const session = {
83
+ id: randomBytes(16).toString("hex"),
84
+ tokenHash: hashToken(token),
85
+ userId: auth.userId,
86
+ walletId: wallet.id,
87
+ address,
88
+ signedMandate,
89
+ expiresAt,
90
+ createdAt: now,
91
+ spentSoFarUsdc: 0n,
92
+ };
93
+ await this.dependencies.store.put(session);
94
+ return { sessionId: session.id, token, address, expiresAt };
95
+ }
96
+ async revokeSession(accessToken, sessionId) {
97
+ const auth = await this.dependencies.provider
98
+ .verifyAccessToken(accessToken)
99
+ .catch(() => {
100
+ throw new PrivySessionBrokerError("unauthorized", "Privy access token is invalid");
101
+ });
102
+ const session = await this.dependencies.store.get(sessionId);
103
+ if (session === null || session.userId !== auth.userId) {
104
+ throw new PrivySessionBrokerError("unauthorized", "session not found");
105
+ }
106
+ await this.dependencies.store.put({
107
+ ...session,
108
+ revokedAt: this.now(),
109
+ });
110
+ }
111
+ async rpc(input) {
112
+ const session = await this.requireSession(input.token);
113
+ return this.withSessionLock(session.id, async () => {
114
+ const current = await this.requireSession(input.token);
115
+ if (input.method === "eth_sendTransaction") {
116
+ return this.sendTransaction(current, input.params);
117
+ }
118
+ return this.signTypedData(current, input.params);
119
+ });
120
+ }
121
+ async sendTransaction(session, params) {
122
+ const transaction = transactionSchema.parse(params[0]);
123
+ if (transaction.from.toLowerCase() !== session.address.toLowerCase()) {
124
+ throw new PrivySessionBrokerError("policy-denied", "transaction sender does not match session wallet");
125
+ }
126
+ assertChainId(transaction.chainId);
127
+ assertZeroValue(transaction.value);
128
+ const to = getAddress(transaction.to);
129
+ const data = transaction.data;
130
+ if (to.toLowerCase() === PRIVY_BROKER_USDC.toLowerCase()) {
131
+ assertBoundedApproval(data, session.signedMandate);
132
+ }
133
+ else if (to.toLowerCase() === PRIVY_BROKER_ESCROW.toLowerCase()) {
134
+ const decoded = decodeFunctionData({ abi: streamEscrowV2Abi, data });
135
+ if (decoded.functionName === "openStream") {
136
+ const [operator, , deposit, rate, duration] = decoded.args;
137
+ const decision = await checkMandate(session.signedMandate, {
138
+ operator,
139
+ budgetUsdc: deposit,
140
+ ratePerSecondUsdc: rate,
141
+ maxDurationSeconds: Number(duration),
142
+ }, session.spentSoFarUsdc, { nowSeconds: this.now() });
143
+ if (!decision.allowed) {
144
+ throw new PrivySessionBrokerError("policy-denied", `mandate denied: ${decision.reason}`);
145
+ }
146
+ const hash = await this.providerSend(session, transaction);
147
+ await this.dependencies.store.put({
148
+ ...session,
149
+ sponsorshipUsed: true,
150
+ spentSoFarUsdc: session.spentSoFarUsdc + deposit,
151
+ });
152
+ return hash;
153
+ }
154
+ if (decoded.functionName !== "close" &&
155
+ decoded.functionName !== "reclaim" &&
156
+ decoded.functionName !== "reclaimUnverified") {
157
+ throw new PrivySessionBrokerError("policy-denied", "escrow method is not allowed for an agent session");
158
+ }
159
+ const owner = await verifyMandateOwnerSignature(session.signedMandate);
160
+ if (!owner.allowed) {
161
+ throw new PrivySessionBrokerError("policy-denied", "mandate owner signature is invalid");
162
+ }
163
+ const streamId = decoded.args[0];
164
+ const stream = await this.dependencies.streamReader.getStream(streamId);
165
+ if (stream.buyer.toLowerCase() !== session.address.toLowerCase()) {
166
+ throw new PrivySessionBrokerError("policy-denied", "session wallet is not the stream buyer");
167
+ }
168
+ }
169
+ else {
170
+ throw new PrivySessionBrokerError("policy-denied", "transaction target is not allowlisted");
171
+ }
172
+ return this.providerSend(session, transaction);
173
+ }
174
+ async signTypedData(session, params) {
175
+ const raw = params[1];
176
+ const typedData = typeof raw === "string"
177
+ ? JSON.parse(raw)
178
+ : raw;
179
+ if (typedData === null || typeof typedData !== "object") {
180
+ throw new PrivySessionBrokerError("invalid-request", "typed data must be an object");
181
+ }
182
+ const typedDataRecord = typedData;
183
+ if (typeof params[0] !== "string" ||
184
+ params[0].toLowerCase() !== session.address.toLowerCase()) {
185
+ throw new PrivySessionBrokerError("policy-denied", "typed-data signer does not match the session wallet");
186
+ }
187
+ const domain = typedDataRecord.domain;
188
+ if (domain?.name !== invocationCapabilityDomainName ||
189
+ domain.version !== invocationCapabilityDomainVersion ||
190
+ Number(domain.chainId) !== PRIVY_BROKER_CHAIN_ID ||
191
+ typeof domain.verifyingContract !== "string" ||
192
+ domain.verifyingContract.toLowerCase() !==
193
+ PRIVY_BROKER_ESCROW.toLowerCase() ||
194
+ typedDataRecord.primaryType !== "InvocationCapability") {
195
+ throw new PrivySessionBrokerError("policy-denied", "only Metrik invocation capabilities may be signed");
196
+ }
197
+ const rawMessage = typedDataRecord.message;
198
+ const capability = invocationCapabilitySchema.parse({
199
+ ...rawMessage,
200
+ expiry: typeof rawMessage?.expiry === "string"
201
+ ? Number(rawMessage.expiry)
202
+ : rawMessage?.expiry,
203
+ });
204
+ if (capability.buyer.toLowerCase() !== session.address.toLowerCase() ||
205
+ capability.expiry <= this.now() ||
206
+ capability.expiry > Math.min(session.expiresAt, this.now() + 120)) {
207
+ throw new PrivySessionBrokerError("policy-denied", "capability buyer or expiry is outside the session");
208
+ }
209
+ const stream = await this.dependencies.streamReader.getStream(capability.streamId);
210
+ if (stream.status !== "active" ||
211
+ stream.buyer.toLowerCase() !== session.address.toLowerCase() ||
212
+ stream.serviceRef.toLowerCase() !== capability.serviceRef.toLowerCase()) {
213
+ throw new PrivySessionBrokerError("policy-denied", "capability does not match an active buyer stream");
214
+ }
215
+ try {
216
+ return await this.dependencies.provider.signTypedData({
217
+ walletId: session.walletId,
218
+ typedData: typedDataRecord,
219
+ authorizationPrivateKey: this.dependencies.authorizationPrivateKey,
220
+ });
221
+ }
222
+ catch (error) {
223
+ throw new PrivySessionBrokerError("provider-error", "Privy rejected the typed-data signature request", { cause: error });
224
+ }
225
+ }
226
+ async providerSend(session, transaction) {
227
+ const { chainId: _chainId, ...privyTransaction } = transaction;
228
+ const sponsor = session.sponsorshipUsed !== true;
229
+ let hash;
230
+ try {
231
+ hash = await this.dependencies.provider.sendTransaction({
232
+ walletId: session.walletId,
233
+ transaction: privyTransaction,
234
+ authorizationPrivateKey: this.dependencies.authorizationPrivateKey,
235
+ sponsor,
236
+ });
237
+ }
238
+ catch (error) {
239
+ throw new PrivySessionBrokerError("provider-error", "Privy rejected the transaction request", { cause: error });
240
+ }
241
+ if (sponsor) {
242
+ await this.dependencies.store.put({
243
+ ...session,
244
+ sponsorshipUsed: true,
245
+ });
246
+ }
247
+ return hash;
248
+ }
249
+ async requireSession(token) {
250
+ if (token.length < 32) {
251
+ throw new PrivySessionBrokerError("unauthorized", "invalid session token");
252
+ }
253
+ const session = await this.dependencies.store.findByTokenHash(hashToken(token));
254
+ if (session === null ||
255
+ !safeTokenHashEqual(session.tokenHash, hashToken(token))) {
256
+ throw new PrivySessionBrokerError("unauthorized", "invalid session token");
257
+ }
258
+ if (session.revokedAt !== undefined) {
259
+ throw new PrivySessionBrokerError("revoked", "session is revoked");
260
+ }
261
+ if (this.now() >= session.expiresAt) {
262
+ throw new PrivySessionBrokerError("expired", "session is expired");
263
+ }
264
+ return session;
265
+ }
266
+ async withSessionLock(id, operation) {
267
+ const previous = this.locks.get(id) ?? Promise.resolve();
268
+ let release;
269
+ const next = new Promise((resolve) => {
270
+ release = resolve;
271
+ });
272
+ const queued = previous.then(() => next);
273
+ this.locks.set(id, queued);
274
+ await previous;
275
+ try {
276
+ return await operation();
277
+ }
278
+ finally {
279
+ release();
280
+ if (this.locks.get(id) === queued)
281
+ this.locks.delete(id);
282
+ }
283
+ }
284
+ now() {
285
+ return this.dependencies.nowSeconds?.() ?? Math.floor(Date.now() / 1_000);
286
+ }
287
+ }
288
+ export class InMemoryPrivyBrokerSessionStore {
289
+ sessions = new Map();
290
+ async findByTokenHash(tokenHash) {
291
+ return ([...this.sessions.values()].find((session) => safeTokenHashEqual(session.tokenHash, tokenHash)) ?? null);
292
+ }
293
+ async get(id) {
294
+ return this.sessions.get(id) ?? null;
295
+ }
296
+ async put(session) {
297
+ this.sessions.set(session.id, session);
298
+ }
299
+ }
300
+ function parseWireMandate(value) {
301
+ return signedSpendMandateSchema.parse(wireMandateSchema.parse(value));
302
+ }
303
+ function requireAddress(value) {
304
+ if (!isAddress(value)) {
305
+ throw new PrivySessionBrokerError("invalid-request", "invalid wallet address");
306
+ }
307
+ return getAddress(value);
308
+ }
309
+ function assertMandateWithinPrivyPolicy(signed) {
310
+ const mandate = signed.mandate;
311
+ if (mandate.maxPerStreamUsdc > PRIVY_POLICY_MAX_TOTAL_USDC ||
312
+ mandate.maxTotalUsdc > PRIVY_POLICY_MAX_TOTAL_USDC ||
313
+ mandate.maxRatePerSecondUsdc > PRIVY_POLICY_MAX_RATE_USDC ||
314
+ mandate.maxDurationSeconds > PRIVY_POLICY_MAX_DURATION_SECONDS) {
315
+ throw new PrivySessionBrokerError("policy-denied", "mandate exceeds the installed Privy signer policy");
316
+ }
317
+ }
318
+ function assertBoundedApproval(data, signed) {
319
+ const decoded = decodeFunctionData({
320
+ abi: [
321
+ {
322
+ type: "function",
323
+ name: "approve",
324
+ stateMutability: "nonpayable",
325
+ inputs: [
326
+ { name: "spender", type: "address" },
327
+ { name: "amount", type: "uint256" },
328
+ ],
329
+ outputs: [{ name: "", type: "bool" }],
330
+ },
331
+ ],
332
+ data,
333
+ });
334
+ const [spender, amount] = decoded.args;
335
+ if (spender.toLowerCase() !== PRIVY_BROKER_ESCROW.toLowerCase() ||
336
+ amount > signed.mandate.maxPerStreamUsdc) {
337
+ throw new PrivySessionBrokerError("policy-denied", "USDC approval exceeds the mandate or targets another spender");
338
+ }
339
+ }
340
+ function assertChainId(value) {
341
+ if (value === undefined)
342
+ return;
343
+ const parsed = typeof value === "number"
344
+ ? value
345
+ : value.startsWith("0x")
346
+ ? Number.parseInt(value.slice(2), 16)
347
+ : Number(value);
348
+ if (parsed !== PRIVY_BROKER_CHAIN_ID) {
349
+ throw new PrivySessionBrokerError("policy-denied", "transaction is not for Base Sepolia");
350
+ }
351
+ }
352
+ function assertZeroValue(value) {
353
+ if (value === undefined)
354
+ return;
355
+ const parsed = typeof value === "bigint"
356
+ ? value
357
+ : typeof value === "number"
358
+ ? BigInt(value)
359
+ : BigInt(value);
360
+ if (parsed !== 0n) {
361
+ throw new PrivySessionBrokerError("policy-denied", "native-token transfers are not allowed");
362
+ }
363
+ }
364
+ function hashToken(token) {
365
+ return createHash("sha256").update(token).digest("hex");
366
+ }
367
+ function safeTokenHashEqual(left, right) {
368
+ const a = Buffer.from(left, "hex");
369
+ const b = Buffer.from(right, "hex");
370
+ return a.length === b.length && timingSafeEqual(a, b);
371
+ }
372
+ //# sourceMappingURL=privy-session-broker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privy-session-broker.js","sourceRoot":"","sources":["../../src/wallet/privy-session-broker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type Address } from "viem";
2
+ import type { PrivyEip1193Provider } from "./provider.js";
3
+ export interface PrivySessionProviderConfig {
4
+ readonly brokerUrl: string;
5
+ readonly sessionToken: string;
6
+ readonly address: Address;
7
+ readonly rpcUrl?: string;
8
+ readonly fetchImpl?: typeof fetch;
9
+ }
10
+ export declare class PrivySessionProviderError extends Error {
11
+ constructor(message: string, options?: {
12
+ readonly cause?: unknown;
13
+ });
14
+ }
15
+ /**
16
+ * EIP-1193 provider for a policy-bound Metrik/Privy headless session.
17
+ * Signing and writes go only to the broker; public read RPCs go directly to
18
+ * Base Sepolia and never receive the session token.
19
+ */
20
+ export declare function createPrivySessionProvider(config: PrivySessionProviderConfig): PrivyEip1193Provider;
21
+ //# sourceMappingURL=privy-session-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privy-session-provider.d.ts","sourceRoot":"","sources":["../../src/wallet/privy-session-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,OAAO,EAAY,MAAM,MAAM,CAAC;AAG1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAe1D,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CACnC;AAED,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAIpE;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,0BAA0B,GACjC,oBAAoB,CA0EtB"}
@@ -0,0 +1,94 @@
1
+ import { getAddress } from "viem";
2
+ import { z } from "zod";
3
+ const jsonRpcResponseSchema = z.object({
4
+ jsonrpc: z.literal("2.0"),
5
+ id: z.union([z.string(), z.number(), z.null()]),
6
+ result: z.unknown().optional(),
7
+ error: z
8
+ .object({
9
+ code: z.number(),
10
+ message: z.string(),
11
+ data: z.unknown().optional(),
12
+ })
13
+ .optional(),
14
+ });
15
+ export class PrivySessionProviderError extends Error {
16
+ constructor(message, options) {
17
+ super(message, options);
18
+ this.name = "PrivySessionProviderError";
19
+ }
20
+ }
21
+ /**
22
+ * EIP-1193 provider for a policy-bound Metrik/Privy headless session.
23
+ * Signing and writes go only to the broker; public read RPCs go directly to
24
+ * Base Sepolia and never receive the session token.
25
+ */
26
+ export function createPrivySessionProvider(config) {
27
+ const fetchImpl = config.fetchImpl ?? fetch;
28
+ const address = getAddress(config.address);
29
+ const brokerUrl = new URL("/v1/rpc", requireHttpsBase(config.brokerUrl));
30
+ const rpcUrl = config.rpcUrl ?? "https://base-sepolia-rpc.publicnode.com";
31
+ let rpcId = 0;
32
+ return {
33
+ async request({ method, params = [] }) {
34
+ if (method === "eth_chainId")
35
+ return "0x14a34";
36
+ if (method === "eth_accounts" || method === "eth_requestAccounts") {
37
+ return [address];
38
+ }
39
+ if (method === "eth_sendTransaction" ||
40
+ method === "eth_signTypedData_v4") {
41
+ const response = await fetchImpl(brokerUrl, {
42
+ method: "POST",
43
+ headers: {
44
+ authorization: `Bearer ${config.sessionToken}`,
45
+ "content-type": "application/json",
46
+ },
47
+ body: JSON.stringify({ method, params }, bigintJson),
48
+ }).catch((error) => {
49
+ throw new PrivySessionProviderError("session broker is unreachable", {
50
+ cause: error,
51
+ });
52
+ });
53
+ const body = (await response.json().catch(() => null));
54
+ if (!response.ok || body?.result === undefined) {
55
+ throw new PrivySessionProviderError(body?.error ??
56
+ `session broker rejected ${method} (${response.status})`);
57
+ }
58
+ return body.result;
59
+ }
60
+ if (method === "personal_sign" ||
61
+ method === "eth_sign" ||
62
+ method === "eth_signTransaction" ||
63
+ method === "wallet_sendCalls") {
64
+ throw new PrivySessionProviderError(`${method} is outside the Metrik agent-session policy`);
65
+ }
66
+ const id = ++rpcId;
67
+ const response = await fetchImpl(rpcUrl, {
68
+ method: "POST",
69
+ headers: { "content-type": "application/json" },
70
+ body: JSON.stringify({ jsonrpc: "2.0", id, method, params }, bigintJson),
71
+ }).catch((error) => {
72
+ throw new PrivySessionProviderError("Base Sepolia RPC is unreachable", {
73
+ cause: error,
74
+ });
75
+ });
76
+ const body = jsonRpcResponseSchema.parse(await response.json());
77
+ if (!response.ok || body.error !== undefined) {
78
+ throw new PrivySessionProviderError(body.error?.message ?? `Base Sepolia RPC rejected ${method}`);
79
+ }
80
+ return body.result;
81
+ },
82
+ };
83
+ }
84
+ function requireHttpsBase(value) {
85
+ const url = new URL(value);
86
+ if (url.protocol !== "https:" && url.hostname !== "localhost") {
87
+ throw new PrivySessionProviderError("session broker URL must use HTTPS (except localhost development)");
88
+ }
89
+ return url;
90
+ }
91
+ function bigintJson(_key, value) {
92
+ return typeof value === "bigint" ? `0x${value.toString(16)}` : value;
93
+ }
94
+ //# sourceMappingURL=privy-session-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privy-session-provider.js","sourceRoot":"","sources":["../../src/wallet/privy-session-provider.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,40 @@
1
1
  import { type StreamProofClientConfig } from "@absol-labs/sdk";
2
2
  import { type EvmServerAccount, type EvmSmartAccount } from "@coinbase/cdp-sdk";
3
- import type { Account } from "viem";
3
+ import { type Account, type Address } from "viem";
4
4
  import { VerifiedStreamAgentClient, type AgentSdkClientFactory } from "../sdk/client.js";
5
5
  export declare class AgentWalletConfigError extends Error {
6
6
  constructor(message: string);
7
7
  }
8
+ /** A deliberately small EIP-1193 seam implemented by an authenticated Privy session. */
9
+ export interface PrivyEip1193Provider {
10
+ request(args: {
11
+ readonly method: string;
12
+ readonly params?: readonly unknown[];
13
+ }): Promise<unknown>;
14
+ }
15
+ /**
16
+ * Configuration for a user-owned Privy embedded EOA.
17
+ *
18
+ * The browser/site owns authentication and obtains the provider from Privy's
19
+ * authenticated wallet. This package does not import Privy's UI SDK, accept a
20
+ * secret, persist a wallet, or create a wallet from an app id alone.
21
+ */
22
+ export interface PrivyEmbeddedWalletConfig {
23
+ /** Public Privy app id; never an app secret. */
24
+ readonly appId: string;
25
+ /** Address returned by the authenticated user wallet. */
26
+ readonly address: Address;
27
+ /** Authenticated Privy wallet provider (EIP-1193). */
28
+ readonly provider: PrivyEip1193Provider;
29
+ /** Metrik currently supports Base Sepolia only. */
30
+ readonly chainId?: number;
31
+ }
32
+ export declare class PrivyEmbeddedWalletError extends Error {
33
+ readonly code: "invalid-config" | "provider-error" | "chain-mismatch" | "account-mismatch" | "invalid-signature";
34
+ constructor(code: PrivyEmbeddedWalletError["code"], message: string, options?: {
35
+ readonly cause?: unknown;
36
+ });
37
+ }
8
38
  export interface CdpWalletConfig {
9
39
  readonly apiKeyId?: string;
10
40
  readonly apiKeySecret?: string;
@@ -17,12 +47,18 @@ export type AgentWalletInput = {
17
47
  readonly injectedAccount: Account;
18
48
  } | {
19
49
  readonly cdp: CdpWalletConfig;
50
+ } | {
51
+ readonly privy: PrivyEmbeddedWalletConfig;
20
52
  };
21
53
  export interface ResolvedAgentWallet {
22
- readonly source: "injected" | "cdp";
54
+ readonly source: "injected" | "cdp" | "privy";
23
55
  readonly account: Account;
24
56
  readonly cdpOwner?: EvmServerAccount;
25
57
  readonly smartAccount?: EvmSmartAccount;
58
+ readonly privy?: {
59
+ readonly appId: string;
60
+ readonly chainId: number;
61
+ };
26
62
  }
27
63
  export interface CdpClientLike {
28
64
  readonly evm: {
@@ -46,6 +82,19 @@ export interface WalletBackedAgentClient {
46
82
  readonly agentClient: VerifiedStreamAgentClient;
47
83
  }
48
84
  export declare function resolveAgentWallet(input: AgentWalletInput, options?: ResolveAgentWalletOptions): Promise<ResolvedAgentWallet>;
85
+ /**
86
+ * Adapts an authenticated Privy EIP-1193 wallet to a viem JSON-RPC Account.
87
+ * It deliberately remains a JSON-RPC account so viem sends transactions via
88
+ * Privy's documented `eth_sendTransaction` boundary instead of assuming that
89
+ * the embedded provider exposes raw transaction signing. Every signing
90
+ * operation rechecks chain and account identity so a
91
+ * browser account/network switch cannot silently redirect a spend.
92
+ *
93
+ * This is an EOA adapter only. It does not implement EIP-1271, smart accounts,
94
+ * session-key issuance, or gas sponsorship; those require provider/site or
95
+ * backend integration and must be wired explicitly by the caller.
96
+ */
97
+ export declare function createPrivyEmbeddedAccount(config: PrivyEmbeddedWalletConfig): Promise<Account>;
49
98
  export declare function createWalletBackedAgentClient(sdkConfig: StreamProofClientConfig, walletInput: AgentWalletInput, options?: CreateWalletBackedAgentClientOptions): Promise<WalletBackedAgentClient>;
50
99
  export declare function parseAgentWalletEnv(env?: NodeJS.ProcessEnv): AgentWalletInput;
51
100
  //# sourceMappingURL=provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/wallet/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAIpC,OAAO,EACL,yBAAyB,EACzB,KAAK,qBAAqB,EAC3B,MAAM,kBAAkB,CAAC;AAoB1B,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CACvC;AAED,MAAM,MAAM,gBAAgB,GACxB;IACE,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;CACnC,GACD;IACE,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC;CAC/B,CAAC;AAEN,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,KAAK,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,YAAY,CAAC,EAAE,eAAe,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE;QACZ,kBAAkB,CAAC,OAAO,EAAE;YAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;SACvB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC9B,uBAAuB,CAAC,OAAO,EAAE;YAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;YACtB,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;SAClC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;KAC9B,CAAC;CACH;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,aAAa,CAAC;CACvE;AAED,MAAM,WAAW,oCAAqC,SAAQ,yBAAyB;IACrF,QAAQ,CAAC,eAAe,CAAC,EAAE,qBAAqB,CAAC;CAClD;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,yBAAyB,CAAC;CACjD;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,gBAAgB,EACvB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,mBAAmB,CAAC,CA2B9B;AAED,wBAAsB,6BAA6B,CACjD,SAAS,EAAE,uBAAuB,EAClC,WAAW,EAAE,gBAAgB,EAC7B,OAAO,GAAE,oCAAyC,GACjD,OAAO,CAAC,uBAAuB,CAAC,CAelC;AAED,wBAAgB,mBAAmB,CACjC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,gBAAgB,CAwClB"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/wallet/provider.ts"],"names":[],"mappings":"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"}