@askdkc/kiokuko 0.2.3 → 0.2.4

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 (107) hide show
  1. package/README.ja.md +25 -5
  2. package/README.ko.md +24 -5
  3. package/README.md +29 -5
  4. package/README.zh-CN.md +21 -4
  5. package/dist/agent-file/render.d.ts +1 -1
  6. package/dist/agent-file/render.d.ts.map +1 -1
  7. package/dist/agent-file/render.js +5 -3
  8. package/dist/agent-file/render.js.map +1 -1
  9. package/dist/akinator/agent-task.js +2 -2
  10. package/dist/akinator/agent-task.js.map +1 -1
  11. package/dist/akinator/capabilities.d.ts +5 -1
  12. package/dist/akinator/capabilities.d.ts.map +1 -1
  13. package/dist/akinator/capabilities.js +20 -3
  14. package/dist/akinator/capabilities.js.map +1 -1
  15. package/dist/commands/agent.d.ts.map +1 -1
  16. package/dist/commands/agent.js +36 -9
  17. package/dist/commands/agent.js.map +1 -1
  18. package/dist/commands/doctor.d.ts +1 -0
  19. package/dist/commands/doctor.d.ts.map +1 -1
  20. package/dist/commands/doctor.js +33 -0
  21. package/dist/commands/doctor.js.map +1 -1
  22. package/dist/commands/setup.d.ts.map +1 -1
  23. package/dist/commands/setup.js +2 -1
  24. package/dist/commands/setup.js.map +1 -1
  25. package/dist/commands/use.d.ts +1 -0
  26. package/dist/commands/use.d.ts.map +1 -1
  27. package/dist/commands/use.js +76 -16
  28. package/dist/commands/use.js.map +1 -1
  29. package/dist/enno-oduno/adapters.d.ts +4 -1
  30. package/dist/enno-oduno/adapters.d.ts.map +1 -1
  31. package/dist/enno-oduno/adapters.js +63 -14
  32. package/dist/enno-oduno/adapters.js.map +1 -1
  33. package/dist/enno-oduno/advisory.d.ts.map +1 -1
  34. package/dist/enno-oduno/advisory.js +133 -26
  35. package/dist/enno-oduno/advisory.js.map +1 -1
  36. package/dist/enno-oduno/confirmation.d.ts.map +1 -1
  37. package/dist/enno-oduno/confirmation.js +3 -0
  38. package/dist/enno-oduno/confirmation.js.map +1 -1
  39. package/dist/enno-oduno/directives.d.ts.map +1 -1
  40. package/dist/enno-oduno/directives.js +63 -34
  41. package/dist/enno-oduno/directives.js.map +1 -1
  42. package/dist/enno-oduno/experts.d.ts +1 -1
  43. package/dist/enno-oduno/experts.d.ts.map +1 -1
  44. package/dist/enno-oduno/experts.js +21 -7
  45. package/dist/enno-oduno/experts.js.map +1 -1
  46. package/dist/enno-oduno/instructions.d.ts +5 -4
  47. package/dist/enno-oduno/instructions.d.ts.map +1 -1
  48. package/dist/enno-oduno/instructions.js +4 -3
  49. package/dist/enno-oduno/instructions.js.map +1 -1
  50. package/dist/enno-oduno/plan-recovery.d.ts +15 -0
  51. package/dist/enno-oduno/plan-recovery.d.ts.map +1 -1
  52. package/dist/enno-oduno/plan-recovery.js +26 -0
  53. package/dist/enno-oduno/plan-recovery.js.map +1 -1
  54. package/dist/enno-oduno/repository-state.d.ts +8 -0
  55. package/dist/enno-oduno/repository-state.d.ts.map +1 -0
  56. package/dist/enno-oduno/repository-state.js +139 -0
  57. package/dist/enno-oduno/repository-state.js.map +1 -0
  58. package/dist/enno-oduno/role-runner.d.ts.map +1 -1
  59. package/dist/enno-oduno/role-runner.js +34 -1
  60. package/dist/enno-oduno/role-runner.js.map +1 -1
  61. package/dist/enno-oduno/sanitize.d.ts +17 -0
  62. package/dist/enno-oduno/sanitize.d.ts.map +1 -0
  63. package/dist/enno-oduno/sanitize.js +88 -0
  64. package/dist/enno-oduno/sanitize.js.map +1 -0
  65. package/dist/enno-oduno/schemas.d.ts +185 -36
  66. package/dist/enno-oduno/schemas.d.ts.map +1 -1
  67. package/dist/enno-oduno/schemas.js +172 -46
  68. package/dist/enno-oduno/schemas.js.map +1 -1
  69. package/dist/enno-oduno/service.d.ts +2 -1
  70. package/dist/enno-oduno/service.d.ts.map +1 -1
  71. package/dist/enno-oduno/service.js +310 -137
  72. package/dist/enno-oduno/service.js.map +1 -1
  73. package/dist/enno-oduno/store.d.ts +37 -4
  74. package/dist/enno-oduno/store.d.ts.map +1 -1
  75. package/dist/enno-oduno/store.js +343 -36
  76. package/dist/enno-oduno/store.js.map +1 -1
  77. package/dist/enno-oduno/types.d.ts +55 -2
  78. package/dist/enno-oduno/types.d.ts.map +1 -1
  79. package/dist/enno-oduno/types.js +1 -0
  80. package/dist/enno-oduno/types.js.map +1 -1
  81. package/dist/enno-oduno/validation-errors.d.ts +92 -0
  82. package/dist/enno-oduno/validation-errors.d.ts.map +1 -0
  83. package/dist/enno-oduno/validation-errors.js +151 -0
  84. package/dist/enno-oduno/validation-errors.js.map +1 -0
  85. package/dist/enno-oduno/verifier.d.ts +1 -0
  86. package/dist/enno-oduno/verifier.d.ts.map +1 -1
  87. package/dist/enno-oduno/verifier.js +70 -12
  88. package/dist/enno-oduno/verifier.js.map +1 -1
  89. package/dist/mcp/server.d.ts.map +1 -1
  90. package/dist/mcp/server.js +70 -16
  91. package/dist/mcp/server.js.map +1 -1
  92. package/dist/server/routes/agent-capability-gate.js +2 -2
  93. package/dist/server/routes/agent-capability-gate.js.map +1 -1
  94. package/dist/setup/render.js +1 -1
  95. package/dist/setup/render.js.map +1 -1
  96. package/dist/setup/standard-skills.d.ts +12 -5
  97. package/dist/setup/standard-skills.d.ts.map +1 -1
  98. package/dist/setup/standard-skills.js +12 -2
  99. package/dist/setup/standard-skills.js.map +1 -1
  100. package/migrations/019_enno_execution_integrity.sql +149 -0
  101. package/package.json +1 -1
  102. package/skills/kiokuko-enno-oduno/SKILL.md +19 -8
  103. package/skills/kiokuko-single-purpose-functions/SKILL.md +18 -10
  104. package/skills/kiokuko-single-purpose-functions/references/problem-shaping-and-language.md +84 -0
  105. package/skills/kiokuko-ui-design-soul/SKILL.md +5 -1
  106. package/skills/memory-reasoning/SKILL.md +52 -0
  107. package/templates/AGENTS.md +6 -4
@@ -1,11 +1,98 @@
1
- import { randomUUID } from 'node:crypto';
1
+ import { createHash, randomUUID } from 'node:crypto';
2
+ import path from 'node:path';
2
3
  import { withImmediateTransaction } from '../db/transaction.js';
3
4
  import { KiokukoError } from '../errors.js';
4
5
  import { LedgerStore } from '../ledger/store.js';
5
- import { canonicalJson } from '../serialization/validate.js';
6
+ import { canonicalContentHash, canonicalJson } from '../serialization/validate.js';
6
7
  import { parseStrictJson } from '../setup/strict-json.js';
7
8
  import { parseEnnoContract, parseEnnoRequestHandoff, parseOdunoIdeal, parseOdunoMeditation, parseVerifierSpec, parseWorkReportResult, parseWorkPlan, } from './schemas.js';
8
- import { ENNO_DEFAULT_MAX_ATTEMPTS, ENNO_APPLICABLE_TASK_TYPES, ENNO_CLIENT_KINDS, ENNO_STATUSES, } from './types.js';
9
+ import { ADVISORY_OUTCOMES, ENNO_DEFAULT_MAX_ATTEMPTS, ENNO_APPLICABLE_TASK_TYPES, ENNO_CLIENT_KINDS, ENNO_STATUSES, } from './types.js';
10
+ import { advisoryContextForSnapshot, advisoryInputDigest, advisoryPhaseForStatus, advisorySlotDefinitions, } from './advisory.js';
11
+ import { captureRepositoryState } from './repository-state.js';
12
+ function advisoryPhaseState(database, input) {
13
+ const phase = advisoryPhaseForStatus(input.status);
14
+ if (phase === null || (phase === 'final_review' && !input.finalEvidenceReady))
15
+ return { state: 'not_started' };
16
+ const row = database.prepare(`
17
+ SELECT input_digest AS inputDigest, state
18
+ FROM enno_advisory_rounds
19
+ WHERE run_id = ? AND contract_revision = ? AND mutation_revision = ? AND phase = ?
20
+ ORDER BY created_at DESC, round_id DESC
21
+ LIMIT 1
22
+ `).get(input.runId, input.revision, input.mutationRevision, phase);
23
+ if (row === undefined || row.inputDigest !== input.currentInputDigest) {
24
+ return { state: 'fanout_requested', slots: advisorySlotDefinitions(phase) };
25
+ }
26
+ if (row.state === 'consumed')
27
+ return { state: 'consumed', inputDigest: row.inputDigest };
28
+ if (row.state !== 'aggregated')
29
+ return integrity('Stored advisory lifecycle state is invalid');
30
+ const contributions = database.prepare(`
31
+ SELECT c.slot_id AS slotId, c.outcome
32
+ FROM enno_advisory_contributions AS c
33
+ JOIN enno_advisory_rounds AS r ON r.round_id = c.round_id
34
+ WHERE r.run_id = ? AND r.contract_revision = ? AND r.mutation_revision = ?
35
+ AND r.phase = ? AND r.input_digest = ?
36
+ ORDER BY c.slot_rank
37
+ `).all(input.runId, input.revision, input.mutationRevision, phase, row.inputDigest);
38
+ const slots = advisorySlotDefinitions(phase);
39
+ if (contributions.length !== slots.length)
40
+ return integrity('Stored advisory lifecycle contributions are invalid');
41
+ return {
42
+ state: 'aggregated',
43
+ inputDigest: row.inputDigest,
44
+ requiredDispositionSlots: slots.map((slot, index) => {
45
+ const contribution = contributions[index];
46
+ if (contribution?.slotId !== slot.slotId || !ADVISORY_OUTCOMES.includes(contribution.outcome)) {
47
+ return integrity('Stored advisory lifecycle contributions are invalid');
48
+ }
49
+ const outcome = contribution.outcome;
50
+ return {
51
+ slotId: slot.slotId,
52
+ outcome,
53
+ allowedDispositions: outcome === 'completed'
54
+ ? ['adopted', 'not_adopted']
55
+ : ['unavailable'],
56
+ };
57
+ }),
58
+ };
59
+ }
60
+ export function resolveEnnoIdentity(database, input) {
61
+ if (input.workspace !== undefined && input.orchestrationId !== undefined && input.resumeToken === undefined) {
62
+ return { runId: input.runId, workspace: input.workspace, orchestrationId: input.orchestrationId };
63
+ }
64
+ if (input.resumeToken === undefined || input.workspace !== undefined || input.orchestrationId !== undefined) {
65
+ throw new KiokukoError('VALIDATION_ERROR', 'Enno identity requires either explicit identity or one resume token');
66
+ }
67
+ const tokenHash = createHash('sha256').update(input.resumeToken, 'utf8').digest('hex');
68
+ const row = database.prepare(`
69
+ SELECT ec.run_id AS runId, ec.workspace, ec.orchestration_session_id AS orchestrationId,
70
+ ec.route_epoch AS routeEpoch, rt.route_epoch AS tokenRouteEpoch,
71
+ rt.repository_root AS tokenRepositoryRoot, ec.repository_root AS repositoryRoot,
72
+ rt.client_kind AS tokenClientKind, ec.client_kind AS clientKind,
73
+ rt.client_session_id AS tokenClientSessionId, ec.client_session_id AS clientSessionId,
74
+ rt.expires_at AS expiresAt
75
+ FROM enno_resume_tokens AS rt
76
+ JOIN enno_contracts AS ec ON ec.run_id = rt.run_id
77
+ WHERE rt.token_hash = ? AND rt.run_id = ?
78
+ `).get(tokenHash, input.runId);
79
+ if (row === undefined)
80
+ throw new KiokukoError('CONFLICT', 'Enno resume token is invalid or expired');
81
+ const expiresAt = Date.parse(row.expiresAt);
82
+ if (row.routeEpoch !== row.tokenRouteEpoch || row.repositoryRoot !== row.tokenRepositoryRoot
83
+ || row.clientKind !== row.tokenClientKind || row.clientSessionId !== row.tokenClientSessionId
84
+ || !Number.isFinite(expiresAt) || expiresAt <= Date.now()) {
85
+ throw new KiokukoError('CONFLICT', 'Enno resume token is stale');
86
+ }
87
+ return { runId: row.runId, workspace: row.workspace, orchestrationId: row.orchestrationId };
88
+ }
89
+ const OPERATION_LEASE_MS = 6 * 60_000;
90
+ const VERIFIER_LEASE_GRACE_MS = 60_000;
91
+ const VERIFIER_TERMINATION_GRACE_MS = 1_000;
92
+ export function operationLeaseMsForVerifiers(verifiers) {
93
+ const sequentialRuntime = verifiers.reduce((total, verifier) => total + verifier.timeoutMs + VERIFIER_TERMINATION_GRACE_MS, VERIFIER_LEASE_GRACE_MS);
94
+ return Math.max(OPERATION_LEASE_MS, sequentialRuntime);
95
+ }
9
96
  function integrity(message) {
10
97
  throw new KiokukoError('INTEGRITY_ERROR', message);
11
98
  }
@@ -29,7 +116,8 @@ function validateContractRow(row) {
29
116
  || !ENNO_APPLICABLE_TASK_TYPES.includes(row.task_type)
30
117
  || !Number.isSafeInteger(row.revision) || row.revision < 1
31
118
  || !Number.isSafeInteger(row.attempts) || row.attempts < 0 || row.attempts > 20
32
- || !Number.isSafeInteger(row.mutation_revision) || row.mutation_revision < 0) {
119
+ || !Number.isSafeInteger(row.mutation_revision) || row.mutation_revision < 0
120
+ || !Number.isSafeInteger(row.route_epoch) || row.route_epoch < 0) {
33
121
  integrity('Stored Enno run state is invalid');
34
122
  }
35
123
  }
@@ -49,7 +137,23 @@ function persistedState(status) {
49
137
  return { status: 'enno_verifying', phase: status };
50
138
  return { status, phase: null };
51
139
  }
52
- function workUnits(database, runId, revision) {
140
+ function storedWorkResult(value, repositoryRoot) {
141
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
142
+ return parseWorkReportResult(value);
143
+ const result = value;
144
+ if (!Array.isArray(result.changedPaths))
145
+ return parseWorkReportResult(value);
146
+ const changedPaths = result.changedPaths.map((candidate) => {
147
+ if (typeof candidate !== 'string' || !path.isAbsolute(candidate))
148
+ return candidate;
149
+ const relative = path.relative(repositoryRoot, candidate);
150
+ if (relative.startsWith(`..${path.sep}`) || relative === '..' || path.isAbsolute(relative))
151
+ return candidate;
152
+ return (relative || '.').split(path.sep).join('/');
153
+ });
154
+ return parseWorkReportResult({ ...result, changedPaths });
155
+ }
156
+ function workUnits(database, runId, revision, repositoryRoot) {
53
157
  const rows = database.prepare(`
54
158
  SELECT work_unit_json, status, attempt_count, result_json
55
159
  FROM enno_work_units
@@ -68,7 +172,7 @@ function workUnits(database, runId, revision) {
68
172
  attemptCount: row.attempt_count,
69
173
  result: row.result_json === null
70
174
  ? null
71
- : parseWorkReportResult(parseCanonicalJson(row.result_json, 'Stored Enno work result is invalid')),
175
+ : storedWorkResult(parseCanonicalJson(row.result_json, 'Stored Enno work result is invalid'), repositoryRoot),
72
176
  }));
73
177
  }
74
178
  function assertLedgerIdentity(database, identity, repositoryRoot) {
@@ -117,12 +221,16 @@ export function readEnnoSnapshot(database, identity) {
117
221
  }
118
222
  if (meditation !== null && status !== 'completed')
119
223
  integrity('Stored Oduno meditation result is inconsistent');
120
- const finalEvidenceReady = contract.finalVerifiers.length === 0
121
- || hasFreshFinalVerifierResults(database, {
224
+ const currentRepositoryDigest = status === 'enno_verifying' && contract.finalVerifiers.length > 0
225
+ ? captureRepositoryState(row.repository_root).digest
226
+ : undefined;
227
+ const finalEvidenceReady = contract.finalVerifiers.length > 0
228
+ && hasFreshFinalVerifierResults(database, {
122
229
  runId: row.run_id,
123
230
  revision: row.revision,
124
231
  mutationRevision: row.mutation_revision,
125
232
  verifiers: contract.finalVerifiers,
233
+ ...(currentRepositoryDigest === undefined ? {} : { repositoryDigest: currentRepositoryDigest }),
126
234
  });
127
235
  const finalEvidence = finalEvidenceReady
128
236
  ? readFreshFinalVerifierResults(database, {
@@ -130,9 +238,10 @@ export function readEnnoSnapshot(database, identity) {
130
238
  revision: row.revision,
131
239
  mutationRevision: row.mutation_revision,
132
240
  verifiers: contract.finalVerifiers,
241
+ ...(currentRepositoryDigest === undefined ? {} : { repositoryDigest: currentRepositoryDigest }),
133
242
  }) ?? []
134
243
  : [];
135
- return {
244
+ const snapshot = {
136
245
  runId: row.run_id,
137
246
  workspace: row.workspace,
138
247
  orchestrationId: row.orchestration_session_id,
@@ -146,15 +255,35 @@ export function readEnnoSnapshot(database, identity) {
146
255
  confirmationState: row.confirmation_state,
147
256
  attempts: row.attempts,
148
257
  mutationRevision: row.mutation_revision,
258
+ routeEpoch: row.route_epoch,
149
259
  ideal,
150
260
  meditation,
151
261
  contract,
152
262
  handoff,
153
- workUnits: workUnits(database, identity.runId, row.revision),
263
+ workUnits: workUnits(database, identity.runId, row.revision, row.repository_root),
154
264
  finalEvidenceReady,
155
265
  finalEvidence,
156
266
  blocker: row.blocker,
267
+ advisoryPhaseState: { state: 'not_started' },
157
268
  };
269
+ const advisoryPhase = advisoryPhaseForStatus(status);
270
+ const currentInputDigest = advisoryPhase === null || (advisoryPhase === 'final_review' && !finalEvidenceReady)
271
+ ? undefined
272
+ : advisoryInputDigest({
273
+ phase: advisoryPhase,
274
+ contractRevision: row.revision,
275
+ mutationRevision: row.mutation_revision,
276
+ allowlistedContext: advisoryContextForSnapshot(snapshot, advisoryPhase),
277
+ });
278
+ snapshot.advisoryPhaseState = advisoryPhaseState(database, {
279
+ runId: row.run_id,
280
+ status,
281
+ revision: row.revision,
282
+ mutationRevision: row.mutation_revision,
283
+ finalEvidenceReady,
284
+ currentInputDigest,
285
+ });
286
+ return snapshot;
158
287
  }
159
288
  function emptyDiscovery(mode) {
160
289
  return {
@@ -276,21 +405,129 @@ export function setWorkUnitStatusInTransaction(database, input) {
276
405
  if (updated?.workUnitId !== input.workUnitId)
277
406
  throw new KiokukoError('CONFLICT', 'Enno WorkUnit changed concurrently');
278
407
  }
408
+ const EXECUTION_LEASE_MS = 15 * 60_000;
409
+ export function claimExecutionLeaseInTransaction(database, snapshot, workUnitId, owner) {
410
+ const nowDate = new Date();
411
+ const now = nowDate.toISOString();
412
+ const existing = database.prepare(`
413
+ SELECT contract_revision AS contractRevision, mutation_revision AS mutationRevision,
414
+ work_unit_id AS workUnitId, route_epoch AS routeEpoch,
415
+ owner_client_kind AS ownerClientKind, owner_session_id AS ownerSessionId,
416
+ lease_expires_at AS expiresAt
417
+ FROM enno_execution_leases WHERE run_id = ?
418
+ `).get(snapshot.runId);
419
+ if (existing !== undefined && existing.expiresAt > now
420
+ && (existing.contractRevision !== snapshot.revision
421
+ || existing.mutationRevision !== snapshot.mutationRevision
422
+ || existing.workUnitId !== workUnitId
423
+ || existing.routeEpoch !== (snapshot.routeEpoch ?? 0)
424
+ || existing.ownerClientKind !== owner.clientKind
425
+ || existing.ownerSessionId !== owner.sessionId)) {
426
+ throw new KiokukoError('CONFLICT', 'Enno WorkUnit is leased to another current actor');
427
+ }
428
+ const leaseToken = randomUUID();
429
+ const tokenHash = createHash('sha256').update(leaseToken, 'utf8').digest('hex');
430
+ const expiresAt = new Date(nowDate.getTime() + EXECUTION_LEASE_MS).toISOString();
431
+ database.prepare(`
432
+ INSERT INTO enno_execution_leases (
433
+ run_id, contract_revision, mutation_revision, work_unit_id, route_epoch,
434
+ owner_client_kind, owner_session_id, lease_token_hash, lease_expires_at,
435
+ heartbeat_at, created_at, updated_at
436
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
437
+ ON CONFLICT(run_id) DO UPDATE SET
438
+ contract_revision = excluded.contract_revision,
439
+ mutation_revision = excluded.mutation_revision,
440
+ work_unit_id = excluded.work_unit_id,
441
+ route_epoch = excluded.route_epoch,
442
+ owner_client_kind = excluded.owner_client_kind,
443
+ owner_session_id = excluded.owner_session_id,
444
+ lease_token_hash = excluded.lease_token_hash,
445
+ lease_expires_at = excluded.lease_expires_at,
446
+ heartbeat_at = excluded.heartbeat_at,
447
+ updated_at = excluded.updated_at
448
+ `).run(snapshot.runId, snapshot.revision, snapshot.mutationRevision, workUnitId, snapshot.routeEpoch ?? 0, owner.clientKind, owner.sessionId, tokenHash, expiresAt, now, now, now);
449
+ return {
450
+ leaseToken,
451
+ routeEpoch: snapshot.routeEpoch ?? 0,
452
+ contractRevision: snapshot.revision,
453
+ mutationRevision: snapshot.mutationRevision,
454
+ workUnitId,
455
+ expiresAt,
456
+ };
457
+ }
458
+ export function assertExecutionLeaseInTransaction(database, snapshot, input) {
459
+ const row = database.prepare(`
460
+ SELECT contract_revision AS contractRevision, mutation_revision AS mutationRevision,
461
+ work_unit_id AS workUnitId, route_epoch AS routeEpoch,
462
+ owner_client_kind AS ownerClientKind, owner_session_id AS ownerSessionId,
463
+ lease_token_hash AS tokenHash, lease_expires_at AS expiresAt
464
+ FROM enno_execution_leases WHERE run_id = ?
465
+ `).get(snapshot.runId);
466
+ if (row === undefined) {
467
+ if (input.leaseToken !== undefined || input.routeEpoch !== undefined) {
468
+ throw new KiokukoError('CONFLICT', 'Enno execution lease is not active');
469
+ }
470
+ return;
471
+ }
472
+ const tokenHash = input.leaseToken === undefined
473
+ ? null
474
+ : createHash('sha256').update(input.leaseToken, 'utf8').digest('hex');
475
+ if (row.expiresAt <= new Date().toISOString()
476
+ || row.contractRevision !== snapshot.revision
477
+ || row.mutationRevision !== snapshot.mutationRevision
478
+ || row.workUnitId !== input.workUnitId
479
+ || row.routeEpoch !== input.routeEpoch
480
+ || row.routeEpoch !== (snapshot.routeEpoch ?? 0)
481
+ || row.ownerClientKind !== snapshot.clientKind
482
+ || row.ownerSessionId !== snapshot.clientSessionId
483
+ || tokenHash !== row.tokenHash) {
484
+ throw new KiokukoError('CONFLICT', 'Enno execution lease is stale or belongs to another actor');
485
+ }
486
+ }
487
+ export function releaseExecutionLeaseInTransaction(database, runId) {
488
+ database.prepare('DELETE FROM enno_execution_leases WHERE run_id = ?').run(runId);
489
+ }
490
+ export function renewExecutionLeaseInTransaction(database, snapshot, input, minimumLeaseMs) {
491
+ assertExecutionLeaseInTransaction(database, snapshot, input);
492
+ const existing = database.prepare('SELECT 1 AS present FROM enno_execution_leases WHERE run_id = ?')
493
+ .get(snapshot.runId);
494
+ if (existing === undefined)
495
+ return;
496
+ const now = new Date();
497
+ const leaseExpiresAt = new Date(now.getTime() + Math.max(EXECUTION_LEASE_MS, minimumLeaseMs)).toISOString();
498
+ const updated = database.prepare(`
499
+ UPDATE enno_execution_leases
500
+ SET lease_expires_at = ?, heartbeat_at = ?, updated_at = ?
501
+ WHERE run_id = ?
502
+ RETURNING run_id AS runId
503
+ `).get(leaseExpiresAt, now.toISOString(), now.toISOString(), snapshot.runId);
504
+ if (updated?.runId !== snapshot.runId)
505
+ throw new KiokukoError('CONFLICT', 'Enno execution lease changed concurrently');
506
+ }
279
507
  export function startVerifierRunsInTransaction(database, input) {
508
+ const nowDate = new Date();
509
+ const now = nowDate.toISOString();
510
+ database.prepare(`
511
+ UPDATE enno_verifier_runs
512
+ SET status = 'abandoned', failure_code = 'lease_expired', finished_at = ?
513
+ WHERE run_id = ? AND status = 'started' AND lease_expires_at <= ?
514
+ `).run(now, input.runId, now);
280
515
  const statement = database.prepare(`
281
516
  INSERT INTO enno_verifier_runs (
282
517
  verifier_run_id, run_id, work_unit_id, contract_revision, mutation_revision,
283
- verifier_id, verifier_json, status, started_at
284
- ) VALUES (?, ?, ?, ?, ?, ?, ?, 'started', ?)
518
+ verifier_id, verifier_json, status, owner_nonce, lease_expires_at, heartbeat_at,
519
+ repository_state_policy_version, pre_repository_digest, verifier_spec_digest, started_at
520
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, 'started', ?, ?, ?, ?, ?, ?, ?)
285
521
  `);
286
- const now = new Date().toISOString();
522
+ const leaseMs = operationLeaseMsForVerifiers(input.verifiers);
523
+ const leaseExpiresAt = new Date(nowDate.getTime() + leaseMs).toISOString();
287
524
  return input.verifiers.map((verifier) => {
288
525
  const verifierRunId = randomUUID();
289
- statement.run(verifierRunId, input.runId, input.workUnitId, input.revision, input.mutationRevision, verifier.id, canonicalJson(verifier), now);
526
+ statement.run(verifierRunId, input.runId, input.workUnitId, input.revision, input.mutationRevision, verifier.id, canonicalJson(verifier), randomUUID(), leaseExpiresAt, now, input.repositoryEvidence?.policyVersion ?? null, input.repositoryEvidence?.preDigest ?? null, input.repositoryEvidence?.verifierSpecDigest ?? null, now);
290
527
  return verifierRunId;
291
528
  });
292
529
  }
293
- export function finishVerifierRunsInTransaction(database, verifierRunIds, results) {
530
+ export function finishVerifierRunsInTransaction(database, verifierRunIds, results, repositoryEvidence) {
294
531
  if (verifierRunIds.length !== results.length)
295
532
  integrity('Enno verifier result count is inconsistent');
296
533
  const finishedAt = new Date().toISOString();
@@ -301,26 +538,33 @@ export function finishVerifierRunsInTransaction(database, verifierRunIds, result
301
538
  const updated = database.prepare(`
302
539
  UPDATE enno_verifier_runs
303
540
  SET status = ?, exit_code = ?, signal = ?, duration_ms = ?,
304
- stdout_preview = ?, stderr_preview = ?, stdout_digest = ?, stderr_digest = ?, finished_at = ?
541
+ stdout_preview = ?, stderr_preview = ?, stdout_digest = ?, stderr_digest = ?,
542
+ post_repository_digest = ?, changed_during_verification = ?, finished_at = ?
305
543
  WHERE verifier_run_id = ? AND status = 'started'
306
544
  RETURNING verifier_run_id AS verifierRunId
307
- `).get(result.status, result.exitCode, result.signal, result.durationMs, result.stdoutPreview, result.stderrPreview, result.stdoutDigest, result.stderrDigest, finishedAt, verifierRunId);
545
+ `).get(result.status, result.exitCode, result.signal, result.durationMs, result.stdoutPreview, result.stderrPreview, result.stdoutDigest, result.stderrDigest, repositoryEvidence?.postDigest ?? null, repositoryEvidence === undefined ? null : repositoryEvidence.changedDuringVerification ? 1 : 0, finishedAt, verifierRunId);
308
546
  if (updated?.verifierRunId !== verifierRunId)
309
547
  throw new KiokukoError('CONFLICT', 'Enno verifier state changed concurrently');
310
548
  });
311
549
  }
312
550
  export function readFreshFinalVerifierResults(database, input) {
551
+ if (input.verifiers.length === 0)
552
+ return undefined;
313
553
  const rows = database.prepare(`
314
554
  SELECT verifier_id, verifier_json, status, exit_code, signal, duration_ms,
315
- stdout_preview, stderr_preview, stdout_digest, stderr_digest
555
+ stdout_preview, stderr_preview, stdout_digest, stderr_digest,
556
+ repository_state_policy_version, pre_repository_digest, post_repository_digest,
557
+ verifier_spec_digest, changed_during_verification, finished_at
316
558
  FROM enno_verifier_runs
317
559
  WHERE run_id = ? AND work_unit_id IS NULL
318
560
  AND contract_revision = ? AND mutation_revision = ?
319
- ORDER BY verifier_id
561
+ ORDER BY verifier_id, finished_at DESC, verifier_run_id DESC
320
562
  `).all(input.runId, input.revision, input.mutationRevision);
321
- if (rows.length !== input.verifiers.length || rows.some((row) => row.status === 'started'))
322
- return undefined;
323
- const byId = new Map(rows.map((row) => [row.verifier_id, row]));
563
+ const completedRows = rows.filter((row) => row.status !== 'started' && row.status !== 'abandoned');
564
+ const byId = new Map();
565
+ for (const row of completedRows)
566
+ if (!byId.has(row.verifier_id))
567
+ byId.set(row.verifier_id, row);
324
568
  if (byId.size !== input.verifiers.length || input.verifiers.some((verifier) => !byId.has(verifier.id)))
325
569
  return undefined;
326
570
  for (const verifier of input.verifiers) {
@@ -328,6 +572,13 @@ export function readFreshFinalVerifierResults(database, input) {
328
572
  const storedVerifier = parseVerifierSpec(parseCanonicalJson(row.verifier_json, 'Stored Enno verifier is invalid'));
329
573
  if (canonicalJson(storedVerifier) !== canonicalJson(verifier))
330
574
  return undefined;
575
+ if (row.changed_during_verification === 1)
576
+ return undefined;
577
+ if (input.repositoryDigest !== undefined
578
+ && (row.pre_repository_digest !== input.repositoryDigest
579
+ || row.post_repository_digest !== input.repositoryDigest
580
+ || row.verifier_spec_digest !== canonicalContentHash(input.verifiers)))
581
+ return undefined;
331
582
  }
332
583
  return input.verifiers.map((verifier) => {
333
584
  const row = byId.get(verifier.id);
@@ -342,6 +593,9 @@ export function readFreshFinalVerifierResults(database, input) {
342
593
  stderrPreview: row.stderr_preview,
343
594
  stdoutDigest: row.stdout_digest,
344
595
  stderrDigest: row.stderr_digest,
596
+ ...(row.repository_state_policy_version === null ? {} : { repositoryStatePolicyVersion: row.repository_state_policy_version }),
597
+ ...(row.post_repository_digest === null ? {} : { repositoryStateDigest: row.post_repository_digest }),
598
+ ...(row.changed_during_verification === null ? {} : { changedDuringVerification: row.changed_during_verification === 1 }),
345
599
  };
346
600
  });
347
601
  }
@@ -355,47 +609,100 @@ export function hasFreshFinalVerifierResults(database, input) {
355
609
  }
356
610
  export function readOperationReceipt(database, runId, operation) {
357
611
  const row = database.prepare(`
358
- SELECT request_digest, state, response_json
612
+ SELECT request_digest, state, response_json, lease_expires_at
359
613
  FROM enno_operation_receipts
360
614
  WHERE run_id = ? AND operation = ? AND idempotency_key = ?
361
615
  `).get(runId, operation.operation, operation.idempotencyKey);
362
616
  if (row === undefined)
363
617
  return undefined;
364
- if (row.request_digest !== operation.requestDigest) {
618
+ if (row.request_digest !== operation.requestDigest
619
+ && !operation.legacyRequestDigests?.includes(row.request_digest)) {
365
620
  throw new KiokukoError('CONFLICT', 'Enno idempotency key was reused with different input');
366
621
  }
367
- if (row.state === 'started')
368
- throw new KiokukoError('CONFLICT', 'Enno operation is already in progress');
622
+ if (row.request_digest !== operation.requestDigest) {
623
+ const normalized = database.prepare(`
624
+ UPDATE enno_operation_receipts SET request_digest = ?
625
+ WHERE run_id = ? AND operation = ? AND idempotency_key = ? AND request_digest = ?
626
+ RETURNING run_id AS runId
627
+ `).get(operation.requestDigest, runId, operation.operation, operation.idempotencyKey, row.request_digest);
628
+ if (normalized?.runId !== runId)
629
+ throw new KiokukoError('CONFLICT', 'Enno operation receipt changed concurrently');
630
+ row.request_digest = operation.requestDigest;
631
+ }
632
+ if (row.state === 'started') {
633
+ if (row.lease_expires_at === null || !Number.isFinite(Date.parse(row.lease_expires_at))) {
634
+ return integrity('Stored Enno operation receipt lease is invalid');
635
+ }
636
+ const now = new Date().toISOString();
637
+ if (row.lease_expires_at > now)
638
+ throw new KiokukoError('CONFLICT', 'Enno operation is already in progress');
639
+ const abandoned = database.prepare(`
640
+ UPDATE enno_operation_receipts
641
+ SET state = 'abandoned', failure_code = 'lease_expired', finished_at = ?
642
+ WHERE run_id = ? AND operation = ? AND idempotency_key = ?
643
+ AND request_digest = ? AND state = 'started' AND lease_expires_at <= ?
644
+ RETURNING run_id AS runId
645
+ `).get(now, runId, operation.operation, operation.idempotencyKey, operation.requestDigest, now);
646
+ if (abandoned?.runId !== runId)
647
+ throw new KiokukoError('CONFLICT', 'Enno operation state changed concurrently');
648
+ return undefined;
649
+ }
650
+ if (row.state === 'failed' || row.state === 'abandoned')
651
+ return undefined;
369
652
  if (row.response_json === null)
370
653
  integrity('Stored Enno operation receipt is invalid');
371
654
  return parseCanonicalJson(row.response_json, 'Stored Enno operation receipt is invalid');
372
655
  }
373
- export function startOperationInTransaction(database, runId, operation) {
656
+ export function startOperationInTransaction(database, runId, operation, leaseMs = OPERATION_LEASE_MS) {
374
657
  const replay = readOperationReceipt(database, runId, operation);
375
658
  if (replay !== undefined)
376
659
  throw new KiokukoError('CONFLICT', 'Completed Enno operation must be replayed before mutation');
660
+ if (!Number.isSafeInteger(leaseMs) || leaseMs < OPERATION_LEASE_MS)
661
+ integrity('Enno operation lease duration is invalid');
662
+ const nowDate = new Date();
663
+ const now = nowDate.toISOString();
664
+ database.prepare(`
665
+ UPDATE enno_operation_receipts
666
+ SET state = 'abandoned', failure_code = 'lease_expired', finished_at = ?
667
+ WHERE run_id = ? AND state = 'started' AND lease_expires_at <= ?
668
+ `).run(now, runId, now);
377
669
  const active = database.prepare(`
378
670
  SELECT operation FROM enno_operation_receipts
379
- WHERE run_id = ? AND state = 'started'
671
+ WHERE run_id = ? AND state = 'started' AND lease_expires_at > ?
380
672
  LIMIT 1
381
- `).get(runId);
673
+ `).get(runId, now);
382
674
  if (active !== undefined)
383
675
  throw new KiokukoError('CONFLICT', 'Another Enno operation is already in progress');
384
- database.prepare(`
676
+ const ownerNonce = randomUUID();
677
+ const leaseExpiresAt = new Date(nowDate.getTime() + leaseMs).toISOString();
678
+ const started = database.prepare(`
385
679
  INSERT INTO enno_operation_receipts (
386
- run_id, operation, idempotency_key, request_digest, state, response_json, created_at, finished_at
387
- ) VALUES (?, ?, ?, ?, 'started', NULL, ?, NULL)
388
- `).run(runId, operation.operation, operation.idempotencyKey, operation.requestDigest, new Date().toISOString());
680
+ run_id, operation, idempotency_key, request_digest, state, response_json,
681
+ owner_nonce, lease_expires_at, heartbeat_at, failure_code, created_at, finished_at
682
+ ) VALUES (?, ?, ?, ?, 'started', NULL, ?, ?, ?, NULL, ?, NULL)
683
+ ON CONFLICT(run_id, operation, idempotency_key) DO UPDATE SET
684
+ state = 'started', response_json = NULL, owner_nonce = excluded.owner_nonce,
685
+ lease_expires_at = excluded.lease_expires_at, heartbeat_at = excluded.heartbeat_at,
686
+ failure_code = NULL, created_at = excluded.created_at, finished_at = NULL
687
+ WHERE enno_operation_receipts.request_digest = excluded.request_digest
688
+ AND enno_operation_receipts.state IN ('failed', 'abandoned')
689
+ RETURNING run_id AS runId
690
+ `).get(runId, operation.operation, operation.idempotencyKey, operation.requestDigest, ownerNonce, leaseExpiresAt, now, now);
691
+ if (started?.runId !== runId)
692
+ throw new KiokukoError('CONFLICT', 'Enno operation could not be claimed');
693
+ return ownerNonce;
389
694
  }
390
- export function completeOperationInTransaction(database, runId, operation, response) {
695
+ export function completeOperationInTransaction(database, runId, operation, ownerNonce, response) {
391
696
  const serialized = canonicalJson(response);
697
+ const finishedAt = new Date().toISOString();
392
698
  const updated = database.prepare(`
393
699
  UPDATE enno_operation_receipts
394
700
  SET state = 'completed', response_json = ?, finished_at = ?
395
701
  WHERE run_id = ? AND operation = ? AND idempotency_key = ?
396
- AND request_digest = ? AND state = 'started'
702
+ AND request_digest = ? AND state = 'started' AND owner_nonce = ?
703
+ AND lease_expires_at > ?
397
704
  RETURNING run_id AS runId
398
- `).get(serialized, new Date().toISOString(), runId, operation.operation, operation.idempotencyKey, operation.requestDigest);
705
+ `).get(serialized, finishedAt, runId, operation.operation, operation.idempotencyKey, operation.requestDigest, ownerNonce, finishedAt);
399
706
  if (updated?.runId !== runId)
400
707
  throw new KiokukoError('CONFLICT', 'Enno operation receipt changed concurrently');
401
708
  }
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/enno-oduno/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/enno-oduno/store.ts"],"names":[],"mappings":"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"}