@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 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, ActionPass issuance, ledger append, handler execution, and total latency.
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 { LedgerAppendResult, LocalJsonlLedger } from "@axtary/ledger";
3
- import { type PolicyConfig } from "@axtary/policy";
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 type ProxyLedger = Pick<LocalJsonlLedger, "appendDecision" | "appendExecutionOutcome">;
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?: Partial<PolicyConfig> | (() => Partial<PolicyConfig> | Promise<Partial<PolicyConfig>>);
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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 { evaluatePolicy } from "@axtary/policy";
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
- policyDecision = evaluatePolicy(action, resolvedPolicy);
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.totalMs = elapsed(startedAt);
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.totalMs = elapsed(startedAt);
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.totalMs = elapsed(startedAt);
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.totalMs = elapsed(startedAt);
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.totalMs = elapsed(startedAt);
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 actionPassStartedAt = performance.now();
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.totalMs = elapsed(startedAt);
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
- const ledger = await this.append(action, policyDecision, actionPass?.claims.jti ?? null);
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
- policyDecision = evaluatePolicy(action, resolvedPolicy);
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 actionPassStartedAt = performance.now();
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.totalMs = elapsed(startedAt);
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.1.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.1.0",
44
- "@axtary/ledger": "^0.1.0",
45
- "@axtary/policy": "^0.1.0"
43
+ "@axtary/actionpass": "^0.2.0",
44
+ "@axtary/ledger": "^0.2.0",
45
+ "@axtary/policy": "^0.2.0"
46
46
  }
47
47
  }