@axtary/proxy 0.1.0 → 0.2.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 +557 -23
- 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":"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"}
|
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, issueActionPass, issueActionPassV1, issueActionPassV2, parseNormalizedAction, } 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);
|
|
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,16 +412,38 @@ 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,
|
|
@@ -185,7 +451,11 @@ export class AxtaryProxyRuntime {
|
|
|
185
451
|
correlationId: ledger.record.id,
|
|
186
452
|
traceId: ledger.record.traceId,
|
|
187
453
|
outcome: outcomeFromResult(action, result),
|
|
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,6 +472,9 @@ 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,
|
|
@@ -209,6 +482,7 @@ export class AxtaryProxyRuntime {
|
|
|
209
482
|
correlationId: ledger.record.id,
|
|
210
483
|
traceId: ledger.record.traceId,
|
|
211
484
|
outcome: outcomeFromError(action, reason),
|
|
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,6 +756,8 @@ 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
|
}
|
|
350
763
|
function normalizeApprovalResult(result) {
|
|
@@ -366,13 +779,87 @@ function normalizeApprovalResult(result) {
|
|
|
366
779
|
approvalArtifact: result.approvalArtifact,
|
|
367
780
|
};
|
|
368
781
|
}
|
|
369
|
-
function approveStepUp(decision) {
|
|
782
|
+
function approveStepUp(decision, evidence) {
|
|
783
|
+
const requiredRoles = decision.obligations?.requiredApproverRoles ?? [];
|
|
784
|
+
const actualRoles = evidence.approval?.approverRoles ??
|
|
785
|
+
evidence.approvalArtifact?.approverRoles ??
|
|
786
|
+
[];
|
|
787
|
+
const missingRole = requiredRoles.find((role) => !actualRoles.includes(role));
|
|
788
|
+
if (missingRole) {
|
|
789
|
+
return proxyDeny([`required_approver_role_missing:${missingRole}`], decision);
|
|
790
|
+
}
|
|
370
791
|
return {
|
|
371
792
|
...decision,
|
|
372
793
|
decision: "allow",
|
|
373
794
|
reasons: [...decision.reasons, "step_up_approved"],
|
|
374
795
|
};
|
|
375
796
|
}
|
|
797
|
+
function rateLimitKey(ruleId, scope, action) {
|
|
798
|
+
const value = scope === "actor"
|
|
799
|
+
? action.actor.agentId
|
|
800
|
+
: scope === "tool"
|
|
801
|
+
? action.capability.tool
|
|
802
|
+
: scope === "resource"
|
|
803
|
+
? action.capability.resource
|
|
804
|
+
: action.actor.tenant ?? "tenant:unknown";
|
|
805
|
+
return `${ruleId}:${scope}:${value}`;
|
|
806
|
+
}
|
|
807
|
+
function normalizeProxyBudgetConfig(input) {
|
|
808
|
+
const config = {
|
|
809
|
+
enabled: input?.enabled ?? false,
|
|
810
|
+
scope: input?.scope ?? "tenant",
|
|
811
|
+
limits: normalizeBudgetAmount(input?.limits ?? {}),
|
|
812
|
+
costs: Object.fromEntries(Object.entries(input?.costs ?? {}).map(([tool, cost]) => [
|
|
813
|
+
tool,
|
|
814
|
+
normalizeBudgetAmount(cost),
|
|
815
|
+
])),
|
|
816
|
+
};
|
|
817
|
+
if (config.enabled && !config.costs["*"]) {
|
|
818
|
+
throw new Error("budget_wildcard_cost_required");
|
|
819
|
+
}
|
|
820
|
+
if (config.enabled) {
|
|
821
|
+
for (const cost of Object.values(config.costs)) {
|
|
822
|
+
for (const dimension of Object.keys(cost)) {
|
|
823
|
+
if (config.limits[dimension] === undefined) {
|
|
824
|
+
throw new Error(`budget_limit_missing:${dimension}`);
|
|
825
|
+
}
|
|
826
|
+
}
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
return config;
|
|
830
|
+
}
|
|
831
|
+
function normalizeBudgetAmount(input) {
|
|
832
|
+
const amount = BudgetAmountSchema.parse(input);
|
|
833
|
+
return Object.fromEntries(Object.entries(amount).sort(([left], [right]) => left.localeCompare(right)));
|
|
834
|
+
}
|
|
835
|
+
function addBudgetAmounts(left, right) {
|
|
836
|
+
const dimensions = new Set([...Object.keys(left), ...Object.keys(right)]);
|
|
837
|
+
return Object.fromEntries([...dimensions]
|
|
838
|
+
.sort((a, b) => a.localeCompare(b))
|
|
839
|
+
.map((dimension) => [
|
|
840
|
+
dimension,
|
|
841
|
+
(left[dimension] ?? 0) + (right[dimension] ?? 0),
|
|
842
|
+
])
|
|
843
|
+
.filter(([, value]) => value !== 0));
|
|
844
|
+
}
|
|
845
|
+
function actionWithBudget(action, reservation) {
|
|
846
|
+
const budget = {
|
|
847
|
+
reservationId: reservation.reservationId,
|
|
848
|
+
cost: reservation.cost,
|
|
849
|
+
limit: reservation.limit,
|
|
850
|
+
commitStatus: "pending",
|
|
851
|
+
};
|
|
852
|
+
return parseNormalizedAction({
|
|
853
|
+
...action,
|
|
854
|
+
budget,
|
|
855
|
+
});
|
|
856
|
+
}
|
|
857
|
+
function actionWithProvenance(action, provenanceInput) {
|
|
858
|
+
return parseNormalizedAction({
|
|
859
|
+
...action,
|
|
860
|
+
provenance: ActionProvenanceSchema.parse(provenanceInput),
|
|
861
|
+
});
|
|
862
|
+
}
|
|
376
863
|
function outcomeFromResult(action, result) {
|
|
377
864
|
const resultObject = isJsonObject(result) ? result : {};
|
|
378
865
|
const provider = providerFromValue(resultObject.provider) ?? providerFromTool(action);
|
|
@@ -387,6 +874,7 @@ function outcomeFromResult(action, result) {
|
|
|
387
874
|
getString(resultObject.channel) ??
|
|
388
875
|
getString(resultObject.bucket) ??
|
|
389
876
|
getString(resultObject.projectId) ??
|
|
877
|
+
getString(resultObject.fileId) ??
|
|
390
878
|
getString(resultObject.branch) ??
|
|
391
879
|
getString(provenance.toolName) ??
|
|
392
880
|
getString(resultObject.workspace);
|
|
@@ -414,7 +902,39 @@ function outcomeFromResult(action, result) {
|
|
|
414
902
|
ts: getString(resultObject.ts),
|
|
415
903
|
issueKey: getString(resultObject.issueKey),
|
|
416
904
|
path: getString(resultObject.path),
|
|
905
|
+
acceptedPermissions: Array.isArray(resultObject.acceptedPermissions)
|
|
906
|
+
? resultObject.acceptedPermissions
|
|
907
|
+
: undefined,
|
|
908
|
+
rateLimit: isJsonObject(resultObject.rateLimit)
|
|
909
|
+
? resultObject.rateLimit
|
|
910
|
+
: undefined,
|
|
417
911
|
workspace: getString(resultObject.workspace),
|
|
912
|
+
fileId: getString(resultObject.fileId),
|
|
913
|
+
mimeType: getString(resultObject.mimeType),
|
|
914
|
+
scope: getString(resultObject.scope),
|
|
915
|
+
appAuthorized: typeof resultObject.appAuthorized === "boolean"
|
|
916
|
+
? resultObject.appAuthorized
|
|
917
|
+
: undefined,
|
|
918
|
+
database: getString(resultObject.database),
|
|
919
|
+
role: getString(resultObject.role),
|
|
920
|
+
transactionReadOnly: typeof resultObject.transactionReadOnly === "boolean"
|
|
921
|
+
? resultObject.transactionReadOnly
|
|
922
|
+
: undefined,
|
|
923
|
+
roleLeastPrivilege: typeof resultObject.roleLeastPrivilege === "boolean"
|
|
924
|
+
? resultObject.roleLeastPrivilege
|
|
925
|
+
: undefined,
|
|
926
|
+
statementHash: getString(resultObject.statementHash),
|
|
927
|
+
predicateHash: getString(resultObject.predicateHash),
|
|
928
|
+
tables: Array.isArray(resultObject.tables)
|
|
929
|
+
? resultObject.tables
|
|
930
|
+
: undefined,
|
|
931
|
+
rowCount: typeof resultObject.rowCount === "number"
|
|
932
|
+
? resultObject.rowCount
|
|
933
|
+
: undefined,
|
|
934
|
+
fields: Array.isArray(resultObject.fields)
|
|
935
|
+
? resultObject.fields
|
|
936
|
+
: undefined,
|
|
937
|
+
rls: Array.isArray(resultObject.rls) ? resultObject.rls : undefined,
|
|
418
938
|
root: getString(resultObject.root),
|
|
419
939
|
bytes: typeof resultObject.bytes === "number" ? resultObject.bytes : undefined,
|
|
420
940
|
truncated: typeof resultObject.truncated === "boolean"
|
|
@@ -456,6 +976,12 @@ function actionProvenanceProof(action) {
|
|
|
456
976
|
path: getString(payload.path),
|
|
457
977
|
});
|
|
458
978
|
}
|
|
979
|
+
if (action.capability.tool === "drive.files.read") {
|
|
980
|
+
return compactJson({
|
|
981
|
+
fileId: getString(payload.fileId),
|
|
982
|
+
scope: "https://www.googleapis.com/auth/drive.file",
|
|
983
|
+
});
|
|
984
|
+
}
|
|
459
985
|
return {};
|
|
460
986
|
}
|
|
461
987
|
function providerFromTool(action) {
|
|
@@ -471,10 +997,12 @@ function providerFromValue(value) {
|
|
|
471
997
|
case "slack":
|
|
472
998
|
case "linear":
|
|
473
999
|
case "docs":
|
|
1000
|
+
case "drive":
|
|
474
1001
|
case "mcp":
|
|
475
1002
|
case "aws":
|
|
476
1003
|
case "gcp":
|
|
477
1004
|
case "jira":
|
|
1005
|
+
case "postgres":
|
|
478
1006
|
return provider;
|
|
479
1007
|
default:
|
|
480
1008
|
return undefined;
|
|
@@ -506,14 +1034,20 @@ function errorToReason(error) {
|
|
|
506
1034
|
function createTimings() {
|
|
507
1035
|
return {
|
|
508
1036
|
totalMs: 0,
|
|
1037
|
+
decisionMs: 0,
|
|
509
1038
|
parseMs: 0,
|
|
510
1039
|
policyMs: 0,
|
|
1040
|
+
budgetMs: 0,
|
|
511
1041
|
actionPassMs: 0,
|
|
512
1042
|
ledgerMs: 0,
|
|
513
1043
|
approvalMs: 0,
|
|
514
1044
|
handlerMs: 0,
|
|
515
1045
|
};
|
|
516
1046
|
}
|
|
1047
|
+
function completeDecisionTiming(timings, startedAt) {
|
|
1048
|
+
timings.decisionMs = elapsed(startedAt);
|
|
1049
|
+
timings.totalMs = timings.decisionMs;
|
|
1050
|
+
}
|
|
517
1051
|
function elapsed(startedAt) {
|
|
518
1052
|
return Math.round((performance.now() - startedAt) * 1000) / 1000;
|
|
519
1053
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
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.2.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.2.0",
|
|
44
|
+
"@axtary/ledger": "^0.2.0",
|
|
45
|
+
"@axtary/policy": "^0.2.0"
|
|
46
46
|
}
|
|
47
47
|
}
|