open-agentpay 0.1.0 → 0.2.5

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 (133) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +125 -4
  3. package/dist/client/client.d.ts +37 -0
  4. package/dist/client/client.d.ts.map +1 -0
  5. package/dist/client/client.js +90 -0
  6. package/dist/client/client.js.map +1 -0
  7. package/dist/client/errors.d.ts +23 -0
  8. package/dist/client/errors.d.ts.map +1 -0
  9. package/dist/client/errors.js +38 -0
  10. package/dist/client/errors.js.map +1 -0
  11. package/dist/client/index.d.ts +6 -0
  12. package/dist/client/index.d.ts.map +1 -0
  13. package/dist/client/index.js +6 -0
  14. package/dist/client/index.js.map +1 -0
  15. package/dist/client/interfaces.d.ts +34 -0
  16. package/dist/client/interfaces.d.ts.map +1 -0
  17. package/dist/client/interfaces.js +5 -0
  18. package/dist/client/interfaces.js.map +1 -0
  19. package/dist/client/signer.d.ts +136 -0
  20. package/dist/client/signer.d.ts.map +1 -0
  21. package/dist/client/signer.js +300 -0
  22. package/dist/client/signer.js.map +1 -0
  23. package/dist/client/transport.d.ts +44 -0
  24. package/dist/client/transport.d.ts.map +1 -0
  25. package/dist/client/transport.js +389 -0
  26. package/dist/client/transport.js.map +1 -0
  27. package/dist/core/codecs.d.ts +35 -0
  28. package/dist/core/codecs.d.ts.map +1 -0
  29. package/dist/core/codecs.js +177 -0
  30. package/dist/core/codecs.js.map +1 -0
  31. package/dist/core/errors.d.ts +33 -0
  32. package/dist/core/errors.d.ts.map +1 -0
  33. package/dist/core/errors.js +48 -0
  34. package/dist/core/errors.js.map +1 -0
  35. package/dist/core/index.d.ts +6 -0
  36. package/dist/core/index.d.ts.map +1 -0
  37. package/dist/core/index.js +6 -0
  38. package/dist/core/index.js.map +1 -0
  39. package/dist/core/interop.d.ts +10 -0
  40. package/dist/core/interop.d.ts.map +1 -0
  41. package/dist/core/interop.js +28 -0
  42. package/dist/core/interop.js.map +1 -0
  43. package/dist/core/models.d.ts +155 -0
  44. package/dist/core/models.d.ts.map +1 -0
  45. package/dist/core/models.js +463 -0
  46. package/dist/core/models.js.map +1 -0
  47. package/dist/core/state.d.ts +82 -0
  48. package/dist/core/state.d.ts.map +1 -0
  49. package/dist/core/state.js +87 -0
  50. package/dist/core/state.js.map +1 -0
  51. package/dist/evm/constants.d.ts +52 -0
  52. package/dist/evm/constants.d.ts.map +1 -0
  53. package/dist/evm/constants.js +72 -0
  54. package/dist/evm/constants.js.map +1 -0
  55. package/dist/evm/eip3009.d.ts +43 -0
  56. package/dist/evm/eip3009.d.ts.map +1 -0
  57. package/dist/evm/eip3009.js +145 -0
  58. package/dist/evm/eip3009.js.map +1 -0
  59. package/dist/evm/index.d.ts +3 -0
  60. package/dist/evm/index.d.ts.map +1 -0
  61. package/dist/evm/index.js +3 -0
  62. package/dist/evm/index.js.map +1 -0
  63. package/dist/index.d.ts +12 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +12 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/integrations/index.d.ts +4 -0
  68. package/dist/integrations/index.d.ts.map +1 -0
  69. package/dist/integrations/index.js +4 -0
  70. package/dist/integrations/index.js.map +1 -0
  71. package/dist/integrations/langchain.d.ts +40 -0
  72. package/dist/integrations/langchain.d.ts.map +1 -0
  73. package/dist/integrations/langchain.js +68 -0
  74. package/dist/integrations/langchain.js.map +1 -0
  75. package/dist/integrations/mcp.d.ts +29 -0
  76. package/dist/integrations/mcp.d.ts.map +1 -0
  77. package/dist/integrations/mcp.js +73 -0
  78. package/dist/integrations/mcp.js.map +1 -0
  79. package/dist/integrations/vercel-ai.d.ts +31 -0
  80. package/dist/integrations/vercel-ai.d.ts.map +1 -0
  81. package/dist/integrations/vercel-ai.js +50 -0
  82. package/dist/integrations/vercel-ai.js.map +1 -0
  83. package/dist/policy/db.d.ts +14 -0
  84. package/dist/policy/db.d.ts.map +1 -0
  85. package/dist/policy/db.js +86 -0
  86. package/dist/policy/db.js.map +1 -0
  87. package/dist/policy/errors.d.ts +31 -0
  88. package/dist/policy/errors.d.ts.map +1 -0
  89. package/dist/policy/errors.js +48 -0
  90. package/dist/policy/errors.js.map +1 -0
  91. package/dist/policy/evaluator.d.ts +22 -0
  92. package/dist/policy/evaluator.d.ts.map +1 -0
  93. package/dist/policy/evaluator.js +152 -0
  94. package/dist/policy/evaluator.js.map +1 -0
  95. package/dist/policy/index.d.ts +7 -0
  96. package/dist/policy/index.d.ts.map +1 -0
  97. package/dist/policy/index.js +7 -0
  98. package/dist/policy/index.js.map +1 -0
  99. package/dist/policy/interfaces.d.ts +59 -0
  100. package/dist/policy/interfaces.d.ts.map +1 -0
  101. package/dist/policy/interfaces.js +7 -0
  102. package/dist/policy/interfaces.js.map +1 -0
  103. package/dist/policy/models.d.ts +161 -0
  104. package/dist/policy/models.d.ts.map +1 -0
  105. package/dist/policy/models.js +449 -0
  106. package/dist/policy/models.js.map +1 -0
  107. package/dist/policy/sqlite-engine.d.ts +28 -0
  108. package/dist/policy/sqlite-engine.d.ts.map +1 -0
  109. package/dist/policy/sqlite-engine.js +501 -0
  110. package/dist/policy/sqlite-engine.js.map +1 -0
  111. package/dist/state/buyer-coordinator.d.ts +33 -0
  112. package/dist/state/buyer-coordinator.d.ts.map +1 -0
  113. package/dist/state/buyer-coordinator.js +363 -0
  114. package/dist/state/buyer-coordinator.js.map +1 -0
  115. package/dist/state/errors.d.ts +45 -0
  116. package/dist/state/errors.d.ts.map +1 -0
  117. package/dist/state/errors.js +88 -0
  118. package/dist/state/errors.js.map +1 -0
  119. package/dist/state/guards.d.ts +24 -0
  120. package/dist/state/guards.d.ts.map +1 -0
  121. package/dist/state/guards.js +211 -0
  122. package/dist/state/guards.js.map +1 -0
  123. package/dist/state/index.d.ts +5 -0
  124. package/dist/state/index.d.ts.map +1 -0
  125. package/dist/state/index.js +5 -0
  126. package/dist/state/index.js.map +1 -0
  127. package/dist/state/reconciliation.d.ts +105 -0
  128. package/dist/state/reconciliation.d.ts.map +1 -0
  129. package/dist/state/reconciliation.js +297 -0
  130. package/dist/state/reconciliation.js.map +1 -0
  131. package/package.json +98 -12
  132. package/index.d.ts +0 -2
  133. package/index.js +0 -8
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Policy engine interfaces for AgentPay.
3
+ *
4
+ * Defines the two-phase reservation protocol and metering extensions.
5
+ */
6
+ import type { BreakerState, PolicyDecision } from './models.js';
7
+ export type Clock = () => number;
8
+ export interface ReserveParams {
9
+ intentId: string;
10
+ amount: bigint | number | string;
11
+ payee: string;
12
+ asset: string;
13
+ network: string;
14
+ domain?: string | null;
15
+ ttlSeconds?: number;
16
+ }
17
+ export interface IPolicyEngine {
18
+ /**
19
+ * Atomically evaluate all precedence rules and lock quota.
20
+ */
21
+ reserve(params: ReserveParams): PolicyDecision;
22
+ /**
23
+ * Transition a reservation from RESERVED to COMMITTED.
24
+ * Idempotent: subsequent calls for the same intentId are no-ops.
25
+ */
26
+ commit(intentId: string): void;
27
+ /**
28
+ * Transition a reservation from RESERVED to RELEASED, returning quota.
29
+ * Guarded: if the intent was already COMMITTED, throws RESERVATION_ALREADY_FINALIZED.
30
+ */
31
+ release(intentId: string, reason?: string): void;
32
+ }
33
+ export interface IMeteredPolicyEngine extends IPolicyEngine {
34
+ /**
35
+ * Reserve quota for a credential-mode (non-402) call before wire dispatch.
36
+ */
37
+ reserveMetered(intentId: string, estimatedAmount: bigint | number | string, domain?: string | null, ttlSeconds?: number): PolicyDecision;
38
+ /**
39
+ * Settle a metered call by transitioning from RESERVED to COMMITTED.
40
+ */
41
+ settleMetered(intentId: string, actualAmount?: bigint | number | null): void;
42
+ /**
43
+ * Return the current available rolling budget in base units.
44
+ */
45
+ getAvailableRollingBudget(): bigint;
46
+ /**
47
+ * Return the current live circuit breaker state.
48
+ */
49
+ getBreakerState(): BreakerState;
50
+ /**
51
+ * Record a transaction or upstream delivery failure.
52
+ */
53
+ recordFailure(reason?: string): void;
54
+ /**
55
+ * Reset the circuit breaker to CLOSED.
56
+ */
57
+ resetBreaker(): void;
58
+ }
59
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/policy/interfaces.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEhE,MAAM,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC;AAEjC,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc,CAAC;IAE/C;;;OAGG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/B;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD;;OAEG;IACH,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EACzC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EACtB,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,CAAC;IAElB;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAE7E;;OAEG;IACH,yBAAyB,IAAI,MAAM,CAAC;IAEpC;;OAEG;IACH,eAAe,IAAI,YAAY,CAAC;IAEhC;;OAEG;IACH,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAErC;;OAEG;IACH,YAAY,IAAI,IAAI,CAAC;CACtB"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Policy engine interfaces for AgentPay.
3
+ *
4
+ * Defines the two-phase reservation protocol and metering extensions.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/policy/interfaces.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Policy engine data models for AgentPay.
3
+ *
4
+ * All models are frozen value objects.
5
+ * Amounts are strictly bigint base units; floats and booleans are rejected.
6
+ * EVM addresses are auto-normalised to lowercase.
7
+ * CAIP-2 network identifiers are validated on construction.
8
+ */
9
+ import { SQLITE_MAX_INT } from '../core/models.js';
10
+ import { PolicyErrorCode } from './errors.js';
11
+ export { SQLITE_MAX_INT };
12
+ export declare function normalizeDomainHost(value: string): string;
13
+ export declare function validatePositiveBigInt(value: unknown, fieldName: string): bigint;
14
+ export declare enum BreakerState {
15
+ CLOSED = "CLOSED",
16
+ OPEN = "OPEN",
17
+ HALF_OPEN = "HALF_OPEN"
18
+ }
19
+ export declare enum WhitelistMode {
20
+ STRICT = "strict",
21
+ SIMPLE = "simple"
22
+ }
23
+ export declare enum LedgerEntryState {
24
+ RESERVED = "RESERVED",
25
+ COMMITTED = "COMMITTED",
26
+ RELEASED = "RELEASED"
27
+ }
28
+ export interface ReservationTokenInput {
29
+ reservationId?: string;
30
+ reservation_id?: string;
31
+ intentId?: string;
32
+ intent_id?: string;
33
+ policyId?: string;
34
+ policy_id?: string;
35
+ amount: bigint | number | string;
36
+ expiresAt?: number;
37
+ expires_at?: number;
38
+ createdAt?: number;
39
+ created_at?: number;
40
+ }
41
+ export declare class ReservationToken {
42
+ readonly reservationId: string;
43
+ readonly intentId: string;
44
+ readonly policyId: string;
45
+ readonly amount: bigint;
46
+ readonly expiresAt: number;
47
+ readonly createdAt: number;
48
+ get reservation_id(): string;
49
+ get intent_id(): string;
50
+ get policy_id(): string;
51
+ get expires_at(): number;
52
+ get created_at(): number;
53
+ constructor(input: ReservationTokenInput);
54
+ toJSON(): Record<string, unknown>;
55
+ }
56
+ export interface PolicyDecision {
57
+ readonly approved: boolean;
58
+ readonly errorCode?: PolicyErrorCode | null;
59
+ readonly reservation?: ReservationToken | null;
60
+ readonly availableAfter?: bigint | null;
61
+ }
62
+ export interface PaymentRequestInput {
63
+ intentId?: string;
64
+ intent_id?: string;
65
+ amount: bigint | number | string;
66
+ payee: string;
67
+ asset: string;
68
+ network: string;
69
+ domain?: string | null;
70
+ ttlSeconds?: number;
71
+ ttl_seconds?: number;
72
+ }
73
+ export declare class PaymentRequest {
74
+ readonly intentId: string;
75
+ readonly amount: bigint;
76
+ readonly payee: string;
77
+ readonly asset: string;
78
+ readonly network: string;
79
+ readonly domain: string | null;
80
+ readonly ttlSeconds: number;
81
+ get intent_id(): string;
82
+ get ttl_seconds(): number;
83
+ get isAgentpayWallet(): boolean;
84
+ get is_agentpay_wallet(): boolean;
85
+ constructor(input: PaymentRequestInput);
86
+ }
87
+ export interface PolicyConfigInput {
88
+ id: string;
89
+ name?: string;
90
+ walletAddress?: string;
91
+ wallet_address?: string;
92
+ maxPerTxBaseUnits?: bigint | number | string;
93
+ max_per_tx_base_units?: bigint | number | string;
94
+ rollingBudget24hBaseUnits?: bigint | number | string;
95
+ rolling_budget_24h_base_units?: bigint | number | string;
96
+ lifetimeBudgetBaseUnits?: bigint | number | string | null;
97
+ lifetime_budget_base_units?: bigint | number | string | null;
98
+ whitelistMode?: WhitelistMode | string;
99
+ whitelist_mode?: WhitelistMode | string;
100
+ whitelistPayees?: readonly string[];
101
+ whitelist_payees?: readonly string[];
102
+ whitelistAssets?: readonly string[];
103
+ whitelist_assets?: readonly string[];
104
+ whitelistNetworks?: readonly string[];
105
+ whitelist_networks?: readonly string[];
106
+ whitelistDomains?: readonly string[];
107
+ whitelist_domains?: readonly string[];
108
+ circuitMaxRpm?: number;
109
+ circuit_max_rpm?: number;
110
+ circuitConsecutiveFailures?: number;
111
+ circuit_consecutive_failures?: number;
112
+ circuitCooldownSeconds?: number;
113
+ circuit_cooldown_seconds?: number;
114
+ breakerState?: BreakerState | string;
115
+ breaker_state?: BreakerState | string;
116
+ trippedAt?: number | null;
117
+ tripped_at?: number | null;
118
+ isFrozen?: boolean;
119
+ is_frozen?: boolean | number;
120
+ createdAt?: number;
121
+ created_at?: number;
122
+ updatedAt?: number;
123
+ updated_at?: number;
124
+ }
125
+ export declare class PolicyConfig {
126
+ readonly id: string;
127
+ readonly name: string;
128
+ readonly walletAddress: `0x${string}`;
129
+ readonly maxPerTxBaseUnits: bigint;
130
+ readonly rollingBudget24hBaseUnits: bigint;
131
+ readonly lifetimeBudgetBaseUnits: bigint | null;
132
+ readonly whitelistMode: WhitelistMode;
133
+ readonly whitelistPayees: ReadonlySet<string>;
134
+ readonly whitelistAssets: ReadonlySet<string>;
135
+ readonly whitelistNetworks: ReadonlySet<string>;
136
+ readonly whitelistDomains: ReadonlySet<string>;
137
+ readonly circuitMaxRpm: number;
138
+ readonly circuitConsecutiveFailures: number;
139
+ readonly circuitCooldownSeconds: number;
140
+ readonly breakerState: BreakerState;
141
+ readonly trippedAt: number | null;
142
+ readonly isFrozen: boolean;
143
+ readonly createdAt: number;
144
+ readonly updatedAt: number;
145
+ get wallet_address(): `0x${string}`;
146
+ get max_per_tx_base_units(): bigint;
147
+ get rolling_budget_24h_base_units(): bigint;
148
+ get lifetime_budget_base_units(): bigint | null;
149
+ get whitelist_mode(): WhitelistMode;
150
+ get circuit_max_rpm(): number;
151
+ get circuit_consecutive_failures(): number;
152
+ get circuit_cooldown_seconds(): number;
153
+ get breaker_state(): BreakerState;
154
+ get tripped_at(): number | null;
155
+ get is_frozen(): boolean;
156
+ get created_at(): number;
157
+ get updated_at(): number;
158
+ constructor(input: PolicyConfigInput);
159
+ }
160
+ export declare function loadPolicyConfig(data: Record<string, any>): PolicyConfig;
161
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/policy/models.ts"],"names":[],"mappings":"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"}