@cotal-ai/core 0.81.1 → 0.82.1

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.
@@ -0,0 +1,220 @@
1
+ import type { RetainedAgentAuthority } from "./auth-provider.js";
2
+ import { type RemoteDelegatedUserIntentExecutionRequest, type RemoteManagerEnvelope } from "./remote-manager-authority.js";
3
+ export interface DelegatedRecoveryTarget {
4
+ owner: string;
5
+ actor: string;
6
+ lifecycleUid: string;
7
+ }
8
+ export interface DelegatedRecoveryOrigin {
9
+ space: string;
10
+ accountPublicKey: string;
11
+ managerInstanceId: string;
12
+ managerLifecycleUid: string;
13
+ assignmentRevision: number;
14
+ enrollmentRegistrationRevision: number;
15
+ enrollmentRegistrationDigest: string;
16
+ enrollmentServeEpoch: number;
17
+ intentId: string;
18
+ target: DelegatedRecoveryTarget;
19
+ }
20
+ export interface DelegatedRecoveryLaunchPlan {
21
+ agent: string;
22
+ model?: string;
23
+ variant?: string;
24
+ events: boolean;
25
+ sourceDigest: string;
26
+ }
27
+ export interface DelegatedRecoveryDescriptor {
28
+ v: 1;
29
+ intentId: string;
30
+ origin: DelegatedRecoveryOrigin;
31
+ target: DelegatedRecoveryTarget;
32
+ runtimeKind: string;
33
+ runtimeKey: string;
34
+ launchIdentity: DelegatedRecoveryLaunchPlan & {
35
+ role?: string;
36
+ spawner: string;
37
+ authorityParent: string;
38
+ };
39
+ authorityDigest: string;
40
+ localStoreBindingDigest: string;
41
+ localStoreIdentityDigest: string;
42
+ }
43
+ export interface DelegatedRecoveryLocalProof {
44
+ storeBindingDigest: string;
45
+ storeIdentityDigest: string;
46
+ actorTokenDigest: string;
47
+ sentinelDigest: string;
48
+ }
49
+ export interface DelegatedRecoveryScanBinding {
50
+ scanId: string;
51
+ accountPublicKey: string;
52
+ managerInstanceId: string;
53
+ managerLifecycleUid: string;
54
+ assignmentRevision: number;
55
+ currentRegistrationRevision: number;
56
+ currentServeEpoch: number;
57
+ sourceRevision: number;
58
+ memberCount: number;
59
+ membersDigest: string;
60
+ }
61
+ export declare const DELEGATED_RECOVERY_REASONS: readonly ["provider-unknown", "store-unavailable", "authority-unavailable", "identity-unverified", "descriptor-incomplete", "retiring", "authority-drift", "identity-changed", "scope-changed"];
62
+ export type DelegatedRecoveryReason = (typeof DELEGATED_RECOVERY_REASONS)[number];
63
+ export interface DelegatedRecoveryRecord {
64
+ intentId: string;
65
+ intentRevision: number;
66
+ recoveryRevision: number;
67
+ target: DelegatedRecoveryTarget;
68
+ phase: "incomplete" | "prepared" | "create-unknown" | "eligible" | "bound" | "retiring" | "terminal";
69
+ descriptor: DelegatedRecoveryDescriptor | null;
70
+ descriptorDigest: string | null;
71
+ authority: RetainedAgentAuthority | null;
72
+ localProof: DelegatedRecoveryLocalProof | null;
73
+ startedAt: string | null;
74
+ executionIdentityDigest: string | null;
75
+ reasonCode: DelegatedRecoveryReason | null;
76
+ }
77
+ interface RecoveryEnvelope extends RemoteManagerEnvelope {
78
+ v: 1;
79
+ kind: "manager-delegated-recovery";
80
+ actor: "cli";
81
+ accountPublicKey: string;
82
+ assignmentRevision: number;
83
+ currentRegistrationRevision: number;
84
+ serveEpoch: number;
85
+ }
86
+ type RecoveryOperation = {
87
+ operation: "confirm";
88
+ body: {
89
+ intentId: string;
90
+ target: DelegatedRecoveryTarget;
91
+ expectedIntentRevision: number;
92
+ localProof: DelegatedRecoveryLocalProof;
93
+ };
94
+ } | {
95
+ operation: "scan";
96
+ body: {
97
+ scanBinding?: DelegatedRecoveryScanBinding;
98
+ cursor?: string;
99
+ };
100
+ } | {
101
+ operation: "claim";
102
+ body: {
103
+ intentId: string;
104
+ target: DelegatedRecoveryTarget;
105
+ expectedRecoveryRevision: number;
106
+ expectedOrigin: DelegatedRecoveryOrigin;
107
+ attemptId: string;
108
+ scanBinding: DelegatedRecoveryScanBinding;
109
+ };
110
+ } | {
111
+ operation: "settle";
112
+ body: {
113
+ claimId: string;
114
+ expectedRecoveryRevision: number;
115
+ settleId: string;
116
+ } & ({
117
+ observation: "bound";
118
+ executionIdentityDigest: string;
119
+ } | {
120
+ observation: "held";
121
+ reasonCode: DelegatedRecoveryReason;
122
+ });
123
+ } | {
124
+ operation: "finish";
125
+ body: {
126
+ scanBinding: DelegatedRecoveryScanBinding;
127
+ finishId: string;
128
+ expectedScopeRevision: number;
129
+ };
130
+ } | {
131
+ operation: "watch";
132
+ body: {
133
+ afterRevision: number;
134
+ };
135
+ };
136
+ /** Contract only. A host must opt in; the existing authority dispatch does not admit this family. */
137
+ export type RemoteDelegatedRecoveryRequest = RecoveryEnvelope & RecoveryOperation;
138
+ type RecoveryResultEnvelope = Pick<RecoveryEnvelope, "v" | "kind" | "space" | "accountPublicKey" | "assignmentRevision" | "instanceId" | "managerLifecycleUid" | "currentRegistrationRevision" | "serveEpoch" | "requestId">;
139
+ type RecoveryResult = {
140
+ operation: "confirm";
141
+ result: {
142
+ intentId: string;
143
+ target: DelegatedRecoveryTarget;
144
+ intentRevision: number;
145
+ recoveryRevision: number;
146
+ prepared: true;
147
+ };
148
+ } | {
149
+ operation: "scan";
150
+ result: {
151
+ scanBinding: DelegatedRecoveryScanBinding;
152
+ records: DelegatedRecoveryRecord[];
153
+ nextCursor: string | null;
154
+ complete: boolean;
155
+ };
156
+ } | {
157
+ operation: "claim";
158
+ result: {
159
+ claimId: string;
160
+ attemptId: string;
161
+ record: DelegatedRecoveryRecord;
162
+ claimEpoch: number;
163
+ };
164
+ } | {
165
+ operation: "settle";
166
+ result: {
167
+ claimId: string;
168
+ settleId: string;
169
+ recoveryRevision: number;
170
+ observation: "bound" | "held";
171
+ };
172
+ } | {
173
+ operation: "finish";
174
+ result: {
175
+ finishId: string;
176
+ scanId: string;
177
+ scopeRevision: number;
178
+ admission: "open";
179
+ };
180
+ } | {
181
+ operation: "watch";
182
+ result: {
183
+ revision: number;
184
+ scanInvalidated: boolean;
185
+ };
186
+ };
187
+ export type RemoteDelegatedRecoveryResult = RecoveryResultEnvelope & (({
188
+ ok: true;
189
+ } & RecoveryResult) | {
190
+ ok: false;
191
+ operation: RecoveryOperation["operation"];
192
+ error: {
193
+ code: "bad-request" | "permission-denied" | "conflict" | "unavailable" | "failed-precondition" | "unimplemented";
194
+ reasonCode?: DelegatedRecoveryReason;
195
+ };
196
+ });
197
+ /** The separate parser keeps legacy hosts rejecting the extended launch instead of ignoring it. */
198
+ export type RemoteDelegatedRecoveryLaunchRequest = Omit<RemoteDelegatedUserIntentExecutionRequest, "execute"> & {
199
+ execute: {
200
+ operation: "launch";
201
+ target: {
202
+ actor: string;
203
+ tokenHash: string;
204
+ };
205
+ recoveryPlan: {
206
+ runtimeKind: string;
207
+ launch: DelegatedRecoveryLaunchPlan;
208
+ localStoreBindingDigest: string;
209
+ localStoreIdentityDigest: string;
210
+ };
211
+ };
212
+ };
213
+ export declare function parseDelegatedRecoveryDescriptor(raw: unknown): DelegatedRecoveryDescriptor;
214
+ /** Parse structure and scope bindings; fresh host authority and durable CAS remain separate checks. */
215
+ export declare function parseRemoteDelegatedRecoveryRequest(raw: unknown): RemoteDelegatedRecoveryRequest;
216
+ export declare function parseRemoteDelegatedRecoveryLaunchRequest(raw: unknown): RemoteDelegatedRecoveryLaunchRequest;
217
+ /** Bind every response to its request before a caller may act on any returned record. */
218
+ export declare function parseRemoteDelegatedRecoveryResult(raw: unknown, request: RemoteDelegatedRecoveryRequest): RemoteDelegatedRecoveryResult;
219
+ export {};
220
+ //# sourceMappingURL=delegated-recovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegated-recovery.d.ts","sourceRoot":"","sources":["../src/delegated-recovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,277 @@
1
+ import { canonicalJson, contractDigest } from "./canonical.js";
2
+ import { EpEnvelopeError } from "./endpoint-error.js";
3
+ import { isAccountNkey } from "./identity.js";
4
+ import { managedRuntimeKey } from "./managed-handoff.js";
5
+ import { parseRemoteDelegatedUserIntentExecutionRequest, parseRemoteManagerEnvelope, } from "./remote-manager-authority.js";
6
+ import { assertDerivedOwnerToken, assertLifecycleToken, assertValidOwnerToken, parsePrincipalKey } from "./subjects.js";
7
+ export const DELEGATED_RECOVERY_REASONS = Object.freeze([
8
+ "provider-unknown", "store-unavailable", "authority-unavailable", "identity-unverified",
9
+ "descriptor-incomplete", "retiring", "authority-drift", "identity-changed", "scope-changed",
10
+ ]);
11
+ function refuse(detail) {
12
+ throw new EpEnvelopeError("bad-request", `delegated recovery ${detail}`);
13
+ }
14
+ function object(raw, keys, required = keys) {
15
+ if (raw === null || typeof raw !== "object" || Array.isArray(raw))
16
+ refuse("requires an object");
17
+ const value = raw;
18
+ if (Reflect.ownKeys(value).some(key => typeof key !== "string" || !keys.includes(key)))
19
+ refuse("carries an unknown field");
20
+ if (required.some(key => !Object.hasOwn(value, key)))
21
+ refuse("is missing a required field");
22
+ return value;
23
+ }
24
+ function text(raw) {
25
+ if (typeof raw !== "string" || raw.length === 0 || raw.length > 1024 || /[\x00-\x1f]/.test(raw))
26
+ refuse("requires a bounded nonempty string");
27
+ return raw;
28
+ }
29
+ function token(raw) { return assertLifecycleToken(text(raw), "delegated recovery id"); }
30
+ function count(raw) {
31
+ if (typeof raw !== "number" || !Number.isSafeInteger(raw) || raw < 0)
32
+ refuse("requires a non-negative safe integer");
33
+ return raw;
34
+ }
35
+ function flag(raw) {
36
+ if (typeof raw !== "boolean")
37
+ refuse("requires a boolean");
38
+ return raw;
39
+ }
40
+ function digest(raw) {
41
+ if (typeof raw !== "string" || !/^[0-9a-f]{64}$/.test(raw))
42
+ refuse("requires a SHA-256 digest");
43
+ return raw;
44
+ }
45
+ function account(raw) {
46
+ if (!isAccountNkey(raw))
47
+ refuse("requires an account nkey");
48
+ return raw;
49
+ }
50
+ function choice(raw, choices) {
51
+ if (typeof raw !== "string" || !choices.includes(raw))
52
+ refuse("carries an unsupported value");
53
+ return raw;
54
+ }
55
+ function nullable(raw, parse) { return raw === null ? null : parse(raw); }
56
+ function strings(raw) {
57
+ if (!Array.isArray(raw) || raw.length > 64)
58
+ refuse("requires a list of at most 64 strings");
59
+ return raw.map(text);
60
+ }
61
+ function sameTarget(a, b) {
62
+ if (a.owner !== b.owner || a.actor !== b.actor || a.lifecycleUid !== b.lifecycleUid)
63
+ refuse("target does not match its binding");
64
+ }
65
+ function target(raw) {
66
+ const o = object(raw, ["owner", "actor", "lifecycleUid"]);
67
+ return { owner: assertDerivedOwnerToken(text(o.owner)), actor: assertValidOwnerToken(text(o.actor)), lifecycleUid: token(o.lifecycleUid) };
68
+ }
69
+ function localProof(raw) {
70
+ const o = object(raw, ["storeBindingDigest", "storeIdentityDigest", "actorTokenDigest", "sentinelDigest"]);
71
+ return { storeBindingDigest: digest(o.storeBindingDigest), storeIdentityDigest: digest(o.storeIdentityDigest), actorTokenDigest: digest(o.actorTokenDigest), sentinelDigest: digest(o.sentinelDigest) };
72
+ }
73
+ function launchPlan(raw) {
74
+ const o = object(raw, ["agent", "model", "variant", "events", "sourceDigest"], ["agent", "events", "sourceDigest"]);
75
+ return { agent: text(o.agent), ...(Object.hasOwn(o, "model") ? { model: text(o.model) } : {}), ...(Object.hasOwn(o, "variant") ? { variant: text(o.variant) } : {}), events: flag(o.events), sourceDigest: digest(o.sourceDigest) };
76
+ }
77
+ function origin(raw) {
78
+ const o = object(raw, ["space", "accountPublicKey", "managerInstanceId", "managerLifecycleUid", "assignmentRevision", "enrollmentRegistrationRevision", "enrollmentRegistrationDigest", "enrollmentServeEpoch", "intentId", "target"]);
79
+ return { space: text(o.space), accountPublicKey: account(o.accountPublicKey), managerInstanceId: token(o.managerInstanceId), managerLifecycleUid: token(o.managerLifecycleUid), assignmentRevision: count(o.assignmentRevision), enrollmentRegistrationRevision: count(o.enrollmentRegistrationRevision), enrollmentRegistrationDigest: digest(o.enrollmentRegistrationDigest), enrollmentServeEpoch: count(o.enrollmentServeEpoch), intentId: token(o.intentId), target: target(o.target) };
80
+ }
81
+ function scanBinding(raw) {
82
+ const o = object(raw, ["scanId", "accountPublicKey", "managerInstanceId", "managerLifecycleUid", "assignmentRevision", "currentRegistrationRevision", "currentServeEpoch", "sourceRevision", "memberCount", "membersDigest"]);
83
+ return { scanId: token(o.scanId), accountPublicKey: account(o.accountPublicKey), managerInstanceId: token(o.managerInstanceId), managerLifecycleUid: token(o.managerLifecycleUid), assignmentRevision: count(o.assignmentRevision), currentRegistrationRevision: count(o.currentRegistrationRevision), currentServeEpoch: count(o.currentServeEpoch), sourceRevision: count(o.sourceRevision), memberCount: count(o.memberCount), membersDigest: digest(o.membersDigest) };
84
+ }
85
+ function scopeMatches(binding, request) {
86
+ if (binding.accountPublicKey !== request.accountPublicKey || binding.managerInstanceId !== request.instanceId || binding.managerLifecycleUid !== request.managerLifecycleUid || binding.assignmentRevision !== request.assignmentRevision || binding.currentRegistrationRevision !== request.currentRegistrationRevision || binding.currentServeEpoch !== request.serveEpoch)
87
+ refuse("scan belongs to another scope or epoch");
88
+ }
89
+ function originMatches(binding, request) {
90
+ if (binding.space !== request.space || binding.accountPublicKey !== request.accountPublicKey || binding.managerInstanceId !== request.instanceId || binding.managerLifecycleUid !== request.managerLifecycleUid || binding.assignmentRevision !== request.assignmentRevision)
91
+ refuse("origin belongs to another manager or assignment");
92
+ }
93
+ export function parseDelegatedRecoveryDescriptor(raw) {
94
+ const o = object(raw, ["v", "intentId", "origin", "target", "runtimeKind", "runtimeKey", "launchIdentity", "authorityDigest", "localStoreBindingDigest", "localStoreIdentityDigest"]);
95
+ if (o.v !== 1)
96
+ refuse("descriptor version is unsupported");
97
+ const enrolled = origin(o.origin), child = target(o.target), intentId = token(o.intentId);
98
+ sameTarget(enrolled.target, child);
99
+ if (enrolled.intentId !== intentId)
100
+ refuse("descriptor intent does not match its origin");
101
+ const identity = object(o.launchIdentity, ["agent", "model", "variant", "events", "sourceDigest", "role", "spawner", "authorityParent"], ["agent", "events", "sourceDigest", "spawner", "authorityParent"]);
102
+ const { role, spawner, authorityParent, ...plan } = identity;
103
+ const launch = launchPlan(plan);
104
+ const parent = text(authorityParent), principal = parsePrincipalKey(parent);
105
+ if (!principal || principal.owner !== child.owner || text(spawner) !== parent)
106
+ refuse("delegated spawner must be its original user's authority parent");
107
+ const runtimeKey = text(o.runtimeKey);
108
+ if (runtimeKey !== managedRuntimeKey({ space: enrolled.space, ...child }))
109
+ refuse("runtime key does not match the lifecycle");
110
+ return { v: 1, intentId, origin: enrolled, target: child, runtimeKind: text(o.runtimeKind), runtimeKey, launchIdentity: { ...launch, ...(Object.hasOwn(identity, "role") ? { role: text(role) } : {}), spawner: parent, authorityParent: parent }, authorityDigest: digest(o.authorityDigest), localStoreBindingDigest: digest(o.localStoreBindingDigest), localStoreIdentityDigest: digest(o.localStoreIdentityDigest) };
111
+ }
112
+ /** Parse structure and scope bindings; fresh host authority and durable CAS remain separate checks. */
113
+ export function parseRemoteDelegatedRecoveryRequest(raw) {
114
+ const o = object(raw, ["v", "kind", "actor", "space", "accountPublicKey", "assignmentRevision", "instanceId", "managerLifecycleUid", "currentRegistrationRevision", "serveEpoch", "registrationProof", "requestId", "identities", "operation", "body"]);
115
+ const parsed = parseRemoteManagerEnvelope(o, "manager-delegated-recovery", "delegated recovery");
116
+ if (parsed.actor !== "cli")
117
+ refuse('actor must be "cli"');
118
+ const envelope = { ...parsed, v: 1, kind: "manager-delegated-recovery", actor: "cli", accountPublicKey: account(o.accountPublicKey), assignmentRevision: count(o.assignmentRevision), currentRegistrationRevision: count(o.currentRegistrationRevision), serveEpoch: count(o.serveEpoch) };
119
+ switch (o.operation) {
120
+ case "confirm": {
121
+ const b = object(o.body, ["intentId", "target", "expectedIntentRevision", "localProof"]);
122
+ return { ...envelope, operation: "confirm", body: { intentId: token(b.intentId), target: target(b.target), expectedIntentRevision: count(b.expectedIntentRevision), localProof: localProof(b.localProof) } };
123
+ }
124
+ case "scan": {
125
+ const b = object(o.body, ["scanBinding", "cursor"], []);
126
+ if (Object.hasOwn(b, "scanBinding") !== Object.hasOwn(b, "cursor"))
127
+ refuse("scan cursor and binding must occur together");
128
+ if (!Object.hasOwn(b, "scanBinding"))
129
+ return { ...envelope, operation: "scan", body: {} };
130
+ const binding = scanBinding(b.scanBinding);
131
+ scopeMatches(binding, envelope);
132
+ return { ...envelope, operation: "scan", body: { scanBinding: binding, cursor: text(b.cursor) } };
133
+ }
134
+ case "claim": {
135
+ const b = object(o.body, ["intentId", "target", "expectedRecoveryRevision", "expectedOrigin", "attemptId", "scanBinding"]);
136
+ const expectedOrigin = origin(b.expectedOrigin), child = target(b.target), intentId = token(b.intentId), binding = scanBinding(b.scanBinding);
137
+ originMatches(expectedOrigin, envelope);
138
+ scopeMatches(binding, envelope);
139
+ sameTarget(expectedOrigin.target, child);
140
+ if (expectedOrigin.intentId !== intentId)
141
+ refuse("claim intent does not match its origin");
142
+ return { ...envelope, operation: "claim", body: { intentId, target: child, expectedRecoveryRevision: count(b.expectedRecoveryRevision), expectedOrigin, attemptId: token(b.attemptId), scanBinding: binding } };
143
+ }
144
+ case "settle": {
145
+ const b = object(o.body, ["claimId", "expectedRecoveryRevision", "settleId", "observation", "executionIdentityDigest", "reasonCode"], ["claimId", "expectedRecoveryRevision", "settleId", "observation"]);
146
+ const common = { claimId: token(b.claimId), expectedRecoveryRevision: count(b.expectedRecoveryRevision), settleId: token(b.settleId) };
147
+ if (b.observation === "bound" && !Object.hasOwn(b, "reasonCode"))
148
+ return { ...envelope, operation: "settle", body: { ...common, observation: "bound", executionIdentityDigest: digest(b.executionIdentityDigest) } };
149
+ if (b.observation === "held" && !Object.hasOwn(b, "executionIdentityDigest"))
150
+ return { ...envelope, operation: "settle", body: { ...common, observation: "held", reasonCode: choice(b.reasonCode, DELEGATED_RECOVERY_REASONS) } };
151
+ return refuse("settle must report bound identity or held reason, not both");
152
+ }
153
+ case "finish": {
154
+ const b = object(o.body, ["scanBinding", "finishId", "expectedScopeRevision"]), binding = scanBinding(b.scanBinding);
155
+ scopeMatches(binding, envelope);
156
+ return { ...envelope, operation: "finish", body: { scanBinding: binding, finishId: token(b.finishId), expectedScopeRevision: count(b.expectedScopeRevision) } };
157
+ }
158
+ case "watch": {
159
+ const b = object(o.body, ["afterRevision"]);
160
+ return { ...envelope, operation: "watch", body: { afterRevision: count(b.afterRevision) } };
161
+ }
162
+ default: return refuse("operation is unsupported");
163
+ }
164
+ }
165
+ export function parseRemoteDelegatedRecoveryLaunchRequest(raw) {
166
+ const o = object(raw, ["v", "kind", "space", "actor", "accountPublicKey", "assignmentRevision", "instanceId", "managerLifecycleUid", "requestId", "registrationProof", "serveEpoch", "identities", "intentId", "execute"]);
167
+ const execute = object(o.execute, ["operation", "target", "recoveryPlan"]);
168
+ const { recoveryPlan, ...legacyExecute } = execute;
169
+ const legacy = parseRemoteDelegatedUserIntentExecutionRequest({ ...o, execute: legacyExecute });
170
+ if (legacy.execute.operation !== "launch")
171
+ refuse("recovery plan is only valid for a launch");
172
+ const plan = object(recoveryPlan, ["runtimeKind", "launch", "localStoreBindingDigest", "localStoreIdentityDigest"]);
173
+ return { ...legacy, execute: { ...legacy.execute, recoveryPlan: { runtimeKind: text(plan.runtimeKind), launch: launchPlan(plan.launch), localStoreBindingDigest: digest(plan.localStoreBindingDigest), localStoreIdentityDigest: digest(plan.localStoreIdentityDigest) } } };
174
+ }
175
+ function authority(raw) {
176
+ const o = object(raw, ["owner", "actor", "lifecycleUid", "scope", "allowSubscribe", "allowPublish", "role", "parent"], ["owner", "actor", "lifecycleUid", "scope", "allowSubscribe", "allowPublish"]);
177
+ return { owner: assertDerivedOwnerToken(text(o.owner)), actor: assertValidOwnerToken(text(o.actor)), lifecycleUid: token(o.lifecycleUid), scope: strings(o.scope), allowSubscribe: strings(o.allowSubscribe), allowPublish: strings(o.allowPublish), ...(Object.hasOwn(o, "role") ? { role: text(o.role) } : {}), ...(Object.hasOwn(o, "parent") ? { parent: text(o.parent) } : {}) };
178
+ }
179
+ function record(raw) {
180
+ const o = object(raw, ["intentId", "intentRevision", "recoveryRevision", "target", "phase", "descriptor", "descriptorDigest", "authority", "localProof", "startedAt", "executionIdentityDigest", "reasonCode"]);
181
+ const child = target(o.target), intentId = token(o.intentId), descriptor = nullable(o.descriptor, parseDelegatedRecoveryDescriptor), retained = nullable(o.authority, authority);
182
+ if (descriptor) {
183
+ sameTarget(descriptor.target, child);
184
+ if (descriptor.intentId !== intentId)
185
+ refuse("record intent does not match its descriptor");
186
+ }
187
+ if (retained)
188
+ sameTarget(retained, child);
189
+ const startedAt = nullable(o.startedAt, text), descriptorDigest = nullable(o.descriptorDigest, digest);
190
+ const proof = nullable(o.localProof, localProof), executionIdentityDigest = nullable(o.executionIdentityDigest, digest);
191
+ const phase = choice(o.phase, ["incomplete", "prepared", "create-unknown", "eligible", "bound", "retiring", "terminal"]);
192
+ if (startedAt !== null && (!Number.isFinite(Date.parse(startedAt)) || new Date(startedAt).toISOString() !== startedAt))
193
+ refuse("birth time must be a canonical ISO instant");
194
+ if ((descriptor === null) !== (descriptorDigest === null))
195
+ refuse("descriptor and its digest must occur together");
196
+ if (descriptor && descriptorDigest !== contractDigest(descriptor).slice("sha256:".length))
197
+ refuse("descriptor digest does not match its content");
198
+ if (descriptor && retained && (descriptor.authorityDigest !== contractDigest(retained).slice("sha256:".length) || retained.parent !== descriptor.launchIdentity.authorityParent || retained.role !== descriptor.launchIdentity.role))
199
+ refuse("retained authority does not match its descriptor");
200
+ if (descriptor && proof && (proof.storeBindingDigest !== descriptor.localStoreBindingDigest || proof.storeIdentityDigest !== descriptor.localStoreIdentityDigest))
201
+ refuse("local store proof does not match its descriptor");
202
+ if ((phase === "eligible" || phase === "bound") && [descriptor, retained, proof, startedAt, executionIdentityDigest].some(value => value === null))
203
+ refuse("eligible recovery lacks required evidence");
204
+ return { intentId, intentRevision: count(o.intentRevision), recoveryRevision: count(o.recoveryRevision), target: child, phase, descriptor, descriptorDigest, authority: retained, localProof: proof, startedAt, executionIdentityDigest, reasonCode: nullable(o.reasonCode, value => choice(value, DELEGATED_RECOVERY_REASONS)) };
205
+ }
206
+ /** Bind every response to its request before a caller may act on any returned record. */
207
+ export function parseRemoteDelegatedRecoveryResult(raw, request) {
208
+ const keys = ["v", "kind", "space", "accountPublicKey", "assignmentRevision", "instanceId", "managerLifecycleUid", "currentRegistrationRevision", "serveEpoch", "requestId", "operation", "ok"];
209
+ const o = object(raw, [...keys, "result", "error"], keys);
210
+ const header = { v: request.v, kind: request.kind, space: request.space, accountPublicKey: request.accountPublicKey, assignmentRevision: request.assignmentRevision, instanceId: request.instanceId, managerLifecycleUid: request.managerLifecycleUid, currentRegistrationRevision: request.currentRegistrationRevision, serveEpoch: request.serveEpoch, requestId: request.requestId };
211
+ for (const key of Object.keys(header))
212
+ if (o[key] !== header[key])
213
+ refuse(`response ${key} does not match its request`);
214
+ if (o.operation !== request.operation)
215
+ refuse("response operation does not match its request");
216
+ if (o.ok === false && !Object.hasOwn(o, "result")) {
217
+ const e = object(o.error, ["code", "reasonCode"], ["code"]);
218
+ return { ...header, operation: request.operation, ok: false, error: { code: choice(e.code, ["bad-request", "permission-denied", "conflict", "unavailable", "failed-precondition", "unimplemented"]), ...(Object.hasOwn(e, "reasonCode") ? { reasonCode: choice(e.reasonCode, DELEGATED_RECOVERY_REASONS) } : {}) } };
219
+ }
220
+ if (o.ok !== true || Object.hasOwn(o, "error"))
221
+ refuse("response must contain one result or error");
222
+ switch (request.operation) {
223
+ case "confirm": {
224
+ const r = object(o.result, ["intentId", "target", "intentRevision", "recoveryRevision", "prepared"]), child = target(r.target);
225
+ sameTarget(child, request.body.target);
226
+ if (r.intentId !== request.body.intentId || r.prepared !== true)
227
+ refuse("preparation reply does not match its request");
228
+ return { ...header, ok: true, operation: "confirm", result: { intentId: request.body.intentId, target: child, intentRevision: count(r.intentRevision), recoveryRevision: count(r.recoveryRevision), prepared: true } };
229
+ }
230
+ case "scan": {
231
+ const r = object(o.result, ["scanBinding", "records", "nextCursor", "complete"]), binding = scanBinding(r.scanBinding);
232
+ scopeMatches(binding, request);
233
+ if (request.body.scanBinding && canonicalJson(binding) !== canonicalJson(request.body.scanBinding))
234
+ refuse("scan binding changed during pagination");
235
+ if (!Array.isArray(r.records) || r.records.length > 1024)
236
+ refuse("scan page exceeds its bound");
237
+ const records = r.records.map(record), nextCursor = nullable(r.nextCursor, text), complete = flag(r.complete);
238
+ if (complete !== (nextCursor === null) || records.length > binding.memberCount)
239
+ refuse("scan completeness is inconsistent");
240
+ const seen = new Set();
241
+ for (const item of records) {
242
+ if (seen.has(item.intentId))
243
+ refuse("scan page repeats an intent");
244
+ seen.add(item.intentId);
245
+ if (item.descriptor)
246
+ originMatches(item.descriptor.origin, request);
247
+ }
248
+ return { ...header, ok: true, operation: "scan", result: { scanBinding: binding, records, nextCursor, complete } };
249
+ }
250
+ case "claim": {
251
+ const r = object(o.result, ["claimId", "attemptId", "record", "claimEpoch"]), retained = record(r.record);
252
+ if (r.attemptId !== request.body.attemptId || r.claimEpoch !== request.serveEpoch || retained.intentId !== request.body.intentId)
253
+ refuse("claim reply does not match its request");
254
+ sameTarget(retained.target, request.body.target);
255
+ if (!retained.descriptor || canonicalJson(retained.descriptor.origin) !== canonicalJson(request.body.expectedOrigin))
256
+ refuse("claim origin differs from the expected origin");
257
+ return { ...header, ok: true, operation: "claim", result: { claimId: token(r.claimId), attemptId: request.body.attemptId, record: retained, claimEpoch: request.serveEpoch } };
258
+ }
259
+ case "settle": {
260
+ const r = object(o.result, ["claimId", "settleId", "recoveryRevision", "observation"]);
261
+ if (r.claimId !== request.body.claimId || r.settleId !== request.body.settleId || r.observation !== request.body.observation)
262
+ refuse("settlement reply does not match its request");
263
+ return { ...header, ok: true, operation: "settle", result: { claimId: request.body.claimId, settleId: request.body.settleId, recoveryRevision: count(r.recoveryRevision), observation: request.body.observation } };
264
+ }
265
+ case "finish": {
266
+ const r = object(o.result, ["finishId", "scanId", "scopeRevision", "admission"]);
267
+ if (r.finishId !== request.body.finishId || r.scanId !== request.body.scanBinding.scanId || r.admission !== "open")
268
+ refuse("finish reply does not match its request");
269
+ return { ...header, ok: true, operation: "finish", result: { finishId: request.body.finishId, scanId: request.body.scanBinding.scanId, scopeRevision: count(r.scopeRevision), admission: "open" } };
270
+ }
271
+ case "watch": {
272
+ const r = object(o.result, ["revision", "scanInvalidated"]);
273
+ return { ...header, ok: true, operation: "watch", result: { revision: count(r.revision), scanInvalidated: flag(r.scanInvalidated) } };
274
+ }
275
+ }
276
+ }
277
+ //# sourceMappingURL=delegated-recovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegated-recovery.js","sourceRoot":"","sources":["../src/delegated-recovery.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,8 @@ export interface EndpointOptions {
39
39
  card: Omit<AgentCard, "id"> & {
40
40
  id?: string;
41
41
  };
42
+ /** Opaque presence label. Omitted reads COTAL_ENVIRONMENT; null omits the label without reading it. */
43
+ environment?: string | null;
42
44
  /** This incarnation's lifecycle UID (SPEC §13.1), minted ONCE per lifecycle by the provisioning
43
45
  * authority (manager/CLI: `mintLifecycleUid()`) and PERSISTED with the agent — never re-minted per
44
46
  * process, or a supervised restart would abandon the durable inbox. REQUIRED to bind/create the