@zanii/succession 0.1.0 → 0.1.2

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
@@ -52,3 +52,7 @@ Succession proves **continuity of authority** — the owner vouches that B carri
52
52
  mandate. It does NOT prove B runs the same code or behaves like A (`@zanii/attest` is
53
53
  for which-code-ran). And it is the owner's attestation: a lying owner's lie is signed
54
54
  and permanent — attributable, not impossible.
55
+
56
+ ## Changelog
57
+
58
+ - **0.1.2** — Rotation schedules, planned rotations, disclosed model upgrades, fleet merges and splits, two-party ownership transfers, owner contingencies with executor takeover, retirement tombstones, compromise impact, lineage badge, PQ-bound successions, regulator notices.
package/dist/index.d.ts CHANGED
@@ -80,4 +80,5 @@ export interface CombinedSummary {
80
80
  * suspect. Pass `trusts` in the same order as `lineage`.
81
81
  */
82
82
  export declare function combinedSummary(successions: Succession[], trusts: AgentTrust[], did: string): CombinedSummary;
83
+ export * from './lifecycle.js';
83
84
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,YAAY,GAAG,YAAY,CAAC;AAExE,MAAM,WAAW,cAAc;IAC7B,CAAC,EAAE,CAAC,CAAC;IACL,IAAI,EAAE,YAAY,CAAC;IACnB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,gBAAgB,CAAC;IACzB,uGAAuG;IACvG,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,kEAAkE;IAClE,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,mBAAmB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,gBAAgB,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,cAAc,CAwB1E;AAgBD,qGAAqG;AACrG,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,mBAAmB,CAE7G;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAAG,UAAU,CAEtG;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAEpD;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,yEAAyE;IACzE,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,qGAAqG;AACrG,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,eAAe,CAuB3E;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iEAAiE;IACjE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,CA6BlF;AAED,MAAM,WAAW,eAAe;IAC9B,uBAAuB;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,8EAA8E;IAC9E,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;IACxB,oEAAoE;IACpE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,eAAe,CA4B7G"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,YAAY,GAAG,YAAY,CAAC;AAExE,MAAM,WAAW,cAAc;IAC7B,CAAC,EAAE,CAAC,CAAC;IACL,IAAI,EAAE,YAAY,CAAC;IACnB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,gBAAgB,CAAC;IACzB,uGAAuG;IACvG,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,kEAAkE;IAClE,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,mBAAmB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,gBAAgB,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,cAAc,CAwB1E;AAgBD,qGAAqG;AACrG,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,mBAAmB,CAE7G;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAAG,UAAU,CAEtG;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAEpD;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,yEAAyE;IACzE,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,qGAAqG;AACrG,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,eAAe,CAuB3E;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iEAAiE;IACjE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,CA6BlF;AAED,MAAM,WAAW,eAAe;IAC9B,uBAAuB;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,8EAA8E;IAC9E,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;IACxB,oEAAoE;IACpE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,eAAe,CA4B7G;AACD,cAAc,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -195,4 +195,5 @@ export function combinedSummary(successions, trusts, did) {
195
195
  caveats,
196
196
  };
197
197
  }
198
+ export * from './lifecycle.js';
198
199
  //# sourceMappingURL=index.js.map
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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"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * The rest of an agent's life: scheduled rotation, model upgrades disclosed under the same
3
+ * identity, fleet merges and splits, ownership transfers, an executor taking over when an
4
+ * owner dies, retirement tombstones, compromise impact, a lineage badge, post-quantum
5
+ * successions and regulator notices.
6
+ */
7
+ import { type Receipt, type SignedObject } from '@zanii/core';
8
+ import { type CombinedSummary, type Succession } from './index.js';
9
+ /** Is a key due for rotation under a maximum age? */
10
+ export declare function rotationDue(keyCreatedAt: string, policy: {
11
+ maxAgeDays: number;
12
+ warnDays?: number;
13
+ }, now?: string): {
14
+ due: string;
15
+ status: "overdue" | "due-soon" | "ok";
16
+ };
17
+ /** A planned rotation: the owner signs, and the outgoing key countersigns (the strong form). */
18
+ export declare function plannedRotation(input: {
19
+ predecessor: string;
20
+ successor: string;
21
+ owner: string;
22
+ ts: string;
23
+ }, ownerPrivateKey: Uint8Array, predecessorPrivateKey: Uint8Array): Succession;
24
+ export type ModelUpgrade = SignedObject<{
25
+ v: 1;
26
+ type: 'succession.model_upgrade';
27
+ agent: string;
28
+ from: {
29
+ model: string;
30
+ version: string;
31
+ };
32
+ to: {
33
+ model: string;
34
+ version: string;
35
+ };
36
+ ts: string;
37
+ note?: string;
38
+ }>;
39
+ /** The identity stays; the change of model underneath is disclosed and signed by the owner. */
40
+ export declare function modelUpgrade(input: {
41
+ agent: string;
42
+ from: {
43
+ model: string;
44
+ version: string;
45
+ };
46
+ to: {
47
+ model: string;
48
+ version: string;
49
+ };
50
+ ts: string;
51
+ note?: string;
52
+ }, ownerPrivateKey: Uint8Array): ModelUpgrade;
53
+ /** The model an agent ran at a time, from its signed upgrade history (owner-signed only). */
54
+ export declare function modelAt(upgrades: ModelUpgrade[], agent: string, owner: string, at: string): {
55
+ model: string;
56
+ version: string;
57
+ } | null;
58
+ export type FleetEvent = SignedObject<{
59
+ v: 1;
60
+ type: 'succession.merge' | 'succession.split';
61
+ sources: string[];
62
+ targets: string[];
63
+ ts: string;
64
+ note?: string;
65
+ }>;
66
+ /** Several agents' mandates continue in one (an M&A consolidation). Signed by the owner. */
67
+ export declare function mergeAgents(input: {
68
+ sources: string[];
69
+ into: string;
70
+ ts: string;
71
+ note?: string;
72
+ }, ownerPrivateKey: Uint8Array): FleetEvent;
73
+ /** One agent's mandate divides among several (a carve-out). Signed by the owner. */
74
+ export declare function splitAgent(input: {
75
+ source: string;
76
+ into: string[];
77
+ ts: string;
78
+ note?: string;
79
+ }, ownerPrivateKey: Uint8Array): FleetEvent;
80
+ export interface OwnerTransfer {
81
+ body: {
82
+ v: 1;
83
+ type: 'succession.owner_transfer';
84
+ agent: string;
85
+ from_owner: string;
86
+ to_owner: string;
87
+ ts: string;
88
+ terms?: string;
89
+ };
90
+ sigs: Array<SignedObject<{
91
+ type: 'succession.owner_transfer_sig';
92
+ body: string;
93
+ }>>;
94
+ }
95
+ /** Sell or hand over an agent business: both owners sign the same terms (by hash). */
96
+ export declare function ownerTransfer(body: Omit<OwnerTransfer['body'], 'v' | 'type'>, fromOwnerKey: Uint8Array, toOwnerKey: Uint8Array): OwnerTransfer;
97
+ export declare function verifyOwnerTransfer(t: OwnerTransfer): boolean;
98
+ export type OwnerContingency = SignedObject<{
99
+ v: 1;
100
+ type: 'succession.contingency';
101
+ agents: string[];
102
+ executor: string;
103
+ instructions: 'retire' | 'transfer' | 'continue';
104
+ ts: string;
105
+ }>;
106
+ export type ExecutorTakeover = SignedObject<{
107
+ v: 1;
108
+ type: 'succession.executor_takeover';
109
+ contingency: string;
110
+ evidence: string;
111
+ ts: string;
112
+ }>;
113
+ /** The owner says in advance who handles their agents if they die, and what to do with them. */
114
+ export declare function ownerContingency(input: {
115
+ agents: string[];
116
+ executor: string;
117
+ instructions: OwnerContingency['instructions'];
118
+ ts: string;
119
+ }, ownerPrivateKey: Uint8Array): OwnerContingency;
120
+ export declare function executorTakeover(c: OwnerContingency, evidenceHash: string, executorPrivateKey: Uint8Array, ts?: string): ExecutorTakeover;
121
+ /** Both statements signed and linked; whether the evidence suffices is the verifier's call. */
122
+ export declare function verifyTakeover(t: ExecutorTakeover, c: OwnerContingency, acceptEvidence: (hash: string) => boolean): {
123
+ ok: boolean;
124
+ reasons: string[];
125
+ owner: string;
126
+ agents: string[];
127
+ instructions: "retire" | "transfer" | "continue";
128
+ };
129
+ export type Tombstone = SignedObject<{
130
+ v: 1;
131
+ type: 'succession.tombstone';
132
+ agent: string;
133
+ final_head: string | null;
134
+ reason: string;
135
+ ts: string;
136
+ }>;
137
+ /** Retire an agent for good: the owner signs a tombstone naming its final chain head. Close its session first. */
138
+ export declare function tombstone(input: {
139
+ agent: string;
140
+ finalHead: string | null;
141
+ reason: string;
142
+ ts: string;
143
+ }, ownerPrivateKey: Uint8Array): Tombstone;
144
+ /** Receipts that contradict a tombstone: by the retired agent after its retirement. */
145
+ export declare function afterTombstone(t: Tombstone, receipts: Receipt[]): Receipt[];
146
+ /** Every receipt by the compromised key inside the window (from compromised_at to the succession), flagged for review. */
147
+ export declare function compromiseImpact(s: Succession, receipts: Array<Receipt & {
148
+ hash?: string;
149
+ }>): {
150
+ predecessor: string;
151
+ from: string;
152
+ to: string;
153
+ suspect: {
154
+ hash: string;
155
+ target: string;
156
+ ts: string;
157
+ afterHandover: boolean;
158
+ }[];
159
+ };
160
+ /** Short facts for a trust badge from a combined summary. */
161
+ export declare function lineageBadge(summary: CombinedSummary): {
162
+ tone: string;
163
+ text: string;
164
+ keys: number;
165
+ compromises: number;
166
+ };
167
+ /** Rotate to a successor that has a post-quantum key bound (`@zanii/pq` bindPqKey); the binding hash is in the signed note. */
168
+ export declare function pqSuccession(input: {
169
+ predecessor: string;
170
+ successor: string;
171
+ owner: string;
172
+ ts: string;
173
+ pqBindingHash: string;
174
+ }, ownerPrivateKey: Uint8Array, predecessorPrivateKey?: Uint8Array): Succession;
175
+ /** The succession is valid and names this PQ binding. */
176
+ export declare function verifyPqSuccession(s: Succession, pqBindingHash: string): boolean;
177
+ export type RegulatorNotice = SignedObject<{
178
+ v: 1;
179
+ type: 'succession.regulator_notice';
180
+ regulator: string;
181
+ licence: string;
182
+ succession: string;
183
+ reason: string;
184
+ predecessor: string;
185
+ successor: string;
186
+ ts: string;
187
+ }>;
188
+ /** Notify a regulator of a succession for a licensed agent, citing it by hash. */
189
+ export declare function regulatorNotice(s: Succession, input: {
190
+ regulator: string;
191
+ licence: string;
192
+ ts?: string;
193
+ }, ownerPrivateKey: Uint8Array): RegulatorNotice;
194
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * The rest of an agent's life: scheduled rotation, model upgrades disclosed under the same
3
+ * identity, fleet merges and splits, ownership transfers, an executor taking over when an
4
+ * owner dies, retirement tombstones, compromise impact, a lineage badge, post-quantum
5
+ * successions and regulator notices.
6
+ */
7
+ import { jcsHash, signObject, verifySignedObject } from '@zanii/core';
8
+ import { assembleSuccession, buildSuccessionBody, signSuccession, verifySuccession } from './index.js';
9
+ // ------------------------------------------------------------------------------ //
10
+ // Rotation and upgrades
11
+ // ------------------------------------------------------------------------------ //
12
+ /** Is a key due for rotation under a maximum age? */
13
+ export function rotationDue(keyCreatedAt, policy, now = new Date().toISOString()) {
14
+ const due = new Date(Date.parse(keyCreatedAt) + policy.maxAgeDays * 86_400_000).toISOString();
15
+ const warnFrom = new Date(Date.parse(due) - (policy.warnDays ?? 14) * 86_400_000).toISOString();
16
+ return { due, status: now >= due ? 'overdue' : now >= warnFrom ? 'due-soon' : 'ok' };
17
+ }
18
+ /** A planned rotation: the owner signs, and the outgoing key countersigns (the strong form). */
19
+ export function plannedRotation(input, ownerPrivateKey, predecessorPrivateKey) {
20
+ const body = buildSuccessionBody({ ...input, reason: 'rotation' });
21
+ return assembleSuccession(body, [signSuccession(body, input.owner, ownerPrivateKey), signSuccession(body, input.predecessor, predecessorPrivateKey)]);
22
+ }
23
+ /** The identity stays; the change of model underneath is disclosed and signed by the owner. */
24
+ export function modelUpgrade(input, ownerPrivateKey) {
25
+ return signObject({ v: 1, type: 'succession.model_upgrade', agent: input.agent, from: input.from, to: input.to, ts: input.ts, ...(input.note ? { note: input.note } : {}) }, ownerPrivateKey);
26
+ }
27
+ /** The model an agent ran at a time, from its signed upgrade history (owner-signed only). */
28
+ export function modelAt(upgrades, agent, owner, at) {
29
+ const u = upgrades.filter((x) => x.agent === agent && x.signer === owner && x.ts <= at && verifySignedObject(x)).sort((a, b) => a.ts.localeCompare(b.ts));
30
+ return u.at(-1)?.to ?? upgrades.filter((x) => x.agent === agent && x.signer === owner && verifySignedObject(x)).sort((a, b) => a.ts.localeCompare(b.ts))[0]?.from ?? null;
31
+ }
32
+ /** Several agents' mandates continue in one (an M&A consolidation). Signed by the owner. */
33
+ export function mergeAgents(input, ownerPrivateKey) {
34
+ if (input.sources.length < 2 || input.sources.includes(input.into))
35
+ throw new Error('succession: a merge needs two or more other agents');
36
+ return signObject({ v: 1, type: 'succession.merge', sources: [...input.sources].sort(), targets: [input.into], ts: input.ts, ...(input.note ? { note: input.note } : {}) }, ownerPrivateKey);
37
+ }
38
+ /** One agent's mandate divides among several (a carve-out). Signed by the owner. */
39
+ export function splitAgent(input, ownerPrivateKey) {
40
+ if (input.into.length < 2 || input.into.includes(input.source))
41
+ throw new Error('succession: a split needs two or more other agents');
42
+ return signObject({ v: 1, type: 'succession.split', sources: [input.source], targets: [...input.into].sort(), ts: input.ts, ...(input.note ? { note: input.note } : {}) }, ownerPrivateKey);
43
+ }
44
+ /** Sell or hand over an agent business: both owners sign the same terms (by hash). */
45
+ export function ownerTransfer(body, fromOwnerKey, toOwnerKey) {
46
+ const b = { v: 1, type: 'succession.owner_transfer', ...body };
47
+ const h = jcsHash(b);
48
+ return { body: b, sigs: [signObject({ type: 'succession.owner_transfer_sig', body: h }, fromOwnerKey), signObject({ type: 'succession.owner_transfer_sig', body: h }, toOwnerKey)] };
49
+ }
50
+ export function verifyOwnerTransfer(t) {
51
+ const h = jcsHash(t.body);
52
+ const signed = (did) => t.sigs.some((s) => s.signer === did && s.body === h && verifySignedObject(s));
53
+ return t.body.from_owner !== t.body.to_owner && signed(t.body.from_owner) && signed(t.body.to_owner);
54
+ }
55
+ /** The owner says in advance who handles their agents if they die, and what to do with them. */
56
+ export function ownerContingency(input, ownerPrivateKey) {
57
+ return signObject({ v: 1, type: 'succession.contingency', agents: input.agents, executor: input.executor, instructions: input.instructions, ts: input.ts }, ownerPrivateKey);
58
+ }
59
+ export function executorTakeover(c, evidenceHash, executorPrivateKey, ts = new Date().toISOString()) {
60
+ return signObject({ v: 1, type: 'succession.executor_takeover', contingency: jcsHash(c), evidence: evidenceHash, ts }, executorPrivateKey);
61
+ }
62
+ /** Both statements signed and linked; whether the evidence suffices is the verifier's call. */
63
+ export function verifyTakeover(t, c, acceptEvidence) {
64
+ const reasons = [];
65
+ if (!verifySignedObject(c))
66
+ reasons.push('contingency signature invalid');
67
+ if (!verifySignedObject(t) || t.signer !== c.executor)
68
+ reasons.push('takeover not signed by the named executor');
69
+ if (t.contingency !== jcsHash(c))
70
+ reasons.push('takeover cites another contingency');
71
+ if (!acceptEvidence(t.evidence))
72
+ reasons.push('evidence not accepted');
73
+ return { ok: reasons.length === 0, reasons, owner: c.signer, agents: c.agents, instructions: c.instructions };
74
+ }
75
+ /** Retire an agent for good: the owner signs a tombstone naming its final chain head. Close its session first. */
76
+ export function tombstone(input, ownerPrivateKey) {
77
+ return signObject({ v: 1, type: 'succession.tombstone', agent: input.agent, final_head: input.finalHead, reason: input.reason, ts: input.ts }, ownerPrivateKey);
78
+ }
79
+ /** Receipts that contradict a tombstone: by the retired agent after its retirement. */
80
+ export function afterTombstone(t, receipts) {
81
+ return receipts.filter((r) => r.agent_id === t.agent && r.ts > t.ts);
82
+ }
83
+ /** Every receipt by the compromised key inside the window (from compromised_at to the succession), flagged for review. */
84
+ export function compromiseImpact(s, receipts) {
85
+ if (s.body.reason !== 'compromise' || !s.body.compromised_at)
86
+ throw new Error('succession: not a compromise succession');
87
+ const from = s.body.compromised_at;
88
+ const inWindow = receipts.filter((r) => r.agent_id === s.body.predecessor && r.ts >= from);
89
+ return { predecessor: s.body.predecessor, from, to: s.body.ts, suspect: inWindow.map((r) => ({ hash: r.hash ?? jcsHash(r), target: r.target, ts: r.ts, afterHandover: r.ts > s.body.ts })) };
90
+ }
91
+ /** Short facts for a trust badge from a combined summary. */
92
+ export function lineageBadge(summary) {
93
+ const compromises = summary.caveats.filter((c) => c.includes('COMPROMISED')).length;
94
+ const since = summary.first_ts?.slice(0, 7) ?? null;
95
+ const tone = summary.revoked ? 'red' : compromises ? 'amber' : 'green';
96
+ return { tone, text: `${summary.lineage.length} key${summary.lineage.length === 1 ? '' : 's'}${since ? ` · since ${since}` : ''}${compromises ? ` · ${compromises} compromise${compromises === 1 ? '' : 's'}` : ''}`, keys: summary.lineage.length, compromises };
97
+ }
98
+ /** Rotate to a successor that has a post-quantum key bound (`@zanii/pq` bindPqKey); the binding hash is in the signed note. */
99
+ export function pqSuccession(input, ownerPrivateKey, predecessorPrivateKey) {
100
+ const body = buildSuccessionBody({ predecessor: input.predecessor, successor: input.successor, owner: input.owner, reason: 'rotation', ts: input.ts, note: `pq-binding:${input.pqBindingHash}` });
101
+ return assembleSuccession(body, [signSuccession(body, input.owner, ownerPrivateKey), ...(predecessorPrivateKey ? [signSuccession(body, input.predecessor, predecessorPrivateKey)] : [])]);
102
+ }
103
+ /** The succession is valid and names this PQ binding. */
104
+ export function verifyPqSuccession(s, pqBindingHash) {
105
+ return verifySuccession(s).ok && s.body.note === `pq-binding:${pqBindingHash}`;
106
+ }
107
+ /** Notify a regulator of a succession for a licensed agent, citing it by hash. */
108
+ export function regulatorNotice(s, input, ownerPrivateKey) {
109
+ return signObject({ v: 1, type: 'succession.regulator_notice', regulator: input.regulator, licence: input.licence, succession: jcsHash(s), reason: s.body.reason, predecessor: s.body.predecessor, successor: s.body.successor, ts: input.ts ?? new Date().toISOString() }, ownerPrivateKey);
110
+ }
111
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAmC,MAAM,aAAa,CAAC;AACvG,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,gBAAgB,EAAyC,MAAM,YAAY,CAAC;AAE9I,oFAAoF;AACpF,wBAAwB;AACxB,oFAAoF;AAEpF,qDAAqD;AACrD,MAAM,UAAU,WAAW,CAAC,YAAoB,EAAE,MAAiD,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IACjI,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9F,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IAChG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAE,SAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAE,UAAoB,CAAC,CAAC,CAAE,IAAc,EAAE,CAAC;AACxH,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,eAAe,CAAC,KAA4E,EAAE,eAA2B,EAAE,qBAAiC;IAC1K,MAAM,IAAI,GAAG,mBAAmB,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACnE,OAAO,kBAAkB,CAAC,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;AACxJ,CAAC;AAID,+FAA+F;AAC/F,MAAM,UAAU,YAAY,CAAC,KAAqI,EAAE,eAA2B;IAC7L,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE,CAAU,EAAE,IAAI,EAAE,0BAAmC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;AAClN,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,OAAO,CAAC,QAAwB,EAAE,KAAa,EAAE,KAAa,EAAE,EAAU;IACxF,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1J,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;AAC5K,CAAC;AAQD,4FAA4F;AAC5F,MAAM,UAAU,WAAW,CAAC,KAAqE,EAAE,eAA2B;IAC5H,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAC1I,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE,CAAU,EAAE,IAAI,EAAE,kBAA2B,EAAE,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;AACjN,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,UAAU,CAAC,KAAoE,EAAE,eAA2B;IAC1H,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACtI,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE,CAAU,EAAE,IAAI,EAAE,kBAA2B,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;AAChN,CAAC;AAOD,sFAAsF;AACtF,MAAM,UAAU,aAAa,CAAC,IAA+C,EAAE,YAAwB,EAAE,UAAsB;IAC7H,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAU,EAAE,IAAI,EAAE,2BAAoC,EAAE,GAAG,IAAI,EAAE,CAAC;IACjF,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,+BAAwC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,+BAAwC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;AACzM,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,CAAgB;IAClD,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9G,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvG,CAAC;AAKD,gGAAgG;AAChG,MAAM,UAAU,gBAAgB,CAAC,KAAyG,EAAE,eAA2B;IACrK,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE,CAAU,EAAE,IAAI,EAAE,wBAAiC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC;AACjM,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAmB,EAAE,YAAoB,EAAE,kBAA8B,EAAE,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IACvI,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE,CAAU,EAAE,IAAI,EAAE,8BAAuC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,kBAAkB,CAAC,CAAC;AAC/J,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,cAAc,CAAC,CAAmB,EAAE,CAAmB,EAAE,cAAyC;IAChH,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC1E,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,QAAQ;QAAE,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IACjH,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACrF,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACvE,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC;AAChH,CAAC;AAQD,kHAAkH;AAClH,MAAM,UAAU,SAAS,CAAC,KAA8E,EAAE,eAA2B;IACnI,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE,CAAU,EAAE,IAAI,EAAE,sBAA+B,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC;AACpL,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,cAAc,CAAC,CAAY,EAAE,QAAmB;IAC9D,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,0HAA0H;AAC1H,MAAM,UAAU,gBAAgB,CAAC,CAAa,EAAE,QAA4C;IAC1F,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACzH,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;IACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;IAC3F,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;AAC/L,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,YAAY,CAAC,OAAwB;IACnD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC;IACpF,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;IACpD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACvE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,WAAW,cAAc,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;AACpQ,CAAC;AAED,+HAA+H;AAC/H,MAAM,UAAU,YAAY,CAAC,KAAmG,EAAE,eAA2B,EAAE,qBAAkC;IAC/L,MAAM,IAAI,GAAG,mBAAmB,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,cAAc,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAClM,OAAO,kBAAkB,CAAC,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5L,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,kBAAkB,CAAC,CAAa,EAAE,aAAqB;IACrE,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,aAAa,EAAE,CAAC;AACjF,CAAC;AAID,kFAAkF;AAClF,MAAM,UAAU,eAAe,CAAC,CAAa,EAAE,KAA0D,EAAE,eAA2B;IACpI,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE,CAAU,EAAE,IAAI,EAAE,6BAAsC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC;AACjT,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zanii/succession",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Agent lifecycle and key rotation with signed continuity - the owner attests 'B succeeds A', so reputation and CV history transfer verifiably instead of dying with a key. A compromise succession REQUIRES the compromise timestamp, bracketing the trusted window. Continuity of authority, not identity of code.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://ledger.zanii.agency",
@@ -33,8 +33,8 @@
33
33
  "dependencies": {
34
34
  "@noble/curves": "^1.8.1",
35
35
  "@noble/hashes": "^1.7.1",
36
- "@zanii/a2a-directory": "0.1.0",
37
- "@zanii/core": "0.4.0"
36
+ "@zanii/core": "^0.5.4",
37
+ "@zanii/a2a-directory": "^0.1.3"
38
38
  },
39
39
  "scripts": {
40
40
  "build": "tsc -p tsconfig.build.json",
package/src/index.ts CHANGED
@@ -254,3 +254,4 @@ export function combinedSummary(successions: Succession[], trusts: AgentTrust[],
254
254
  caveats,
255
255
  };
256
256
  }
257
+ export * from './lifecycle.js';
@@ -0,0 +1,146 @@
1
+ /**
2
+ * The rest of an agent's life: scheduled rotation, model upgrades disclosed under the same
3
+ * identity, fleet merges and splits, ownership transfers, an executor taking over when an
4
+ * owner dies, retirement tombstones, compromise impact, a lineage badge, post-quantum
5
+ * successions and regulator notices.
6
+ */
7
+ import { jcsHash, signObject, verifySignedObject, type Receipt, type SignedObject } from '@zanii/core';
8
+ import { assembleSuccession, buildSuccessionBody, signSuccession, verifySuccession, type CombinedSummary, type Succession } from './index.js';
9
+
10
+ // ------------------------------------------------------------------------------ //
11
+ // Rotation and upgrades
12
+ // ------------------------------------------------------------------------------ //
13
+
14
+ /** Is a key due for rotation under a maximum age? */
15
+ export function rotationDue(keyCreatedAt: string, policy: { maxAgeDays: number; warnDays?: number }, now = new Date().toISOString()) {
16
+ const due = new Date(Date.parse(keyCreatedAt) + policy.maxAgeDays * 86_400_000).toISOString();
17
+ const warnFrom = new Date(Date.parse(due) - (policy.warnDays ?? 14) * 86_400_000).toISOString();
18
+ return { due, status: now >= due ? ('overdue' as const) : now >= warnFrom ? ('due-soon' as const) : ('ok' as const) };
19
+ }
20
+
21
+ /** A planned rotation: the owner signs, and the outgoing key countersigns (the strong form). */
22
+ export function plannedRotation(input: { predecessor: string; successor: string; owner: string; ts: string }, ownerPrivateKey: Uint8Array, predecessorPrivateKey: Uint8Array): Succession {
23
+ const body = buildSuccessionBody({ ...input, reason: 'rotation' });
24
+ return assembleSuccession(body, [signSuccession(body, input.owner, ownerPrivateKey), signSuccession(body, input.predecessor, predecessorPrivateKey)]);
25
+ }
26
+
27
+ export type ModelUpgrade = SignedObject<{ v: 1; type: 'succession.model_upgrade'; agent: string; from: { model: string; version: string }; to: { model: string; version: string }; ts: string; note?: string }>;
28
+
29
+ /** The identity stays; the change of model underneath is disclosed and signed by the owner. */
30
+ export function modelUpgrade(input: { agent: string; from: { model: string; version: string }; to: { model: string; version: string }; ts: string; note?: string }, ownerPrivateKey: Uint8Array): ModelUpgrade {
31
+ return signObject({ v: 1 as const, type: 'succession.model_upgrade' as const, agent: input.agent, from: input.from, to: input.to, ts: input.ts, ...(input.note ? { note: input.note } : {}) }, ownerPrivateKey);
32
+ }
33
+
34
+ /** The model an agent ran at a time, from its signed upgrade history (owner-signed only). */
35
+ export function modelAt(upgrades: ModelUpgrade[], agent: string, owner: string, at: string) {
36
+ const u = upgrades.filter((x) => x.agent === agent && x.signer === owner && x.ts <= at && verifySignedObject(x)).sort((a, b) => a.ts.localeCompare(b.ts));
37
+ return u.at(-1)?.to ?? upgrades.filter((x) => x.agent === agent && x.signer === owner && verifySignedObject(x)).sort((a, b) => a.ts.localeCompare(b.ts))[0]?.from ?? null;
38
+ }
39
+
40
+ // ------------------------------------------------------------------------------ //
41
+ // Fleets and ownership
42
+ // ------------------------------------------------------------------------------ //
43
+
44
+ export type FleetEvent = SignedObject<{ v: 1; type: 'succession.merge' | 'succession.split'; sources: string[]; targets: string[]; ts: string; note?: string }>;
45
+
46
+ /** Several agents' mandates continue in one (an M&A consolidation). Signed by the owner. */
47
+ export function mergeAgents(input: { sources: string[]; into: string; ts: string; note?: string }, ownerPrivateKey: Uint8Array): FleetEvent {
48
+ if (input.sources.length < 2 || input.sources.includes(input.into)) throw new Error('succession: a merge needs two or more other agents');
49
+ return signObject({ v: 1 as const, type: 'succession.merge' as const, sources: [...input.sources].sort(), targets: [input.into], ts: input.ts, ...(input.note ? { note: input.note } : {}) }, ownerPrivateKey);
50
+ }
51
+
52
+ /** One agent's mandate divides among several (a carve-out). Signed by the owner. */
53
+ export function splitAgent(input: { source: string; into: string[]; ts: string; note?: string }, ownerPrivateKey: Uint8Array): FleetEvent {
54
+ if (input.into.length < 2 || input.into.includes(input.source)) throw new Error('succession: a split needs two or more other agents');
55
+ return signObject({ v: 1 as const, type: 'succession.split' as const, sources: [input.source], targets: [...input.into].sort(), ts: input.ts, ...(input.note ? { note: input.note } : {}) }, ownerPrivateKey);
56
+ }
57
+
58
+ export interface OwnerTransfer {
59
+ body: { v: 1; type: 'succession.owner_transfer'; agent: string; from_owner: string; to_owner: string; ts: string; terms?: string };
60
+ sigs: Array<SignedObject<{ type: 'succession.owner_transfer_sig'; body: string }>>;
61
+ }
62
+
63
+ /** Sell or hand over an agent business: both owners sign the same terms (by hash). */
64
+ export function ownerTransfer(body: Omit<OwnerTransfer['body'], 'v' | 'type'>, fromOwnerKey: Uint8Array, toOwnerKey: Uint8Array): OwnerTransfer {
65
+ const b = { v: 1 as const, type: 'succession.owner_transfer' as const, ...body };
66
+ const h = jcsHash(b);
67
+ return { body: b, sigs: [signObject({ type: 'succession.owner_transfer_sig' as const, body: h }, fromOwnerKey), signObject({ type: 'succession.owner_transfer_sig' as const, body: h }, toOwnerKey)] };
68
+ }
69
+
70
+ export function verifyOwnerTransfer(t: OwnerTransfer): boolean {
71
+ const h = jcsHash(t.body);
72
+ const signed = (did: string) => t.sigs.some((s) => s.signer === did && s.body === h && verifySignedObject(s));
73
+ return t.body.from_owner !== t.body.to_owner && signed(t.body.from_owner) && signed(t.body.to_owner);
74
+ }
75
+
76
+ export type OwnerContingency = SignedObject<{ v: 1; type: 'succession.contingency'; agents: string[]; executor: string; instructions: 'retire' | 'transfer' | 'continue'; ts: string }>;
77
+ export type ExecutorTakeover = SignedObject<{ v: 1; type: 'succession.executor_takeover'; contingency: string; evidence: string; ts: string }>;
78
+
79
+ /** The owner says in advance who handles their agents if they die, and what to do with them. */
80
+ export function ownerContingency(input: { agents: string[]; executor: string; instructions: OwnerContingency['instructions']; ts: string }, ownerPrivateKey: Uint8Array): OwnerContingency {
81
+ return signObject({ v: 1 as const, type: 'succession.contingency' as const, agents: input.agents, executor: input.executor, instructions: input.instructions, ts: input.ts }, ownerPrivateKey);
82
+ }
83
+
84
+ export function executorTakeover(c: OwnerContingency, evidenceHash: string, executorPrivateKey: Uint8Array, ts = new Date().toISOString()): ExecutorTakeover {
85
+ return signObject({ v: 1 as const, type: 'succession.executor_takeover' as const, contingency: jcsHash(c), evidence: evidenceHash, ts }, executorPrivateKey);
86
+ }
87
+
88
+ /** Both statements signed and linked; whether the evidence suffices is the verifier's call. */
89
+ export function verifyTakeover(t: ExecutorTakeover, c: OwnerContingency, acceptEvidence: (hash: string) => boolean) {
90
+ const reasons: string[] = [];
91
+ if (!verifySignedObject(c)) reasons.push('contingency signature invalid');
92
+ if (!verifySignedObject(t) || t.signer !== c.executor) reasons.push('takeover not signed by the named executor');
93
+ if (t.contingency !== jcsHash(c)) reasons.push('takeover cites another contingency');
94
+ if (!acceptEvidence(t.evidence)) reasons.push('evidence not accepted');
95
+ return { ok: reasons.length === 0, reasons, owner: c.signer, agents: c.agents, instructions: c.instructions };
96
+ }
97
+
98
+ // ------------------------------------------------------------------------------ //
99
+ // Retirement, compromise, display
100
+ // ------------------------------------------------------------------------------ //
101
+
102
+ export type Tombstone = SignedObject<{ v: 1; type: 'succession.tombstone'; agent: string; final_head: string | null; reason: string; ts: string }>;
103
+
104
+ /** Retire an agent for good: the owner signs a tombstone naming its final chain head. Close its session first. */
105
+ export function tombstone(input: { agent: string; finalHead: string | null; reason: string; ts: string }, ownerPrivateKey: Uint8Array): Tombstone {
106
+ return signObject({ v: 1 as const, type: 'succession.tombstone' as const, agent: input.agent, final_head: input.finalHead, reason: input.reason, ts: input.ts }, ownerPrivateKey);
107
+ }
108
+
109
+ /** Receipts that contradict a tombstone: by the retired agent after its retirement. */
110
+ export function afterTombstone(t: Tombstone, receipts: Receipt[]) {
111
+ return receipts.filter((r) => r.agent_id === t.agent && r.ts > t.ts);
112
+ }
113
+
114
+ /** Every receipt by the compromised key inside the window (from compromised_at to the succession), flagged for review. */
115
+ export function compromiseImpact(s: Succession, receipts: Array<Receipt & { hash?: string }>) {
116
+ if (s.body.reason !== 'compromise' || !s.body.compromised_at) throw new Error('succession: not a compromise succession');
117
+ const from = s.body.compromised_at;
118
+ const inWindow = receipts.filter((r) => r.agent_id === s.body.predecessor && r.ts >= from);
119
+ return { predecessor: s.body.predecessor, from, to: s.body.ts, suspect: inWindow.map((r) => ({ hash: r.hash ?? jcsHash(r), target: r.target, ts: r.ts, afterHandover: r.ts > s.body.ts })) };
120
+ }
121
+
122
+ /** Short facts for a trust badge from a combined summary. */
123
+ export function lineageBadge(summary: CombinedSummary) {
124
+ const compromises = summary.caveats.filter((c) => c.includes('COMPROMISED')).length;
125
+ const since = summary.first_ts?.slice(0, 7) ?? null;
126
+ const tone = summary.revoked ? 'red' : compromises ? 'amber' : 'green';
127
+ return { tone, text: `${summary.lineage.length} key${summary.lineage.length === 1 ? '' : 's'}${since ? ` · since ${since}` : ''}${compromises ? ` · ${compromises} compromise${compromises === 1 ? '' : 's'}` : ''}`, keys: summary.lineage.length, compromises };
128
+ }
129
+
130
+ /** Rotate to a successor that has a post-quantum key bound (`@zanii/pq` bindPqKey); the binding hash is in the signed note. */
131
+ export function pqSuccession(input: { predecessor: string; successor: string; owner: string; ts: string; pqBindingHash: string }, ownerPrivateKey: Uint8Array, predecessorPrivateKey?: Uint8Array): Succession {
132
+ const body = buildSuccessionBody({ predecessor: input.predecessor, successor: input.successor, owner: input.owner, reason: 'rotation', ts: input.ts, note: `pq-binding:${input.pqBindingHash}` });
133
+ return assembleSuccession(body, [signSuccession(body, input.owner, ownerPrivateKey), ...(predecessorPrivateKey ? [signSuccession(body, input.predecessor, predecessorPrivateKey)] : [])]);
134
+ }
135
+
136
+ /** The succession is valid and names this PQ binding. */
137
+ export function verifyPqSuccession(s: Succession, pqBindingHash: string): boolean {
138
+ return verifySuccession(s).ok && s.body.note === `pq-binding:${pqBindingHash}`;
139
+ }
140
+
141
+ export type RegulatorNotice = SignedObject<{ v: 1; type: 'succession.regulator_notice'; regulator: string; licence: string; succession: string; reason: string; predecessor: string; successor: string; ts: string }>;
142
+
143
+ /** Notify a regulator of a succession for a licensed agent, citing it by hash. */
144
+ export function regulatorNotice(s: Succession, input: { regulator: string; licence: string; ts?: string }, ownerPrivateKey: Uint8Array): RegulatorNotice {
145
+ return signObject({ v: 1 as const, type: 'succession.regulator_notice' as const, regulator: input.regulator, licence: input.licence, succession: jcsHash(s), reason: s.body.reason, predecessor: s.body.predecessor, successor: s.body.successor, ts: input.ts ?? new Date().toISOString() }, ownerPrivateKey);
146
+ }