@cra-agent/policy 0.0.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.
@@ -0,0 +1,63 @@
1
+ /**
2
+ * @cra-agent/policy — spend control for agent payments.
3
+ *
4
+ * Pure: no I/O. The caller (router) gathers the context from the ledger and the identity layer and
5
+ * asks for a decision. Enforcement lives at the account (the rail signs nothing the policy rejects),
6
+ * never in the agent's prompt. The interface is the phase-2 product: keep it stable.
7
+ */
8
+ import { type Usdc6 } from "@cra-agent/accounting";
9
+ export interface SpendPolicy {
10
+ /** Max for a single payment. */
11
+ readonly perPaymentCap: Usdc6;
12
+ /** Max total in a rolling 24h window. */
13
+ readonly dailyCap: Usdc6;
14
+ /** Max to one counterparty (payTo address) in a rolling 24h window. */
15
+ readonly perCounterpartyDailyCap: Usdc6;
16
+ /** Max number of payments in a rolling window. */
17
+ readonly rateLimit: {
18
+ readonly maxPayments: number;
19
+ readonly windowMs: number;
20
+ };
21
+ /** Hostnames or payTo addresses (lowercase). null = any. */
22
+ readonly allowlist: readonly string[] | null;
23
+ readonly denylist: readonly string[];
24
+ /** CAIP-2 networks the rail may pay on (e.g. "eip155:5042"). */
25
+ readonly allowedNetworks: readonly string[];
26
+ /** Fail closed on sellers without a verified ERC-8004 identity. */
27
+ readonly requireVerifiedIdentity: boolean;
28
+ /** Phase 2 extension point: minimum bond a seller must have posted. 0 = not required. */
29
+ readonly requiredSellerBond: Usdc6;
30
+ }
31
+ export interface PolicyContext {
32
+ readonly amount: Usdc6;
33
+ readonly network: string;
34
+ readonly payTo: string;
35
+ readonly host: string;
36
+ readonly spentInWindow: Usdc6;
37
+ readonly spentInWindowWithCounterparty: Usdc6;
38
+ readonly paymentsInRateWindow: number;
39
+ /** null = not checked (identity layer unavailable) — treated as unverified when required. */
40
+ readonly identityVerified: boolean | null;
41
+ /** null = unknown. */
42
+ readonly sellerBond: Usdc6 | null;
43
+ }
44
+ export type PolicyRule = "network" | "denylist" | "allowlist" | "per_payment" | "rate" | "daily" | "per_counterparty" | "identity" | "bond";
45
+ export type PolicyDecision = {
46
+ readonly allow: true;
47
+ } | {
48
+ readonly allow: false;
49
+ readonly rule: PolicyRule;
50
+ readonly reason: string;
51
+ };
52
+ export declare const ARC_MAINNET = "eip155:5042";
53
+ export declare const ARC_TESTNET = "eip155:5042002";
54
+ export declare const DEFAULT_POLICY: SpendPolicy;
55
+ /** Ordered checks. The first failing rule wins; the reason is meant for the ledger and the agent. */
56
+ export declare function evaluatePolicy(policy: SpendPolicy, ctx: PolicyContext): PolicyDecision;
57
+ /**
58
+ * Compact env/CLI syntax, e.g. CRA_POLICY="daily=5,per_seller=0.5,per_payment=0.05,rate=60/60s,identity=required,allow=api.a.com|0xabc"
59
+ * Unknown keys throw: a typo in a spend limit must not silently widen it.
60
+ */
61
+ export declare function parsePolicyString(text: string, base?: SpendPolicy): SpendPolicy;
62
+ export declare function describePolicy(p: SpendPolicy): Record<string, unknown>;
63
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAA0D,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE3G,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC;IAC9B,yCAAyC;IACzC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IACzB,uEAAuE;IACvE,QAAQ,CAAC,uBAAuB,EAAE,KAAK,CAAC;IACxC,kDAAkD;IAClD,QAAQ,CAAC,SAAS,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAChF,4DAA4D;IAC5D,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,gEAAgE;IAChE,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,mEAAmE;IACnE,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;IAC1C,yFAAyF;IACzF,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC;IAC9B,QAAQ,CAAC,6BAA6B,EAAE,KAAK,CAAC;IAC9C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,6FAA6F;IAC7F,QAAQ,CAAC,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1C,sBAAsB;IACtB,QAAQ,CAAC,UAAU,EAAE,KAAK,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,kBAAkB,GAAG,UAAU,GAAG,MAAM,CAAC;AAE5I,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtI,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,WAAW,mBAAmB,CAAC;AAE5C,eAAO,MAAM,cAAc,EAAE,WAU5B,CAAC;AAIF,qGAAqG;AACrG,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,GAAG,cAAc,CAmBtF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,WAA4B,GAAG,WAAW,CA2B/F;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYtE"}
package/dist/index.js ADDED
@@ -0,0 +1,117 @@
1
+ /**
2
+ * @cra-agent/policy — spend control for agent payments.
3
+ *
4
+ * Pure: no I/O. The caller (router) gathers the context from the ledger and the identity layer and
5
+ * asks for a decision. Enforcement lives at the account (the rail signs nothing the policy rejects),
6
+ * never in the agent's prompt. The interface is the phase-2 product: keep it stable.
7
+ */
8
+ import { addUsdc6, compareUsdc6, formatUsdc6, parseUsdc6, usdc6 } from "@cra-agent/accounting";
9
+ export const ARC_MAINNET = "eip155:5042";
10
+ export const ARC_TESTNET = "eip155:5042002";
11
+ export const DEFAULT_POLICY = {
12
+ perPaymentCap: parseUsdc6("0.05"),
13
+ dailyCap: parseUsdc6("5"),
14
+ perCounterpartyDailyCap: parseUsdc6("1"),
15
+ rateLimit: { maxPayments: 120, windowMs: 60_000 },
16
+ allowlist: null,
17
+ denylist: [],
18
+ allowedNetworks: [ARC_MAINNET, ARC_TESTNET],
19
+ requireVerifiedIdentity: false,
20
+ requiredSellerBond: usdc6(0n),
21
+ };
22
+ const norm = (s) => s.trim().toLowerCase();
23
+ /** Ordered checks. The first failing rule wins; the reason is meant for the ledger and the agent. */
24
+ export function evaluatePolicy(policy, ctx) {
25
+ const deny = (rule, reason) => ({ allow: false, rule, reason });
26
+ if (!policy.allowedNetworks.includes(ctx.network))
27
+ return deny("network", `network ${ctx.network} not allowed`);
28
+ const host = norm(ctx.host);
29
+ const payTo = norm(ctx.payTo);
30
+ if (policy.denylist.some((d) => norm(d) === host || norm(d) === payTo))
31
+ return deny("denylist", `${ctx.host} / ${ctx.payTo} is denied`);
32
+ if (policy.allowlist !== null && !policy.allowlist.some((a) => norm(a) === host || norm(a) === payTo))
33
+ return deny("allowlist", `${ctx.host} / ${ctx.payTo} not in allowlist`);
34
+ if (compareUsdc6(ctx.amount, policy.perPaymentCap) > 0)
35
+ return deny("per_payment", `${formatUsdc6(ctx.amount)} USDC exceeds per-payment cap ${formatUsdc6(policy.perPaymentCap)}`);
36
+ if (ctx.paymentsInRateWindow >= policy.rateLimit.maxPayments)
37
+ return deny("rate", `${ctx.paymentsInRateWindow} payments in ${policy.rateLimit.windowMs / 1000}s window (max ${policy.rateLimit.maxPayments})`);
38
+ const afterDaily = addUsdc6(ctx.spentInWindow, ctx.amount);
39
+ if (compareUsdc6(afterDaily, policy.dailyCap) > 0)
40
+ return deny("daily", `would reach ${formatUsdc6(afterDaily)} USDC in 24h, cap ${formatUsdc6(policy.dailyCap)}`);
41
+ const afterCp = addUsdc6(ctx.spentInWindowWithCounterparty, ctx.amount);
42
+ if (compareUsdc6(afterCp, policy.perCounterpartyDailyCap) > 0)
43
+ return deny("per_counterparty", `would reach ${formatUsdc6(afterCp)} USDC with ${ctx.payTo} in 24h, cap ${formatUsdc6(policy.perCounterpartyDailyCap)}`);
44
+ if (policy.requireVerifiedIdentity && ctx.identityVerified !== true)
45
+ return deny("identity", ctx.identityVerified === null ? "seller identity could not be checked" : "seller has no verified ERC-8004 identity");
46
+ if (policy.requiredSellerBond > 0n) {
47
+ if (ctx.sellerBond === null)
48
+ return deny("bond", "seller bond unknown");
49
+ if (compareUsdc6(ctx.sellerBond, policy.requiredSellerBond) < 0)
50
+ return deny("bond", `seller bond ${formatUsdc6(ctx.sellerBond)} below required ${formatUsdc6(policy.requiredSellerBond)}`);
51
+ }
52
+ return { allow: true };
53
+ }
54
+ /**
55
+ * Compact env/CLI syntax, e.g. CRA_POLICY="daily=5,per_seller=0.5,per_payment=0.05,rate=60/60s,identity=required,allow=api.a.com|0xabc"
56
+ * Unknown keys throw: a typo in a spend limit must not silently widen it.
57
+ */
58
+ export function parsePolicyString(text, base = DEFAULT_POLICY) {
59
+ let p = { ...base };
60
+ for (const part of text.split(",").map((s) => s.trim()).filter(Boolean)) {
61
+ const eq = part.indexOf("=");
62
+ if (eq < 0)
63
+ throw new Error(`policy: expected key=value, got "${part}"`);
64
+ const key = part.slice(0, eq).trim();
65
+ const value = part.slice(eq + 1).trim();
66
+ switch (key) {
67
+ case "daily":
68
+ p = { ...p, dailyCap: parseUsdc6(value) };
69
+ break;
70
+ case "per_seller":
71
+ p = { ...p, perCounterpartyDailyCap: parseUsdc6(value) };
72
+ break;
73
+ case "per_payment":
74
+ p = { ...p, perPaymentCap: parseUsdc6(value) };
75
+ break;
76
+ case "rate": {
77
+ const m = /^(\d+)\/(\d+)(s|m|h)$/.exec(value);
78
+ if (!m)
79
+ throw new Error(`policy: rate must look like 60/60s, got "${value}"`);
80
+ const mult = m[3] === "s" ? 1000 : m[3] === "m" ? 60_000 : 3_600_000;
81
+ p = { ...p, rateLimit: { maxPayments: Number(m[1]), windowMs: Number(m[2]) * mult } };
82
+ break;
83
+ }
84
+ case "allow":
85
+ p = { ...p, allowlist: value === "*" ? null : value.split("|").map(norm) };
86
+ break;
87
+ case "deny":
88
+ p = { ...p, denylist: value.split("|").map(norm) };
89
+ break;
90
+ case "networks":
91
+ p = { ...p, allowedNetworks: value.split("|").map((s) => s.trim()) };
92
+ break;
93
+ case "identity":
94
+ p = { ...p, requireVerifiedIdentity: value === "required" };
95
+ break;
96
+ case "bond":
97
+ p = { ...p, requiredSellerBond: parseUsdc6(value) };
98
+ break;
99
+ default: throw new Error(`policy: unknown key "${key}"`);
100
+ }
101
+ }
102
+ return p;
103
+ }
104
+ export function describePolicy(p) {
105
+ return {
106
+ perPaymentCapUsdc: formatUsdc6(p.perPaymentCap),
107
+ dailyCapUsdc: formatUsdc6(p.dailyCap),
108
+ perCounterpartyDailyCapUsdc: formatUsdc6(p.perCounterpartyDailyCap),
109
+ rateLimit: `${p.rateLimit.maxPayments}/${p.rateLimit.windowMs / 1000}s`,
110
+ allowlist: p.allowlist,
111
+ denylist: p.denylist,
112
+ allowedNetworks: p.allowedNetworks,
113
+ requireVerifiedIdentity: p.requireVerifiedIdentity,
114
+ requiredSellerBondUsdc: formatUsdc6(p.requiredSellerBond),
115
+ };
116
+ }
117
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "@cra-agent/policy",
3
+ "version": "0.0.1",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "default": "./dist/index.js"
11
+ }
12
+ },
13
+ "scripts": {
14
+ "build": "tsc -b"
15
+ },
16
+ "dependencies": {
17
+ "@cra-agent/accounting": "0.0.1"
18
+ },
19
+ "files": [
20
+ "dist",
21
+ "README.md"
22
+ ],
23
+ "publishConfig": {
24
+ "access": "public"
25
+ },
26
+ "license": "MIT",
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "https://github.com/giupy997/arcagentx402.git",
30
+ "directory": "packages/policy"
31
+ },
32
+ "homepage": "https://cra-agent.tech"
33
+ }