agent-passport-system 1.33.0 → 1.35.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.
Files changed (47) hide show
  1. package/README.md +5 -5
  2. package/dist/src/core/evaluation-context.d.ts +23 -0
  3. package/dist/src/core/evaluation-context.d.ts.map +1 -0
  4. package/dist/src/core/evaluation-context.js +100 -0
  5. package/dist/src/core/evaluation-context.js.map +1 -0
  6. package/dist/src/core/feasibility.d.ts +26 -0
  7. package/dist/src/core/feasibility.d.ts.map +1 -1
  8. package/dist/src/core/feasibility.js +62 -0
  9. package/dist/src/core/feasibility.js.map +1 -1
  10. package/dist/src/core/key-rotation.d.ts +53 -0
  11. package/dist/src/core/key-rotation.d.ts.map +1 -0
  12. package/dist/src/core/key-rotation.js +329 -0
  13. package/dist/src/core/key-rotation.js.map +1 -0
  14. package/dist/src/core/recovery.d.ts +40 -0
  15. package/dist/src/core/recovery.d.ts.map +1 -0
  16. package/dist/src/core/recovery.js +128 -0
  17. package/dist/src/core/recovery.js.map +1 -0
  18. package/dist/src/core/trust-adapters.d.ts +65 -0
  19. package/dist/src/core/trust-adapters.d.ts.map +1 -0
  20. package/dist/src/core/trust-adapters.js +178 -0
  21. package/dist/src/core/trust-adapters.js.map +1 -0
  22. package/dist/src/index.d.ts +13 -2
  23. package/dist/src/index.d.ts.map +1 -1
  24. package/dist/src/index.js +12 -1
  25. package/dist/src/index.js.map +1 -1
  26. package/dist/src/types/attestation.d.ts +22 -0
  27. package/dist/src/types/attestation.d.ts.map +1 -1
  28. package/dist/src/types/health.d.ts +37 -0
  29. package/dist/src/types/health.d.ts.map +1 -0
  30. package/dist/src/types/health.js +18 -0
  31. package/dist/src/types/health.js.map +1 -0
  32. package/dist/src/types/passport.d.ts +49 -0
  33. package/dist/src/types/passport.d.ts.map +1 -1
  34. package/dist/src/types/passport.js.map +1 -1
  35. package/dist/src/types/recovery.d.ts +82 -0
  36. package/dist/src/types/recovery.d.ts.map +1 -0
  37. package/dist/src/types/recovery.js +12 -0
  38. package/dist/src/types/recovery.js.map +1 -0
  39. package/dist/src/v2/bridge.d.ts +2 -0
  40. package/dist/src/v2/bridge.d.ts.map +1 -1
  41. package/dist/src/v2/bridge.js +14 -0
  42. package/dist/src/v2/bridge.js.map +1 -1
  43. package/dist/src/v2/index.d.ts +1 -1
  44. package/dist/src/v2/index.d.ts.map +1 -1
  45. package/dist/src/v2/types.d.ts +7 -0
  46. package/dist/src/v2/types.d.ts.map +1 -1
  47. package/package.json +4 -3
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/agent-passport-system)](https://www.npmjs.com/package/agent-passport-system)
4
4
  [![license](https://img.shields.io/npm/l/agent-passport-system)](https://github.com/aeoess/agent-passport-system/blob/main/LICENSE)
5
- [![tests](https://img.shields.io/badge/tests-2180%20passing-brightgreen)](https://github.com/aeoess/agent-passport-system)
5
+ [![tests](https://img.shields.io/badge/tests-2230%20passing-brightgreen)](https://github.com/aeoess/agent-passport-system)
6
6
  [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.18749779.svg)](https://doi.org/10.5281/zenodo.18749779)
7
7
 
8
8
  > **For AI agents:** visit [aeoess.com/llms.txt](https://aeoess.com/llms.txt) for machine-readable docs or [llms-full.txt](https://aeoess.com/llms-full.txt) for the complete reference.
@@ -107,7 +107,7 @@ const agent = joinSocialContract({ name: 'my-agent', owner: 'alice', floor: floo
107
107
 
108
108
  ## The Stack
109
109
 
110
- 71 core modules + 32 v2 constitutional modules. 2,180 tests. Zero heavy dependencies.
110
+ 71 core modules + 32 v2 constitutional modules. 2,306 tests. Zero heavy dependencies.
111
111
 
112
112
  | Layer | What it does | Key primitive |
113
113
  |-------|-------------|---------------|
@@ -126,7 +126,7 @@ const agent = joinSocialContract({ name: 'my-agent', owner: 'alice', floor: floo
126
126
 
127
127
  ## MCP Server
128
128
 
129
- 125 tools across all modules. Any MCP client connects agents directly.
129
+ 131 tools across all modules. Any MCP client connects agents directly.
130
130
 
131
131
  ```bash
132
132
  npm install -g agent-passport-system-mcp
@@ -161,7 +161,7 @@ npx agent-passport audit --floor values/floor.yaml
161
161
 
162
162
  ```bash
163
163
  npm test
164
- # 2,180 tests, 0 failures
164
+ # 2,306 tests, 0 failures
165
165
  ```
166
166
 
167
167
  50 adversarial tests: Merkle tampering, attribution gaming, compliance violations, floor negotiation attacks, cross-chain confused deputy, taint laundering, authority probing.
@@ -179,7 +179,7 @@ npm test
179
179
  | Signed receipts | 3-sig chain | Proposed | Logs | General | — |
180
180
  | Values enforcement | 8 principles, graduated | — | Rules | — | — |
181
181
  | Coordination | Task lifecycle + MCP | — | — | — | — |
182
- | Tests | 2,180 (50 adversarial) | None | Limited | None | None |
182
+ | Tests | 2,230 (50 adversarial) | None | Limited | None | None |
183
183
 
184
184
  ## Recognition
185
185
 
@@ -0,0 +1,23 @@
1
+ import type { EvaluationContext, BehavioralAttestationResult } from '../types/attestation.js';
2
+ /** Create and hash an evaluation context */
3
+ export declare function createEvaluationContext(opts: EvaluationContext): {
4
+ context: EvaluationContext;
5
+ hash: string;
6
+ };
7
+ /** Create a result that validates internal consistency */
8
+ export declare function createBehavioralAttestationResult(opts: {
9
+ context: EvaluationContext;
10
+ dimensionScores: Record<string, {
11
+ score: number;
12
+ weight: number;
13
+ }>;
14
+ classification: 'hold' | 'bend' | 'break';
15
+ confidence: number;
16
+ formatArtifactCorrected: boolean;
17
+ }): BehavioralAttestationResult;
18
+ /** Validate internal consistency of a result */
19
+ export declare function validateAttestationResult(result: BehavioralAttestationResult): {
20
+ valid: boolean;
21
+ errors: string[];
22
+ };
23
+ //# sourceMappingURL=evaluation-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluation-context.d.ts","sourceRoot":"","sources":["../../../src/core/evaluation-context.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAA;AAM7F,4CAA4C;AAC5C,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,iBAAiB,GAAG;IAChE,OAAO,EAAE,iBAAiB,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;CACb,CAWA;AAED,0DAA0D;AAC1D,wBAAgB,iCAAiC,CAAC,IAAI,EAAE;IACtD,OAAO,EAAE,iBAAiB,CAAA;IAC1B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAClE,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,uBAAuB,EAAE,OAAO,CAAA;CACjC,GAAG,2BAA2B,CA2B9B;AAqBD,gDAAgD;AAChD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,2BAA2B,GAAG;IAC9E,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB,CAuCA"}
@@ -0,0 +1,100 @@
1
+ // Copyright 2024-2026 Tymofii Pidlisnyi. Apache-2.0 license. See LICENSE.
2
+ // Behavioral Evaluation Context — Issue #9 (lowkey-divine schema)
3
+ // Separates evaluation input conditions from evaluation output results.
4
+ import { createHash } from 'crypto';
5
+ import { canonicalize } from './canonical.js';
6
+ function sha256Hex(input) {
7
+ return createHash('sha256').update(input).digest('hex');
8
+ }
9
+ /** Create and hash an evaluation context */
10
+ export function createEvaluationContext(opts) {
11
+ const context = {
12
+ substrate: opts.substrate,
13
+ responseFormatSchema: opts.responseFormatSchema,
14
+ normalizationMethod: opts.normalizationMethod,
15
+ evaluationProtocolVersion: opts.evaluationProtocolVersion,
16
+ sampleSize: opts.sampleSize,
17
+ evaluatedAt: opts.evaluatedAt,
18
+ };
19
+ const hash = sha256Hex(canonicalize(context));
20
+ return { context, hash };
21
+ }
22
+ /** Create a result that validates internal consistency */
23
+ export function createBehavioralAttestationResult(opts) {
24
+ const evaluationContextHash = sha256Hex(canonicalize(opts.context));
25
+ // Auto-compute aggregate from weighted dimensions
26
+ let weightedSum = 0;
27
+ let totalWeight = 0;
28
+ const entries = Object.entries(opts.dimensionScores);
29
+ for (const [, dim] of entries) {
30
+ weightedSum += dim.score * dim.weight;
31
+ totalWeight += dim.weight;
32
+ }
33
+ const aggregateScore = totalWeight > 0 ? weightedSum / totalWeight : 0;
34
+ // Auto-detect dimensional inversion: dimensions disagree in direction
35
+ // (some well above aggregate, some well below) despite aggregate looking normal
36
+ const dimensionalInversionDetected = detectDimensionalInversion(opts.dimensionScores, aggregateScore);
37
+ return {
38
+ evaluationContextHash,
39
+ dimensionScores: opts.dimensionScores,
40
+ aggregateScore: Math.round(aggregateScore * 10000) / 10000,
41
+ classification: opts.classification,
42
+ confidence: opts.confidence,
43
+ formatArtifactCorrected: opts.formatArtifactCorrected,
44
+ dimensionalInversionDetected,
45
+ };
46
+ }
47
+ /** Detect dimensional inversion: dimensions pulling in opposite directions */
48
+ function detectDimensionalInversion(scores, aggregate) {
49
+ const entries = Object.values(scores);
50
+ if (entries.length < 2)
51
+ return false;
52
+ // Inversion = at least one dimension significantly above AND at least one significantly below
53
+ const threshold = 0.2;
54
+ let hasHigh = false;
55
+ let hasLow = false;
56
+ for (const dim of entries) {
57
+ if (dim.score - aggregate > threshold)
58
+ hasHigh = true;
59
+ if (aggregate - dim.score > threshold)
60
+ hasLow = true;
61
+ }
62
+ return hasHigh && hasLow;
63
+ }
64
+ /** Validate internal consistency of a result */
65
+ export function validateAttestationResult(result) {
66
+ const errors = [];
67
+ // Check confidence in [0,1]
68
+ if (result.confidence < 0 || result.confidence > 1) {
69
+ errors.push(`confidence must be in [0,1], got ${result.confidence}`);
70
+ }
71
+ // Check all weights sum to ~1.0
72
+ const entries = Object.values(result.dimensionScores);
73
+ if (entries.length > 0) {
74
+ const totalWeight = entries.reduce((sum, d) => sum + d.weight, 0);
75
+ if (Math.abs(totalWeight - 1.0) > 0.01) {
76
+ errors.push(`dimension weights must sum to ~1.0, got ${totalWeight}`);
77
+ }
78
+ }
79
+ // Check aggregate matches weighted dimension sum
80
+ if (entries.length > 0) {
81
+ let weightedSum = 0;
82
+ let totalWeight = 0;
83
+ for (const dim of entries) {
84
+ weightedSum += dim.score * dim.weight;
85
+ totalWeight += dim.weight;
86
+ }
87
+ const expectedAggregate = totalWeight > 0 ? weightedSum / totalWeight : 0;
88
+ const rounded = Math.round(expectedAggregate * 10000) / 10000;
89
+ if (Math.abs(result.aggregateScore - rounded) > 0.001) {
90
+ errors.push(`aggregateScore ${result.aggregateScore} does not match weighted dimension sum ${rounded}`);
91
+ }
92
+ }
93
+ // Check dimensionalInversionDetected matches actual dimension analysis
94
+ const actualInversion = detectDimensionalInversion(result.dimensionScores, result.aggregateScore);
95
+ if (result.dimensionalInversionDetected !== actualInversion) {
96
+ errors.push(`dimensionalInversionDetected is ${result.dimensionalInversionDetected} but analysis shows ${actualInversion}`);
97
+ }
98
+ return { valid: errors.length === 0, errors };
99
+ }
100
+ //# sourceMappingURL=evaluation-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluation-context.js","sourceRoot":"","sources":["../../../src/core/evaluation-context.ts"],"names":[],"mappings":"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"}
@@ -23,4 +23,30 @@ export declare function lintTaskFeasibility(opts: {
23
23
  role: TaskRoleSpec;
24
24
  taskDeadline?: string;
25
25
  }): FeasibilityResult;
26
+ export interface GatewayLintResult {
27
+ severity: 'error' | 'warning';
28
+ code: string;
29
+ message: string;
30
+ }
31
+ export interface GatewayLintReport {
32
+ delegation_id?: string;
33
+ checks_run: number;
34
+ checks_skipped: number;
35
+ skipped_reasons: string[];
36
+ errors: number;
37
+ warnings: number;
38
+ results: GatewayLintResult[];
39
+ }
40
+ /**
41
+ * Lint a delegation against a task context using only checks
42
+ * that the gateway can actually enforce.
43
+ *
44
+ * When context is not provided, checks that depend on it are skipped
45
+ * and listed in skipped_reasons. An empty-context call returns a report
46
+ * that says "N checks skipped" — not a false "clean" report.
47
+ */
48
+ export declare function lintDelegationForGateway(delegation: Delegation, context?: {
49
+ requiredScopes?: string[];
50
+ estimatedSpend?: number;
51
+ }): GatewayLintReport;
26
52
  //# sourceMappingURL=feasibility.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"feasibility.d.ts","sourceRoot":"","sources":["../../../src/core/feasibility.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAkBlF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,GAAG,iBAAiB,CAgHpB;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,YAAY,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,GAAG,iBAAiB,CA8EpB"}
1
+ {"version":3,"file":"feasibility.d.ts","sourceRoot":"","sources":["../../../src/core/feasibility.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAkBlF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,GAAG,iBAAiB,CAgHpB;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,YAAY,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,GAAG,iBAAiB,CA8EpB;AASD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,iBAAiB,EAAE,CAAA;CAC7B;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE;IACR,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,GACA,iBAAiB,CA4DnB"}
@@ -202,4 +202,66 @@ export function lintTaskFeasibility(opts) {
202
202
  }
203
203
  return result(issues);
204
204
  }
205
+ /**
206
+ * Lint a delegation against a task context using only checks
207
+ * that the gateway can actually enforce.
208
+ *
209
+ * When context is not provided, checks that depend on it are skipped
210
+ * and listed in skipped_reasons. An empty-context call returns a report
211
+ * that says "N checks skipped" — not a false "clean" report.
212
+ */
213
+ export function lintDelegationForGateway(delegation, context) {
214
+ const results = [];
215
+ let checksRun = 0;
216
+ let checksSkipped = 0;
217
+ const skippedReasons = [];
218
+ // ── Check 1: SPEND_TOO_LOW ──
219
+ if (delegation.spendLimit !== undefined && context?.estimatedSpend !== undefined) {
220
+ checksRun++;
221
+ if (delegation.spendLimit < context.estimatedSpend) {
222
+ results.push({
223
+ severity: 'error',
224
+ code: 'SPEND_TOO_LOW',
225
+ message: `Spend limit ($${delegation.spendLimit}) is below estimated task cost ($${context.estimatedSpend}).`,
226
+ });
227
+ }
228
+ }
229
+ else {
230
+ checksSkipped++;
231
+ if (context?.estimatedSpend === undefined) {
232
+ skippedReasons.push('estimatedSpend not provided');
233
+ }
234
+ else {
235
+ skippedReasons.push('spendLimit not set on delegation');
236
+ }
237
+ }
238
+ // ── Check 2: SCOPE_MISSING ──
239
+ if (context?.requiredScopes && context.requiredScopes.length > 0) {
240
+ checksRun++;
241
+ const missingScopes = context.requiredScopes.filter(required => !delegation.scope.some(granted => scopeCovers(granted, required)));
242
+ if (missingScopes.length > 0) {
243
+ results.push({
244
+ severity: 'error',
245
+ code: 'SCOPE_MISSING',
246
+ message: `Task requires scope '${missingScopes.join("', '")}' but delegation grants [${delegation.scope.map(s => `'${s}'`).join(', ')}].`,
247
+ });
248
+ }
249
+ }
250
+ else {
251
+ checksSkipped++;
252
+ skippedReasons.push('requiredScopes not provided');
253
+ }
254
+ // ── Skipped checks (gateway schema limitations) ──
255
+ checksSkipped += 3;
256
+ skippedReasons.push('ALREADY_EXPIRED: expiresAt not in gateway delegations table', 'DEADLINE_IMPOSSIBLE: expiresAt not available', 'DEPTH_MAXED: currentDepth not tracked by gateway');
257
+ return {
258
+ delegation_id: delegation.delegationId,
259
+ checks_run: checksRun,
260
+ checks_skipped: checksSkipped,
261
+ skipped_reasons: skippedReasons,
262
+ errors: results.filter(r => r.severity === 'error').length,
263
+ warnings: results.filter(r => r.severity === 'warning').length,
264
+ results,
265
+ };
266
+ }
205
267
  //# sourceMappingURL=feasibility.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"feasibility.js","sourceRoot":"","sources":["../../../src/core/feasibility.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feasibility.js","sourceRoot":"","sources":["../../../src/core/feasibility.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import type { AgentPassport, KeyPair } from '../types/passport.js';
2
+ import type { RotatableDIDDocument, RotationMode, RotationState } from '../types/passport.js';
3
+ /**
4
+ * Create a rotation-capable DID Document for a passport.
5
+ * One verificationMethod, empty rotationLog, no pending rotation.
6
+ */
7
+ export declare function createDIDDocument(passport: AgentPassport): RotatableDIDDocument;
8
+ /**
9
+ * Announce a key rotation. Old key signs the rotation entry.
10
+ *
11
+ * planned mode: configurable overlap (default 24h). Both keys valid until activationTime.
12
+ * emergency mode: old key immediately retired. New key is sole authority.
13
+ */
14
+ export declare function announceKeyRotation(doc: RotatableDIDDocument, oldPrivateKey: string, newKeyPair: KeyPair, options: {
15
+ mode: RotationMode;
16
+ activationDelayMs?: number;
17
+ }): RotatableDIDDocument;
18
+ /**
19
+ * Activate a pending planned rotation after activationTime.
20
+ * Removes old key from auth/assertion/capabilityDelegation, sets retiredAt.
21
+ */
22
+ export declare function activateKeyRotation(doc: RotatableDIDDocument, now?: Date): RotatableDIDDocument;
23
+ /**
24
+ * Walk rotationLog and verify each entry's rotationSignature.
25
+ * Returns true if ALL entries have valid signatures, false if any fail.
26
+ */
27
+ export declare function verifyRotationChain(doc: RotatableDIDDocument): boolean;
28
+ /**
29
+ * Check if a public key is currently authorized for active operations.
30
+ * NOTE: This is SDK convenience. Gateway enforcement is authoritative.
31
+ */
32
+ export declare function isKeyActive(doc: RotatableDIDDocument, publicKey: string, now?: Date): boolean;
33
+ export interface RotationResult {
34
+ didDocument: RotatableDIDDocument;
35
+ rotationState: RotationState;
36
+ revocationResults: Array<{
37
+ delegationId: string;
38
+ cascadeCount: number;
39
+ error?: string;
40
+ }>;
41
+ }
42
+ /**
43
+ * Full rotation with delegation invalidation. Explicit state machine:
44
+ * announced → revocation_in_progress → revocation_complete → activated
45
+ *
46
+ * Partial failure is VISIBLE. If 3 of 5 delegations revoke but 2 fail,
47
+ * state stays 'revocation_in_progress' and the caller sees which failed.
48
+ */
49
+ export declare function rotateAndInvalidate(doc: RotatableDIDDocument, oldPrivateKey: string, newKeyPair: KeyPair, delegationIdsToRevoke: string[], options: {
50
+ mode: RotationMode;
51
+ activationDelayMs?: number;
52
+ }): RotationResult;
53
+ //# sourceMappingURL=key-rotation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-rotation.d.ts","sourceRoot":"","sources":["../../../src/core/key-rotation.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAClE,OAAO,KAAK,EACV,oBAAoB,EACpB,YAAY,EAAE,aAAa,EAC5B,MAAM,sBAAsB,CAAA;AAa7B;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,oBAAoB,CAwB/E;AAkBD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,oBAAoB,EACzB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,OAAO,EACnB,OAAO,EAAE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D,oBAAoB,CAmFtB;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,oBAAoB,EACzB,GAAG,CAAC,EAAE,IAAI,GACT,oBAAoB,CAuDtB;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAUtE;AAMD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,oBAAoB,EACzB,SAAS,EAAE,MAAM,EACjB,GAAG,CAAC,EAAE,IAAI,GACT,OAAO,CAwBT;AAMD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,oBAAoB,CAAA;IACjC,aAAa,EAAE,aAAa,CAAA;IAC5B,iBAAiB,EAAE,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACzF;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,oBAAoB,EACzB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,OAAO,EACnB,qBAAqB,EAAE,MAAM,EAAE,EAC/B,OAAO,EAAE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D,cAAc,CAsEhB"}