@rubicon-caliga/agent-sdk 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -20
- package/dist/agent-client.d.ts +20 -5
- package/dist/agent-client.d.ts.map +1 -1
- package/dist/agent-client.js +82 -4
- package/dist/agent-client.js.map +1 -1
- package/dist/agent-client.test.js +81 -0
- package/dist/agent-client.test.js.map +1 -1
- package/dist/circle-agent-wallet.d.ts +6 -6
- package/dist/circle-agent-wallet.d.ts.map +1 -1
- package/dist/circle-agent-wallet.js +8 -8
- package/dist/circle-agent-wallet.js.map +1 -1
- package/dist/circle-cli-gateway-payment.d.ts +8 -4
- package/dist/circle-cli-gateway-payment.d.ts.map +1 -1
- package/dist/circle-cli-gateway-payment.js +43 -5
- package/dist/circle-cli-gateway-payment.js.map +1 -1
- package/dist/payment-engine.d.ts +17 -5
- package/dist/payment-engine.d.ts.map +1 -1
- package/dist/payment-engine.js +30 -2
- package/dist/payment-engine.js.map +1 -1
- package/package.json +2 -2
- package/src/agent-client.test.ts +87 -0
- package/src/agent-client.ts +93 -4
- package/src/circle-agent-wallet.ts +10 -12
- package/src/circle-cli-gateway-payment.ts +50 -5
- package/src/payment-engine.ts +39 -5
package/src/payment-engine.ts
CHANGED
|
@@ -1,20 +1,54 @@
|
|
|
1
|
-
import type { StartSessionResponse, StreamPaymentRequest } from "@rubicon-caliga/core";
|
|
1
|
+
import type { StartSessionResponse, StreamAuthorizationRequest, StreamPaymentRequest } from "@rubicon-caliga/core";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Produces
|
|
5
|
-
*
|
|
4
|
+
* Produces Circle / Arc authorization payloads for Rubicon reads. Preferred
|
|
5
|
+
* engines authorize a whole session once; fallback engines authorize chunks.
|
|
6
|
+
* Legacy one-word payloads remain supported for older gateways and tests.
|
|
6
7
|
*/
|
|
7
8
|
export interface AgentPaymentEngine {
|
|
9
|
+
createSessionAuthorization?(session: StartSessionResponse): Promise<StreamAuthorizationRequest>;
|
|
10
|
+
createChunkPayment?(session: StartSessionResponse, input: { nextSequence: number; maxWords: number }): Promise<StreamPaymentRequest>;
|
|
11
|
+
/** @deprecated Compatibility path for one-word x402 gateways. */
|
|
8
12
|
createWordPayment(session: StartSessionResponse): Promise<StreamPaymentRequest>;
|
|
9
13
|
}
|
|
10
14
|
|
|
11
15
|
/**
|
|
12
|
-
* Development engine. Declares the
|
|
13
|
-
* for use against a dev-mode gateway. NOT for production.
|
|
16
|
+
* Development engine. Declares the authorized amount without settling real
|
|
17
|
+
* funds, for use against a dev-mode gateway. NOT for production.
|
|
14
18
|
*/
|
|
15
19
|
export class StaticPaymentEngine implements AgentPaymentEngine {
|
|
16
20
|
constructor(private readonly network = "eip155:5042002") {}
|
|
17
21
|
|
|
22
|
+
async createSessionAuthorization(session: StartSessionResponse): Promise<StreamAuthorizationRequest> {
|
|
23
|
+
return {
|
|
24
|
+
authorizationPayload: {
|
|
25
|
+
scheme: "development-static",
|
|
26
|
+
network: this.network,
|
|
27
|
+
sessionId: session.sessionId,
|
|
28
|
+
amountAtomic: session.authorizationRequired?.maxAuthorizedAtomic ?? session.maxArticlePriceAtomic,
|
|
29
|
+
meteringUnit: "word",
|
|
30
|
+
authorizationMode: "session",
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async createChunkPayment(session: StartSessionResponse, input: { nextSequence: number; maxWords: number }): Promise<StreamPaymentRequest> {
|
|
36
|
+
const amountAtomic = BigInt(session.wordPaymentAtomic) * BigInt(input.maxWords);
|
|
37
|
+
return {
|
|
38
|
+
paymentPayload: {
|
|
39
|
+
scheme: "development-static",
|
|
40
|
+
network: this.network,
|
|
41
|
+
sessionId: session.sessionId,
|
|
42
|
+
amountAtomic: `${amountAtomic}`,
|
|
43
|
+
meteringUnit: "word",
|
|
44
|
+
authorizationMode: "chunk",
|
|
45
|
+
maxWords: input.maxWords,
|
|
46
|
+
nextSequence: input.nextSequence,
|
|
47
|
+
},
|
|
48
|
+
maxWords: input.maxWords,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
18
52
|
async createWordPayment(session: StartSessionResponse): Promise<StreamPaymentRequest> {
|
|
19
53
|
return {
|
|
20
54
|
paymentPayload: {
|