@absol-labs/agent 0.12.0-rc.2 → 0.12.0-rc.4

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 (86) hide show
  1. package/dist/cli/commands/claim.d.ts +15 -0
  2. package/dist/cli/commands/claim.d.ts.map +1 -1
  3. package/dist/cli/commands/claim.js +65 -23
  4. package/dist/cli/commands/claim.js.map +1 -1
  5. package/dist/cli/commands/pay.d.ts +10 -0
  6. package/dist/cli/commands/pay.d.ts.map +1 -1
  7. package/dist/cli/commands/pay.js +246 -50
  8. package/dist/cli/commands/pay.js.map +1 -1
  9. package/dist/cli/commands/refund.d.ts +23 -12
  10. package/dist/cli/commands/refund.d.ts.map +1 -1
  11. package/dist/cli/commands/refund.js +104 -131
  12. package/dist/cli/commands/refund.js.map +1 -1
  13. package/dist/cli/deps.d.ts +6 -0
  14. package/dist/cli/deps.d.ts.map +1 -1
  15. package/dist/cli/deps.js +3 -0
  16. package/dist/cli/deps.js.map +1 -1
  17. package/dist/cli/errors.d.ts +8 -1
  18. package/dist/cli/errors.d.ts.map +1 -1
  19. package/dist/cli/errors.js.map +1 -1
  20. package/dist/cli/status.d.ts +6 -0
  21. package/dist/cli/status.d.ts.map +1 -1
  22. package/dist/cli/status.js +25 -6
  23. package/dist/cli/status.js.map +1 -1
  24. package/dist/gateway/x402-opener-mode.d.ts.map +1 -1
  25. package/dist/gateway/x402-opener-mode.js +104 -7
  26. package/dist/gateway/x402-opener-mode.js.map +1 -1
  27. package/dist/mcp/server.d.ts +10 -0
  28. package/dist/mcp/server.d.ts.map +1 -1
  29. package/dist/mcp/server.js +21 -1
  30. package/dist/mcp/server.js.map +1 -1
  31. package/dist/mcp/x402-tools.d.ts +7 -1
  32. package/dist/mcp/x402-tools.d.ts.map +1 -1
  33. package/dist/mcp/x402-tools.js +159 -6
  34. package/dist/mcp/x402-tools.js.map +1 -1
  35. package/dist/x402-buyer/index.d.ts +1 -0
  36. package/dist/x402-buyer/index.d.ts.map +1 -1
  37. package/dist/x402-buyer/index.js +1 -0
  38. package/dist/x402-buyer/index.js.map +1 -1
  39. package/dist/x402-buyer/pay.d.ts +38 -2
  40. package/dist/x402-buyer/pay.d.ts.map +1 -1
  41. package/dist/x402-buyer/pay.js +52 -2
  42. package/dist/x402-buyer/pay.js.map +1 -1
  43. package/dist/x402-buyer/refund-actions.d.ts +168 -0
  44. package/dist/x402-buyer/refund-actions.d.ts.map +1 -0
  45. package/dist/x402-buyer/refund-actions.js +351 -0
  46. package/dist/x402-buyer/refund-actions.js.map +1 -0
  47. package/dist/x402-opener/block-floors.d.ts +35 -0
  48. package/dist/x402-opener/block-floors.d.ts.map +1 -0
  49. package/dist/x402-opener/block-floors.js +72 -0
  50. package/dist/x402-opener/block-floors.js.map +1 -0
  51. package/dist/x402-opener/facilitator-server.d.ts.map +1 -1
  52. package/dist/x402-opener/facilitator-server.js +7 -0
  53. package/dist/x402-opener/facilitator-server.js.map +1 -1
  54. package/dist/x402-opener/index.d.ts +1 -0
  55. package/dist/x402-opener/index.d.ts.map +1 -1
  56. package/dist/x402-opener/index.js +1 -0
  57. package/dist/x402-opener/index.js.map +1 -1
  58. package/dist/x402-opener/refund-relay.d.ts +62 -1
  59. package/dist/x402-opener/refund-relay.d.ts.map +1 -1
  60. package/dist/x402-opener/refund-relay.js +387 -208
  61. package/dist/x402-opener/refund-relay.js.map +1 -1
  62. package/dist/x402-opener/scheme.d.ts +8 -0
  63. package/dist/x402-opener/scheme.d.ts.map +1 -1
  64. package/dist/x402-opener/scheme.js +14 -0
  65. package/dist/x402-opener/scheme.js.map +1 -1
  66. package/docs/cli.md +62 -9
  67. package/docs/mcp-reference.md +23 -0
  68. package/docs/x402.md +126 -29
  69. package/package.json +2 -2
  70. package/src/cli/commands/claim.ts +72 -30
  71. package/src/cli/commands/pay.ts +299 -51
  72. package/src/cli/commands/refund.ts +133 -143
  73. package/src/cli/deps.ts +9 -0
  74. package/src/cli/errors.ts +8 -1
  75. package/src/cli/status.ts +28 -7
  76. package/src/gateway/x402-opener-mode.ts +131 -6
  77. package/src/mcp/server.ts +30 -1
  78. package/src/mcp/x402-tools.ts +222 -7
  79. package/src/x402-buyer/index.ts +1 -0
  80. package/src/x402-buyer/pay.ts +99 -2
  81. package/src/x402-buyer/refund-actions.ts +486 -0
  82. package/src/x402-opener/block-floors.ts +78 -0
  83. package/src/x402-opener/facilitator-server.ts +7 -0
  84. package/src/x402-opener/index.ts +1 -0
  85. package/src/x402-opener/refund-relay.ts +486 -217
  86. package/src/x402-opener/scheme.ts +38 -0
@@ -40,6 +40,7 @@ import {
40
40
 
41
41
  import { x402StreamOpenerAbi, x402StreamOpenerFactoryAbi } from "./abi.js";
42
42
  import type { OperatorSignedListingResolver } from "./listing-resolver.js";
43
+ import type { StreamBlockFloors } from "./block-floors.js";
43
44
  import { RelayerQueue } from "./relayer-queue.js";
44
45
  import {
45
46
  chainIdFromNetwork,
@@ -233,6 +234,12 @@ export interface MetrikOpenerExactSchemeConfig {
233
234
  * when the relay is actually mounted. Default false.
234
235
  */
235
236
  readonly advertiseRefundRelay?: boolean;
237
+ /**
238
+ * Records the block of every successful settlement per stream id, shared
239
+ * with the refund relay, so the relay never answers about a just-opened
240
+ * stream from a lagging RPC node (it would look unknown). Optional.
241
+ */
242
+ readonly streamFloors?: StreamBlockFloors;
236
243
  }
237
244
 
238
245
  /**
@@ -855,6 +862,36 @@ export class MetrikOpenerExactScheme implements SchemeNetworkFacilitator {
855
862
  plan: OpenerSettlementPlan,
856
863
  opener: Address,
857
864
  network: Network,
865
+ ): Promise<SettleResponse> {
866
+ const mined: { block?: bigint } = {};
867
+ const response = await this.awaitSettlementOutcome(
868
+ hash,
869
+ auth,
870
+ plan,
871
+ opener,
872
+ network,
873
+ mined,
874
+ );
875
+ if (response.success && mined.block !== undefined) {
876
+ const streamId = (
877
+ response.extra?.[OPENER_EXTRA_KEY] as { streamId?: unknown } | undefined
878
+ )?.streamId;
879
+ if (typeof streamId === "string") {
880
+ // The refund relay must answer about this stream from this block or
881
+ // later: a lagging RPC node would otherwise report it as unknown.
882
+ this.config.streamFloors?.note(streamId, mined.block);
883
+ }
884
+ }
885
+ return response;
886
+ }
887
+
888
+ private async awaitSettlementOutcome(
889
+ hash: Hex,
890
+ auth: ExactEIP3009Payload & { signature: Hex },
891
+ plan: OpenerSettlementPlan,
892
+ opener: Address,
893
+ network: Network,
894
+ mined: { block?: bigint },
858
895
  ): Promise<SettleResponse> {
859
896
  const payer = getAddress(auth.authorization.from);
860
897
  let receipt;
@@ -863,6 +900,7 @@ export class MetrikOpenerExactScheme implements SchemeNetworkFacilitator {
863
900
  hash,
864
901
  timeout: this.receiptTimeoutMs,
865
902
  });
903
+ mined.block = receipt.blockNumber;
866
904
  } catch (error) {
867
905
  // Broadcast but unconfirmed: keep the pending entry so a retry
868
906
  // reconciles against this hash. Never success without a receipt.