@dsh-enhanced/assistant-skills 0.1.31 → 0.1.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +56 -9
  2. package/lib/definition.d.ts +53 -2
  3. package/lib/definition.d.ts.map +1 -1
  4. package/lib/definition.js +96 -0
  5. package/lib/definition.js.map +1 -1
  6. package/lib/delegated-arm.d.ts +47 -0
  7. package/lib/delegated-arm.d.ts.map +1 -0
  8. package/lib/delegated-arm.js +26 -0
  9. package/lib/delegated-arm.js.map +1 -0
  10. package/lib/external-holdout.js +1 -1
  11. package/lib/external-holdout.js.map +1 -1
  12. package/lib/holdout-authority.d.ts +1 -122
  13. package/lib/holdout-authority.d.ts.map +1 -1
  14. package/lib/holdout-authority.js +5 -262
  15. package/lib/holdout-authority.js.map +1 -1
  16. package/lib/holdout-cli.d.ts.map +1 -1
  17. package/lib/holdout-cli.js +2 -0
  18. package/lib/holdout-cli.js.map +1 -1
  19. package/lib/holdout-qualification.d.ts +11 -3
  20. package/lib/holdout-qualification.d.ts.map +1 -1
  21. package/lib/holdout-qualification.js +19 -9
  22. package/lib/holdout-qualification.js.map +1 -1
  23. package/lib/index.d.ts +10 -1
  24. package/lib/index.d.ts.map +1 -1
  25. package/lib/index.js +4 -0
  26. package/lib/index.js.map +1 -1
  27. package/lib/prospective-holdout.d.ts +1 -34
  28. package/lib/prospective-holdout.d.ts.map +1 -1
  29. package/lib/prospective-holdout.js +4 -253
  30. package/lib/prospective-holdout.js.map +1 -1
  31. package/lib/repair-agent.d.ts +11 -2
  32. package/lib/repair-agent.d.ts.map +1 -1
  33. package/lib/repair-agent.js +178 -17
  34. package/lib/repair-agent.js.map +1 -1
  35. package/lib/repair-process.d.ts +20 -0
  36. package/lib/repair-process.d.ts.map +1 -0
  37. package/lib/repair-process.js +92 -0
  38. package/lib/repair-process.js.map +1 -0
  39. package/lib/repair-profile.d.ts +6 -2
  40. package/lib/repair-profile.d.ts.map +1 -1
  41. package/lib/repair-profile.js +10 -4
  42. package/lib/repair-profile.js.map +1 -1
  43. package/lib/repair-runtime.d.ts +2 -0
  44. package/lib/repair-runtime.d.ts.map +1 -1
  45. package/lib/repair-runtime.js +7 -1
  46. package/lib/repair-runtime.js.map +1 -1
  47. package/lib/repair-workspace-path.d.ts +17 -0
  48. package/lib/repair-workspace-path.d.ts.map +1 -0
  49. package/lib/repair-workspace-path.js +84 -0
  50. package/lib/repair-workspace-path.js.map +1 -0
  51. package/lib/replay.d.ts.map +1 -1
  52. package/lib/replay.js +17 -2
  53. package/lib/replay.js.map +1 -1
  54. package/lib/service.d.ts +271 -2
  55. package/lib/service.d.ts.map +1 -1
  56. package/lib/service.js +473 -35
  57. package/lib/service.js.map +1 -1
  58. package/lib/store.d.ts +47 -0
  59. package/lib/store.d.ts.map +1 -1
  60. package/lib/store.js +262 -6
  61. package/lib/store.js.map +1 -1
  62. package/lib/version.d.ts +1 -1
  63. package/lib/version.js +1 -1
  64. package/lib/watch-proof.js +2 -2
  65. package/lib/watch-proof.js.map +1 -1
  66. package/package.json +8 -8
package/lib/store.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { type FailureCaptureProvenance, type SkillDefinition } from './definition.js';
2
+ import { type RepairProcessWitness } from './repair-process.js';
2
3
  export type SkillRunState = 'running' | 'succeeded' | 'failed' | 'unknown';
3
4
  export interface SkillRunStep {
4
5
  id: string;
@@ -16,6 +17,7 @@ export interface SkillRun {
16
17
  state: SkillRunState;
17
18
  steps: readonly SkillRunStep[];
18
19
  candidateId?: string;
20
+ delegationDigest?: string;
19
21
  goalExecutionRunId?: string;
20
22
  goalDefinitionDigest?: string;
21
23
  nativeGoalId?: string;
@@ -30,10 +32,24 @@ export interface SkillRunClaim {
30
32
  version: number;
31
33
  inputs: Readonly<Record<string, unknown>>;
32
34
  candidateId?: string;
35
+ delegationDigest?: string;
33
36
  goalExecutionRunId?: string;
34
37
  goalDefinitionDigest?: string;
35
38
  nativeGoalId?: string;
36
39
  }
40
+ /** A one-shot native benchmark arm. Its definition is never promoted into the skill directory. */
41
+ export interface SkillDelegatedArmBinding {
42
+ protocol: 'assistant-skills/delegated-arm/v1';
43
+ planDigest: string;
44
+ cellId: string;
45
+ variantId: string;
46
+ definitionDigest: string;
47
+ sourceDigest: string;
48
+ recipientScopeDigest: string;
49
+ skillName: string;
50
+ version: number;
51
+ expiresAt: number;
52
+ }
37
53
  export interface StoredSkillDefinition extends SkillDefinition {
38
54
  version: number;
39
55
  parentVersion: number | null;
@@ -254,6 +270,12 @@ export interface SkillRepairAuthorizationInput {
254
270
  parentDigest: string;
255
271
  maxIterations: number;
256
272
  expiresAt: number;
273
+ /** Frozen at arm time. Undefined is accepted only for legacy fixed-route records. */
274
+ modelSelection?: {
275
+ provider: string;
276
+ model: string;
277
+ reasoningEffort?: string;
278
+ };
257
279
  profileSequence?: readonly {
258
280
  id: string;
259
281
  digest: string;
@@ -288,11 +310,32 @@ export interface SkillRepairContinuation {
288
310
  createdAt: number;
289
311
  updatedAt: number;
290
312
  }
313
+ export interface RepairExecutionLease {
314
+ authorizationId: string;
315
+ authorizationDigest: string;
316
+ iteration: number;
317
+ sessionId: string;
318
+ holderId: string;
319
+ fence: number;
320
+ deadlineAt: number;
321
+ process: RepairProcessWitness;
322
+ state: 'active' | 'released';
323
+ pendingModel: number;
324
+ pendingTool: number;
325
+ }
291
326
  /** Owner-scoped immutable definitions and no-replay invocation receipts. */
292
327
  export declare class SkillStore {
293
328
  #private;
294
329
  constructor(path: string);
295
330
  close(): void;
331
+ reserveDelegatedArm(scope: object, binding: SkillDelegatedArmBinding): void;
332
+ inspectRepairExecution(scope: object, id: string, iteration: number): RepairExecutionLease | undefined;
333
+ claimRepairExecution(scope: object, id: string, iteration: number, sessionId: string, holderId: string, deadlineAt: number, options: {
334
+ recover: boolean;
335
+ }): RepairExecutionLease;
336
+ assertRepairExecution(scope: object, lease: RepairExecutionLease): void;
337
+ beginRepairEffect(scope: object, lease: RepairExecutionLease, kind: 'model' | 'tool'): () => void;
338
+ releaseRepairExecution(scope: object, lease: RepairExecutionLease): void;
296
339
  createRepairContinuation(scope: object, input: SkillRepairAuthorizationInput, routeReceipt: unknown): SkillRepairContinuation;
297
340
  repairUsage(scope: object, id: string): {
298
341
  modelCalls: number;
@@ -353,6 +396,10 @@ export declare class SkillStore {
353
396
  claimed: boolean;
354
397
  run: SkillRun;
355
398
  };
399
+ claimDelegated(scope: object, input: SkillRunClaim, bindingDigest: string): {
400
+ claimed: boolean;
401
+ run: SkillRun;
402
+ };
356
403
  finish(scope: object, id: string, state: Exclude<SkillRunState, 'running'>, steps: readonly SkillRunStep[]): SkillRun;
357
404
  checkpoint(scope: object, id: string, steps: readonly SkillRunStep[]): SkillRun;
358
405
  getRun(scope: object, id: string): SkillRun | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
package/lib/store.js CHANGED
@@ -3,6 +3,7 @@ import { dirname, isAbsolute } from 'node:path';
3
3
  import { DatabaseSync } from 'node:sqlite';
4
4
  import { acceptanceDigest } from '@dsh-enhanced/task-acceptance-contract';
5
5
  import { validateFailureCaptureProvenance } from './definition.js';
6
+ import { currentRepairProcess, probeRepairProcess } from './repair-process.js';
6
7
  function fail(message = 'assistant-skills: store operation rejected') { throw new Error(message); }
7
8
  function json(value) {
8
9
  if (value === null || typeof value === 'string' || typeof value === 'boolean')
@@ -40,6 +41,15 @@ function deploymentId(scope, candidateId, comparisonId, qualificationDigest, adm
40
41
  function repairContinuationId(scope, input) { return `skill-repair-${acceptanceDigest([scope, input.ownerRouteId, input.invocationId])}`; }
41
42
  function definitionValid(definition) { return !!definition && typeof definition === 'object' && definition.protocol === 'assistant-skills/definition/v1' && name(definition.name) && json(definition); }
42
43
  function digest(value) { return typeof value === 'string' && /^[a-f0-9]{64}$/u.test(value); }
44
+ function delegatedArmBinding(value) {
45
+ if (!value || typeof value !== 'object' || Array.isArray(value) || !json(value))
46
+ return false;
47
+ const binding = value;
48
+ return Object.keys(binding).length === 10 && binding.protocol === 'assistant-skills/delegated-arm/v1'
49
+ && digest(binding.planDigest) && text(binding.cellId, 256) && text(binding.variantId, 256)
50
+ && digest(binding.definitionDigest) && digest(binding.sourceDigest) && digest(binding.recipientScopeDigest)
51
+ && name(binding.skillName) && version(binding.version) && Number.isSafeInteger(binding.expiresAt);
52
+ }
43
53
  function canonicalRevision(value) {
44
54
  if (!value || typeof value !== 'object' || Array.isArray(value) || !json(value))
45
55
  return false;
@@ -151,12 +161,20 @@ function repairAuthorization(value) {
151
161
  if (!value || typeof value !== 'object' || Array.isArray(value) || !json(value))
152
162
  return false;
153
163
  const input = value;
154
- if (!Object.keys(input).every(key => ['invocationId', 'ownerRouteId', 'source', 'profileId', 'profileDigest', 'skillName', 'parentVersion', 'parentDigest', 'maxIterations', 'expiresAt', 'profileSequence', 'feedbackAuthority'].includes(key))
164
+ if (!Object.keys(input).every(key => ['invocationId', 'ownerRouteId', 'source', 'profileId', 'profileDigest', 'skillName', 'parentVersion', 'parentDigest', 'maxIterations', 'expiresAt', 'modelSelection', 'profileSequence', 'feedbackAuthority'].includes(key))
155
165
  || !['invocationId', 'ownerRouteId', 'source', 'profileId', 'profileDigest', 'skillName', 'parentVersion', 'parentDigest', 'maxIterations', 'expiresAt'].every(key => Object.hasOwn(input, key))
156
166
  || !text(input.invocationId, 256) || !text(input.ownerRouteId, 256) || !text(input.profileId, 256) || !digest(input.profileDigest)
157
167
  || !name(input.skillName) || !version(input.parentVersion) || !digest(input.parentDigest) || !Number.isSafeInteger(input.maxIterations) || input.maxIterations < 1 || input.maxIterations > 4
158
168
  || !Number.isSafeInteger(input.expiresAt) || input.expiresAt <= Date.now() || input.expiresAt > Date.now() + 7 * 86400000)
159
169
  return false;
170
+ if (input.modelSelection !== undefined) {
171
+ const selection = input.modelSelection;
172
+ if (!selection || typeof selection !== 'object' || Array.isArray(selection) || !json(selection)
173
+ || !Object.keys(selection).every(key => ['provider', 'model', 'reasoningEffort'].includes(key))
174
+ || !Object.hasOwn(selection, 'provider') || !Object.hasOwn(selection, 'model') || !text(selection.provider, 256) || !text(selection.model, 256)
175
+ || selection.reasoningEffort !== undefined && !text(selection.reasoningEffort, 256))
176
+ return false;
177
+ }
160
178
  if (input.profileSequence !== undefined && (!Array.isArray(input.profileSequence) || input.profileSequence.length !== input.maxIterations
161
179
  || input.profileSequence.some(item => !item || typeof item !== 'object' || Object.keys(item).length !== 2 || !text(item.id, 128) || !digest(item.digest))
162
180
  || input.profileSequence[0]?.id !== input.profileId || input.profileSequence[0]?.digest !== input.profileDigest))
@@ -239,6 +257,7 @@ export class SkillStore {
239
257
  this.#db.exec(`PRAGMA journal_mode=WAL; PRAGMA synchronous=FULL; PRAGMA busy_timeout=250;
240
258
  CREATE TABLE IF NOT EXISTS skill_definitions(scope_key TEXT NOT NULL, name TEXT NOT NULL, version INTEGER NOT NULL, retired INTEGER NOT NULL, definition_json TEXT NOT NULL, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, PRIMARY KEY(scope_key,name,version)) STRICT, WITHOUT ROWID;
241
259
  CREATE TABLE IF NOT EXISTS skill_runs(id TEXT PRIMARY KEY, scope_key TEXT NOT NULL, identity_json TEXT NOT NULL, run_json TEXT NOT NULL, state TEXT NOT NULL CHECK(state IN ('running','succeeded','failed','unknown'))) STRICT;
260
+ CREATE TABLE IF NOT EXISTS skill_delegated_arms(scope_key TEXT PRIMARY KEY, plan_digest TEXT NOT NULL, cell_id TEXT NOT NULL, binding_digest TEXT NOT NULL, binding_json TEXT NOT NULL, UNIQUE(plan_digest,cell_id)) STRICT, WITHOUT ROWID;
242
261
  CREATE TABLE IF NOT EXISTS skill_candidates(scope_key TEXT NOT NULL, id TEXT NOT NULL, candidate_json TEXT NOT NULL, PRIMARY KEY(scope_key,id)) STRICT, WITHOUT ROWID;
243
262
  CREATE TABLE IF NOT EXISTS skill_comparisons(scope_key TEXT NOT NULL,id TEXT NOT NULL,profile_id TEXT NOT NULL,identity_json TEXT NOT NULL,comparison_json TEXT NOT NULL,state TEXT NOT NULL CHECK(state IN ('running','complete','unknown')),PRIMARY KEY(scope_key,id)) STRICT, WITHOUT ROWID;
244
263
  CREATE TABLE IF NOT EXISTS skill_watches(scope_key TEXT NOT NULL,id TEXT NOT NULL,watch_json TEXT NOT NULL,state TEXT NOT NULL CHECK(state IN ('watching','rolled-back','expired','revoked','superseded','exhausted')),PRIMARY KEY(scope_key,id)) STRICT, WITHOUT ROWID;
@@ -246,6 +265,7 @@ export class SkillStore {
246
265
  CREATE TABLE IF NOT EXISTS skill_captures(scope_key TEXT NOT NULL,id TEXT NOT NULL,capture_json TEXT NOT NULL,state TEXT NOT NULL CHECK(state IN ('pending','captured','revoked','expired','unsupported','unknown')),PRIMARY KEY(scope_key,id)) STRICT, WITHOUT ROWID;
247
266
  CREATE TABLE IF NOT EXISTS skill_repair_continuations(scope_key TEXT NOT NULL,id TEXT NOT NULL,authorization_digest TEXT NOT NULL,route_receipt_digest TEXT NOT NULL,revision INTEGER NOT NULL,state TEXT NOT NULL CHECK(state IN ('armed','source-confirmed','creating-repair','repairing','repair-achieved','capturing','candidate-staged','comparing','watching','complete','rejected','revoked','expired','unknown')),continuation_json TEXT NOT NULL,PRIMARY KEY(scope_key,id)) STRICT, WITHOUT ROWID;
248
267
  CREATE TABLE IF NOT EXISTS skill_repair_usage(scope_key TEXT NOT NULL,id TEXT NOT NULL,authorization_digest TEXT NOT NULL,model_calls INTEGER NOT NULL CHECK(model_calls>=0),tool_calls INTEGER NOT NULL CHECK(tool_calls>=0),PRIMARY KEY(scope_key,id)) STRICT, WITHOUT ROWID;
268
+ CREATE TABLE IF NOT EXISTS skill_repair_execution(scope_key TEXT NOT NULL,id TEXT NOT NULL,iteration INTEGER NOT NULL,lease_json TEXT NOT NULL,fence INTEGER NOT NULL,state TEXT NOT NULL CHECK(state IN ('active','released')),pending_model INTEGER NOT NULL CHECK(pending_model>=0),pending_tool INTEGER NOT NULL CHECK(pending_tool>=0),PRIMARY KEY(scope_key,id,iteration)) STRICT, WITHOUT ROWID;
249
269
  CREATE INDEX IF NOT EXISTS skill_definitions_current ON skill_definitions(scope_key,name,version DESC);
250
270
  CREATE INDEX IF NOT EXISTS skill_runs_scope ON skill_runs(scope_key,id);
251
271
  CREATE INDEX IF NOT EXISTS skill_watches_scope_state ON skill_watches(scope_key,state);
@@ -279,9 +299,149 @@ export class SkillStore {
279
299
  this.#db.prepare("UPDATE skill_deployments SET state='blocked', deployment_json=json_set(deployment_json, '$.state', 'blocked', '$.updatedAt', ?) WHERE state IN ('canary','promoted') AND EXISTS (SELECT 1 FROM json_each(skill_deployments.deployment_json, '$.runIds') claimed JOIN skill_runs run ON run.id=claimed.value AND run.scope_key=skill_deployments.scope_key WHERE run.state IN ('unknown','failed'))").run(Date.now());
280
300
  this.#db.prepare("UPDATE skill_comparisons SET state='unknown', comparison_json=json_set(comparison_json, '$.state', 'unknown', '$.updatedAt', ?) WHERE state='running'").run(Date.now());
281
301
  this.#db.exec("CREATE UNIQUE INDEX IF NOT EXISTS skill_runs_one_active ON skill_runs(scope_key,json_extract(identity_json,'$.sessionId'),json_extract(identity_json,'$.goalId')) WHERE state='running'");
302
+ this.#db.exec("CREATE UNIQUE INDEX IF NOT EXISTS skill_runs_one_delegated_arm ON skill_runs(scope_key,json_extract(identity_json,'$.delegationDigest')) WHERE json_extract(identity_json,'$.delegationDigest') IS NOT NULL");
282
303
  this.#db.exec("CREATE UNIQUE INDEX IF NOT EXISTS skill_comparisons_one_active ON skill_comparisons(scope_key) WHERE state='running'");
283
304
  }
284
305
  close() { this.#db.close(); }
306
+ reserveDelegatedArm(scope, binding) {
307
+ const key = scopeKey(scope);
308
+ if (!delegatedArmBinding(binding) || binding.recipientScopeDigest !== acceptanceDigest(scope) || binding.expiresAt <= Date.now())
309
+ fail('assistant-skills: invalid delegated arm');
310
+ const saved = clone(binding), bindingDigest = acceptanceDigest(saved);
311
+ this.#db.exec('BEGIN IMMEDIATE');
312
+ try {
313
+ const existing = this.#delegatedArm(key);
314
+ const cell = this.#db.prepare('SELECT scope_key FROM skill_delegated_arms WHERE plan_digest=? AND cell_id=?').get(saved.planDigest, saved.cellId);
315
+ if (existing || cell || this.#db.prepare('SELECT 1 FROM skill_definitions WHERE scope_key=? LIMIT 1').get(key)
316
+ || this.#db.prepare('SELECT 1 FROM skill_candidates WHERE scope_key=? LIMIT 1').get(key)
317
+ || this.#db.prepare('SELECT 1 FROM skill_runs WHERE scope_key=? LIMIT 1').get(key))
318
+ fail('assistant-skills: delegated arm unavailable');
319
+ this.#db.prepare('INSERT INTO skill_delegated_arms VALUES(?,?,?,?,?)').run(key, saved.planDigest, saved.cellId, bindingDigest, JSON.stringify(saved));
320
+ this.#db.exec('COMMIT');
321
+ }
322
+ catch (error) {
323
+ try {
324
+ this.#db.exec('ROLLBACK');
325
+ }
326
+ catch { }
327
+ throw error;
328
+ }
329
+ }
330
+ inspectRepairExecution(scope, id, iteration) {
331
+ const key = scopeKey(scope);
332
+ if (!text(id, 128) || !version(iteration))
333
+ fail('assistant-skills: invalid repair execution reference');
334
+ const value = this.#repairExecution(key, id, iteration);
335
+ return value === undefined ? undefined : clone(value);
336
+ }
337
+ claimRepairExecution(scope, id, iteration, sessionId, holderId, deadlineAt, options) {
338
+ const key = scopeKey(scope);
339
+ if (!text(id, 128) || !version(iteration) || !text(sessionId, 512) || !text(holderId, 512)
340
+ || !Number.isSafeInteger(deadlineAt) || deadlineAt <= Date.now() || !options || Object.keys(options).length !== 1 || typeof options.recover !== 'boolean')
341
+ fail('assistant-skills: invalid repair execution claim');
342
+ const process = currentRepairProcess();
343
+ this.#db.exec('BEGIN IMMEDIATE');
344
+ try {
345
+ const continuation = this.#repairExecutionAuthorization(key, id, iteration, deadlineAt);
346
+ const current = this.#repairExecution(key, id, iteration);
347
+ if (!options.recover) {
348
+ if (current !== undefined || !process)
349
+ fail('assistant-skills: repair execution recovery required');
350
+ const lease = { authorizationId: id, authorizationDigest: continuation.authorizationDigest, iteration, sessionId, holderId, fence: 1, deadlineAt,
351
+ process, state: 'active', pendingModel: 0, pendingTool: 0 };
352
+ this.#putRepairExecution(key, lease);
353
+ this.#db.exec('COMMIT');
354
+ return clone(lease);
355
+ }
356
+ if (!current || current.authorizationDigest !== continuation.authorizationDigest || current.sessionId !== sessionId || current.iteration !== iteration || current.deadlineAt !== deadlineAt)
357
+ fail('assistant-skills: repair execution recovery unavailable');
358
+ if (current.state === 'released' && current.pendingModel === 0 && current.pendingTool === 0 && this.#sameRepairProcess(current.process, process)) {
359
+ const lease = { ...current, holderId, fence: current.fence + 1, process: process ?? current.process, state: 'active' };
360
+ this.#updateRepairExecution(key, current, lease);
361
+ this.#db.exec('COMMIT');
362
+ return clone(lease);
363
+ }
364
+ if (!['active', 'released'].includes(current.state) || current.pendingModel !== 0 || current.pendingTool !== 0 || !process || probeRepairProcess(current.process) !== 'gone')
365
+ fail('assistant-skills: repair execution holder remains authoritative');
366
+ const lease = { ...current, holderId, fence: current.fence + 1, process, state: 'active' };
367
+ this.#updateRepairExecution(key, current, lease);
368
+ this.#db.exec('COMMIT');
369
+ return clone(lease);
370
+ }
371
+ catch (error) {
372
+ try {
373
+ this.#db.exec('ROLLBACK');
374
+ }
375
+ catch { }
376
+ throw error;
377
+ }
378
+ }
379
+ assertRepairExecution(scope, lease) {
380
+ const key = scopeKey(scope);
381
+ this.#assertRepairExecution(key, lease, true);
382
+ }
383
+ beginRepairEffect(scope, lease, kind) {
384
+ const key = scopeKey(scope);
385
+ if (kind !== 'model' && kind !== 'tool')
386
+ fail('assistant-skills: invalid repair effect');
387
+ this.#db.exec('BEGIN IMMEDIATE');
388
+ try {
389
+ const current = this.#assertRepairExecution(key, lease, true);
390
+ const field = kind === 'model' ? 'pendingModel' : 'pendingTool';
391
+ const saved = { ...current, [field]: current[field] + 1 };
392
+ this.#updateRepairExecution(key, current, saved);
393
+ this.#db.exec('COMMIT');
394
+ }
395
+ catch (error) {
396
+ try {
397
+ this.#db.exec('ROLLBACK');
398
+ }
399
+ catch { }
400
+ throw error;
401
+ }
402
+ let finished = false;
403
+ return () => {
404
+ if (finished)
405
+ return;
406
+ this.#db.exec('BEGIN IMMEDIATE');
407
+ try {
408
+ const current = this.#repairExecution(key, lease.authorizationId, lease.iteration);
409
+ const field = kind === 'model' ? 'pendingModel' : 'pendingTool';
410
+ if (!current || current.fence !== lease.fence || current.authorizationDigest !== lease.authorizationDigest || current.sessionId !== lease.sessionId
411
+ || current.holderId !== lease.holderId || current.deadlineAt !== lease.deadlineAt || !this.#sameRepairProcess(current.process, currentRepairProcess())
412
+ || current.state !== 'active' || current[field] < 1)
413
+ fail('assistant-skills: repair effect fence conflict');
414
+ this.#updateRepairExecution(key, current, { ...current, [field]: current[field] - 1 });
415
+ this.#db.exec('COMMIT');
416
+ finished = true;
417
+ }
418
+ catch (error) {
419
+ try {
420
+ this.#db.exec('ROLLBACK');
421
+ }
422
+ catch { }
423
+ throw error;
424
+ }
425
+ };
426
+ }
427
+ releaseRepairExecution(scope, lease) {
428
+ const key = scopeKey(scope);
429
+ this.#db.exec('BEGIN IMMEDIATE');
430
+ try {
431
+ const current = this.#assertRepairExecution(key, lease, false);
432
+ if (current.pendingModel !== 0 || current.pendingTool !== 0)
433
+ fail('assistant-skills: repair effects remain pending');
434
+ this.#updateRepairExecution(key, current, { ...current, state: 'released' });
435
+ this.#db.exec('COMMIT');
436
+ }
437
+ catch (error) {
438
+ try {
439
+ this.#db.exec('ROLLBACK');
440
+ }
441
+ catch { }
442
+ throw error;
443
+ }
444
+ }
285
445
  createRepairContinuation(scope, input, routeReceipt) {
286
446
  const key = scopeKey(scope);
287
447
  if (!repairAuthorization(input) || !json(routeReceipt))
@@ -1230,15 +1390,34 @@ export class SkillStore {
1230
1390
  return saved;
1231
1391
  }
1232
1392
  claim(scope, input) {
1393
+ return this.#claim(scope, input);
1394
+ }
1395
+ claimDelegated(scope, input, bindingDigest) {
1396
+ if (!digest(bindingDigest))
1397
+ fail('assistant-skills: invalid delegated claim');
1398
+ return this.#claim(scope, input, bindingDigest);
1399
+ }
1400
+ #claim(scope, input, delegationDigest) {
1233
1401
  const key = scopeKey(scope);
1234
1402
  this.#validateClaim(scope, input);
1235
1403
  const id = runId(scope, input.sessionId, input.invocationId);
1236
1404
  const identity = clone({ invocationId: input.invocationId, goalId: input.goalId, sessionId: input.sessionId, skillName: input.skillName, version: input.version, inputs: input.inputs, ...(input.goalExecutionRunId === undefined ? {} : { goalExecutionRunId: input.goalExecutionRunId }),
1237
- ...(input.goalDefinitionDigest === undefined ? {} : { goalDefinitionDigest: input.goalDefinitionDigest }), ...(input.nativeGoalId === undefined ? {} : { nativeGoalId: input.nativeGoalId }), ...(input.candidateId === undefined ? {} : { candidateId: input.candidateId }) });
1405
+ ...(input.goalDefinitionDigest === undefined ? {} : { goalDefinitionDigest: input.goalDefinitionDigest }), ...(input.nativeGoalId === undefined ? {} : { nativeGoalId: input.nativeGoalId }), ...(input.candidateId === undefined ? {} : { candidateId: input.candidateId }),
1406
+ ...(delegationDigest === undefined ? {} : { delegationDigest }) });
1238
1407
  this.#db.exec('BEGIN IMMEDIATE');
1239
1408
  try {
1240
- if (input.candidateId !== undefined)
1241
- this.#validateTrialClaim(key, input);
1409
+ const arm = this.#delegatedArm(key);
1410
+ if (delegationDigest === undefined) {
1411
+ if (arm)
1412
+ fail('assistant-skills: delegated arm requires delegated claim');
1413
+ if (input.candidateId !== undefined)
1414
+ this.#validateTrialClaim(key, input);
1415
+ }
1416
+ else {
1417
+ if (!arm || arm.bindingDigest !== delegationDigest || arm.binding.expiresAt <= Date.now() || input.candidateId !== undefined
1418
+ || arm.binding.skillName !== input.skillName || arm.binding.version !== input.version)
1419
+ fail('assistant-skills: delegated claim unavailable');
1420
+ }
1242
1421
  const existing = this.#db.prepare('SELECT identity_json,run_json FROM skill_runs WHERE id=? AND scope_key=?').get(id, key);
1243
1422
  if (existing) {
1244
1423
  if (acceptanceDigest(identity) !== acceptanceDigest(JSON.parse(existing.identity_json)))
@@ -1246,7 +1425,10 @@ export class SkillStore {
1246
1425
  this.#db.exec('COMMIT');
1247
1426
  return { claimed: false, run: clone(JSON.parse(existing.run_json)) };
1248
1427
  }
1249
- if (input.candidateId === undefined) {
1428
+ if (delegationDigest !== undefined && this.#db.prepare("SELECT 1 FROM skill_runs WHERE scope_key=? AND json_extract(identity_json,'$.delegationDigest')=? LIMIT 1").get(key, delegationDigest)) {
1429
+ fail('assistant-skills: delegated arm invocation already consumed');
1430
+ }
1431
+ if (delegationDigest === undefined && input.candidateId === undefined) {
1250
1432
  const active = this.#latest(key, input.skillName);
1251
1433
  if (!active || active.retired || active.version !== input.version)
1252
1434
  fail('assistant-skills: inactive skill version');
@@ -1421,6 +1603,71 @@ export class SkillStore {
1421
1603
  const row = this.#db.prepare('SELECT continuation_json FROM skill_repair_continuations WHERE scope_key=? AND id=?').get(key, id);
1422
1604
  return row === undefined ? undefined : JSON.parse(row.continuation_json);
1423
1605
  }
1606
+ #repairExecution(key, id, iteration) {
1607
+ const row = this.#db.prepare('SELECT lease_json FROM skill_repair_execution WHERE scope_key=? AND id=? AND iteration=?').get(key, id, iteration);
1608
+ if (!row)
1609
+ return undefined;
1610
+ try {
1611
+ const lease = JSON.parse(row.lease_json);
1612
+ if (!this.#validRepairExecution(lease) || lease.authorizationId !== id || lease.iteration !== iteration)
1613
+ fail('assistant-skills: invalid repair execution record');
1614
+ return lease;
1615
+ }
1616
+ catch (error) {
1617
+ if (error instanceof Error && error.message.startsWith('assistant-skills:'))
1618
+ throw error;
1619
+ fail('assistant-skills: invalid repair execution record');
1620
+ }
1621
+ }
1622
+ #putRepairExecution(key, lease) {
1623
+ if (!this.#validRepairExecution(lease))
1624
+ fail('assistant-skills: invalid repair execution record');
1625
+ this.#db.prepare('INSERT INTO skill_repair_execution(scope_key,id,iteration,lease_json,fence,state,pending_model,pending_tool) VALUES(?,?,?,?,?,?,?,?) ON CONFLICT(scope_key,id,iteration) DO UPDATE SET lease_json=excluded.lease_json,fence=excluded.fence,state=excluded.state,pending_model=excluded.pending_model,pending_tool=excluded.pending_tool')
1626
+ .run(key, lease.authorizationId, lease.iteration, JSON.stringify(lease), lease.fence, lease.state, lease.pendingModel, lease.pendingTool);
1627
+ }
1628
+ #updateRepairExecution(key, expected, saved) {
1629
+ if (!this.#validRepairExecution(expected) || !this.#validRepairExecution(saved) || expected.authorizationId !== saved.authorizationId || expected.iteration !== saved.iteration)
1630
+ fail('assistant-skills: invalid repair execution record');
1631
+ const result = this.#db.prepare("UPDATE skill_repair_execution SET lease_json=?,fence=?,state=?,pending_model=?,pending_tool=? WHERE scope_key=? AND id=? AND iteration=? AND fence=? AND state=? AND pending_model=? AND pending_tool=? AND json_extract(lease_json, '$.authorizationDigest')=?")
1632
+ .run(JSON.stringify(saved), saved.fence, saved.state, saved.pendingModel, saved.pendingTool, key, expected.authorizationId, expected.iteration, expected.fence, expected.state, expected.pendingModel, expected.pendingTool, expected.authorizationDigest);
1633
+ if (result.changes !== 1)
1634
+ fail('assistant-skills: repair execution fence conflict');
1635
+ }
1636
+ #validRepairExecution(value) {
1637
+ if (!value || typeof value !== 'object' || Array.isArray(value) || !json(value) || Object.keys(value).length !== 11)
1638
+ return false;
1639
+ const lease = value, proc = lease.process;
1640
+ return text(lease.authorizationId, 128) && digest(lease.authorizationDigest) && version(lease.iteration) && text(lease.sessionId, 512) && text(lease.holderId, 512)
1641
+ && version(lease.fence) && Number.isSafeInteger(lease.deadlineAt) && lease.deadlineAt > 0 && ['active', 'released'].includes(lease.state)
1642
+ && !!proc && typeof proc === 'object' && Object.keys(proc).length === 4 && typeof proc.bootId === 'string' && /^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/u.test(proc.bootId)
1643
+ && Number.isSafeInteger(proc.pid) && proc.pid > 0 && typeof proc.startTicks === 'string' && /^[1-9][0-9]{0,63}$/u.test(proc.startTicks)
1644
+ && typeof proc.pidNamespace === 'string' && /^(?:linux:[0-9]{1,32}:[0-9]{1,32}|local:[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12})$/u.test(proc.pidNamespace)
1645
+ && Number.isSafeInteger(lease.pendingModel) && lease.pendingModel >= 0 && Number.isSafeInteger(lease.pendingTool) && lease.pendingTool >= 0
1646
+ && (lease.state !== 'released' || (lease.pendingModel === 0 && lease.pendingTool === 0));
1647
+ }
1648
+ #sameRepairProcess(expected, actual) {
1649
+ return !!actual && expected.bootId === actual.bootId && expected.pidNamespace === actual.pidNamespace && expected.pid === actual.pid && expected.startTicks === actual.startTicks;
1650
+ }
1651
+ #repairExecutionAuthorization(key, id, iteration, deadlineAt) {
1652
+ const continuation = this.#repairContinuation(key, id);
1653
+ if (!continuation || continuation.iteration !== iteration || continuation.authorizationDigest !== acceptanceDigest(continuation.authorization)
1654
+ || deadlineAt <= Date.now() || continuation.authorization.expiresAt <= Date.now() || deadlineAt > continuation.authorization.expiresAt
1655
+ || ['complete', 'rejected', 'revoked', 'expired', 'unknown'].includes(continuation.state))
1656
+ fail('assistant-skills: repair execution authorization unavailable');
1657
+ return continuation;
1658
+ }
1659
+ #assertRepairExecution(key, lease, authorization) {
1660
+ if (!this.#validRepairExecution(lease))
1661
+ fail('assistant-skills: invalid repair execution lease');
1662
+ const current = this.#repairExecution(key, lease.authorizationId, lease.iteration);
1663
+ if (!current || current.state !== 'active' || current.fence !== lease.fence || current.authorizationDigest !== lease.authorizationDigest
1664
+ || current.sessionId !== lease.sessionId || current.holderId !== lease.holderId || current.deadlineAt !== lease.deadlineAt
1665
+ || !this.#sameRepairProcess(current.process, currentRepairProcess()))
1666
+ fail('assistant-skills: repair execution fence conflict');
1667
+ if (authorization)
1668
+ this.#repairExecutionAuthorization(key, lease.authorizationId, lease.iteration, lease.deadlineAt);
1669
+ return current;
1670
+ }
1424
1671
  #watch(key, id) { const row = this.#db.prepare('SELECT watch_json FROM skill_watches WHERE scope_key=? AND id=?').get(key, id); return row ? JSON.parse(row.watch_json) : undefined; }
1425
1672
  #watches(key, state) { return this.#db.prepare('SELECT watch_json FROM skill_watches WHERE scope_key=? AND state=?').all(key, state).map(row => JSON.parse(row.watch_json)); }
1426
1673
  #putWatch(key, watch) { this.#db.prepare('INSERT INTO skill_watches(scope_key,id,watch_json,state) VALUES(?,?,?,?) ON CONFLICT(scope_key,id) DO UPDATE SET watch_json=excluded.watch_json,state=excluded.state').run(key, watch.id, JSON.stringify(watch), watch.state); }
@@ -1492,9 +1739,18 @@ export class SkillStore {
1492
1739
  const row = this.#db.prepare('SELECT run_json FROM skill_runs WHERE scope_key=? AND id=?').get(key, id);
1493
1740
  return row === undefined ? undefined : JSON.parse(row.run_json);
1494
1741
  }
1742
+ #delegatedArm(key) {
1743
+ const row = this.#db.prepare('SELECT binding_digest,binding_json FROM skill_delegated_arms WHERE scope_key=?').get(key);
1744
+ if (!row)
1745
+ return undefined;
1746
+ const binding = JSON.parse(row.binding_json);
1747
+ if (!digest(row.binding_digest) || !delegatedArmBinding(binding) || acceptanceDigest(binding) !== row.binding_digest)
1748
+ fail('assistant-skills: delegated arm corrupt');
1749
+ return { bindingDigest: row.binding_digest, binding };
1750
+ }
1495
1751
  #validateClaim(_scope, input) {
1496
1752
  if (!input || !text(input.invocationId, 256) || !text(input.goalId, 256) || !text(input.sessionId, 512) || !name(input.skillName) || !version(input.version) || !input.inputs || typeof input.inputs !== 'object' || Array.isArray(input.inputs) || !json(input.inputs)
1497
- || input.goalExecutionRunId !== undefined && !text(input.goalExecutionRunId, 256) || input.goalDefinitionDigest !== undefined && !/^[a-f0-9]{64}$/u.test(input.goalDefinitionDigest) || input.nativeGoalId !== undefined && !text(input.nativeGoalId, 256) || input.candidateId !== undefined && !text(input.candidateId, 128)
1753
+ || input.goalExecutionRunId !== undefined && !text(input.goalExecutionRunId, 256) || input.goalDefinitionDigest !== undefined && !/^[a-f0-9]{64}$/u.test(input.goalDefinitionDigest) || input.nativeGoalId !== undefined && !text(input.nativeGoalId, 256) || input.candidateId !== undefined && !text(input.candidateId, 128) || input.delegationDigest !== undefined
1498
1754
  || input.candidateId !== undefined && input.goalExecutionRunId === undefined)
1499
1755
  fail('assistant-skills: invalid invocation');
1500
1756
  if (input.candidateId !== undefined)