@dsh-enhanced/assistant-skills 0.1.31 → 0.1.32
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 +28 -5
- package/lib/repair-agent.d.ts +10 -2
- package/lib/repair-agent.d.ts.map +1 -1
- package/lib/repair-agent.js +163 -13
- package/lib/repair-agent.js.map +1 -1
- package/lib/repair-process.d.ts +20 -0
- package/lib/repair-process.d.ts.map +1 -0
- package/lib/repair-process.js +92 -0
- package/lib/repair-process.js.map +1 -0
- package/lib/repair-runtime.d.ts +2 -0
- package/lib/repair-runtime.d.ts.map +1 -1
- package/lib/repair-runtime.js +7 -1
- package/lib/repair-runtime.js.map +1 -1
- package/lib/service.d.ts +2 -1
- package/lib/service.d.ts.map +1 -1
- package/lib/service.js +36 -17
- package/lib/service.js.map +1 -1
- package/lib/store.d.ts +21 -0
- package/lib/store.d.ts.map +1 -1
- package/lib/store.js +182 -0
- package/lib/store.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -197,11 +197,10 @@ with current background send Policy. It freezes that Session and route receipt
|
|
|
197
197
|
for iteration and final-result notices through Delivery’s durable Outbox. Stable
|
|
198
198
|
keys deduplicate notices across runtime ticks and restarts.
|
|
199
199
|
|
|
200
|
-
Armed waits and deployed watches survive restart.
|
|
201
|
-
|
|
202
|
-
without creating a second repair.
|
|
203
|
-
|
|
204
|
-
candidate/deployment references. The `test:web-owner:real-repair` journey checks
|
|
200
|
+
Armed waits and deployed watches survive restart. Safe repair checkpoints can
|
|
201
|
+
also resume under the conditions below; uncertain dispatches surface `unknown`
|
|
202
|
+
without creating a second repair. Status includes the exact repair Session/Goal
|
|
203
|
+
and candidate/deployment references. The `test:web-owner:real-repair` journey checks
|
|
205
204
|
two successive improvements, future-task promotion, original-session feedback
|
|
206
205
|
and absence of replay after completion and restart. `skill_repair_revoke` stops the remaining continuation; completed
|
|
207
206
|
filesystem effects or a deployed version require their existing explicit
|
|
@@ -209,3 +208,27 @@ rollback controls. Repair Agents use the configured workspace, model route and
|
|
|
209
208
|
tool authority, and may write files there; they are not an OS sandbox. Calls and
|
|
210
209
|
deadlines are finite; token or monetary accounting still depends on the route's
|
|
211
210
|
registered meter. No installation script or credential authority is added.
|
|
211
|
+
|
|
212
|
+
### Repair checkpoint recovery
|
|
213
|
+
|
|
214
|
+
The dev increment after v0.1.31 persists an execution fence per authorized repair
|
|
215
|
+
iteration. A cold Linux Host may reacquire it only when the prior process is
|
|
216
|
+
proven gone in the same PID namespace and no model or tool effect remains
|
|
217
|
+
pending. Tool completion also requires its native Session result to be flushed.
|
|
218
|
+
Successful disposal permits reattachment in the same process. Expiry alone never
|
|
219
|
+
permits takeover. Missing legacy execution records, unreadable process identity,
|
|
220
|
+
different PID namespaces and unfinished external work remain unconfirmed.
|
|
221
|
+
|
|
222
|
+
Reattachment loads the original Session and native Goal, revalidates current
|
|
223
|
+
owner, route, source, profile and Policy, and retains cumulative call counts,
|
|
224
|
+
native rounds and the original absolute deadline. Only an active, disarmed Goal
|
|
225
|
+
can resume execution; completed Goals can be reattached for evidence processing.
|
|
226
|
+
Human-paused, blocked, cleared, changed or expired Goals are not automatically
|
|
227
|
+
rearmed. Interrupted capture/comparison dispatches remain `unknown`.
|
|
228
|
+
|
|
229
|
+
The cross-process test kills a Host after a completed first round and its
|
|
230
|
+
independent acceptance, then verifies that a second Host finishes the same Goal
|
|
231
|
+
and writes a real artifact within the remaining budget. It uses the pinned
|
|
232
|
+
SessionPersistence, native Goal driver and repair runtime with a deterministic
|
|
233
|
+
model adapter and fixture owner/policy evidence. It does not establish live-model
|
|
234
|
+
crash recovery, arbitrary subprocess cleanup or cross-platform cold recovery.
|
package/lib/repair-agent.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Context } from '@deepseek-ai/cordis';
|
|
2
2
|
import { type Agent } from '@deepseek-ai/dsh-agent';
|
|
3
|
-
import type { GoalScope, HostFailureTriggerEvidence } from '@dsh-enhanced/assistant-goals';
|
|
3
|
+
import type { GoalScope, HostFailureTriggerEvidence, OwnerAuthorizedRepairResumeInput } from '@dsh-enhanced/assistant-goals';
|
|
4
|
+
import type { SkillStore } from './store.js';
|
|
4
5
|
export interface OwnerRepairAgentInput {
|
|
5
6
|
id: string;
|
|
6
7
|
authorizationDigest: string;
|
|
@@ -31,12 +32,19 @@ export interface OwnerRepairAgentInput {
|
|
|
31
32
|
export declare class OwnerRepairAgentRuntime {
|
|
32
33
|
#private;
|
|
33
34
|
private readonly ctx;
|
|
34
|
-
|
|
35
|
+
private readonly store?;
|
|
36
|
+
constructor(ctx: Context, store?: SkillStore | undefined);
|
|
35
37
|
get(sessionId: string): Agent | undefined;
|
|
38
|
+
/** A live process-local capability backed by the current durable execution fence. */
|
|
39
|
+
ownsResume(input: OwnerAuthorizedRepairResumeInput, callback: () => void): boolean;
|
|
36
40
|
create(input: OwnerRepairAgentInput, signal?: AbortSignal): Promise<{
|
|
37
41
|
sessionId: string;
|
|
38
42
|
goalId: string;
|
|
39
43
|
}>;
|
|
44
|
+
resume(input: OwnerRepairAgentInput, repair: OwnerAuthorizedRepairResumeInput['repair'], signal?: AbortSignal): Promise<{
|
|
45
|
+
sessionId: string;
|
|
46
|
+
goalId: string;
|
|
47
|
+
}>;
|
|
40
48
|
closeSession(sessionId: string): Promise<void>;
|
|
41
49
|
closeAuthorization(authorizationId: string): Promise<void>;
|
|
42
50
|
dispose(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repair-agent.d.ts","sourceRoot":"","sources":["../src/repair-agent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAyB,KAAK,KAAK,EAAoB,MAAM,wBAAwB,CAAA;AAG5F,OAAO,KAAK,EAAE,SAAS,EAAE,0BAA0B,EAA8B,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"repair-agent.d.ts","sourceRoot":"","sources":["../src/repair-agent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAyB,KAAK,KAAK,EAAoB,MAAM,wBAAwB,CAAA;AAG5F,OAAO,KAAK,EAAE,SAAS,EAAE,0BAA0B,EAA8B,gCAAgC,EAAE,MAAM,+BAA+B,CAAA;AAGxJ,OAAO,KAAK,EAAwB,UAAU,EAAE,MAAM,YAAY,CAAA;AAElE,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,mBAAmB,EAAE,MAAM,CAAA;IAC3B,KAAK,EAAE,SAAS,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,0BAA0B,CAAA;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAA;IAC9C,aAAa,EAAE,MAAM,IAAI,CAAA;CAC1B;AAuBD;;;;GAIG;AACH,qBAAa,uBAAuB;;IActB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAW,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAArC,GAAG,EAAE,OAAO,EAAmB,KAAK,CAAC,EAAE,UAAU,YAAA;IAI9E,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAEzC,qFAAqF;IACrF,UAAU,CAAC,KAAK,EAAE,gCAAgC,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO;IA6B5E,MAAM,CAAC,KAAK,EAAE,qBAAqB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAa1G,MAAM,CAAC,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,gCAAgC,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAwK9J,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC9C,kBAAkB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAiB/B"}
|
package/lib/repair-agent.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createHash } from 'node:crypto';
|
|
1
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
2
2
|
import { acceptanceDigest } from '@dsh-enhanced/task-acceptance-contract';
|
|
3
3
|
import { installModelSelection } from '@deepseek-ai/dsh-agent';
|
|
4
4
|
import {} from '@deepseek-ai/dsh-llm';
|
|
@@ -27,19 +27,63 @@ function validate(input) {
|
|
|
27
27
|
*/
|
|
28
28
|
export class OwnerRepairAgentRuntime {
|
|
29
29
|
ctx;
|
|
30
|
+
store;
|
|
30
31
|
#handles = new Map();
|
|
31
32
|
#attempted = new Set();
|
|
32
33
|
#toolSchemaDigests = new Map();
|
|
33
34
|
#controllers = new Map();
|
|
34
35
|
#authorizationSessions = new Map();
|
|
35
36
|
#inflight = new Map();
|
|
37
|
+
#leases = new Map();
|
|
38
|
+
#resumeProofs = new Map();
|
|
39
|
+
#settlements = new Map();
|
|
40
|
+
#closing = new Map();
|
|
36
41
|
#disposeFlight;
|
|
37
42
|
#disposed = false;
|
|
38
|
-
constructor(ctx) {
|
|
43
|
+
constructor(ctx, store) {
|
|
39
44
|
this.ctx = ctx;
|
|
45
|
+
this.store = store;
|
|
40
46
|
ctx.effect(() => () => this.dispose(), 'assistant-skills.owner-repair-agents');
|
|
41
47
|
}
|
|
42
48
|
get(sessionId) { return this.#handles.get(sessionId)?.agent; }
|
|
49
|
+
/** A live process-local capability backed by the current durable execution fence. */
|
|
50
|
+
ownsResume(input, callback) {
|
|
51
|
+
const proof = this.#resumeProofs.get(input.repair.sessionId);
|
|
52
|
+
if (!proof || proof.callback !== callback || acceptanceDigest(proof.input) !== acceptanceDigest(input)
|
|
53
|
+
|| !this.#handles.has(input.repair.sessionId))
|
|
54
|
+
return false;
|
|
55
|
+
try {
|
|
56
|
+
this.#assertLease(input.repair.sessionId);
|
|
57
|
+
callback();
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
#assertLease(key) {
|
|
65
|
+
const held = this.#leases.get(key);
|
|
66
|
+
if (this.store && !held)
|
|
67
|
+
throw new Error('assistant-skills: repair execution fence missing');
|
|
68
|
+
if (held)
|
|
69
|
+
this.store.assertRepairExecution(held.scope, held.lease);
|
|
70
|
+
}
|
|
71
|
+
#claim(input, key, recover) {
|
|
72
|
+
if (recover && !this.store)
|
|
73
|
+
throw new Error('assistant-skills: durable repair recovery unavailable');
|
|
74
|
+
const previous = recover ? this.store.inspectRepairExecution(input.scope, input.id, input.iteration ?? 1) : undefined;
|
|
75
|
+
const deadlineAt = previous?.deadlineAt ?? Math.min(input.expiresAt, Date.now() + input.maxDurationMs);
|
|
76
|
+
if (!this.store)
|
|
77
|
+
return deadlineAt;
|
|
78
|
+
const lease = this.store.claimRepairExecution(input.scope, input.id, input.iteration ?? 1, key, randomUUID(), deadlineAt, { recover });
|
|
79
|
+
this.#leases.set(key, { scope: input.scope, lease });
|
|
80
|
+
return lease.deadlineAt;
|
|
81
|
+
}
|
|
82
|
+
#effect(key, kind) {
|
|
83
|
+
this.#assertLease(key);
|
|
84
|
+
const held = this.#leases.get(key);
|
|
85
|
+
return held ? this.store.beginRepairEffect(held.scope, held.lease, kind) : () => { };
|
|
86
|
+
}
|
|
43
87
|
async create(input, signal) {
|
|
44
88
|
if (this.#disposed)
|
|
45
89
|
throw new Error('assistant-skills: owner repair Agent runtime disposed');
|
|
@@ -62,10 +106,32 @@ export class OwnerRepairAgentRuntime {
|
|
|
62
106
|
this.#inflight.delete(key);
|
|
63
107
|
}
|
|
64
108
|
}
|
|
65
|
-
async
|
|
109
|
+
async resume(input, repair, signal) {
|
|
110
|
+
if (this.#disposed)
|
|
111
|
+
throw new Error('assistant-skills: owner repair Agent runtime disposed');
|
|
112
|
+
validate(input);
|
|
113
|
+
input.assertCurrent();
|
|
114
|
+
const sessionId = sessionIdFor(`${input.id}:${input.iteration ?? 1}`), key = String(sessionId);
|
|
115
|
+
if (key !== repair.sessionId || this.#attempted.has(key))
|
|
116
|
+
throw new Error('assistant-skills: exact repair recovery is unavailable');
|
|
117
|
+
this.#attempted.add(key);
|
|
118
|
+
const sessions = this.#authorizationSessions.get(input.id) ?? new Set();
|
|
119
|
+
sessions.add(key);
|
|
120
|
+
this.#authorizationSessions.set(input.id, sessions);
|
|
121
|
+
const resuming = this.#create(sessionId, key, input, signal, repair);
|
|
122
|
+
this.#inflight.set(key, resuming);
|
|
123
|
+
try {
|
|
124
|
+
return await resuming;
|
|
125
|
+
}
|
|
126
|
+
finally {
|
|
127
|
+
this.#inflight.delete(key);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
async #create(sessionId, key, input, signal, recovered) {
|
|
131
|
+
const deadlineAt = this.#claim(input, key, recovered !== undefined);
|
|
66
132
|
const deadline = new AbortController();
|
|
67
133
|
this.#controllers.set(key, deadline);
|
|
68
|
-
const timer = setTimeout(() => deadline.abort(new Error('assistant-skills: owner repair Agent deadline exceeded')), Math.
|
|
134
|
+
const timer = setTimeout(() => deadline.abort(new Error('assistant-skills: owner repair Agent deadline exceeded')), Math.max(0, deadlineAt - Date.now()));
|
|
69
135
|
timer.unref?.();
|
|
70
136
|
const combined = signal === undefined ? deadline.signal : AbortSignal.any([signal, deadline.signal]);
|
|
71
137
|
let handle;
|
|
@@ -76,14 +142,15 @@ export class OwnerRepairAgentRuntime {
|
|
|
76
142
|
const policy = this.ctx.get('assistantPolicy', false);
|
|
77
143
|
if (agents === undefined || goals === undefined || policy === undefined)
|
|
78
144
|
throw new Error('assistant-skills: repair Agent dependencies unavailable');
|
|
79
|
-
|
|
145
|
+
const options = {
|
|
80
146
|
agentOptions: { provider: input.provider, model: input.model, maxTokens: input.maxOutputTokens }, signal: combined,
|
|
81
|
-
setup: async (agentCtx) => {
|
|
82
|
-
const agent = agentCtx.agent;
|
|
147
|
+
setup: async (agentCtx, preparedAgent) => {
|
|
148
|
+
const agent = preparedAgent ?? agentCtx.agent;
|
|
83
149
|
if (agent === undefined)
|
|
84
150
|
throw new Error('assistant-skills: unpublished repair Agent is unavailable');
|
|
85
151
|
input.assertCurrent();
|
|
86
152
|
combined.throwIfAborted();
|
|
153
|
+
this.#assertLease(key);
|
|
87
154
|
// Establish background authority and cancellation before mounting preset effects.
|
|
88
155
|
this.#setupRepairAgent(agentCtx, agent, input, combined, timer);
|
|
89
156
|
const presets = this.ctx.get('agentPresets', false);
|
|
@@ -99,9 +166,13 @@ export class OwnerRepairAgentRuntime {
|
|
|
99
166
|
combined.throwIfAborted();
|
|
100
167
|
this.#checkRepairTools(agentCtx, agent, input);
|
|
101
168
|
},
|
|
102
|
-
}
|
|
169
|
+
};
|
|
170
|
+
handle = recovered
|
|
171
|
+
? await agents.resume({ ...options, resumeSessionId: sessionId })
|
|
172
|
+
: await agents.create({ ...options, sessionId, meta: { cwd: input.scope.workspace, agentPreset: input.scope.preset } });
|
|
103
173
|
input.assertCurrent();
|
|
104
174
|
combined.throwIfAborted();
|
|
175
|
+
this.#assertLease(key);
|
|
105
176
|
this.#handles.set(key, handle);
|
|
106
177
|
const repair = { authorizationId: input.id, authorizationDigest: input.authorizationDigest,
|
|
107
178
|
ownerRouteId: input.ownerRouteId, scope: input.scope, trigger: input.trigger, objective: input.objective,
|
|
@@ -109,7 +180,19 @@ export class OwnerRepairAgentRuntime {
|
|
|
109
180
|
const currentGoals = this.ctx.get('assistantGoals', false);
|
|
110
181
|
if (currentGoals === undefined)
|
|
111
182
|
throw new Error('assistant-skills: repair Goals service changed');
|
|
112
|
-
const
|
|
183
|
+
const resumed = recovered === undefined ? undefined : { ...repair, repair: recovered };
|
|
184
|
+
if (resumed)
|
|
185
|
+
this.#resumeProofs.set(key, { input: resumed, callback: input.assertCurrent });
|
|
186
|
+
const record = resumed === undefined
|
|
187
|
+
? await currentGoals.startOwnerAuthorizedRepair(handle.agent, repair, input.assertCurrent)
|
|
188
|
+
: await currentGoals.resumeOwnerAuthorizedRepair(handle.agent, resumed, input.assertCurrent);
|
|
189
|
+
// A recoverable execution must retain the native goal and its identity in
|
|
190
|
+
// the Session log, not only in the independent business-goal ledger.
|
|
191
|
+
if (this.store)
|
|
192
|
+
await this.ctx.get('sessions').flush(handle.agent.session);
|
|
193
|
+
input.assertCurrent();
|
|
194
|
+
combined.throwIfAborted();
|
|
195
|
+
this.#assertLease(key);
|
|
113
196
|
retained = true;
|
|
114
197
|
return { sessionId: key, goalId: record.id };
|
|
115
198
|
}
|
|
@@ -117,8 +200,13 @@ export class OwnerRepairAgentRuntime {
|
|
|
117
200
|
deadline.abort(new Error('assistant-skills: repair Agent creation failed'));
|
|
118
201
|
this.#handles.delete(key);
|
|
119
202
|
this.#toolSchemaDigests.delete(key);
|
|
120
|
-
|
|
203
|
+
this.#resumeProofs.delete(key);
|
|
204
|
+
// A rejected factory can still have an abort-raced load. Do not release
|
|
205
|
+
// its durable fence without an observable handle and completed drain.
|
|
206
|
+
if (handle !== undefined) {
|
|
121
207
|
await handle.dispose();
|
|
208
|
+
await this.#release(key);
|
|
209
|
+
}
|
|
122
210
|
throw error;
|
|
123
211
|
}
|
|
124
212
|
finally {
|
|
@@ -152,6 +240,10 @@ export class OwnerRepairAgentRuntime {
|
|
|
152
240
|
agentCtx.effect(() => installModelSelection(agentCtx, { current: { provider: input.provider, model: input.model }, assembled: undefined }), 'assistant-skills.owner-repair-model');
|
|
153
241
|
const allowed = new Set(input.allowedTools);
|
|
154
242
|
const schemaDigests = this.#toolSchemaDigests;
|
|
243
|
+
const key = String(agent.session.id);
|
|
244
|
+
const assertLease = () => this.#assertLease(key);
|
|
245
|
+
const beginModel = () => this.#effect(key, 'model');
|
|
246
|
+
const toolsAwaitingLog = new Map();
|
|
155
247
|
agentCtx.on('system-prompt/assemble', async (_assembly, context, next) => {
|
|
156
248
|
const assembly = await next();
|
|
157
249
|
if (context.agent !== agent)
|
|
@@ -169,19 +261,28 @@ export class OwnerRepairAgentRuntime {
|
|
|
169
261
|
}
|
|
170
262
|
input.assertCurrent();
|
|
171
263
|
combined.throwIfAborted();
|
|
264
|
+
options.signal?.throwIfAborted();
|
|
265
|
+
assertLease();
|
|
172
266
|
if (options.provider !== input.provider || options.model !== input.model || options.maxTokens === undefined || options.maxTokens > input.maxOutputTokens || acceptanceDigest(options.tools ?? []) !== schemaDigests.get(String(agent.session.id)) || calls++ >= input.maxModelCalls) {
|
|
173
267
|
agent.cancel({ kind: 'hook', reason: 'assistant-skills-owner-repair-model-limit' });
|
|
174
268
|
throw new Error('assistant-skills: owner repair model request rejected');
|
|
175
269
|
}
|
|
176
270
|
input.recordUsage?.('model');
|
|
271
|
+
const settled = beginModel();
|
|
177
272
|
for await (const chunk of next()) {
|
|
178
273
|
combined.throwIfAborted();
|
|
179
274
|
yield chunk;
|
|
180
275
|
}
|
|
276
|
+
// Rejection/abort retains the pending effect: a provider may still own a
|
|
277
|
+
// subprocess or submitted request, and Host death alone cannot settle it.
|
|
278
|
+
combined.throwIfAborted();
|
|
279
|
+
options.signal?.throwIfAborted();
|
|
280
|
+
settled();
|
|
181
281
|
});
|
|
182
282
|
agentCtx.tools.guard(execution => {
|
|
183
283
|
input.assertCurrent();
|
|
184
284
|
combined.throwIfAborted();
|
|
285
|
+
this.#assertLease(key);
|
|
185
286
|
if (!allowed.has(execution.name) || toolCalls >= input.maxToolCalls) {
|
|
186
287
|
agent.cancel({ kind: 'hook', reason: 'assistant-skills-owner-repair-tool-limit' });
|
|
187
288
|
return 'assistant-skills: owner repair tool request rejected';
|
|
@@ -190,11 +291,60 @@ export class OwnerRepairAgentRuntime {
|
|
|
190
291
|
input.recordUsage?.('tool');
|
|
191
292
|
return undefined;
|
|
192
293
|
});
|
|
294
|
+
agentCtx.on('tools/execute', async (execution, next) => {
|
|
295
|
+
if (execution.agent !== agent)
|
|
296
|
+
return await next();
|
|
297
|
+
input.assertCurrent();
|
|
298
|
+
combined.throwIfAborted();
|
|
299
|
+
const settled = this.#effect(key, 'tool');
|
|
300
|
+
const result = await next();
|
|
301
|
+
if (!result.isError && !execution.signal.aborted)
|
|
302
|
+
toolsAwaitingLog.set(String(execution.callId), settled);
|
|
303
|
+
// Do not clear the durable intent until the corresponding tool result
|
|
304
|
+
// has also reached the persistent Session. Unknown results retain it.
|
|
305
|
+
return result;
|
|
306
|
+
}, { prepend: true });
|
|
307
|
+
agentCtx.on('session/event', (session, event) => {
|
|
308
|
+
if (session !== agent.session || event.type !== 'tool/result' || event.data.message.source?.kind !== 'tool')
|
|
309
|
+
return;
|
|
310
|
+
const callId = String(event.data.message.source.callId), settled = toolsAwaitingLog.get(callId);
|
|
311
|
+
if (!settled)
|
|
312
|
+
return;
|
|
313
|
+
toolsAwaitingLog.delete(callId);
|
|
314
|
+
const pending = this.#settlements.get(key) ?? new Set();
|
|
315
|
+
this.#settlements.set(key, pending);
|
|
316
|
+
const flush = Promise.resolve().then(async () => {
|
|
317
|
+
await this.ctx.get('sessions').flush(session);
|
|
318
|
+
settled();
|
|
319
|
+
}).catch(() => { agent.cancel({ kind: 'hook', reason: 'assistant-skills-repair-checkpoint-unconfirmed' }); }).finally(() => pending.delete(flush));
|
|
320
|
+
pending.add(flush);
|
|
321
|
+
});
|
|
193
322
|
const abort = () => agent.cancel({ kind: 'hook', reason: 'assistant-skills-owner-repair-expired' });
|
|
194
323
|
combined.addEventListener('abort', abort, { once: true });
|
|
195
324
|
agentCtx.effect(() => () => { clearTimeout(timer); combined.removeEventListener('abort', abort); }, 'assistant-skills.owner-repair-deadline');
|
|
196
325
|
}
|
|
197
326
|
async closeSession(sessionId) {
|
|
327
|
+
const existing = this.#closing.get(sessionId);
|
|
328
|
+
if (existing)
|
|
329
|
+
return await existing;
|
|
330
|
+
const closing = this.#closeSession(sessionId).finally(() => this.#closing.delete(sessionId));
|
|
331
|
+
this.#closing.set(sessionId, closing);
|
|
332
|
+
return await closing;
|
|
333
|
+
}
|
|
334
|
+
async #release(key) {
|
|
335
|
+
await Promise.allSettled(this.#settlements.get(key) ?? []);
|
|
336
|
+
this.#settlements.delete(key);
|
|
337
|
+
const held = this.#leases.get(key);
|
|
338
|
+
if (held) {
|
|
339
|
+
const current = this.store.inspectRepairExecution(held.scope, held.lease.authorizationId, held.lease.iteration);
|
|
340
|
+
// Unconfirmed external effects keep the durable fence occupied. Native
|
|
341
|
+
// disposal cannot turn an aborted provider/tool into a cleanup receipt.
|
|
342
|
+
if (current && current.pendingModel === 0 && current.pendingTool === 0)
|
|
343
|
+
this.store.releaseRepairExecution(held.scope, held.lease);
|
|
344
|
+
}
|
|
345
|
+
this.#leases.delete(key);
|
|
346
|
+
}
|
|
347
|
+
async #closeSession(sessionId) {
|
|
198
348
|
this.#controllers.get(sessionId)?.abort(new Error('assistant-skills: repair Agent closed'));
|
|
199
349
|
const creation = this.#inflight.get(sessionId);
|
|
200
350
|
if (creation !== undefined)
|
|
@@ -208,6 +358,8 @@ export class OwnerRepairAgentRuntime {
|
|
|
208
358
|
this.#handles.delete(sessionId);
|
|
209
359
|
this.#controllers.delete(sessionId);
|
|
210
360
|
await handle.dispose();
|
|
361
|
+
await this.#release(sessionId);
|
|
362
|
+
this.#resumeProofs.delete(sessionId);
|
|
211
363
|
this.#toolSchemaDigests.delete(sessionId);
|
|
212
364
|
}
|
|
213
365
|
async closeAuthorization(authorizationId) {
|
|
@@ -230,9 +382,7 @@ export class OwnerRepairAgentRuntime {
|
|
|
230
382
|
this.#controllers.clear();
|
|
231
383
|
this.#toolSchemaDigests.clear();
|
|
232
384
|
this.#authorizationSessions.clear();
|
|
233
|
-
const
|
|
234
|
-
this.#handles.clear();
|
|
235
|
-
const disposalResults = await Promise.allSettled(handles.map(([, handle]) => handle.dispose()));
|
|
385
|
+
const disposalResults = await Promise.allSettled([...this.#handles.keys()].map(key => this.closeSession(key)));
|
|
236
386
|
const errors = disposalResults.flatMap(result => result.status === 'rejected' ? [result.reason] : []);
|
|
237
387
|
if (errors.length)
|
|
238
388
|
throw new AggregateError(errors, 'assistant-skills: repair Agent disposal failed');
|
package/lib/repair-agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repair-agent.js","sourceRoot":"","sources":["../src/repair-agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"repair-agent.js","sourceRoot":"","sources":["../src/repair-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface RepairProcessWitness {
|
|
2
|
+
bootId: string;
|
|
3
|
+
pid: number;
|
|
4
|
+
startTicks: string;
|
|
5
|
+
pidNamespace: string;
|
|
6
|
+
}
|
|
7
|
+
export type RepairProcessProbe = 'gone' | 'present' | 'unavailable';
|
|
8
|
+
/**
|
|
9
|
+
* Non-Linux gets a process-local identity solely for released same-process
|
|
10
|
+
* reattachment. It cannot prove a dead prior process, so cold recovery stays
|
|
11
|
+
* conservatively unavailable there.
|
|
12
|
+
*/
|
|
13
|
+
export declare function currentRepairProcess(): RepairProcessWitness | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* Conservative two-read process liveness proof. "gone" is deliberately
|
|
16
|
+
* narrow: permission errors, zombies, malformed proc data and races are all
|
|
17
|
+
* unavailable, never evidence that a prior tool/model request settled.
|
|
18
|
+
*/
|
|
19
|
+
export declare function probeRepairProcess(witness: RepairProcessWitness): RepairProcessProbe;
|
|
20
|
+
//# sourceMappingURL=repair-process.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repair-process.d.ts","sourceRoot":"","sources":["../src/repair-process.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE;AAC/G,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAA;AAiCnE;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,oBAAoB,GAAG,SAAS,CAIvE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,kBAAkB,CAuBpF"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { readFileSync, statSync } from 'node:fs';
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
3
|
+
const boot = /^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/u;
|
|
4
|
+
const ticks = /^[1-9][0-9]{0,63}$/u;
|
|
5
|
+
const localBootId = randomUUID();
|
|
6
|
+
const namespace = /^(?:linux:[0-9]{1,32}:[0-9]{1,32}|local:[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12})$/u;
|
|
7
|
+
function currentBootId() {
|
|
8
|
+
try {
|
|
9
|
+
const value = readFileSync('/proc/sys/kernel/random/boot_id', 'utf8').trim().toLowerCase();
|
|
10
|
+
return boot.test(value) ? value : undefined;
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function startTicks(pid) {
|
|
17
|
+
try {
|
|
18
|
+
const raw = readFileSync(`/proc/${pid}/stat`, 'utf8'), close = raw.lastIndexOf(') ');
|
|
19
|
+
if (close < 0)
|
|
20
|
+
return undefined;
|
|
21
|
+
const fields = raw.slice(close + 2).trim().split(/\s+/u);
|
|
22
|
+
return fields[0] !== 'Z' && ticks.test(fields[19] ?? '') ? fields[19] : undefined;
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
if (error && typeof error === 'object' && 'code' in error && error.code === 'ENOENT')
|
|
26
|
+
return '';
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function currentPidNamespace() {
|
|
31
|
+
try {
|
|
32
|
+
// stat follows the proc symlink to the namespace inode; lstat would only
|
|
33
|
+
// identify this process's per-procfs symlink entry.
|
|
34
|
+
const stat = statSync('/proc/self/ns/pid');
|
|
35
|
+
const value = `linux:${stat.dev}:${stat.ino}`;
|
|
36
|
+
return namespace.test(value) ? value : undefined;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Non-Linux gets a process-local identity solely for released same-process
|
|
44
|
+
* reattachment. It cannot prove a dead prior process, so cold recovery stays
|
|
45
|
+
* conservatively unavailable there.
|
|
46
|
+
*/
|
|
47
|
+
export function currentRepairProcess() {
|
|
48
|
+
const bootId = currentBootId(), pidNamespace = currentPidNamespace(), start = bootId && pidNamespace ? startTicks(process.pid) : undefined;
|
|
49
|
+
if (bootId && pidNamespace && start)
|
|
50
|
+
return { bootId, pid: process.pid, startTicks: start, pidNamespace };
|
|
51
|
+
return process.platform === 'linux' ? undefined : { bootId: localBootId, pid: process.pid, startTicks: String(process.pid), pidNamespace: `local:${localBootId}` };
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Conservative two-read process liveness proof. "gone" is deliberately
|
|
55
|
+
* narrow: permission errors, zombies, malformed proc data and races are all
|
|
56
|
+
* unavailable, never evidence that a prior tool/model request settled.
|
|
57
|
+
*/
|
|
58
|
+
export function probeRepairProcess(witness) {
|
|
59
|
+
if (!boot.test(witness.bootId) || !namespace.test(witness.pidNamespace) || !Number.isSafeInteger(witness.pid) || witness.pid < 1 || !ticks.test(witness.startTicks))
|
|
60
|
+
return 'unavailable';
|
|
61
|
+
// PID values are namespace-relative. A host that cannot prove it observes
|
|
62
|
+
// the same namespace cannot turn a missing/reused PID into a death proof.
|
|
63
|
+
const currentNamespace = currentPidNamespace();
|
|
64
|
+
if (!currentNamespace || currentNamespace !== witness.pidNamespace)
|
|
65
|
+
return 'unavailable';
|
|
66
|
+
for (let attempt = 0; attempt < 2; attempt++) {
|
|
67
|
+
const bootId = currentBootId();
|
|
68
|
+
if (!bootId)
|
|
69
|
+
return 'unavailable';
|
|
70
|
+
if (bootId !== witness.bootId)
|
|
71
|
+
continue;
|
|
72
|
+
const start = startTicks(witness.pid);
|
|
73
|
+
if (start === undefined)
|
|
74
|
+
return 'unavailable';
|
|
75
|
+
if (start !== '' && start === witness.startTicks)
|
|
76
|
+
return 'present';
|
|
77
|
+
if (start !== '' && start !== witness.startTicks)
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
// Both reads must agree on an absent process or a different generation.
|
|
81
|
+
const firstBoot = currentBootId(), first = firstBoot ? startTicks(witness.pid) : undefined;
|
|
82
|
+
const secondBoot = currentBootId(), second = secondBoot ? startTicks(witness.pid) : undefined;
|
|
83
|
+
if (!firstBoot || !secondBoot || first === undefined || second === undefined)
|
|
84
|
+
return 'unavailable';
|
|
85
|
+
if (firstBoot !== witness.bootId && secondBoot !== witness.bootId)
|
|
86
|
+
return 'gone';
|
|
87
|
+
if (firstBoot === witness.bootId && secondBoot === witness.bootId
|
|
88
|
+
&& ((first === '' && second === '') || (first !== '' && second !== '' && first !== witness.startTicks && second !== witness.startTicks)))
|
|
89
|
+
return 'gone';
|
|
90
|
+
return 'unavailable';
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=repair-process.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repair-process.js","sourceRoot":"","sources":["../src/repair-process.ts"],"names":[],"mappings":"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"}
|
package/lib/repair-runtime.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export interface RepairRuntimePorts {
|
|
|
7
7
|
goalId: string;
|
|
8
8
|
}>;
|
|
9
9
|
inspectRepair(record: SkillRepairContinuation, signal: AbortSignal): Promise<'running' | 'achieved' | 'rejected'>;
|
|
10
|
+
/** Reattach only the original repair Agent after its execution fence permits it. */
|
|
11
|
+
ensureRepair?(record: SkillRepairContinuation, signal: AbortSignal): Promise<void>;
|
|
10
12
|
capture(record: SkillRepairContinuation, signal: AbortSignal): Promise<{
|
|
11
13
|
candidateId: string;
|
|
12
14
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repair-runtime.d.ts","sourceRoot":"","sources":["../src/repair-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,6BAA6B,EAAoB,MAAM,YAAY,CAAA;AAC1G,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEvC,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IAClG,YAAY,CAAC,MAAM,EAAE,uBAAuB,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACrI,aAAa,CAAC,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC,CAAA;IACjH,OAAO,CAAC,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC/F,OAAO,CAAC,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAChG,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC,CAAA;IACtH,oBAAoB,CAAC,CAAC,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,6BAA6B,GAAG,SAAS,CAAC,CAAA;IAC/H,mBAAmB,CAAC,CAAC,MAAM,EAAE,uBAAuB,EAAE,KAAK,EAAE,6BAA6B,GAAG,IAAI,CAAA;IACjG,aAAa,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI,CAAA;CACrD;AAmBD;;;GAGG;AACH,qBAAa,yBAAyB;;IAOxB,QAAQ,CAAC,KAAK,EAAE,UAAU;IAAE,QAAQ,CAAC,KAAK,EAAE,kBAAkB;gBAArD,KAAK,EAAE,UAAU,EAAW,KAAK,EAAE,kBAAkB;IAE1E,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS;IAQvE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IASjE,OAAO,IAAI,OAAO,CAAC,SAAS,uBAAuB,EAAE,CAAC;IAqBtD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"repair-runtime.d.ts","sourceRoot":"","sources":["../src/repair-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,6BAA6B,EAAoB,MAAM,YAAY,CAAA;AAC1G,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEvC,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IAClG,YAAY,CAAC,MAAM,EAAE,uBAAuB,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACrI,aAAa,CAAC,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC,CAAA;IACjH,oFAAoF;IACpF,YAAY,CAAC,CAAC,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClF,OAAO,CAAC,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC/F,OAAO,CAAC,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAChG,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC,CAAA;IACtH,oBAAoB,CAAC,CAAC,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,6BAA6B,GAAG,SAAS,CAAC,CAAA;IAC/H,mBAAmB,CAAC,CAAC,MAAM,EAAE,uBAAuB,EAAE,KAAK,EAAE,6BAA6B,GAAG,IAAI,CAAA;IACjG,aAAa,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI,CAAA;CACrD;AAmBD;;;GAGG;AACH,qBAAa,yBAAyB;;IAOxB,QAAQ,CAAC,KAAK,EAAE,UAAU;IAAE,QAAQ,CAAC,KAAK,EAAE,kBAAkB;gBAArD,KAAK,EAAE,UAAU,EAAW,KAAK,EAAE,kBAAkB;IAE1E,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS;IAQvE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IASjE,OAAO,IAAI,OAAO,CAAC,SAAS,uBAAuB,EAAE,CAAC;IAqBtD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CA2FzB"}
|
package/lib/repair-runtime.js
CHANGED
|
@@ -107,8 +107,14 @@ export class RepairContinuationRuntime {
|
|
|
107
107
|
if (terminal.has(record.state))
|
|
108
108
|
return record;
|
|
109
109
|
const signal = AbortSignal.any([this.#lifecycle.signal]);
|
|
110
|
+
let recovering = false;
|
|
110
111
|
try {
|
|
111
112
|
this.#current(record, signal);
|
|
113
|
+
if (this.ports.ensureRepair && ['repairing', 'repair-achieved', 'candidate-staged'].includes(record.state)) {
|
|
114
|
+
recovering = true;
|
|
115
|
+
await this.#dispatch(record, signal, () => this.ports.ensureRepair(record, signal));
|
|
116
|
+
recovering = false;
|
|
117
|
+
}
|
|
112
118
|
switch (record.state) {
|
|
113
119
|
case 'armed': {
|
|
114
120
|
if (record.iteration > 1 && record.checkpoint.trigger !== undefined)
|
|
@@ -173,7 +179,7 @@ export class RepairContinuationRuntime {
|
|
|
173
179
|
const expired = current.authorization.expiresAt <= Date.now();
|
|
174
180
|
// Work that was checkpointed as dispatched is uncertain; failures before
|
|
175
181
|
// a dispatch are a rejection of the finite authority.
|
|
176
|
-
this.#ended(current, expired ? 'expired' : uncertain.has(current.state) ? 'unknown' : 'rejected', expired ? 'expired' : uncertain.has(current.state) ? 'dispatch-uncertain' : 'authority-or-port-failed');
|
|
182
|
+
this.#ended(current, expired ? 'expired' : recovering || uncertain.has(current.state) ? 'unknown' : 'rejected', expired ? 'expired' : recovering ? 'repair-recovery-unconfirmed' : uncertain.has(current.state) ? 'dispatch-uncertain' : 'authority-or-port-failed');
|
|
177
183
|
throw error;
|
|
178
184
|
}
|
|
179
185
|
}
|