@decionis/agent-safe-pipeline 0.1.3-rc.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +318 -16
  2. package/dist/Index.d.ts +1 -0
  3. package/dist/Index.d.ts.map +1 -1
  4. package/dist/Index.js +1 -0
  5. package/dist/Index.js.map +1 -1
  6. package/dist/approval/PresenceApprovalCoordinator.d.ts +68 -5
  7. package/dist/approval/PresenceApprovalCoordinator.d.ts.map +1 -1
  8. package/dist/approval/PresenceApprovalCoordinator.js +304 -37
  9. package/dist/approval/PresenceApprovalCoordinator.js.map +1 -1
  10. package/dist/audit/AuditRecorder.d.ts +122 -0
  11. package/dist/audit/AuditRecorder.d.ts.map +1 -0
  12. package/dist/audit/AuditRecorder.js +312 -0
  13. package/dist/audit/AuditRecorder.js.map +1 -0
  14. package/dist/decision/DecionisGate.d.ts +91 -2
  15. package/dist/decision/DecionisGate.d.ts.map +1 -1
  16. package/dist/decision/DecionisGate.js +793 -44
  17. package/dist/decision/DecionisGate.js.map +1 -1
  18. package/dist/decision/DecisionAuthority.d.ts +50 -1
  19. package/dist/decision/DecisionAuthority.d.ts.map +1 -1
  20. package/dist/decision/DecisionAuthority.js.map +1 -1
  21. package/dist/decision/FixtureDecisionAuthority.d.ts +27 -1
  22. package/dist/decision/FixtureDecisionAuthority.d.ts.map +1 -1
  23. package/dist/decision/FixtureDecisionAuthority.js +47 -0
  24. package/dist/decision/FixtureDecisionAuthority.js.map +1 -1
  25. package/dist/decision/ImmutableGateDecision.d.ts.map +1 -1
  26. package/dist/decision/ImmutableGateDecision.js +18 -0
  27. package/dist/decision/ImmutableGateDecision.js.map +1 -1
  28. package/dist/execution/ActionRegistry.d.ts +37 -0
  29. package/dist/execution/ActionRegistry.d.ts.map +1 -1
  30. package/dist/execution/ActionRegistry.js +75 -1
  31. package/dist/execution/ActionRegistry.js.map +1 -1
  32. package/dist/execution/AuthorizationVerifier.d.ts +29 -0
  33. package/dist/execution/AuthorizationVerifier.d.ts.map +1 -1
  34. package/dist/execution/AuthorizationVerifier.js +126 -25
  35. package/dist/execution/AuthorizationVerifier.js.map +1 -1
  36. package/dist/execution/SafeExecutor.d.ts +72 -7
  37. package/dist/execution/SafeExecutor.d.ts.map +1 -1
  38. package/dist/execution/SafeExecutor.js +253 -17
  39. package/dist/execution/SafeExecutor.js.map +1 -1
  40. package/dist/intent/CanonicalIntentHasher.d.ts +1 -1
  41. package/dist/intent/CanonicalIntentHasher.d.ts.map +1 -1
  42. package/dist/intent/CanonicalIntentHasher.js +6 -2
  43. package/dist/intent/CanonicalIntentHasher.js.map +1 -1
  44. package/dist/intent/ExecutionIntent.d.ts +14 -2
  45. package/dist/intent/ExecutionIntent.d.ts.map +1 -1
  46. package/dist/intent/ExecutionIntent.js +7 -0
  47. package/dist/intent/ExecutionIntent.js.map +1 -1
  48. package/dist/intent/IntentCapture.d.ts +5 -0
  49. package/dist/intent/IntentCapture.d.ts.map +1 -1
  50. package/dist/intent/IntentCapture.js +12 -1
  51. package/dist/intent/IntentCapture.js.map +1 -1
  52. package/dist/shadow/ShadowPipeline.d.ts +75 -5
  53. package/dist/shadow/ShadowPipeline.d.ts.map +1 -1
  54. package/dist/shadow/ShadowPipeline.js +157 -7
  55. package/dist/shadow/ShadowPipeline.js.map +1 -1
  56. package/dist/testing/Index.d.ts +12 -0
  57. package/dist/testing/Index.d.ts.map +1 -0
  58. package/dist/testing/Index.js +12 -0
  59. package/dist/testing/Index.js.map +1 -0
  60. package/dist/testing/LocalAuthority.d.ts +203 -0
  61. package/dist/testing/LocalAuthority.d.ts.map +1 -0
  62. package/dist/testing/LocalAuthority.js +799 -0
  63. package/dist/testing/LocalAuthority.js.map +1 -0
  64. package/dist/testing/LocalPresence.d.ts +210 -0
  65. package/dist/testing/LocalPresence.d.ts.map +1 -0
  66. package/dist/testing/LocalPresence.js +473 -0
  67. package/dist/testing/LocalPresence.js.map +1 -0
  68. package/package.json +41 -5
@@ -1,23 +1,57 @@
1
+ import { createHash } from "node:crypto";
1
2
  import { FailClosedDecision } from "../decision/DecisionAuthority.js";
3
+ const MIN_PRESENCE_TTL_SECONDS = 30;
4
+ const MAX_PRESENCE_TTL_SECONDS = 600;
5
+ const DEFAULT_MAX_ATTEMPTS = 20;
6
+ const DEFAULT_INITIAL_DELAY_MS = 250;
7
+ const DEFAULT_MAX_DELAY_MS = 2_000;
8
+ const DEFAULT_DEADLINE_MS = 60_000;
9
+ const MAX_ATTEMPTS_LIMIT = 100;
10
+ const MAX_DELAY_LIMIT_MS = 60_000;
11
+ const MAX_DEADLINE_LIMIT_MS = 300_000;
12
+ /**
13
+ * Coordinates a Presence human-approval flow and deliberately returns the
14
+ * terminal receipt to Decionis for a fresh authorization decision.
15
+ *
16
+ * A Presence PROCEED result is evidence, not executable authority.
17
+ */
2
18
  export class PresenceApprovalCoordinator {
3
19
  presence;
4
20
  authority;
5
21
  organization;
6
22
  approverId;
7
- constructor(presence, authority, organization, approverId) {
23
+ polling;
24
+ audit;
25
+ requirements;
26
+ ttlSeconds;
27
+ constructor(presence, authority, organization, approverId, options = {}) {
8
28
  this.presence = presence;
9
29
  this.authority = authority;
10
30
  this.organization = organization;
11
31
  this.approverId = approverId;
32
+ this.polling = PresenceApprovalCoordinator.pollingConfiguration(options);
33
+ this.audit = options.audit;
34
+ this.requirements = options.requirements;
35
+ if (options.ttlSeconds !== undefined &&
36
+ (!Number.isInteger(options.ttlSeconds) ||
37
+ options.ttlSeconds < MIN_PRESENCE_TTL_SECONDS ||
38
+ options.ttlSeconds > MAX_PRESENCE_TTL_SECONDS)) {
39
+ throw new Error("PRESENCE_TTL_INVALID");
40
+ }
41
+ this.ttlSeconds = options.ttlSeconds;
12
42
  }
13
43
  async request(captured) {
14
44
  try {
45
+ // `intentHash` is the structural binding Presence seals into the envelope
46
+ // when the SDK supports it; the display field below stays the human copy.
47
+ const action = {
48
+ intent: captured.intent.action,
49
+ target: captured.intent.target,
50
+ surface: "agent_safe_pipeline",
51
+ intentHash: captured.intentHash,
52
+ };
15
53
  const result = await this.presence.gate({
16
- action: {
17
- intent: captured.intent.action,
18
- target: captured.intent.target,
19
- surface: "agent_safe_pipeline",
20
- },
54
+ action,
21
55
  agent: {
22
56
  id: captured.intent.actor.id,
23
57
  display: captured.intent.actor.id,
@@ -34,63 +68,205 @@ export class PresenceApprovalCoordinator {
34
68
  { key: "intent_hash", label: "Intent hash", value: captured.intentHash },
35
69
  ],
36
70
  },
37
- }, `presence:${captured.intent.idempotencyKey}`);
38
- if (PresenceApprovalCoordinator.verdictOf(result) === null) {
39
- throw new Error("PRESENCE_RESPONSE_INVALID");
71
+ ...(this.requirements === undefined ? {} : { requirements: this.requirements }),
72
+ ...(this.ttlSeconds === undefined ? {} : { ttlSeconds: this.ttlSeconds }),
73
+ }, PresenceApprovalCoordinator.presenceIdempotencyKey(captured, this.approverId));
74
+ const verdict = this.verdictOf(result);
75
+ if (verdict === null || (verdict === "HUMAN_REQUIRED" && this.requestIdOf(result) === null)) {
76
+ throw new Error("Presence returned an invalid gate response");
40
77
  }
78
+ await this.recordPresence(captured, verdict === "HUMAN_REQUIRED" ? "PRESENCE_ESCALATED" : "PRESENCE_RESOLVED", verdict);
41
79
  return result;
42
80
  }
43
81
  catch {
44
82
  throw new Error("PRESENCE_REQUEST_FAILED");
45
83
  }
46
84
  }
47
- async resolveAndReauthorize(captured, result) {
48
- let terminal;
49
- try {
50
- terminal =
51
- result.verdict === "HUMAN_REQUIRED" && result.request_id !== undefined
52
- ? await this.presence.outcome(result.request_id)
53
- : result;
85
+ async resolveAndReauthorize(captured, result, options = {}) {
86
+ const initialBoundaryFailure = this.boundaryFailure(captured, options.signal);
87
+ if (initialBoundaryFailure !== null) {
88
+ return FailClosedDecision.create(captured.intentHash, initialBoundaryFailure);
54
89
  }
55
- catch {
56
- return FailClosedDecision.create(captured.intentHash, "PRESENCE_UNAVAILABLE");
90
+ const resolution = await this.terminalResult(captured, result, options.signal);
91
+ if (resolution.reasonCode !== undefined) {
92
+ return FailClosedDecision.create(captured.intentHash, resolution.reasonCode);
57
93
  }
58
- const verdict = PresenceApprovalCoordinator.verdictOf(terminal);
94
+ const verdict = this.verdictOf(resolution.result);
59
95
  if (verdict === null) {
60
96
  return FailClosedDecision.create(captured.intentHash, "PRESENCE_RESPONSE_INVALID");
61
97
  }
62
98
  if (verdict !== "PROCEED") {
99
+ await this.recordPresence(captured, "PRESENCE_RESOLVED", verdict);
63
100
  return FailClosedDecision.create(captured.intentHash, `PRESENCE_${verdict}`);
64
101
  }
65
- const evidence = PresenceApprovalCoordinator.evidenceOf(terminal);
102
+ const evidence = this.evidenceOf(resolution.result);
66
103
  if (evidence === null) {
67
104
  return FailClosedDecision.create(captured.intentHash, "PRESENCE_PROOF_MISSING");
68
105
  }
106
+ await this.recordPresence(captured, "PRESENCE_RESOLVED", verdict, evidence.receiptDossierId);
107
+ const preAuthorizationFailure = this.boundaryFailure(captured, options.signal);
108
+ if (preAuthorizationFailure !== null) {
109
+ return FailClosedDecision.create(captured.intentHash, preAuthorizationFailure);
110
+ }
111
+ const evaluation = await this.evaluateAuthority(captured, evidence, options.signal);
112
+ if (evaluation.reasonCode !== undefined) {
113
+ return FailClosedDecision.create(captured.intentHash, evaluation.reasonCode);
114
+ }
115
+ const postAuthorizationFailure = this.boundaryFailure(captured, options.signal);
116
+ return postAuthorizationFailure === null
117
+ ? evaluation.value
118
+ : FailClosedDecision.create(captured.intentHash, postAuthorizationFailure);
119
+ }
120
+ async terminalResult(captured, initialResult, signal) {
121
+ const initialVerdict = this.verdictOf(initialResult);
122
+ if (initialVerdict === null) {
123
+ return { reasonCode: "PRESENCE_RESPONSE_INVALID" };
124
+ }
125
+ if (initialVerdict !== "HUMAN_REQUIRED") {
126
+ return { result: initialResult };
127
+ }
128
+ const requestId = this.requestIdOf(initialResult);
129
+ if (requestId === null) {
130
+ return { reasonCode: "PRESENCE_RESPONSE_INVALID" };
131
+ }
132
+ const startedAt = this.clockNow();
133
+ const intentExpiresAt = Date.parse(captured.intent.expiresAt);
134
+ if (startedAt === null || !Number.isFinite(intentExpiresAt)) {
135
+ return { reasonCode: "PRESENCE_CLOCK_INVALID" };
136
+ }
137
+ const pollingDeadline = Math.min(startedAt + this.polling.deadlineMs, intentExpiresAt);
138
+ const deadlineReason = intentExpiresAt <= startedAt + this.polling.deadlineMs
139
+ ? "PRESENCE_INTENT_EXPIRED"
140
+ : "PRESENCE_TIMEOUT";
141
+ for (let attempt = 1; attempt <= this.polling.maxAttempts; attempt += 1) {
142
+ const boundaryFailure = this.pollingBoundaryFailure(captured, pollingDeadline, signal);
143
+ if (boundaryFailure !== null) {
144
+ return { reasonCode: boundaryFailure };
145
+ }
146
+ const lookup = await this.lookupOutcome(requestId, pollingDeadline, deadlineReason, signal);
147
+ if (lookup.reasonCode !== undefined) {
148
+ return { reasonCode: lookup.reasonCode };
149
+ }
150
+ const verdict = this.verdictOf(lookup.value);
151
+ if (verdict === null) {
152
+ return { reasonCode: "PRESENCE_RESPONSE_INVALID" };
153
+ }
154
+ if (verdict !== "HUMAN_REQUIRED") {
155
+ if (verdict === "PROCEED" && this.requestIdOf(lookup.value) !== requestId) {
156
+ return { reasonCode: "PRESENCE_RESPONSE_INVALID" };
157
+ }
158
+ return { result: lookup.value };
159
+ }
160
+ if (this.requestIdOf(lookup.value) !== requestId) {
161
+ return { reasonCode: "PRESENCE_RESPONSE_INVALID" };
162
+ }
163
+ if (attempt === this.polling.maxAttempts) {
164
+ return { reasonCode: "PRESENCE_TIMEOUT" };
165
+ }
166
+ const delayMs = this.backoffDelay(attempt);
167
+ if (delayMs === null) {
168
+ return { reasonCode: "PRESENCE_POLLING_RANDOM_INVALID" };
169
+ }
170
+ const now = this.clockNow();
171
+ if (now === null) {
172
+ return { reasonCode: "PRESENCE_CLOCK_INVALID" };
173
+ }
174
+ const remainingMs = pollingDeadline - now;
175
+ if (remainingMs <= 0) {
176
+ const reasonCode = this.pollingBoundaryFailure(captured, pollingDeadline, signal);
177
+ return { reasonCode: reasonCode ?? "PRESENCE_TIMEOUT" };
178
+ }
179
+ const backoff = await this.boundedOperation(async () => await this.polling.sleep(Math.min(delayMs, remainingMs), signal), remainingMs, deadlineReason, "PRESENCE_UNAVAILABLE", signal);
180
+ if (backoff.reasonCode !== undefined) {
181
+ return { reasonCode: backoff.reasonCode };
182
+ }
183
+ }
184
+ return { reasonCode: "PRESENCE_TIMEOUT" };
185
+ }
186
+ async lookupOutcome(requestId, pollingDeadline, deadlineReason, signal) {
187
+ const now = this.clockNow();
188
+ if (now === null)
189
+ return { reasonCode: "PRESENCE_CLOCK_INVALID" };
190
+ return await this.boundedOperation(async () => await this.presence.outcome(requestId), pollingDeadline - now, deadlineReason, "PRESENCE_UNAVAILABLE", signal);
191
+ }
192
+ async evaluateAuthority(captured, evidence, signal) {
193
+ const boundaryFailure = this.boundaryFailure(captured, signal);
194
+ if (boundaryFailure !== null) {
195
+ return { reasonCode: boundaryFailure };
196
+ }
197
+ const now = this.clockNow();
198
+ if (now === null)
199
+ return { reasonCode: "PRESENCE_CLOCK_INVALID" };
200
+ return await this.boundedOperation(async () => await this.authority.evaluate(captured, { humanApproval: evidence }), Date.parse(captured.intent.expiresAt) - now, "PRESENCE_INTENT_EXPIRED", "AUTHORITY_UNAVAILABLE", signal);
201
+ }
202
+ async boundedOperation(operation, timeoutMs, timeoutReason, failureReason, signal) {
203
+ if (signal?.aborted === true)
204
+ return { reasonCode: "PRESENCE_ABORTED" };
205
+ if (!Number.isFinite(timeoutMs) || timeoutMs <= 0)
206
+ return { reasonCode: timeoutReason };
207
+ return await new Promise((resolve) => {
208
+ let settled = false;
209
+ const settle = (value) => {
210
+ if (settled)
211
+ return;
212
+ settled = true;
213
+ clearTimeout(timer);
214
+ signal?.removeEventListener("abort", onAbort);
215
+ resolve(value);
216
+ };
217
+ const onAbort = () => settle({ reasonCode: "PRESENCE_ABORTED" });
218
+ const timer = setTimeout(() => settle({ reasonCode: timeoutReason }), timeoutMs);
219
+ signal?.addEventListener("abort", onAbort, { once: true });
220
+ void Promise.resolve()
221
+ .then(operation)
222
+ .then((value) => settle({ value }), () => settle({ reasonCode: failureReason }));
223
+ });
224
+ }
225
+ pollingBoundaryFailure(captured, pollingDeadline, signal) {
226
+ const generalFailure = this.boundaryFailure(captured, signal);
227
+ if (generalFailure !== null)
228
+ return generalFailure;
229
+ const now = this.clockNow();
230
+ if (now === null)
231
+ return "PRESENCE_CLOCK_INVALID";
232
+ return now >= pollingDeadline ? "PRESENCE_TIMEOUT" : null;
233
+ }
234
+ boundaryFailure(captured, signal) {
235
+ if (signal?.aborted === true)
236
+ return "PRESENCE_ABORTED";
237
+ const now = this.clockNow();
238
+ const intentExpiresAt = Date.parse(captured.intent.expiresAt);
239
+ if (now === null || !Number.isFinite(intentExpiresAt))
240
+ return "PRESENCE_CLOCK_INVALID";
241
+ return now >= intentExpiresAt ? "PRESENCE_INTENT_EXPIRED" : null;
242
+ }
243
+ backoffDelay(attempt) {
244
+ let random;
69
245
  try {
70
- return await this.authority.evaluate(captured, { humanApproval: evidence });
246
+ random = this.polling.random();
71
247
  }
72
248
  catch {
73
- return FailClosedDecision.create(captured.intentHash, "AUTHORITY_UNAVAILABLE");
249
+ return null;
74
250
  }
251
+ if (!Number.isFinite(random) || random < 0 || random > 1)
252
+ return null;
253
+ const exponentialDelay = this.polling.initialDelayMs * 2 ** Math.min(attempt - 1, 30);
254
+ const cappedDelay = Math.min(exponentialDelay, this.polling.maxDelayMs);
255
+ return Math.max(1, Math.floor(cappedDelay * (0.5 + random * 0.5)));
75
256
  }
76
- static evidenceOf(result) {
77
- if (result === null || typeof result !== "object")
257
+ clockNow() {
258
+ try {
259
+ const now = this.polling.clock();
260
+ return Number.isFinite(now) ? now : null;
261
+ }
262
+ catch {
78
263
  return null;
79
- const candidate = result;
80
- if (PresenceApprovalCoordinator.isBoundedIdentifier(candidate.receipt_dossier_id) &&
81
- PresenceApprovalCoordinator.isBoundedIdentifier(candidate.request_id)) {
82
- return {
83
- provider: "presence",
84
- requestId: candidate.request_id,
85
- receiptDossierId: candidate.receipt_dossier_id,
86
- };
87
264
  }
88
- return null;
89
265
  }
90
- static verdictOf(result) {
91
- if (result === null || typeof result !== "object")
266
+ verdictOf(result) {
267
+ if (!this.isRecord(result))
92
268
  return null;
93
- const verdict = result.verdict;
269
+ const verdict = result["verdict"];
94
270
  return verdict === "PROCEED" ||
95
271
  verdict === "HUMAN_REQUIRED" ||
96
272
  verdict === "DENIED" ||
@@ -98,8 +274,99 @@ export class PresenceApprovalCoordinator {
98
274
  ? verdict
99
275
  : null;
100
276
  }
101
- static isBoundedIdentifier(value) {
277
+ requestIdOf(result) {
278
+ if (!this.isRecord(result))
279
+ return null;
280
+ const requestId = result["request_id"];
281
+ return this.boundedIdentifier(requestId) ? requestId : null;
282
+ }
283
+ evidenceOf(result) {
284
+ if (!this.isRecord(result))
285
+ return null;
286
+ const requestId = result["request_id"];
287
+ const receiptDossierId = result["receipt_dossier_id"];
288
+ if (!this.boundedIdentifier(requestId) || !this.boundedIdentifier(receiptDossierId))
289
+ return null;
290
+ return { provider: "presence", requestId, receiptDossierId };
291
+ }
292
+ boundedIdentifier(value) {
102
293
  return typeof value === "string" && value.length > 0 && value.length <= 200;
103
294
  }
295
+ async recordPresence(captured, eventType, verdict, dossierId) {
296
+ await this.audit?.record({
297
+ eventType,
298
+ captured,
299
+ authority: "NON_AUTHORITATIVE",
300
+ ...(dossierId === undefined ? {} : { dossierId }),
301
+ reasonCodes: [`PRESENCE_${verdict}`],
302
+ });
303
+ }
304
+ isRecord(value) {
305
+ return typeof value === "object" && value !== null && !Array.isArray(value);
306
+ }
307
+ /**
308
+ * Presence replays a sealed answer for a repeated idempotency key, so the key
309
+ * must identify exactly one captured intent for one approver: a re-captured
310
+ * intent has a new hash and must get a new request. The digest keeps the key
311
+ * inside Presence's `[A-Za-z0-9._:-]{8,128}` alphabet whatever the runtime's
312
+ * business key or the approver identity contain.
313
+ */
314
+ static presenceIdempotencyKey(captured, approverId) {
315
+ const digest = createHash("sha256")
316
+ .update(captured.intentHash)
317
+ .update("\u0000")
318
+ .update(approverId)
319
+ .digest("hex");
320
+ return `presence-${digest}`;
321
+ }
322
+ static pollingConfiguration(options) {
323
+ const maxAttempts = options.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;
324
+ const initialDelayMs = options.initialDelayMs ?? DEFAULT_INITIAL_DELAY_MS;
325
+ const maxDelayMs = options.maxDelayMs ?? DEFAULT_MAX_DELAY_MS;
326
+ const deadlineMs = options.deadlineMs ?? DEFAULT_DEADLINE_MS;
327
+ if (!Number.isInteger(maxAttempts) ||
328
+ maxAttempts < 1 ||
329
+ maxAttempts > MAX_ATTEMPTS_LIMIT ||
330
+ !Number.isInteger(initialDelayMs) ||
331
+ initialDelayMs < 1 ||
332
+ initialDelayMs > MAX_DELAY_LIMIT_MS ||
333
+ !Number.isInteger(maxDelayMs) ||
334
+ maxDelayMs < initialDelayMs ||
335
+ maxDelayMs > MAX_DELAY_LIMIT_MS ||
336
+ !Number.isInteger(deadlineMs) ||
337
+ deadlineMs < 1 ||
338
+ deadlineMs > MAX_DEADLINE_LIMIT_MS ||
339
+ (options.clock !== undefined && typeof options.clock !== "function") ||
340
+ (options.sleep !== undefined && typeof options.sleep !== "function") ||
341
+ (options.random !== undefined && typeof options.random !== "function")) {
342
+ throw new Error("PRESENCE_POLLING_OPTIONS_INVALID");
343
+ }
344
+ return {
345
+ maxAttempts,
346
+ initialDelayMs,
347
+ maxDelayMs,
348
+ deadlineMs,
349
+ clock: options.clock ?? Date.now,
350
+ sleep: options.sleep ?? PresenceApprovalCoordinator.sleep,
351
+ random: options.random ?? Math.random,
352
+ };
353
+ }
354
+ static async sleep(delayMs, signal) {
355
+ await new Promise((resolve, reject) => {
356
+ if (signal?.aborted === true) {
357
+ reject(new Error("PRESENCE_ABORTED"));
358
+ return;
359
+ }
360
+ const onAbort = () => {
361
+ clearTimeout(timer);
362
+ reject(new Error("PRESENCE_ABORTED"));
363
+ };
364
+ const timer = setTimeout(() => {
365
+ signal?.removeEventListener("abort", onAbort);
366
+ resolve();
367
+ }, delayMs);
368
+ signal?.addEventListener("abort", onAbort, { once: true });
369
+ });
370
+ }
104
371
  }
105
372
  //# sourceMappingURL=PresenceApprovalCoordinator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PresenceApprovalCoordinator.js","sourceRoot":"","sources":["../../src/approval/PresenceApprovalCoordinator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PresenceApprovalCoordinator.js","sourceRoot":"","sources":["../../src/approval/PresenceApprovalCoordinator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ import type { GateDecision } from "../decision/DecisionAuthority.js";
2
+ import type { CapturedIntent } from "../intent/ExecutionIntent.js";
3
+ import type { JsonObject, JsonValue } from "../intent/JsonValue.js";
4
+ import type { VerifiedAuthorization } from "../execution/AuthorizationVerifier.js";
5
+ export type AuditEventType = "INTENT_CAPTURED" | "AUTHORITY_DECISION" | "AUTHORITY_FAILED_CLOSED" | "PRESENCE_ESCALATED" | "PRESENCE_RESOLVED" | "SHADOW_EVALUATED" | "GRANT_CONSUMED" | "EXECUTION_STARTED" | "EXECUTION_COMPLETED" | "EXECUTION_BLOCKED" | "EXECUTION_FAILED_BEFORE_DISPATCH" | "EXECUTION_OUTCOME_UNKNOWN" | "RECONCILIATION_COMPLETED" | "RECONCILIATION_NOT_EXECUTED" | "RECONCILIATION_UNKNOWN";
6
+ export type AuditAuthority = "AUTHORITATIVE" | "OBSERVATIONAL" | "NON_AUTHORITATIVE";
7
+ export interface AuditPolicyRevision {
8
+ readonly policyId: string;
9
+ readonly revisionId: string;
10
+ readonly version?: string;
11
+ readonly digest: `sha256:${string}`;
12
+ }
13
+ export interface AuditEvaluationEvidence {
14
+ readonly evaluationId?: string;
15
+ readonly materialInputDigest?: `sha256:${string}`;
16
+ readonly policy?: AuditPolicyRevision;
17
+ readonly evidenceReference?: string;
18
+ }
19
+ export interface AuditEventV1 {
20
+ readonly schemaVersion: "agent-safe.audit/1";
21
+ readonly eventId: string;
22
+ readonly occurredAt: string;
23
+ readonly eventType: AuditEventType;
24
+ readonly authority: AuditAuthority;
25
+ readonly correlation: {
26
+ readonly intentId: string;
27
+ readonly intentHash: string;
28
+ readonly correlationId?: string;
29
+ readonly decisionId?: string;
30
+ readonly dossierId?: string;
31
+ readonly grantId?: string;
32
+ };
33
+ readonly evaluation: {
34
+ readonly evaluationId: string;
35
+ readonly materialInputDigest: string;
36
+ readonly policy: AuditPolicyRevision | null;
37
+ readonly evidenceReference: string | null;
38
+ } | null;
39
+ readonly verdict: GateDecision["verdict"] | null;
40
+ readonly reasonCodes: readonly string[];
41
+ readonly durationMs: number | null;
42
+ readonly metadata: Readonly<JsonObject>;
43
+ }
44
+ export interface AuditSink {
45
+ write(event: AuditEventV1): Promise<void> | void;
46
+ }
47
+ export interface AuditRecordInput {
48
+ readonly eventType: AuditEventType;
49
+ readonly captured: CapturedIntent;
50
+ readonly authority?: AuditAuthority;
51
+ readonly decision?: GateDecision;
52
+ readonly authorization?: VerifiedAuthorization;
53
+ readonly decisionId?: string;
54
+ readonly dossierId?: string;
55
+ readonly grantId?: string;
56
+ /** Verdict for events that carry no `GateDecision`, such as shadow observations. */
57
+ readonly verdict?: GateDecision["verdict"];
58
+ readonly evaluation?: AuditEvaluationEvidence;
59
+ readonly reasonCodes?: readonly string[];
60
+ readonly durationMs?: number;
61
+ readonly metadata?: Readonly<Record<string, JsonValue>>;
62
+ }
63
+ export interface AuditRecorderOptions {
64
+ readonly sink: AuditSink;
65
+ readonly timeoutMs?: number;
66
+ readonly failurePolicy?: "BEST_EFFORT" | "REQUIRE_BEFORE_EXECUTION";
67
+ readonly metadataAllowlist?: readonly string[];
68
+ readonly redactMetadata?: (key: string, value: JsonValue) => JsonValue | undefined;
69
+ readonly clock?: () => Date;
70
+ readonly createId?: () => string;
71
+ }
72
+ export interface AuditPolicyRevisionArtifact extends AuditPolicyRevision {
73
+ /** Opaque location or object-store version used by an authorized replay system. */
74
+ readonly artifactReference: string;
75
+ }
76
+ export interface AuditPolicyRevisionResolver {
77
+ resolve(policyId: string, revisionId: string): Promise<AuditPolicyRevisionArtifact | null> | AuditPolicyRevisionArtifact | null;
78
+ }
79
+ export type AuditPolicyVerification = {
80
+ readonly status: "VERIFIED";
81
+ readonly artifact: AuditPolicyRevisionArtifact;
82
+ } | {
83
+ readonly status: "NOT_REFERENCED";
84
+ readonly artifact: null;
85
+ } | {
86
+ readonly status: "MISSING" | "DIGEST_MISMATCH" | "IDENTITY_MISMATCH" | "UNAVAILABLE";
87
+ readonly artifact: null;
88
+ };
89
+ /**
90
+ * Emits immutable, redacted lifecycle records through one bounded sink call.
91
+ * Sink failures are converted to `false`; the recorder never retries because
92
+ * retries could reorder evidence or couple provider execution to sink health.
93
+ */
94
+ export declare class AuditRecorder {
95
+ private readonly options;
96
+ private readonly timeoutMs;
97
+ private readonly failurePolicy;
98
+ private readonly metadataAllowlist;
99
+ private readonly clock;
100
+ private readonly createId;
101
+ constructor(options: AuditRecorderOptions);
102
+ get requiresDeliveryBeforeExecution(): boolean;
103
+ record(input: AuditRecordInput): Promise<boolean>;
104
+ private event;
105
+ private evaluation;
106
+ private metadata;
107
+ private copyJson;
108
+ private boundedId;
109
+ private validDate;
110
+ private static defaultAuthority;
111
+ private static assertIdentifier;
112
+ private static assertDigest;
113
+ private static deepFreeze;
114
+ }
115
+ /** Resolves historical policy evidence by its pinned revision, never by a mutable alias. */
116
+ export declare class AuditPolicyRevisionVerifier {
117
+ private readonly resolver;
118
+ private readonly timeoutMs;
119
+ constructor(resolver: AuditPolicyRevisionResolver, timeoutMs?: number);
120
+ verify(event: AuditEventV1): Promise<AuditPolicyVerification>;
121
+ }
122
+ //# sourceMappingURL=AuditRecorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuditRecorder.d.ts","sourceRoot":"","sources":["../../src/audit/AuditRecorder.ts"],"names":[],"mappings":"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"}