@axtary/proxy 0.1.0 → 0.3.0
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 +52 -1
- package/dist/index.d.ts +105 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +617 -27
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -12,12 +12,22 @@ npm install @axtary/proxy
|
|
|
12
12
|
|
|
13
13
|
- Parses a normalized Axtary action.
|
|
14
14
|
- Evaluates it through `@axtary/policy`.
|
|
15
|
+
- Rejects caller-supplied final provenance labels and can invoke a trusted
|
|
16
|
+
`provenanceResolver` before policy evaluation.
|
|
17
|
+
- Carries authority-stamped field/source lineage through policy, ActionPass,
|
|
18
|
+
handler input, and the hash-chained ledger.
|
|
15
19
|
- Requires ActionPass signing before execution by default.
|
|
20
|
+
- Can issue ActionPass v2 when the host supplies a stable status-reference
|
|
21
|
+
allocator; v2 remains DPoP-bound and delegation-aware.
|
|
16
22
|
- Appends every executable or blocked decision to `@axtary/ledger`.
|
|
17
23
|
- Executes only registered handlers for allowed tools.
|
|
18
24
|
- Can resolve exact approval evidence for `step_up` decisions before issuing a pass.
|
|
25
|
+
- Atomically reserves trusted per-tool budget before pass issuance, commits on
|
|
26
|
+
success, rolls back on failure, and denies `budget_exceeded`.
|
|
19
27
|
- Returns structured blocked, executed, failed, and malformed results.
|
|
20
|
-
- Returns per-stage timings for parse, policy,
|
|
28
|
+
- Returns per-stage timings for parse, policy, budget reservation, ActionPass
|
|
29
|
+
issuance, ledger append, handler execution, the completed authorization
|
|
30
|
+
decision, and total latency.
|
|
21
31
|
- Accepts either a static policy object or an async policy getter for hot-reloaded local configs.
|
|
22
32
|
|
|
23
33
|
## Quickstart
|
|
@@ -35,6 +45,15 @@ const proxy = createProxyRuntime({
|
|
|
35
45
|
tenant: "org:example",
|
|
36
46
|
ledger: new LocalJsonlLedger(".axtary/ledger.jsonl"),
|
|
37
47
|
handlers: createFakeHandlers(),
|
|
48
|
+
budget: {
|
|
49
|
+
enabled: true,
|
|
50
|
+
scope: "tenant",
|
|
51
|
+
limits: { actions: 100, externalMessages: 10 },
|
|
52
|
+
costs: {
|
|
53
|
+
"*": { actions: 1 },
|
|
54
|
+
"slack.chat.postMessage": { externalMessages: 1 },
|
|
55
|
+
},
|
|
56
|
+
},
|
|
38
57
|
allowUnsignedExecution: true, // local demo only; real runs sign every pass
|
|
39
58
|
});
|
|
40
59
|
|
|
@@ -52,6 +71,11 @@ console.log((await proxy.handle(demoAction)).status); // blocked
|
|
|
52
71
|
|
|
53
72
|
The proxy is the first runtime enforcement surface. It is intentionally local and deterministic. Real adapters register handlers and let the proxy own the decision, pass issuance, and ledger write before any production tool is touched.
|
|
54
73
|
|
|
74
|
+
The runtime package does not choose key custody or status transport. The CLI
|
|
75
|
+
host provides the persisted issuer keyring, public JWKS/status endpoints, and
|
|
76
|
+
status allocator; embedders may provide equivalent infrastructure through the
|
|
77
|
+
same `signingKey`, `keyId`, and `statusReference` seams.
|
|
78
|
+
|
|
55
79
|
Unsigned execution is possible only with `allowUnsignedExecution: true`, which is meant for dry-run tests and local demos.
|
|
56
80
|
|
|
57
81
|
Handlers are bounded by `handlerTimeoutMs` from config. Timeout failures are recorded as failed executions after the allow decision is ledgered, which keeps the authorization trace intact without letting slow providers stall the runtime.
|
|
@@ -59,3 +83,30 @@ Handlers are bounded by `handlerTimeoutMs` from config. Timeout failures are rec
|
|
|
59
83
|
When a dynamic policy getter fails, the proxy fails closed, records a deny decision in the ledger, and does not call the downstream handler. That preserves the audit trail while avoiding stale or partially parsed policy.
|
|
60
84
|
|
|
61
85
|
`approvalResolver` is the local bridge to hosted or local approval queues. It receives the normalized action and `step_up` policy decision, and may return a payload-bound approval artifact. If resolution fails, returns nothing, or the artifact does not bind to the exact action, the proxy blocks before handler execution.
|
|
86
|
+
|
|
87
|
+
`provenanceResolver` is an authority boundary, like the budget meter. Agent
|
|
88
|
+
actions cannot supply final integrity labels. A trusted host may attach exact
|
|
89
|
+
`axtary.provenance.v0` field/source bindings before policy; resolver failures
|
|
90
|
+
fail closed as malformed input and produce no misleading decision record.
|
|
91
|
+
|
|
92
|
+
Budget limits and costs are trusted runtime configuration. Agent actions cannot
|
|
93
|
+
supply reservation state. Pending reservations count against limits, committed
|
|
94
|
+
usage is reconstructed from the local ledger after restart, and expired
|
|
95
|
+
crash-era pending reservations are released during reconstruction. The meter
|
|
96
|
+
records usage units only; it does not price or bill them.
|
|
97
|
+
|
|
98
|
+
## Timing contract
|
|
99
|
+
|
|
100
|
+
`ProxyTimings.decisionMs` measures from receipt of a valid action through
|
|
101
|
+
parsing, deterministic policy evaluation, local budget reservation, ActionPass
|
|
102
|
+
issuance, and the crash-durable decision-ledger append. For `authorize()`,
|
|
103
|
+
`totalMs` equals `decisionMs`. For `handle()`, `totalMs` continues through the
|
|
104
|
+
provider handler and execution-outcome append, while `decisionMs` stops before
|
|
105
|
+
the handler is invoked.
|
|
106
|
+
|
|
107
|
+
The repository regression suite asserts that the p95 signed local
|
|
108
|
+
`authorize()` decision stays below
|
|
109
|
+
`LOCAL_AUTHORIZATION_DECISION_BUDGET_MS` (200ms) while appending to a seeded
|
|
110
|
+
10,000-record local ledger. Human approval waits, remote provider execution,
|
|
111
|
+
and optional remote dashboard sync are outside that deterministic local
|
|
112
|
+
decision budget.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,82 @@
|
|
|
1
|
-
import { type Approval, type ApprovalArtifact, type IssueActionPassResult, type JsonValue, type LedgerRecord, type NormalizedAction, type PolicyDecision, type SigningAlgorithm, type SigningKey } from "@axtary/actionpass";
|
|
2
|
-
import type {
|
|
3
|
-
import {
|
|
1
|
+
import { type ActionProvenance, type Approval, type ApprovalArtifact, type BudgetAmount, type BudgetLedgerEvent, type IssueActionPassResult, type JsonValue, type LedgerRecord, type NormalizedAction, type PolicyDecision, type SigningAlgorithm, type SigningKey, type StatusListReference } from "@axtary/actionpass";
|
|
2
|
+
import type { JWK } from "jose";
|
|
3
|
+
import type { BehaviorStore, LedgerAppendResult, LocalJsonlLedger } from "@axtary/ledger";
|
|
4
|
+
import { type PolicyConfigPatch } from "@axtary/policy";
|
|
4
5
|
export declare const PROXY_SCHEMA_VERSION = "axtary.proxy.v0";
|
|
5
6
|
export declare const PROXY_POLICY_VERSION = "2026-05-30";
|
|
6
7
|
export declare const DEFAULT_HANDLER_TIMEOUT_MS = 10000;
|
|
7
|
-
export
|
|
8
|
+
export declare const LOCAL_AUTHORIZATION_DECISION_BUDGET_MS = 200;
|
|
9
|
+
export type ProxyBudgetScope = "tenant" | "actor" | "task";
|
|
10
|
+
export type ProxyBudgetConfig = {
|
|
11
|
+
enabled: boolean;
|
|
12
|
+
scope: ProxyBudgetScope;
|
|
13
|
+
limits: BudgetAmount;
|
|
14
|
+
costs: Readonly<Record<string, BudgetAmount>>;
|
|
15
|
+
};
|
|
16
|
+
export type BudgetReservation = {
|
|
17
|
+
reservationId: string;
|
|
18
|
+
scope: string;
|
|
19
|
+
cost: BudgetAmount;
|
|
20
|
+
limit: BudgetAmount;
|
|
21
|
+
};
|
|
22
|
+
export type BudgetReserveResult = {
|
|
23
|
+
accepted: true;
|
|
24
|
+
reservation: BudgetReservation;
|
|
25
|
+
event: BudgetLedgerEvent;
|
|
26
|
+
} | {
|
|
27
|
+
accepted: false;
|
|
28
|
+
event: BudgetLedgerEvent;
|
|
29
|
+
};
|
|
30
|
+
export type BudgetMeter = {
|
|
31
|
+
reserve(input: {
|
|
32
|
+
scope: string;
|
|
33
|
+
cost: BudgetAmount;
|
|
34
|
+
limit: BudgetAmount;
|
|
35
|
+
now: Date;
|
|
36
|
+
expiresAt: Date;
|
|
37
|
+
}): BudgetReserveResult | Promise<BudgetReserveResult>;
|
|
38
|
+
commit(reservationId: string): BudgetLedgerEvent | Promise<BudgetLedgerEvent>;
|
|
39
|
+
rollback(reservationId: string): BudgetLedgerEvent | Promise<BudgetLedgerEvent>;
|
|
40
|
+
};
|
|
41
|
+
export declare class InMemoryBudgetMeter implements BudgetMeter {
|
|
42
|
+
private readonly committed;
|
|
43
|
+
private readonly reservations;
|
|
44
|
+
reserve(input: {
|
|
45
|
+
scope: string;
|
|
46
|
+
cost: BudgetAmount;
|
|
47
|
+
limit: BudgetAmount;
|
|
48
|
+
now: Date;
|
|
49
|
+
expiresAt: Date;
|
|
50
|
+
}): BudgetReserveResult;
|
|
51
|
+
commit(reservationId: string): BudgetLedgerEvent;
|
|
52
|
+
rollback(reservationId: string): BudgetLedgerEvent;
|
|
53
|
+
hydrate(events: BudgetLedgerEvent[], now?: Date): void;
|
|
54
|
+
private pendingReservation;
|
|
55
|
+
private pendingForScope;
|
|
56
|
+
}
|
|
57
|
+
export declare class LedgerBackedBudgetMeter implements BudgetMeter {
|
|
58
|
+
private readonly ledger;
|
|
59
|
+
private initialization;
|
|
60
|
+
private readonly meter;
|
|
61
|
+
constructor(ledger: ProxyLedger);
|
|
62
|
+
reserve(input: {
|
|
63
|
+
scope: string;
|
|
64
|
+
cost: BudgetAmount;
|
|
65
|
+
limit: BudgetAmount;
|
|
66
|
+
now: Date;
|
|
67
|
+
expiresAt: Date;
|
|
68
|
+
}): Promise<BudgetReserveResult>;
|
|
69
|
+
commit(reservationId: string): Promise<BudgetLedgerEvent>;
|
|
70
|
+
rollback(reservationId: string): Promise<BudgetLedgerEvent>;
|
|
71
|
+
private initialize;
|
|
72
|
+
}
|
|
73
|
+
export type ProxyLedger = Pick<LocalJsonlLedger, "appendDecision" | "appendExecutionOutcome" | "readRecords">;
|
|
8
74
|
export type ProxyTimings = {
|
|
9
75
|
totalMs: number;
|
|
76
|
+
decisionMs: number;
|
|
10
77
|
parseMs: number;
|
|
11
78
|
policyMs: number;
|
|
79
|
+
budgetMs: number;
|
|
12
80
|
actionPassMs: number;
|
|
13
81
|
ledgerMs: number;
|
|
14
82
|
approvalMs: number;
|
|
@@ -18,6 +86,7 @@ export type ToolHandlerRequest = {
|
|
|
18
86
|
action: NormalizedAction;
|
|
19
87
|
decision: PolicyDecision;
|
|
20
88
|
actionPass: IssueActionPassResult | null;
|
|
89
|
+
dpopProof?: string | null;
|
|
21
90
|
ledgerRecord: LedgerRecord;
|
|
22
91
|
};
|
|
23
92
|
export type ToolHandler = (request: ToolHandlerRequest) => JsonValue | Promise<JsonValue>;
|
|
@@ -30,16 +99,31 @@ export type ProxyApprovalResult = Approval | ApprovalArtifact | {
|
|
|
30
99
|
approvalArtifact?: ApprovalArtifact;
|
|
31
100
|
} | null | undefined;
|
|
32
101
|
export type ProxyApprovalResolver = (request: ProxyApprovalRequest) => ProxyApprovalResult | Promise<ProxyApprovalResult>;
|
|
102
|
+
export type ProxyProvenanceResolver = (action: NormalizedAction) => ActionProvenance | Promise<ActionProvenance>;
|
|
33
103
|
export type ProxyRuntimeConfig = {
|
|
34
104
|
issuer: string;
|
|
35
105
|
tenant: string;
|
|
36
106
|
ledger: ProxyLedger;
|
|
37
107
|
handlers?: Readonly<Record<string, ToolHandler>>;
|
|
38
|
-
policy?:
|
|
108
|
+
policy?: PolicyConfigPatch | (() => PolicyConfigPatch | Promise<PolicyConfigPatch>);
|
|
39
109
|
signingKey?: SigningKey;
|
|
40
110
|
keyId?: string;
|
|
41
111
|
algorithm?: SigningAlgorithm;
|
|
112
|
+
holderSigningKey?: SigningKey;
|
|
113
|
+
holderPublicJwk?: JWK;
|
|
114
|
+
holderAlgorithm?: SigningAlgorithm;
|
|
115
|
+
statusReference?: (passId: string) => StatusListReference | Promise<StatusListReference>;
|
|
116
|
+
dpopNonce?: string;
|
|
117
|
+
budget?: Partial<ProxyBudgetConfig>;
|
|
118
|
+
budgetMeter?: BudgetMeter;
|
|
42
119
|
approvalResolver?: ProxyApprovalResolver;
|
|
120
|
+
provenanceResolver?: ProxyProvenanceResolver;
|
|
121
|
+
/**
|
|
122
|
+
* Durable behavioral observation store (M5.6). When set and the
|
|
123
|
+
* `policy.behavior` guard is enabled, novel/abnormal-sequence actions are
|
|
124
|
+
* escalated to `step_up`; executed actions are recorded so they become known.
|
|
125
|
+
*/
|
|
126
|
+
behaviorStore?: BehaviorStore;
|
|
43
127
|
allowUnsignedExecution?: boolean;
|
|
44
128
|
handlerTimeoutMs?: number;
|
|
45
129
|
now?: () => Date;
|
|
@@ -97,12 +181,28 @@ export type ProxyAuthorizeDecisionResult = {
|
|
|
97
181
|
export type ProxyAuthorizeResult = ProxyMalformedResult | ProxyAuthorizeDecisionResult;
|
|
98
182
|
export declare class AxtaryProxyRuntime {
|
|
99
183
|
readonly config: ProxyRuntimeConfig;
|
|
184
|
+
private readonly rateLimitEvents;
|
|
185
|
+
private readonly budgetMeter;
|
|
186
|
+
private readonly budgetConfig;
|
|
100
187
|
constructor(config: ProxyRuntimeConfig);
|
|
101
188
|
handle(actionInput: unknown): Promise<ProxyHandleResult>;
|
|
102
189
|
authorize(actionInput: unknown): Promise<ProxyAuthorizeResult>;
|
|
103
190
|
private append;
|
|
104
191
|
private appendExecutionOutcome;
|
|
105
192
|
private now;
|
|
193
|
+
private reserveBudget;
|
|
194
|
+
private createProof;
|
|
195
|
+
private policyEvaluationContext;
|
|
196
|
+
/**
|
|
197
|
+
* Read novelty/sequence signals from the durable store for this action. Pure
|
|
198
|
+
* read — no mutation; the action only becomes "known" after it executes (see
|
|
199
|
+
* `observeBehavior`). Returns undefined when no store is configured, leaving
|
|
200
|
+
* the behavior guard inert.
|
|
201
|
+
*/
|
|
202
|
+
private behaviorSignals;
|
|
203
|
+
/** Record an executed action so its combo/transition becomes known. */
|
|
204
|
+
private observeBehavior;
|
|
205
|
+
private consumeRateLimit;
|
|
106
206
|
}
|
|
107
207
|
export declare function createProxyRuntime(config: ProxyRuntimeConfig): AxtaryProxyRuntime;
|
|
108
208
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAeL,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EAGd,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,mBAAmB,EACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAC;AAGxB,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AACtD,eAAO,MAAM,oBAAoB,eAAe,CAAC;AACjD,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,eAAO,MAAM,sCAAsC,MAAM,CAAC;AAE1D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,YAAY,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC3B;IACE,QAAQ,EAAE,IAAI,CAAC;IACf,WAAW,EAAE,iBAAiB,CAAC;IAC/B,KAAK,EAAE,iBAAiB,CAAC;CAC1B,GACD;IACE,QAAQ,EAAE,KAAK,CAAC;IAChB,KAAK,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAEN,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,CAAC,KAAK,EAAE;QACb,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,YAAY,CAAC;QACnB,KAAK,EAAE,YAAY,CAAC;QACpB,GAAG,EAAE,IAAI,CAAC;QACV,SAAS,EAAE,IAAI,CAAC;KACjB,GAAG,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9E,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACjF,CAAC;AAOF,qBAAa,mBAAoB,YAAW,WAAW;IACrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmC;IAC7D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuC;IAEpE,OAAO,CAAC,KAAK,EAAE;QACb,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,YAAY,CAAC;QACnB,KAAK,EAAE,YAAY,CAAC;QACpB,GAAG,EAAE,IAAI,CAAC;QACV,SAAS,EAAE,IAAI,CAAC;KACjB,GAAG,mBAAmB;IAoEvB,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,iBAAiB;IAuBhD,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,iBAAiB;IAkBlD,OAAO,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE,GAAG,OAAa,GAAG,IAAI;IAiC5D,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,eAAe;CASxB;AAED,qBAAa,uBAAwB,YAAW,WAAW;IAI7C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;gBAEtB,MAAM,EAAE,WAAW;IAE1C,OAAO,CAAC,KAAK,EAAE;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,YAAY,CAAC;QACnB,KAAK,EAAE,YAAY,CAAC;QACpB,GAAG,EAAE,IAAI,CAAC;QACV,SAAS,EAAE,IAAI,CAAC;KACjB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAK1B,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKzD,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKjE,OAAO,CAAC,UAAU;CASnB;AAED,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,gBAAgB,EAChB,gBAAgB,GAAG,wBAAwB,GAAG,aAAa,CAC5D,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,UAAU,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,CACxB,OAAO,EAAE,kBAAkB,KACxB,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAEpC,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,cAAc,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC3B,QAAQ,GACR,gBAAgB,GAChB;IACE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,GACD,IAAI,GACJ,SAAS,CAAC;AAEd,MAAM,MAAM,qBAAqB,GAAG,CAClC,OAAO,EAAE,oBAAoB,KAC1B,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAExD,MAAM,MAAM,uBAAuB,GAAG,CACpC,MAAM,EAAE,gBAAgB,KACrB,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAElD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,EACH,iBAAiB,GACjB,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC3D,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAC9B,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,eAAe,CAAC,EAAE,CAChB,MAAM,EAAE,MAAM,KACX,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;IACzC,kBAAkB,CAAC,EAAE,uBAAuB,CAAC;IAC7C;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,EAAE,OAAO,oBAAoB,CAAC;IAC3C,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,OAAO,oBAAoB,CAAC;IAC3C,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,UAAU,EAAE,IAAI,CAAC;IACjB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,aAAa,EAAE,OAAO,oBAAoB,CAAC;IAC3C,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,UAAU,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACzC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,eAAe,EAAE,kBAAkB,CAAC;IACpC,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,EAAE,OAAO,oBAAoB,CAAC;IAC3C,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,UAAU,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACzC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,eAAe,EAAE,kBAAkB,CAAC;IACpC,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,OAAO,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GACzB,oBAAoB,GACpB,kBAAkB,GAClB,mBAAmB,GACnB,iBAAiB,CAAC;AAEtB,MAAM,MAAM,4BAA4B,GAAG;IACzC,aAAa,EAAE,OAAO,oBAAoB,CAAC;IAC3C,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;IAC7C,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,UAAU,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACzC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,GAAG,4BAA4B,CAAC;AAEvF,qBAAa,kBAAkB;IAC7B,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA+B;IAC/D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;gBAErC,MAAM,EAAE,kBAAkB;IAOhC,MAAM,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmYxD,SAAS,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAwKpE,OAAO,CAAC,MAAM;IAed,OAAO,CAAC,sBAAsB;IAqB9B,OAAO,CAAC,GAAG;YAIG,aAAa;YA6Bb,WAAW;IAsBzB,OAAO,CAAC,uBAAuB;IA0B/B;;;;;OAKG;YACW,eAAe;IAO7B,uEAAuE;YACzD,eAAe;IAK7B,OAAO,CAAC,gBAAgB;CAczB;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,kBAAkB,CAEjF"}
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,196 @@
|
|
|
1
|
-
import { APPROVAL_ARTIFACT_VERSION, DEFAULT_EXPIRES_IN_SECONDS, issueActionPass, parseNormalizedAction, } from "@axtary/actionpass";
|
|
2
|
-
import {
|
|
1
|
+
import { APPROVAL_ARTIFACT_VERSION, ActionProvenanceSchema, actionPassDpopTarget, BudgetAmountSchema, createDpopProof, DEFAULT_EXPIRES_IN_SECONDS, hashAction, hashPayload, issueActionPass, issueActionPassV1, issueActionPassV2, parseNormalizedAction, validateApprovalArtifact, } from "@axtary/actionpass";
|
|
2
|
+
import { randomUUID } from "node:crypto";
|
|
3
|
+
import { evaluatePolicy, PolicyConfigSchema, } from "@axtary/policy";
|
|
3
4
|
import { performance } from "node:perf_hooks";
|
|
4
5
|
export const PROXY_SCHEMA_VERSION = "axtary.proxy.v0";
|
|
5
6
|
export const PROXY_POLICY_VERSION = "2026-05-30";
|
|
6
7
|
export const DEFAULT_HANDLER_TIMEOUT_MS = 10_000;
|
|
8
|
+
export const LOCAL_AUTHORIZATION_DECISION_BUDGET_MS = 200;
|
|
9
|
+
export class InMemoryBudgetMeter {
|
|
10
|
+
committed = new Map();
|
|
11
|
+
reservations = new Map();
|
|
12
|
+
reserve(input) {
|
|
13
|
+
const cost = normalizeBudgetAmount(input.cost);
|
|
14
|
+
const limit = normalizeBudgetAmount(input.limit);
|
|
15
|
+
const committedBefore = this.committed.get(input.scope) ?? {};
|
|
16
|
+
const pendingBefore = this.pendingForScope(input.scope);
|
|
17
|
+
const dimensions = new Set([
|
|
18
|
+
...Object.keys(cost),
|
|
19
|
+
...Object.keys(limit),
|
|
20
|
+
...Object.keys(committedBefore),
|
|
21
|
+
...Object.keys(pendingBefore),
|
|
22
|
+
]);
|
|
23
|
+
const exceeded = [...dimensions].some((dimension) => {
|
|
24
|
+
const requested = cost[dimension] ?? 0;
|
|
25
|
+
if (requested === 0)
|
|
26
|
+
return false;
|
|
27
|
+
const ceiling = limit[dimension];
|
|
28
|
+
return (ceiling === undefined ||
|
|
29
|
+
(committedBefore[dimension] ?? 0) +
|
|
30
|
+
(pendingBefore[dimension] ?? 0) +
|
|
31
|
+
requested >
|
|
32
|
+
ceiling);
|
|
33
|
+
});
|
|
34
|
+
if (exceeded) {
|
|
35
|
+
return {
|
|
36
|
+
accepted: false,
|
|
37
|
+
event: {
|
|
38
|
+
reservationId: null,
|
|
39
|
+
scope: input.scope,
|
|
40
|
+
status: "denied",
|
|
41
|
+
expiresAt: null,
|
|
42
|
+
cost,
|
|
43
|
+
limit,
|
|
44
|
+
committedBefore,
|
|
45
|
+
committedAfter: committedBefore,
|
|
46
|
+
reservedAfter: pendingBefore,
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
const reservation = {
|
|
51
|
+
reservationId: `budget_${randomUUID()}`,
|
|
52
|
+
scope: input.scope,
|
|
53
|
+
cost,
|
|
54
|
+
limit,
|
|
55
|
+
status: "pending",
|
|
56
|
+
expiresAt: input.expiresAt,
|
|
57
|
+
};
|
|
58
|
+
this.reservations.set(reservation.reservationId, reservation);
|
|
59
|
+
return {
|
|
60
|
+
accepted: true,
|
|
61
|
+
reservation,
|
|
62
|
+
event: {
|
|
63
|
+
reservationId: reservation.reservationId,
|
|
64
|
+
scope: input.scope,
|
|
65
|
+
status: "pending",
|
|
66
|
+
expiresAt: input.expiresAt.toISOString(),
|
|
67
|
+
cost,
|
|
68
|
+
limit,
|
|
69
|
+
committedBefore,
|
|
70
|
+
committedAfter: committedBefore,
|
|
71
|
+
reservedAfter: addBudgetAmounts(pendingBefore, cost),
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
commit(reservationId) {
|
|
76
|
+
const reservation = this.pendingReservation(reservationId);
|
|
77
|
+
const committedBefore = this.committed.get(reservation.scope) ?? {};
|
|
78
|
+
const committedAfter = addBudgetAmounts(committedBefore, reservation.cost);
|
|
79
|
+
reservation.status = "committed";
|
|
80
|
+
this.committed.set(reservation.scope, committedAfter);
|
|
81
|
+
return {
|
|
82
|
+
reservationId,
|
|
83
|
+
scope: reservation.scope,
|
|
84
|
+
status: "committed",
|
|
85
|
+
expiresAt: reservation.expiresAt.toISOString(),
|
|
86
|
+
cost: reservation.cost,
|
|
87
|
+
limit: reservation.limit,
|
|
88
|
+
committedBefore,
|
|
89
|
+
committedAfter,
|
|
90
|
+
reservedAfter: this.pendingForScope(reservation.scope),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
rollback(reservationId) {
|
|
94
|
+
const reservation = this.pendingReservation(reservationId);
|
|
95
|
+
const committed = this.committed.get(reservation.scope) ?? {};
|
|
96
|
+
reservation.status = "rolled_back";
|
|
97
|
+
return {
|
|
98
|
+
reservationId,
|
|
99
|
+
scope: reservation.scope,
|
|
100
|
+
status: "rolled_back",
|
|
101
|
+
expiresAt: reservation.expiresAt.toISOString(),
|
|
102
|
+
cost: reservation.cost,
|
|
103
|
+
limit: reservation.limit,
|
|
104
|
+
committedBefore: committed,
|
|
105
|
+
committedAfter: committed,
|
|
106
|
+
reservedAfter: this.pendingForScope(reservation.scope),
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
hydrate(events, now = new Date()) {
|
|
110
|
+
for (const event of events) {
|
|
111
|
+
if (!event.reservationId || !event.expiresAt)
|
|
112
|
+
continue;
|
|
113
|
+
const existing = this.reservations.get(event.reservationId);
|
|
114
|
+
if (event.status === "pending") {
|
|
115
|
+
this.reservations.set(event.reservationId, {
|
|
116
|
+
reservationId: event.reservationId,
|
|
117
|
+
scope: event.scope,
|
|
118
|
+
cost: event.cost,
|
|
119
|
+
limit: event.limit,
|
|
120
|
+
status: new Date(event.expiresAt).getTime() <= now.getTime()
|
|
121
|
+
? "rolled_back"
|
|
122
|
+
: "pending",
|
|
123
|
+
expiresAt: new Date(event.expiresAt),
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
else if (event.status === "committed") {
|
|
127
|
+
if (!existing || existing.status !== "committed") {
|
|
128
|
+
this.committed.set(event.scope, addBudgetAmounts(this.committed.get(event.scope) ?? {}, event.cost));
|
|
129
|
+
}
|
|
130
|
+
if (existing)
|
|
131
|
+
existing.status = "committed";
|
|
132
|
+
}
|
|
133
|
+
else if (event.status === "rolled_back" && existing) {
|
|
134
|
+
existing.status = "rolled_back";
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
pendingReservation(reservationId) {
|
|
139
|
+
const reservation = this.reservations.get(reservationId);
|
|
140
|
+
if (!reservation) {
|
|
141
|
+
throw new Error("budget_reservation_not_found");
|
|
142
|
+
}
|
|
143
|
+
if (reservation.status !== "pending") {
|
|
144
|
+
throw new Error("budget_reservation_already_settled");
|
|
145
|
+
}
|
|
146
|
+
return reservation;
|
|
147
|
+
}
|
|
148
|
+
pendingForScope(scope) {
|
|
149
|
+
let pending = {};
|
|
150
|
+
for (const reservation of this.reservations.values()) {
|
|
151
|
+
if (reservation.scope === scope && reservation.status === "pending") {
|
|
152
|
+
pending = addBudgetAmounts(pending, reservation.cost);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return pending;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
export class LedgerBackedBudgetMeter {
|
|
159
|
+
ledger;
|
|
160
|
+
initialization = null;
|
|
161
|
+
meter = new InMemoryBudgetMeter();
|
|
162
|
+
constructor(ledger) {
|
|
163
|
+
this.ledger = ledger;
|
|
164
|
+
}
|
|
165
|
+
async reserve(input) {
|
|
166
|
+
await this.initialize(input.now);
|
|
167
|
+
return this.meter.reserve(input);
|
|
168
|
+
}
|
|
169
|
+
async commit(reservationId) {
|
|
170
|
+
await this.initialize(new Date());
|
|
171
|
+
return this.meter.commit(reservationId);
|
|
172
|
+
}
|
|
173
|
+
async rollback(reservationId) {
|
|
174
|
+
await this.initialize(new Date());
|
|
175
|
+
return this.meter.rollback(reservationId);
|
|
176
|
+
}
|
|
177
|
+
initialize(now) {
|
|
178
|
+
this.initialization ??= this.ledger.readRecords().then((records) => {
|
|
179
|
+
this.meter.hydrate(records.flatMap((record) => (record.budget ? [record.budget] : [])), now);
|
|
180
|
+
});
|
|
181
|
+
return this.initialization;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
7
184
|
export class AxtaryProxyRuntime {
|
|
8
185
|
config;
|
|
186
|
+
rateLimitEvents = new Map();
|
|
187
|
+
budgetMeter;
|
|
188
|
+
budgetConfig;
|
|
9
189
|
constructor(config) {
|
|
10
190
|
this.config = config;
|
|
191
|
+
this.budgetConfig = normalizeProxyBudgetConfig(config.budget);
|
|
192
|
+
this.budgetMeter =
|
|
193
|
+
config.budgetMeter ?? new LedgerBackedBudgetMeter(config.ledger);
|
|
11
194
|
}
|
|
12
195
|
async handle(actionInput) {
|
|
13
196
|
const startedAt = performance.now();
|
|
@@ -16,6 +199,15 @@ export class AxtaryProxyRuntime {
|
|
|
16
199
|
try {
|
|
17
200
|
const parseStartedAt = performance.now();
|
|
18
201
|
action = parseNormalizedAction(actionInput);
|
|
202
|
+
if (action.budget) {
|
|
203
|
+
throw new Error("budget_authority_fields_forbidden");
|
|
204
|
+
}
|
|
205
|
+
if (action.provenance) {
|
|
206
|
+
throw new Error("provenance_authority_fields_forbidden");
|
|
207
|
+
}
|
|
208
|
+
if (this.config.provenanceResolver) {
|
|
209
|
+
action = actionWithProvenance(action, await this.config.provenanceResolver(action));
|
|
210
|
+
}
|
|
19
211
|
timings.parseMs = elapsed(parseStartedAt);
|
|
20
212
|
}
|
|
21
213
|
catch (error) {
|
|
@@ -33,7 +225,9 @@ export class AxtaryProxyRuntime {
|
|
|
33
225
|
const resolvedPolicy = typeof this.config.policy === "function"
|
|
34
226
|
? await this.config.policy()
|
|
35
227
|
: this.config.policy;
|
|
36
|
-
|
|
228
|
+
const policy = PolicyConfigSchema.parse(resolvedPolicy ?? {});
|
|
229
|
+
const behaviorSignals = await this.behaviorSignals(action);
|
|
230
|
+
policyDecision = evaluatePolicy(action, policy, this.policyEvaluationContext(action, policy, behaviorSignals));
|
|
37
231
|
timings.policyMs = elapsed(policyStartedAt);
|
|
38
232
|
}
|
|
39
233
|
catch (error) {
|
|
@@ -42,7 +236,7 @@ export class AxtaryProxyRuntime {
|
|
|
42
236
|
const ledgerStartedAt = performance.now();
|
|
43
237
|
const ledger = await this.append(action, decision, null);
|
|
44
238
|
timings.ledgerMs = elapsed(ledgerStartedAt);
|
|
45
|
-
timings
|
|
239
|
+
completeDecisionTiming(timings, startedAt);
|
|
46
240
|
return {
|
|
47
241
|
schemaVersion: PROXY_SCHEMA_VERSION,
|
|
48
242
|
status: "blocked",
|
|
@@ -63,7 +257,7 @@ export class AxtaryProxyRuntime {
|
|
|
63
257
|
}));
|
|
64
258
|
timings.approvalMs = elapsed(approvalStartedAt);
|
|
65
259
|
if (approvalEvidence.approval || approvalEvidence.approvalArtifact) {
|
|
66
|
-
policyDecision = approveStepUp(policyDecision);
|
|
260
|
+
policyDecision = approveStepUp(policyDecision, approvalEvidence, action, this.now());
|
|
67
261
|
}
|
|
68
262
|
}
|
|
69
263
|
catch (error) {
|
|
@@ -72,7 +266,7 @@ export class AxtaryProxyRuntime {
|
|
|
72
266
|
const ledgerStartedAt = performance.now();
|
|
73
267
|
const ledger = await this.append(action, decision, null);
|
|
74
268
|
timings.ledgerMs = elapsed(ledgerStartedAt);
|
|
75
|
-
timings
|
|
269
|
+
completeDecisionTiming(timings, startedAt);
|
|
76
270
|
return {
|
|
77
271
|
schemaVersion: PROXY_SCHEMA_VERSION,
|
|
78
272
|
status: "blocked",
|
|
@@ -88,7 +282,7 @@ export class AxtaryProxyRuntime {
|
|
|
88
282
|
const ledgerStartedAt = performance.now();
|
|
89
283
|
const ledger = await this.append(action, policyDecision, null);
|
|
90
284
|
timings.ledgerMs = elapsed(ledgerStartedAt);
|
|
91
|
-
timings
|
|
285
|
+
completeDecisionTiming(timings, startedAt);
|
|
92
286
|
return {
|
|
93
287
|
schemaVersion: PROXY_SCHEMA_VERSION,
|
|
94
288
|
status: "blocked",
|
|
@@ -99,13 +293,14 @@ export class AxtaryProxyRuntime {
|
|
|
99
293
|
timings,
|
|
100
294
|
};
|
|
101
295
|
}
|
|
296
|
+
this.consumeRateLimit(action, policyDecision);
|
|
102
297
|
const handler = this.config.handlers?.[action.capability.tool];
|
|
103
298
|
if (!handler) {
|
|
104
299
|
const decision = proxyDeny([`proxy_handler_missing:${action.capability.tool}`], policyDecision);
|
|
105
300
|
const ledgerStartedAt = performance.now();
|
|
106
301
|
const ledger = await this.append(action, decision, null);
|
|
107
302
|
timings.ledgerMs = elapsed(ledgerStartedAt);
|
|
108
|
-
timings
|
|
303
|
+
completeDecisionTiming(timings, startedAt);
|
|
109
304
|
return {
|
|
110
305
|
schemaVersion: PROXY_SCHEMA_VERSION,
|
|
111
306
|
status: "blocked",
|
|
@@ -121,7 +316,7 @@ export class AxtaryProxyRuntime {
|
|
|
121
316
|
const ledgerStartedAt = performance.now();
|
|
122
317
|
const ledger = await this.append(action, decision, null);
|
|
123
318
|
timings.ledgerMs = elapsed(ledgerStartedAt);
|
|
124
|
-
timings
|
|
319
|
+
completeDecisionTiming(timings, startedAt);
|
|
125
320
|
return {
|
|
126
321
|
schemaVersion: PROXY_SCHEMA_VERSION,
|
|
127
322
|
status: "blocked",
|
|
@@ -132,11 +327,33 @@ export class AxtaryProxyRuntime {
|
|
|
132
327
|
timings,
|
|
133
328
|
};
|
|
134
329
|
}
|
|
330
|
+
const budgetStartedAt = performance.now();
|
|
331
|
+
const budgetReservation = await this.reserveBudget(action, policyDecision.constraints.expiresInSeconds);
|
|
332
|
+
timings.budgetMs = elapsed(budgetStartedAt);
|
|
333
|
+
if (budgetReservation && !budgetReservation.accepted) {
|
|
334
|
+
const decision = proxyDeny(["budget_exceeded"], policyDecision);
|
|
335
|
+
const ledgerStartedAt = performance.now();
|
|
336
|
+
const ledger = await this.append(action, decision, null, budgetReservation.event);
|
|
337
|
+
timings.ledgerMs = elapsed(ledgerStartedAt);
|
|
338
|
+
completeDecisionTiming(timings, startedAt);
|
|
339
|
+
return {
|
|
340
|
+
schemaVersion: PROXY_SCHEMA_VERSION,
|
|
341
|
+
status: "blocked",
|
|
342
|
+
action,
|
|
343
|
+
decision,
|
|
344
|
+
actionPass: null,
|
|
345
|
+
ledger,
|
|
346
|
+
timings,
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
if (budgetReservation?.accepted) {
|
|
350
|
+
action = actionWithBudget(action, budgetReservation.reservation);
|
|
351
|
+
}
|
|
135
352
|
let actionPass = null;
|
|
136
353
|
if (this.config.signingKey) {
|
|
354
|
+
const actionPassStartedAt = performance.now();
|
|
137
355
|
try {
|
|
138
|
-
const
|
|
139
|
-
actionPass = await issueActionPass({
|
|
356
|
+
const issueInput = {
|
|
140
357
|
action,
|
|
141
358
|
decision: policyDecision,
|
|
142
359
|
issuer: this.config.issuer,
|
|
@@ -147,15 +364,42 @@ export class AxtaryProxyRuntime {
|
|
|
147
364
|
now: this.now(),
|
|
148
365
|
approval: approvalEvidence.approval,
|
|
149
366
|
approvalArtifact: approvalEvidence.approvalArtifact,
|
|
150
|
-
}
|
|
367
|
+
};
|
|
368
|
+
if (this.config.holderPublicJwk && this.config.statusReference) {
|
|
369
|
+
const passId = `ap_${randomUUID()}`;
|
|
370
|
+
actionPass = await issueActionPassV2({
|
|
371
|
+
...issueInput,
|
|
372
|
+
passId,
|
|
373
|
+
holderPublicJwk: this.config.holderPublicJwk,
|
|
374
|
+
status: {
|
|
375
|
+
status_list: await this.config.statusReference(passId),
|
|
376
|
+
},
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
else if (this.config.holderPublicJwk) {
|
|
380
|
+
actionPass = await issueActionPassV1({
|
|
381
|
+
...issueInput,
|
|
382
|
+
holderPublicJwk: this.config.holderPublicJwk,
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
else {
|
|
386
|
+
actionPass = await issueActionPass(issueInput);
|
|
387
|
+
}
|
|
151
388
|
timings.actionPassMs = elapsed(actionPassStartedAt);
|
|
152
389
|
}
|
|
153
390
|
catch (error) {
|
|
391
|
+
timings.actionPassMs = elapsed(actionPassStartedAt);
|
|
392
|
+
let budgetEvent;
|
|
393
|
+
if (budgetReservation?.accepted) {
|
|
394
|
+
const rollbackStartedAt = performance.now();
|
|
395
|
+
budgetEvent = await this.budgetMeter.rollback(budgetReservation.reservation.reservationId);
|
|
396
|
+
timings.budgetMs += elapsed(rollbackStartedAt);
|
|
397
|
+
}
|
|
154
398
|
const decision = proxyDeny([`proxy_actionpass_issue_failed:${errorToReason(error)}`], policyDecision);
|
|
155
399
|
const ledgerStartedAt = performance.now();
|
|
156
|
-
const ledger = await this.append(action, decision, null);
|
|
400
|
+
const ledger = await this.append(action, decision, null, budgetEvent);
|
|
157
401
|
timings.ledgerMs = elapsed(ledgerStartedAt);
|
|
158
|
-
timings
|
|
402
|
+
completeDecisionTiming(timings, startedAt);
|
|
159
403
|
return {
|
|
160
404
|
schemaVersion: PROXY_SCHEMA_VERSION,
|
|
161
405
|
status: "blocked",
|
|
@@ -168,24 +412,50 @@ export class AxtaryProxyRuntime {
|
|
|
168
412
|
}
|
|
169
413
|
}
|
|
170
414
|
const ledgerStartedAt = performance.now();
|
|
171
|
-
|
|
415
|
+
let ledger;
|
|
416
|
+
try {
|
|
417
|
+
ledger = await this.append(action, policyDecision, actionPass?.claims.jti ?? null, budgetReservation?.accepted ? budgetReservation.event : undefined);
|
|
418
|
+
}
|
|
419
|
+
catch (error) {
|
|
420
|
+
if (budgetReservation?.accepted) {
|
|
421
|
+
await this.budgetMeter.rollback(budgetReservation.reservation.reservationId);
|
|
422
|
+
}
|
|
423
|
+
throw error;
|
|
424
|
+
}
|
|
172
425
|
timings.ledgerMs = elapsed(ledgerStartedAt);
|
|
426
|
+
timings.decisionMs = elapsed(startedAt);
|
|
173
427
|
const handlerStartedAt = performance.now();
|
|
428
|
+
let budgetSettled = false;
|
|
429
|
+
let settledBudgetEvent;
|
|
174
430
|
try {
|
|
431
|
+
const dpopProof = actionPass?.claims.apv === "axtary.actionpass.v1" ||
|
|
432
|
+
actionPass?.claims.apv === "axtary.actionpass.v2"
|
|
433
|
+
? await this.createProof(action, actionPass)
|
|
434
|
+
: null;
|
|
175
435
|
const result = await withTimeout(handler({
|
|
176
436
|
action,
|
|
177
437
|
decision: policyDecision,
|
|
178
438
|
actionPass,
|
|
439
|
+
dpopProof,
|
|
179
440
|
ledgerRecord: ledger.record,
|
|
180
441
|
}), this.config.handlerTimeoutMs ?? DEFAULT_HANDLER_TIMEOUT_MS);
|
|
442
|
+
const budgetEvent = budgetReservation?.accepted
|
|
443
|
+
? await this.budgetMeter.commit(budgetReservation.reservation.reservationId)
|
|
444
|
+
: undefined;
|
|
445
|
+
budgetSettled = budgetReservation?.accepted ?? false;
|
|
446
|
+
settledBudgetEvent = budgetEvent;
|
|
181
447
|
const executionLedger = await this.appendExecutionOutcome({
|
|
182
448
|
action,
|
|
183
449
|
decision: policyDecision,
|
|
184
450
|
actionPassId: actionPass?.claims.jti ?? null,
|
|
185
451
|
correlationId: ledger.record.id,
|
|
186
452
|
traceId: ledger.record.traceId,
|
|
187
|
-
outcome: outcomeFromResult(action, result),
|
|
453
|
+
outcome: outcomeFromResult(action, result, approvedPayloadHash(approvalEvidence)),
|
|
454
|
+
budget: budgetEvent,
|
|
188
455
|
});
|
|
456
|
+
// The action actually executed (allowed, or approved step-up), so it is
|
|
457
|
+
// now "known" — record it for future novelty/sequence evaluation.
|
|
458
|
+
await this.observeBehavior(action);
|
|
189
459
|
timings.handlerMs = elapsed(handlerStartedAt);
|
|
190
460
|
timings.totalMs = elapsed(startedAt);
|
|
191
461
|
return {
|
|
@@ -202,13 +472,17 @@ export class AxtaryProxyRuntime {
|
|
|
202
472
|
}
|
|
203
473
|
catch (error) {
|
|
204
474
|
const reason = errorToReason(error);
|
|
475
|
+
const budgetEvent = budgetReservation?.accepted && !budgetSettled
|
|
476
|
+
? await this.budgetMeter.rollback(budgetReservation.reservation.reservationId)
|
|
477
|
+
: settledBudgetEvent;
|
|
205
478
|
const executionLedger = await this.appendExecutionOutcome({
|
|
206
479
|
action,
|
|
207
480
|
decision: policyDecision,
|
|
208
481
|
actionPassId: actionPass?.claims.jti ?? null,
|
|
209
482
|
correlationId: ledger.record.id,
|
|
210
483
|
traceId: ledger.record.traceId,
|
|
211
|
-
outcome: outcomeFromError(action, reason),
|
|
484
|
+
outcome: outcomeFromError(action, reason, approvedPayloadHash(approvalEvidence)),
|
|
485
|
+
budget: budgetEvent,
|
|
212
486
|
});
|
|
213
487
|
timings.handlerMs = elapsed(handlerStartedAt);
|
|
214
488
|
timings.totalMs = elapsed(startedAt);
|
|
@@ -234,6 +508,15 @@ export class AxtaryProxyRuntime {
|
|
|
234
508
|
try {
|
|
235
509
|
const parseStartedAt = performance.now();
|
|
236
510
|
action = parseNormalizedAction(actionInput);
|
|
511
|
+
if (action.budget) {
|
|
512
|
+
throw new Error("budget_authority_fields_forbidden");
|
|
513
|
+
}
|
|
514
|
+
if (action.provenance) {
|
|
515
|
+
throw new Error("provenance_authority_fields_forbidden");
|
|
516
|
+
}
|
|
517
|
+
if (this.config.provenanceResolver) {
|
|
518
|
+
action = actionWithProvenance(action, await this.config.provenanceResolver(action));
|
|
519
|
+
}
|
|
237
520
|
timings.parseMs = elapsed(parseStartedAt);
|
|
238
521
|
}
|
|
239
522
|
catch (error) {
|
|
@@ -251,7 +534,9 @@ export class AxtaryProxyRuntime {
|
|
|
251
534
|
const resolvedPolicy = typeof this.config.policy === "function"
|
|
252
535
|
? await this.config.policy()
|
|
253
536
|
: this.config.policy;
|
|
254
|
-
|
|
537
|
+
const policy = PolicyConfigSchema.parse(resolvedPolicy ?? {});
|
|
538
|
+
const behaviorSignals = await this.behaviorSignals(action);
|
|
539
|
+
policyDecision = evaluatePolicy(action, policy, this.policyEvaluationContext(action, policy, behaviorSignals));
|
|
255
540
|
timings.policyMs = elapsed(policyStartedAt);
|
|
256
541
|
}
|
|
257
542
|
catch (error) {
|
|
@@ -265,11 +550,23 @@ export class AxtaryProxyRuntime {
|
|
|
265
550
|
this.config.allowUnsignedExecution !== true) {
|
|
266
551
|
policyDecision = proxyDeny(["proxy_signing_key_required"], policyDecision);
|
|
267
552
|
}
|
|
553
|
+
const budgetStartedAt = performance.now();
|
|
554
|
+
const budgetReservation = policyDecision.decision === "allow"
|
|
555
|
+
? await this.reserveBudget(action, policyDecision.constraints.expiresInSeconds)
|
|
556
|
+
: null;
|
|
557
|
+
timings.budgetMs = elapsed(budgetStartedAt);
|
|
558
|
+
if (budgetReservation && !budgetReservation.accepted) {
|
|
559
|
+
policyDecision = proxyDeny(["budget_exceeded"], policyDecision);
|
|
560
|
+
}
|
|
561
|
+
if (budgetReservation?.accepted) {
|
|
562
|
+
action = actionWithBudget(action, budgetReservation.reservation);
|
|
563
|
+
}
|
|
268
564
|
let actionPass = null;
|
|
565
|
+
let budgetEvent = budgetReservation?.event;
|
|
269
566
|
if (policyDecision.decision === "allow" && this.config.signingKey) {
|
|
567
|
+
const actionPassStartedAt = performance.now();
|
|
270
568
|
try {
|
|
271
|
-
const
|
|
272
|
-
actionPass = await issueActionPass({
|
|
569
|
+
const issueInput = {
|
|
273
570
|
action,
|
|
274
571
|
decision: policyDecision,
|
|
275
572
|
issuer: this.config.issuer,
|
|
@@ -278,17 +575,51 @@ export class AxtaryProxyRuntime {
|
|
|
278
575
|
keyId: this.config.keyId,
|
|
279
576
|
algorithm: this.config.algorithm,
|
|
280
577
|
now: this.now(),
|
|
281
|
-
}
|
|
578
|
+
};
|
|
579
|
+
if (this.config.holderPublicJwk && this.config.statusReference) {
|
|
580
|
+
const passId = `ap_${randomUUID()}`;
|
|
581
|
+
actionPass = await issueActionPassV2({
|
|
582
|
+
...issueInput,
|
|
583
|
+
passId,
|
|
584
|
+
holderPublicJwk: this.config.holderPublicJwk,
|
|
585
|
+
status: {
|
|
586
|
+
status_list: await this.config.statusReference(passId),
|
|
587
|
+
},
|
|
588
|
+
});
|
|
589
|
+
}
|
|
590
|
+
else if (this.config.holderPublicJwk) {
|
|
591
|
+
actionPass = await issueActionPassV1({
|
|
592
|
+
...issueInput,
|
|
593
|
+
holderPublicJwk: this.config.holderPublicJwk,
|
|
594
|
+
});
|
|
595
|
+
}
|
|
596
|
+
else {
|
|
597
|
+
actionPass = await issueActionPass(issueInput);
|
|
598
|
+
}
|
|
282
599
|
timings.actionPassMs = elapsed(actionPassStartedAt);
|
|
283
600
|
}
|
|
284
601
|
catch (error) {
|
|
602
|
+
timings.actionPassMs = elapsed(actionPassStartedAt);
|
|
603
|
+
if (budgetReservation?.accepted) {
|
|
604
|
+
const rollbackStartedAt = performance.now();
|
|
605
|
+
budgetEvent = await this.budgetMeter.rollback(budgetReservation.reservation.reservationId);
|
|
606
|
+
timings.budgetMs += elapsed(rollbackStartedAt);
|
|
607
|
+
}
|
|
285
608
|
policyDecision = proxyDeny([`proxy_actionpass_issue_failed:${errorToReason(error)}`], policyDecision);
|
|
286
609
|
}
|
|
287
610
|
}
|
|
611
|
+
if (policyDecision.decision === "allow") {
|
|
612
|
+
this.consumeRateLimit(action, policyDecision);
|
|
613
|
+
if (budgetReservation?.accepted) {
|
|
614
|
+
const commitStartedAt = performance.now();
|
|
615
|
+
budgetEvent = await this.budgetMeter.commit(budgetReservation.reservation.reservationId);
|
|
616
|
+
timings.budgetMs += elapsed(commitStartedAt);
|
|
617
|
+
}
|
|
618
|
+
}
|
|
288
619
|
const ledgerStartedAt = performance.now();
|
|
289
|
-
const ledger = await this.append(action, policyDecision, actionPass?.claims.jti ?? null);
|
|
620
|
+
const ledger = await this.append(action, policyDecision, actionPass?.claims.jti ?? null, budgetEvent);
|
|
290
621
|
timings.ledgerMs = elapsed(ledgerStartedAt);
|
|
291
|
-
timings
|
|
622
|
+
completeDecisionTiming(timings, startedAt);
|
|
292
623
|
const status = policyDecision.decision === "allow"
|
|
293
624
|
? "authorized"
|
|
294
625
|
: policyDecision.decision === "step_up"
|
|
@@ -304,11 +635,12 @@ export class AxtaryProxyRuntime {
|
|
|
304
635
|
timings,
|
|
305
636
|
};
|
|
306
637
|
}
|
|
307
|
-
append(action, decision, actionPassId) {
|
|
638
|
+
append(action, decision, actionPassId, budget) {
|
|
308
639
|
return this.config.ledger.appendDecision({
|
|
309
640
|
action,
|
|
310
641
|
decision,
|
|
311
642
|
actionPassId,
|
|
643
|
+
budget,
|
|
312
644
|
occurredAt: this.now(),
|
|
313
645
|
});
|
|
314
646
|
}
|
|
@@ -320,12 +652,91 @@ export class AxtaryProxyRuntime {
|
|
|
320
652
|
occurredAt: this.now(),
|
|
321
653
|
traceId: input.traceId,
|
|
322
654
|
executionOutcome: input.outcome,
|
|
655
|
+
budget: input.budget,
|
|
323
656
|
correlationId: input.correlationId,
|
|
324
657
|
});
|
|
325
658
|
}
|
|
326
659
|
now() {
|
|
327
660
|
return this.config.now?.() ?? new Date();
|
|
328
661
|
}
|
|
662
|
+
async reserveBudget(action, expiresInSeconds) {
|
|
663
|
+
const budget = this.budgetConfig;
|
|
664
|
+
if (!budget.enabled) {
|
|
665
|
+
return null;
|
|
666
|
+
}
|
|
667
|
+
const cost = addBudgetAmounts(budget.costs["*"], budget.costs[action.capability.tool] ?? {});
|
|
668
|
+
const scopeValue = budget.scope === "actor"
|
|
669
|
+
? action.actor.agentId
|
|
670
|
+
: budget.scope === "task"
|
|
671
|
+
? action.intent.taskId
|
|
672
|
+
: this.config.tenant;
|
|
673
|
+
const now = this.now();
|
|
674
|
+
return this.budgetMeter.reserve({
|
|
675
|
+
scope: `${budget.scope}:${scopeValue}`,
|
|
676
|
+
cost,
|
|
677
|
+
limit: budget.limits,
|
|
678
|
+
now,
|
|
679
|
+
expiresAt: new Date(now.getTime() + expiresInSeconds * 1000),
|
|
680
|
+
});
|
|
681
|
+
}
|
|
682
|
+
async createProof(action, actionPass) {
|
|
683
|
+
if (!this.config.holderSigningKey || !this.config.holderPublicJwk) {
|
|
684
|
+
throw new Error("proxy_dpop_holder_key_required");
|
|
685
|
+
}
|
|
686
|
+
const target = actionPassDpopTarget(action);
|
|
687
|
+
return (await createDpopProof({
|
|
688
|
+
actionPass: actionPass.token,
|
|
689
|
+
method: target.method,
|
|
690
|
+
uri: target.uri,
|
|
691
|
+
signingKey: this.config.holderSigningKey,
|
|
692
|
+
publicJwk: this.config.holderPublicJwk,
|
|
693
|
+
algorithm: this.config.holderAlgorithm,
|
|
694
|
+
nonce: this.config.dpopNonce,
|
|
695
|
+
now: this.now(),
|
|
696
|
+
})).proof;
|
|
697
|
+
}
|
|
698
|
+
policyEvaluationContext(action, policy, behaviorSignals) {
|
|
699
|
+
const now = this.now();
|
|
700
|
+
const rateLimitCounts = Object.fromEntries(policy.rules.flatMap((rule) => {
|
|
701
|
+
const limit = rule.obligations.rateLimit;
|
|
702
|
+
if (!limit) {
|
|
703
|
+
return [];
|
|
704
|
+
}
|
|
705
|
+
const key = rateLimitKey(rule.id, limit.scope, action);
|
|
706
|
+
const cutoff = now.getTime() - limit.windowSeconds * 1000;
|
|
707
|
+
const active = (this.rateLimitEvents.get(key) ?? []).filter((timestamp) => timestamp > cutoff);
|
|
708
|
+
this.rateLimitEvents.set(key, active);
|
|
709
|
+
return [[rule.id, active.length]];
|
|
710
|
+
}));
|
|
711
|
+
return { now, rateLimitCounts, behaviorSignals };
|
|
712
|
+
}
|
|
713
|
+
/**
|
|
714
|
+
* Read novelty/sequence signals from the durable store for this action. Pure
|
|
715
|
+
* read — no mutation; the action only becomes "known" after it executes (see
|
|
716
|
+
* `observeBehavior`). Returns undefined when no store is configured, leaving
|
|
717
|
+
* the behavior guard inert.
|
|
718
|
+
*/
|
|
719
|
+
async behaviorSignals(action) {
|
|
720
|
+
if (!this.config.behaviorStore)
|
|
721
|
+
return undefined;
|
|
722
|
+
return this.config.behaviorStore.evaluate(action);
|
|
723
|
+
}
|
|
724
|
+
/** Record an executed action so its combo/transition becomes known. */
|
|
725
|
+
async observeBehavior(action) {
|
|
726
|
+
if (!this.config.behaviorStore)
|
|
727
|
+
return;
|
|
728
|
+
await this.config.behaviorStore.observe(action);
|
|
729
|
+
}
|
|
730
|
+
consumeRateLimit(action, decision) {
|
|
731
|
+
const limit = decision.obligations?.rateLimit;
|
|
732
|
+
if (!limit) {
|
|
733
|
+
return;
|
|
734
|
+
}
|
|
735
|
+
const key = rateLimitKey(limit.ruleId, limit.scope, action);
|
|
736
|
+
const events = this.rateLimitEvents.get(key) ?? [];
|
|
737
|
+
events.push(this.now().getTime());
|
|
738
|
+
this.rateLimitEvents.set(key, events);
|
|
739
|
+
}
|
|
329
740
|
}
|
|
330
741
|
export function createProxyRuntime(config) {
|
|
331
742
|
return new AxtaryProxyRuntime(config);
|
|
@@ -345,8 +756,14 @@ function proxyDeny(reasons, previousDecision) {
|
|
|
345
756
|
maxFilesChanged: previousDecision?.constraints.maxFilesChanged ?? 0,
|
|
346
757
|
blockedPaths: previousDecision?.constraints.blockedPaths ?? [],
|
|
347
758
|
},
|
|
759
|
+
rule: previousDecision?.rule,
|
|
760
|
+
obligations: previousDecision?.obligations,
|
|
348
761
|
};
|
|
349
762
|
}
|
|
763
|
+
/** The payload hash the approval evidence was bound to, if any. */
|
|
764
|
+
function approvedPayloadHash(evidence) {
|
|
765
|
+
return (evidence.approvalArtifact?.payloadHash ?? evidence.approval?.payloadHash);
|
|
766
|
+
}
|
|
350
767
|
function normalizeApprovalResult(result) {
|
|
351
768
|
if (!result) {
|
|
352
769
|
return {};
|
|
@@ -366,14 +783,122 @@ function normalizeApprovalResult(result) {
|
|
|
366
783
|
approvalArtifact: result.approvalArtifact,
|
|
367
784
|
};
|
|
368
785
|
}
|
|
369
|
-
function approveStepUp(decision) {
|
|
786
|
+
function approveStepUp(decision, evidence, action, now) {
|
|
787
|
+
// Content binding first: an approval only lifts a step-up for the exact
|
|
788
|
+
// action it was granted on. A stale artifact (e.g. the payload mutated
|
|
789
|
+
// after approval) denies here with the precise mismatch reason, so the
|
|
790
|
+
// ledger shows the content-binding denial rather than a wrapped
|
|
791
|
+
// issuance failure. Issue-time bindApproval remains the fail-closed
|
|
792
|
+
// backstop.
|
|
793
|
+
if (evidence.approvalArtifact) {
|
|
794
|
+
const artifactError = validateApprovalArtifact(evidence.approvalArtifact, action, now);
|
|
795
|
+
if (artifactError) {
|
|
796
|
+
// On a binding mismatch, name the approved hash as a reason detail so
|
|
797
|
+
// the deny ledger record is self-contained evidence: approved hash
|
|
798
|
+
// (this reason), attempted hash (the record's payloadHash), and the
|
|
799
|
+
// mismatch reason. Reasons are free strings — no ledger schema change.
|
|
800
|
+
const reasons = artifactError === "approval_payload_hash_mismatch" ||
|
|
801
|
+
artifactError === "approval_action_hash_mismatch"
|
|
802
|
+
? [
|
|
803
|
+
artifactError,
|
|
804
|
+
`approved_payload_hash:${evidence.approvalArtifact.payloadHash}`,
|
|
805
|
+
]
|
|
806
|
+
: [artifactError];
|
|
807
|
+
return proxyDeny(reasons, decision);
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
if (evidence.approval?.payloadHash &&
|
|
811
|
+
evidence.approval.payloadHash !== hashPayload(action.capability.payload)) {
|
|
812
|
+
return proxyDeny([
|
|
813
|
+
"approval_payload_hash_mismatch",
|
|
814
|
+
`approved_payload_hash:${evidence.approval.payloadHash}`,
|
|
815
|
+
], decision);
|
|
816
|
+
}
|
|
817
|
+
if (evidence.approval?.actionHash &&
|
|
818
|
+
evidence.approval.actionHash !== hashAction(action)) {
|
|
819
|
+
return proxyDeny(["approval_action_hash_mismatch"], decision);
|
|
820
|
+
}
|
|
821
|
+
const requiredRoles = decision.obligations?.requiredApproverRoles ?? [];
|
|
822
|
+
const actualRoles = evidence.approval?.approverRoles ??
|
|
823
|
+
evidence.approvalArtifact?.approverRoles ??
|
|
824
|
+
[];
|
|
825
|
+
const missingRole = requiredRoles.find((role) => !actualRoles.includes(role));
|
|
826
|
+
if (missingRole) {
|
|
827
|
+
return proxyDeny([`required_approver_role_missing:${missingRole}`], decision);
|
|
828
|
+
}
|
|
370
829
|
return {
|
|
371
830
|
...decision,
|
|
372
831
|
decision: "allow",
|
|
373
832
|
reasons: [...decision.reasons, "step_up_approved"],
|
|
374
833
|
};
|
|
375
834
|
}
|
|
376
|
-
function
|
|
835
|
+
function rateLimitKey(ruleId, scope, action) {
|
|
836
|
+
const value = scope === "actor"
|
|
837
|
+
? action.actor.agentId
|
|
838
|
+
: scope === "tool"
|
|
839
|
+
? action.capability.tool
|
|
840
|
+
: scope === "resource"
|
|
841
|
+
? action.capability.resource
|
|
842
|
+
: action.actor.tenant ?? "tenant:unknown";
|
|
843
|
+
return `${ruleId}:${scope}:${value}`;
|
|
844
|
+
}
|
|
845
|
+
function normalizeProxyBudgetConfig(input) {
|
|
846
|
+
const config = {
|
|
847
|
+
enabled: input?.enabled ?? false,
|
|
848
|
+
scope: input?.scope ?? "tenant",
|
|
849
|
+
limits: normalizeBudgetAmount(input?.limits ?? {}),
|
|
850
|
+
costs: Object.fromEntries(Object.entries(input?.costs ?? {}).map(([tool, cost]) => [
|
|
851
|
+
tool,
|
|
852
|
+
normalizeBudgetAmount(cost),
|
|
853
|
+
])),
|
|
854
|
+
};
|
|
855
|
+
if (config.enabled && !config.costs["*"]) {
|
|
856
|
+
throw new Error("budget_wildcard_cost_required");
|
|
857
|
+
}
|
|
858
|
+
if (config.enabled) {
|
|
859
|
+
for (const cost of Object.values(config.costs)) {
|
|
860
|
+
for (const dimension of Object.keys(cost)) {
|
|
861
|
+
if (config.limits[dimension] === undefined) {
|
|
862
|
+
throw new Error(`budget_limit_missing:${dimension}`);
|
|
863
|
+
}
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
return config;
|
|
868
|
+
}
|
|
869
|
+
function normalizeBudgetAmount(input) {
|
|
870
|
+
const amount = BudgetAmountSchema.parse(input);
|
|
871
|
+
return Object.fromEntries(Object.entries(amount).sort(([left], [right]) => left.localeCompare(right)));
|
|
872
|
+
}
|
|
873
|
+
function addBudgetAmounts(left, right) {
|
|
874
|
+
const dimensions = new Set([...Object.keys(left), ...Object.keys(right)]);
|
|
875
|
+
return Object.fromEntries([...dimensions]
|
|
876
|
+
.sort((a, b) => a.localeCompare(b))
|
|
877
|
+
.map((dimension) => [
|
|
878
|
+
dimension,
|
|
879
|
+
(left[dimension] ?? 0) + (right[dimension] ?? 0),
|
|
880
|
+
])
|
|
881
|
+
.filter(([, value]) => value !== 0));
|
|
882
|
+
}
|
|
883
|
+
function actionWithBudget(action, reservation) {
|
|
884
|
+
const budget = {
|
|
885
|
+
reservationId: reservation.reservationId,
|
|
886
|
+
cost: reservation.cost,
|
|
887
|
+
limit: reservation.limit,
|
|
888
|
+
commitStatus: "pending",
|
|
889
|
+
};
|
|
890
|
+
return parseNormalizedAction({
|
|
891
|
+
...action,
|
|
892
|
+
budget,
|
|
893
|
+
});
|
|
894
|
+
}
|
|
895
|
+
function actionWithProvenance(action, provenanceInput) {
|
|
896
|
+
return parseNormalizedAction({
|
|
897
|
+
...action,
|
|
898
|
+
provenance: ActionProvenanceSchema.parse(provenanceInput),
|
|
899
|
+
});
|
|
900
|
+
}
|
|
901
|
+
function outcomeFromResult(action, result, approvedPayloadHash) {
|
|
377
902
|
const resultObject = isJsonObject(result) ? result : {};
|
|
378
903
|
const provider = providerFromValue(resultObject.provider) ?? providerFromTool(action);
|
|
379
904
|
const resultId = getString(resultObject.id) ??
|
|
@@ -387,6 +912,7 @@ function outcomeFromResult(action, result) {
|
|
|
387
912
|
getString(resultObject.channel) ??
|
|
388
913
|
getString(resultObject.bucket) ??
|
|
389
914
|
getString(resultObject.projectId) ??
|
|
915
|
+
getString(resultObject.fileId) ??
|
|
390
916
|
getString(resultObject.branch) ??
|
|
391
917
|
getString(provenance.toolName) ??
|
|
392
918
|
getString(resultObject.workspace);
|
|
@@ -398,6 +924,7 @@ function outcomeFromResult(action, result) {
|
|
|
398
924
|
resultUrl,
|
|
399
925
|
resourceId,
|
|
400
926
|
resourceLabel: getString(resultObject.title) ?? resourceId,
|
|
927
|
+
...equivalencePair(action, approvedPayloadHash),
|
|
401
928
|
sideEffectProof: compactJson({
|
|
402
929
|
...provenance,
|
|
403
930
|
provider,
|
|
@@ -414,7 +941,39 @@ function outcomeFromResult(action, result) {
|
|
|
414
941
|
ts: getString(resultObject.ts),
|
|
415
942
|
issueKey: getString(resultObject.issueKey),
|
|
416
943
|
path: getString(resultObject.path),
|
|
944
|
+
acceptedPermissions: Array.isArray(resultObject.acceptedPermissions)
|
|
945
|
+
? resultObject.acceptedPermissions
|
|
946
|
+
: undefined,
|
|
947
|
+
rateLimit: isJsonObject(resultObject.rateLimit)
|
|
948
|
+
? resultObject.rateLimit
|
|
949
|
+
: undefined,
|
|
417
950
|
workspace: getString(resultObject.workspace),
|
|
951
|
+
fileId: getString(resultObject.fileId),
|
|
952
|
+
mimeType: getString(resultObject.mimeType),
|
|
953
|
+
scope: getString(resultObject.scope),
|
|
954
|
+
appAuthorized: typeof resultObject.appAuthorized === "boolean"
|
|
955
|
+
? resultObject.appAuthorized
|
|
956
|
+
: undefined,
|
|
957
|
+
database: getString(resultObject.database),
|
|
958
|
+
role: getString(resultObject.role),
|
|
959
|
+
transactionReadOnly: typeof resultObject.transactionReadOnly === "boolean"
|
|
960
|
+
? resultObject.transactionReadOnly
|
|
961
|
+
: undefined,
|
|
962
|
+
roleLeastPrivilege: typeof resultObject.roleLeastPrivilege === "boolean"
|
|
963
|
+
? resultObject.roleLeastPrivilege
|
|
964
|
+
: undefined,
|
|
965
|
+
statementHash: getString(resultObject.statementHash),
|
|
966
|
+
predicateHash: getString(resultObject.predicateHash),
|
|
967
|
+
tables: Array.isArray(resultObject.tables)
|
|
968
|
+
? resultObject.tables
|
|
969
|
+
: undefined,
|
|
970
|
+
rowCount: typeof resultObject.rowCount === "number"
|
|
971
|
+
? resultObject.rowCount
|
|
972
|
+
: undefined,
|
|
973
|
+
fields: Array.isArray(resultObject.fields)
|
|
974
|
+
? resultObject.fields
|
|
975
|
+
: undefined,
|
|
976
|
+
rls: Array.isArray(resultObject.rls) ? resultObject.rls : undefined,
|
|
418
977
|
root: getString(resultObject.root),
|
|
419
978
|
bytes: typeof resultObject.bytes === "number" ? resultObject.bytes : undefined,
|
|
420
979
|
truncated: typeof resultObject.truncated === "boolean"
|
|
@@ -429,16 +988,33 @@ function outcomeFromResult(action, result) {
|
|
|
429
988
|
}),
|
|
430
989
|
};
|
|
431
990
|
}
|
|
432
|
-
function outcomeFromError(action, reason) {
|
|
991
|
+
function outcomeFromError(action, reason, approvedPayloadHash) {
|
|
433
992
|
return {
|
|
434
993
|
schemaVersion: "axtary.ledger_execution_outcome.v0",
|
|
435
994
|
status: "failed",
|
|
436
995
|
provider: providerFromTool(action),
|
|
437
996
|
failureReason: reason,
|
|
438
997
|
errorClass: reason.split(":", 1)[0] || "handler_failed",
|
|
998
|
+
...equivalencePair(action, approvedPayloadHash),
|
|
439
999
|
sideEffectProof: actionProvenanceProof(action),
|
|
440
1000
|
};
|
|
441
1001
|
}
|
|
1002
|
+
/**
|
|
1003
|
+
* The approval↔execution equivalence pair. Stamped only when the executed
|
|
1004
|
+
* action carried approval evidence: the hash the approval was bound to and
|
|
1005
|
+
* the hash of the payload actually executed, recomputed here from the action
|
|
1006
|
+
* so the pair is evidence, not an assertion. Export verification fails
|
|
1007
|
+
* closed if the two ever disagree or the pair is incomplete.
|
|
1008
|
+
*/
|
|
1009
|
+
function equivalencePair(action, approvedPayloadHash) {
|
|
1010
|
+
if (!approvedPayloadHash) {
|
|
1011
|
+
return {};
|
|
1012
|
+
}
|
|
1013
|
+
return {
|
|
1014
|
+
approvedPayloadHash,
|
|
1015
|
+
executedPayloadHash: hashPayload(action.capability.payload),
|
|
1016
|
+
};
|
|
1017
|
+
}
|
|
442
1018
|
function actionProvenanceProof(action) {
|
|
443
1019
|
const payload = action.capability.payload;
|
|
444
1020
|
if (action.capability.tool === "mcp.tool.call") {
|
|
@@ -456,6 +1032,12 @@ function actionProvenanceProof(action) {
|
|
|
456
1032
|
path: getString(payload.path),
|
|
457
1033
|
});
|
|
458
1034
|
}
|
|
1035
|
+
if (action.capability.tool === "drive.files.read") {
|
|
1036
|
+
return compactJson({
|
|
1037
|
+
fileId: getString(payload.fileId),
|
|
1038
|
+
scope: "https://www.googleapis.com/auth/drive.file",
|
|
1039
|
+
});
|
|
1040
|
+
}
|
|
459
1041
|
return {};
|
|
460
1042
|
}
|
|
461
1043
|
function providerFromTool(action) {
|
|
@@ -471,10 +1053,12 @@ function providerFromValue(value) {
|
|
|
471
1053
|
case "slack":
|
|
472
1054
|
case "linear":
|
|
473
1055
|
case "docs":
|
|
1056
|
+
case "drive":
|
|
474
1057
|
case "mcp":
|
|
475
1058
|
case "aws":
|
|
476
1059
|
case "gcp":
|
|
477
1060
|
case "jira":
|
|
1061
|
+
case "postgres":
|
|
478
1062
|
return provider;
|
|
479
1063
|
default:
|
|
480
1064
|
return undefined;
|
|
@@ -506,14 +1090,20 @@ function errorToReason(error) {
|
|
|
506
1090
|
function createTimings() {
|
|
507
1091
|
return {
|
|
508
1092
|
totalMs: 0,
|
|
1093
|
+
decisionMs: 0,
|
|
509
1094
|
parseMs: 0,
|
|
510
1095
|
policyMs: 0,
|
|
1096
|
+
budgetMs: 0,
|
|
511
1097
|
actionPassMs: 0,
|
|
512
1098
|
ledgerMs: 0,
|
|
513
1099
|
approvalMs: 0,
|
|
514
1100
|
handlerMs: 0,
|
|
515
1101
|
};
|
|
516
1102
|
}
|
|
1103
|
+
function completeDecisionTiming(timings, startedAt) {
|
|
1104
|
+
timings.decisionMs = elapsed(startedAt);
|
|
1105
|
+
timings.totalMs = timings.decisionMs;
|
|
1106
|
+
}
|
|
517
1107
|
function elapsed(startedAt) {
|
|
518
1108
|
return Math.round((performance.now() - startedAt) * 1000) / 1000;
|
|
519
1109
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,qBAAqB,GAYtB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAqB,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AACtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AACjD,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AA8HjD,MAAM,OAAO,kBAAkB;IACpB,MAAM,CAAqB;IAEpC,YAAY,MAA0B;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,WAAoB;QAC/B,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,IAAI,MAAwB,CAAC;QAE7B,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YACzC,MAAM,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;YAC5C,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,aAAa,EAAE,oBAAoB;gBACnC,MAAM,EAAE,WAAW;gBACnB,KAAK,EAAE;oBACL,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC;iBAC7B;aACF,CAAC;QACJ,CAAC;QAED,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC1C,IAAI,cAA8B,CAAC;QAEnC,IAAI,CAAC;YACH,MAAM,cAAc,GAClB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU;gBACtC,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAC5B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACzB,cAAc,GAAG,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YACxD,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,SAAS,CACxB,CAAC,kCAAkC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAC3D,CAAC;YACF,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YACzD,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;YAC5C,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YAErC,OAAO;gBACL,aAAa,EAAE,oBAAoB;gBACnC,MAAM,EAAE,SAAS;gBACjB,MAAM;gBACN,QAAQ;gBACR,UAAU,EAAE,IAAI;gBAChB,MAAM;gBACN,OAAO;aACR,CAAC;QACJ,CAAC;QAED,IAAI,gBAAgB,GAA6B,EAAE,CAAC;QAEpD,IAAI,cAAc,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC1E,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAE5C,IAAI,CAAC;gBACH,gBAAgB,GAAG,uBAAuB,CACxC,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;oBACjC,MAAM;oBACN,QAAQ,EAAE,cAAc;iBACzB,CAAC,CACH,CAAC;gBACF,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;gBAEhD,IAAI,gBAAgB,CAAC,QAAQ,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;oBACnE,cAAc,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;gBAChD,MAAM,QAAQ,GAAG,SAAS,CACxB,CAAC,oCAAoC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,EAC5D,cAAc,CACf,CAAC;gBACF,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;gBACzD,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;gBAC5C,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;gBAErC,OAAO;oBACL,aAAa,EAAE,oBAAoB;oBACnC,MAAM,EAAE,SAAS;oBACjB,MAAM;oBACN,QAAQ;oBACR,UAAU,EAAE,IAAI;oBAChB,MAAM;oBACN,OAAO;iBACR,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,cAAc,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACxC,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;YAC/D,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;YAC5C,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YAErC,OAAO;gBACL,aAAa,EAAE,oBAAoB;gBACnC,MAAM,EAAE,SAAS;gBACjB,MAAM;gBACN,QAAQ,EAAE,cAAc;gBACxB,UAAU,EAAE,IAAI;gBAChB,MAAM;gBACN,OAAO;aACR,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAE/D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,SAAS,CACxB,CAAC,yBAAyB,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EACnD,cAAc,CACf,CAAC;YACF,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YACzD,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;YAC5C,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YAErC,OAAO;gBACL,aAAa,EAAE,oBAAoB;gBACnC,MAAM,EAAE,SAAS;gBACjB,MAAM;gBACN,QAAQ;gBACR,UAAU,EAAE,IAAI;gBAChB,MAAM;gBACN,OAAO;aACR,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,KAAK,IAAI,EAAE,CAAC;YAC3E,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,4BAA4B,CAAC,EAAE,cAAc,CAAC,CAAC;YAC3E,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YACzD,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;YAC5C,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YAErC,OAAO;gBACL,aAAa,EAAE,oBAAoB;gBACnC,MAAM,EAAE,SAAS;gBACjB,MAAM;gBACN,QAAQ;gBACR,UAAU,EAAE,IAAI;gBAChB,MAAM;gBACN,OAAO;aACR,CAAC;QACJ,CAAC;QAED,IAAI,UAAU,GAAiC,IAAI,CAAC;QAEpD,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,mBAAmB,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBAC9C,UAAU,GAAG,MAAM,eAAe,CAAC;oBACjC,MAAM;oBACN,QAAQ,EAAE,cAAc;oBACxB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;oBAC1B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;oBAC1B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;oBAClC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;oBACxB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;oBAChC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;oBACf,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;oBACnC,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB;iBACpD,CAAC,CAAC;gBACH,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;YACtD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAG,SAAS,CACxB,CAAC,iCAAiC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,EACzD,cAAc,CACf,CAAC;gBACF,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;gBACzD,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;gBAC5C,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;gBAErC,OAAO;oBACL,aAAa,EAAE,oBAAoB;oBACnC,MAAM,EAAE,SAAS;oBACjB,MAAM;oBACN,QAAQ;oBACR,UAAU,EAAE,IAAI;oBAChB,MAAM;oBACN,OAAO;iBACR,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAC9B,MAAM,EACN,cAAc,EACd,UAAU,EAAE,MAAM,CAAC,GAAG,IAAI,IAAI,CAC/B,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAE5C,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAE3C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,OAAO,CAAC;gBACN,MAAM;gBACN,QAAQ,EAAE,cAAc;gBACxB,UAAU;gBACV,YAAY,EAAE,MAAM,CAAC,MAAM;aAC5B,CAAC,EACF,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,0BAA0B,CAC3D,CAAC;YACF,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC;gBACxD,MAAM;gBACN,QAAQ,EAAE,cAAc;gBACxB,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,IAAI,IAAI;gBAC5C,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;gBAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO;gBAC9B,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC;aAC3C,CAAC,CAAC;YACH,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC9C,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YAErC,OAAO;gBACL,aAAa,EAAE,oBAAoB;gBACnC,MAAM,EAAE,UAAU;gBAClB,MAAM;gBACN,QAAQ,EAAE,cAAc;gBACxB,UAAU;gBACV,MAAM;gBACN,eAAe;gBACf,MAAM;gBACN,OAAO;aACR,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC;gBACxD,MAAM;gBACN,QAAQ,EAAE,cAAc;gBACxB,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,IAAI,IAAI;gBAC5C,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;gBAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO;gBAC9B,OAAO,EAAE,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC;aAC1C,CAAC,CAAC;YACH,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC9C,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YAErC,OAAO;gBACL,aAAa,EAAE,oBAAoB;gBACnC,MAAM,EAAE,QAAQ;gBAChB,MAAM;gBACN,QAAQ,EAAE,cAAc;gBACxB,UAAU;gBACV,MAAM;gBACN,eAAe;gBACf,KAAK,EAAE;oBACL,MAAM;iBACP;gBACD,OAAO;aACR,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,WAAoB;QAClC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,IAAI,MAAwB,CAAC;QAE7B,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YACzC,MAAM,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;YAC5C,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,aAAa,EAAE,oBAAoB;gBACnC,MAAM,EAAE,WAAW;gBACnB,KAAK,EAAE;oBACL,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC;iBAC7B;aACF,CAAC;QACJ,CAAC;QAED,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC1C,IAAI,cAA8B,CAAC;QAEnC,IAAI,CAAC;YACH,MAAM,cAAc,GAClB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU;gBACtC,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAC5B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACzB,cAAc,GAAG,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YACxD,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;YAC5C,cAAc,GAAG,SAAS,CAAC;gBACzB,kCAAkC,aAAa,CAAC,KAAK,CAAC,EAAE;aACzD,CAAC,CAAC;QACL,CAAC;QAED,IACE,cAAc,CAAC,QAAQ,KAAK,OAAO;YACnC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU;YACvB,IAAI,CAAC,MAAM,CAAC,sBAAsB,KAAK,IAAI,EAC3C,CAAC;YACD,cAAc,GAAG,SAAS,CAAC,CAAC,4BAA4B,CAAC,EAAE,cAAc,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,UAAU,GAAiC,IAAI,CAAC;QAEpD,IAAI,cAAc,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAClE,IAAI,CAAC;gBACH,MAAM,mBAAmB,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBAC9C,UAAU,GAAG,MAAM,eAAe,CAAC;oBACjC,MAAM;oBACN,QAAQ,EAAE,cAAc;oBACxB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;oBAC1B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;oBAC1B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;oBAClC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;oBACxB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;oBAChC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;iBAChB,CAAC,CAAC;gBACH,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;YACtD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,cAAc,GAAG,SAAS,CACxB,CAAC,iCAAiC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,EACzD,cAAc,CACf,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAC9B,MAAM,EACN,cAAc,EACd,UAAU,EAAE,MAAM,CAAC,GAAG,IAAI,IAAI,CAC/B,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAC5C,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAErC,MAAM,MAAM,GACV,cAAc,CAAC,QAAQ,KAAK,OAAO;YACjC,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,cAAc,CAAC,QAAQ,KAAK,SAAS;gBACrC,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,SAAS,CAAC;QAElB,OAAO;YACL,aAAa,EAAE,oBAAoB;YACnC,MAAM;YACN,MAAM;YACN,QAAQ,EAAE,cAAc;YACxB,UAAU;YACV,MAAM;YACN,OAAO;SACR,CAAC;IACJ,CAAC;IAEO,MAAM,CACZ,MAAwB,EACxB,QAAwB,EACxB,YAA2B;QAE3B,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;YACvC,MAAM;YACN,QAAQ;YACR,YAAY;YACZ,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;SACvB,CAAC,CAAC;IACL,CAAC;IAEO,sBAAsB,CAAC,KAO9B;QACC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC;YAC/C,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,gBAAgB,EAAE,KAAK,CAAC,OAAO;YAC/B,aAAa,EAAE,KAAK,CAAC,aAAa;SACnC,CAAC,CAAC;IACL,CAAC;IAEO,GAAG;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;IAC3C,CAAC;CACF;AAED,MAAM,UAAU,kBAAkB,CAAC,MAA0B;IAC3D,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,SAAS,CAChB,OAAiB,EACjB,gBAAiC;IAEjC,OAAO;QACL,QAAQ,EAAE,MAAM;QAChB,OAAO;QACP,MAAM,EAAE;YACN,UAAU,EAAE,iBAAiB;YAC7B,OAAO,EAAE,oBAAoB;YAC7B,eAAe,EAAE,IAAI;YACrB,aAAa,EAAE,IAAI;SACpB;QACD,WAAW,EAAE;YACX,gBAAgB,EACd,gBAAgB,EAAE,WAAW,CAAC,gBAAgB,IAAI,0BAA0B;YAC9E,eAAe,EAAE,gBAAgB,EAAE,WAAW,CAAC,eAAe,IAAI,CAAC;YACnE,YAAY,EAAE,gBAAgB,EAAE,WAAW,CAAC,YAAY,IAAI,EAAE;SAC/D;KACF,CAAC;AACJ,CAAC;AAOD,SAAS,uBAAuB,CAAC,MAA2B;IAC1D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,eAAe,IAAI,MAAM,IAAI,MAAM,CAAC,aAAa,KAAK,yBAAyB,EAAE,CAAC;QACpF,OAAO;YACL,gBAAgB,EAAE,MAAM;SACzB,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;QACrB,OAAO;YACL,QAAQ,EAAE,MAAM;SACjB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;KAC1C,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,QAAwB;IAC7C,OAAO;QACL,GAAG,QAAQ;QACX,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;KACnD,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,MAAwB,EACxB,MAAiB;IAEjB,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtF,MAAM,QAAQ,GACZ,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;QAC1B,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC;QACjC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC;QAC3B,CAAC,OAAO,YAAY,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACtF,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,UAAU,GACd,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC;QAC5B,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC;QAChC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC;QAC/B,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC;QAC9B,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC;QACjC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC;QAC9B,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC9B,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAEpC,OAAO;QACL,aAAa,EAAE,oCAAoC;QACnD,MAAM,EAAE,WAAW;QACnB,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,UAAU;QACV,aAAa,EAAE,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,UAAU;QAC1D,eAAe,EAAE,WAAW,CAAC;YAC3B,GAAG,UAAU;YACb,QAAQ;YACR,IAAI,EAAE,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC;YAClC,EAAE,EAAE,QAAQ;YACZ,GAAG,EAAE,SAAS;YACd,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC;YACvE,UAAU;YACV,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC;YAClD,MAAM,EACJ,OAAO,YAAY,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YAC3E,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC;YACtC,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC;YAC5C,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC;YACxC,EAAE,EAAE,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,QAAQ,EAAE,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC;YAC1C,IAAI,EAAE,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC;YAClC,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC;YAC5C,IAAI,EAAE,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC;YAClC,KAAK,EACH,OAAO,YAAY,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACzE,SAAS,EACP,OAAO,YAAY,CAAC,SAAS,KAAK,SAAS;gBACzC,CAAC,CAAC,YAAY,CAAC,SAAS;gBACxB,CAAC,CAAC,SAAS;YACf,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;gBAC9C,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM;gBAC7B,CAAC,CAAC,SAAS;YACb,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;gBAC9C,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM;gBAC7B,CAAC,CAAC,SAAS;SACd,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,MAAwB,EACxB,MAAc;IAEd,OAAO;QACL,aAAa,EAAE,oCAAoC;QACnD,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC;QAClC,aAAa,EAAE,MAAM;QACrB,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,gBAAgB;QACvD,eAAe,EAAE,qBAAqB,CAAC,MAAM,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAAwB;IAExB,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;IAE1C,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAC/C,OAAO,WAAW,CAAC;YACjB,cAAc,EACZ,MAAM,CAAC,cAAc,EAAE,cAAc,IAAI,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC;YAC5E,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;YACrC,iBAAiB,EAAE,MAAM,CAAC,cAAc,EAAE,aAAa;YACvD,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,cAAc;SACtD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,OAAO,WAAW,CAAC;YACjB,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;YACvC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;YAC/B,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAwB;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvD,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,MAAM,QAAQ,GACZ,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;QACpD,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAC7B,CAAC,CAAC,KAAK,CAAC;IAEZ,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK,CAAC;QACX,KAAK,KAAK,CAAC;QACX,KAAK,KAAK,CAAC;QACX,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC;QAClB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAClB,KAA4C;IAE5C,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAC1B,CAAC,KAAK,EAAgC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAChE,CACF,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAA4B;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC;AAED,SAAS,YAAY,CAAC,KAA4B;IAChD,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAE3B,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAgB;IACpC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;AAClE,CAAC;AAED,SAAS,aAAa;IACpB,OAAO;QACL,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,CAAC;QACX,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,CAAC;QACb,SAAS,EAAE,CAAC;KACb,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,SAAiB;IAChC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AACnE,CAAC;AAED,SAAS,WAAW,CAClB,KAA+B,EAC/B,SAAiB;IAEjB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QAClD,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,SAAS,IAAI,CAAC,CAAC,CAAC;QAC5D,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAC9B,CAAC,MAAM,EAAE,EAAE;YACT,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;YACR,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@axtary/proxy",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Local fail-closed runtime proxy for Axtary policy, ActionPass issuance, and ledger recording.",
|
|
6
6
|
"type": "module",
|
|
@@ -40,8 +40,8 @@
|
|
|
40
40
|
},
|
|
41
41
|
"types": "./dist/index.d.ts",
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@axtary/actionpass": "^0.
|
|
44
|
-
"@axtary/ledger": "^0.
|
|
45
|
-
"@axtary/policy": "^0.
|
|
43
|
+
"@axtary/actionpass": "^0.3.0",
|
|
44
|
+
"@axtary/ledger": "^0.3.0",
|
|
45
|
+
"@axtary/policy": "^0.3.0"
|
|
46
46
|
}
|
|
47
47
|
}
|