@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 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. A restart during dispatch, or
201
- before the native repair Agent can be safely reacquired, surfaces `unknown`
202
- without creating a second repair. Automatic resumption of an interrupted repair
203
- Agent is not implemented. Status includes the exact repair Session/Goal and
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.
@@ -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
- constructor(ctx: Context);
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;AAItH,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;;IAUtB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,OAAO;IAIzC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAEnC,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;IAwH1G,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY9C,kBAAkB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAmB/B"}
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"}
@@ -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 #create(sessionId, key, input, signal) {
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.min(input.maxDurationMs, input.expiresAt - Date.now()));
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
- handle = await agents.create({ sessionId, meta: { cwd: input.scope.workspace, agentPreset: input.scope.preset },
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 record = await currentGoals.startOwnerAuthorizedRepair(handle.agent, repair, input.assertCurrent);
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
- if (handle !== undefined)
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 handles = [...this.#handles.entries()];
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');
@@ -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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"}
@@ -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;CAqFzB"}
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"}
@@ -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
  }