@askdkc/kiokuko 0.2.2 → 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 (121) hide show
  1. package/README.ja.md +83 -45
  2. package/README.ko.md +80 -40
  3. package/README.md +85 -45
  4. package/README.zh-CN.md +76 -39
  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 +100 -63
  32. package/dist/enno-oduno/adapters.js.map +1 -1
  33. package/dist/enno-oduno/advisory-store.d.ts +6 -0
  34. package/dist/enno-oduno/advisory-store.d.ts.map +1 -1
  35. package/dist/enno-oduno/advisory-store.js +13 -1
  36. package/dist/enno-oduno/advisory-store.js.map +1 -1
  37. package/dist/enno-oduno/advisory.d.ts +2 -0
  38. package/dist/enno-oduno/advisory.d.ts.map +1 -1
  39. package/dist/enno-oduno/advisory.js +207 -25
  40. package/dist/enno-oduno/advisory.js.map +1 -1
  41. package/dist/enno-oduno/confirmation.d.ts.map +1 -1
  42. package/dist/enno-oduno/confirmation.js +3 -0
  43. package/dist/enno-oduno/confirmation.js.map +1 -1
  44. package/dist/enno-oduno/directives.d.ts.map +1 -1
  45. package/dist/enno-oduno/directives.js +67 -36
  46. package/dist/enno-oduno/directives.js.map +1 -1
  47. package/dist/enno-oduno/experts.d.ts +1 -1
  48. package/dist/enno-oduno/experts.d.ts.map +1 -1
  49. package/dist/enno-oduno/experts.js +21 -7
  50. package/dist/enno-oduno/experts.js.map +1 -1
  51. package/dist/enno-oduno/instructions.d.ts +5 -3
  52. package/dist/enno-oduno/instructions.d.ts.map +1 -1
  53. package/dist/enno-oduno/instructions.js +4 -2
  54. package/dist/enno-oduno/instructions.js.map +1 -1
  55. package/dist/enno-oduno/plan-recovery.d.ts +15 -0
  56. package/dist/enno-oduno/plan-recovery.d.ts.map +1 -1
  57. package/dist/enno-oduno/plan-recovery.js +26 -0
  58. package/dist/enno-oduno/plan-recovery.js.map +1 -1
  59. package/dist/enno-oduno/repository-state.d.ts +8 -0
  60. package/dist/enno-oduno/repository-state.d.ts.map +1 -0
  61. package/dist/enno-oduno/repository-state.js +139 -0
  62. package/dist/enno-oduno/repository-state.js.map +1 -0
  63. package/dist/enno-oduno/role-runner.d.ts.map +1 -1
  64. package/dist/enno-oduno/role-runner.js +50 -2
  65. package/dist/enno-oduno/role-runner.js.map +1 -1
  66. package/dist/enno-oduno/sanitize.d.ts +17 -0
  67. package/dist/enno-oduno/sanitize.d.ts.map +1 -0
  68. package/dist/enno-oduno/sanitize.js +88 -0
  69. package/dist/enno-oduno/sanitize.js.map +1 -0
  70. package/dist/enno-oduno/schemas.d.ts +314 -29
  71. package/dist/enno-oduno/schemas.d.ts.map +1 -1
  72. package/dist/enno-oduno/schemas.js +267 -50
  73. package/dist/enno-oduno/schemas.js.map +1 -1
  74. package/dist/enno-oduno/service.d.ts +3 -1
  75. package/dist/enno-oduno/service.d.ts.map +1 -1
  76. package/dist/enno-oduno/service.js +416 -146
  77. package/dist/enno-oduno/service.js.map +1 -1
  78. package/dist/enno-oduno/store.d.ts +44 -5
  79. package/dist/enno-oduno/store.d.ts.map +1 -1
  80. package/dist/enno-oduno/store.js +367 -35
  81. package/dist/enno-oduno/store.js.map +1 -1
  82. package/dist/enno-oduno/types.d.ts +106 -6
  83. package/dist/enno-oduno/types.d.ts.map +1 -1
  84. package/dist/enno-oduno/types.js +2 -0
  85. package/dist/enno-oduno/types.js.map +1 -1
  86. package/dist/enno-oduno/validation-errors.d.ts +92 -0
  87. package/dist/enno-oduno/validation-errors.d.ts.map +1 -0
  88. package/dist/enno-oduno/validation-errors.js +151 -0
  89. package/dist/enno-oduno/validation-errors.js.map +1 -0
  90. package/dist/enno-oduno/verifier.d.ts +1 -0
  91. package/dist/enno-oduno/verifier.d.ts.map +1 -1
  92. package/dist/enno-oduno/verifier.js +99 -16
  93. package/dist/enno-oduno/verifier.js.map +1 -1
  94. package/dist/ledger/types.d.ts +1 -1
  95. package/dist/ledger/types.d.ts.map +1 -1
  96. package/dist/ledger/types.js +1 -1
  97. package/dist/ledger/types.js.map +1 -1
  98. package/dist/mcp/server.d.ts.map +1 -1
  99. package/dist/mcp/server.js +76 -16
  100. package/dist/mcp/server.js.map +1 -1
  101. package/dist/memory/secrets.d.ts.map +1 -1
  102. package/dist/memory/secrets.js +1 -0
  103. package/dist/memory/secrets.js.map +1 -1
  104. package/dist/server/routes/agent-capability-gate.js +2 -2
  105. package/dist/server/routes/agent-capability-gate.js.map +1 -1
  106. package/dist/setup/render.js +1 -1
  107. package/dist/setup/render.js.map +1 -1
  108. package/dist/setup/standard-skills.d.ts +12 -5
  109. package/dist/setup/standard-skills.d.ts.map +1 -1
  110. package/dist/setup/standard-skills.js +12 -2
  111. package/dist/setup/standard-skills.js.map +1 -1
  112. package/migrations/017_enno_advisory_protocol_v2.sql +101 -0
  113. package/migrations/018_enno_repository_routing.sql +5 -0
  114. package/migrations/019_enno_execution_integrity.sql +149 -0
  115. package/package.json +1 -1
  116. package/skills/kiokuko-enno-oduno/SKILL.md +19 -8
  117. package/skills/kiokuko-single-purpose-functions/SKILL.md +18 -10
  118. package/skills/kiokuko-single-purpose-functions/references/problem-shaping-and-language.md +84 -0
  119. package/skills/kiokuko-ui-design-soul/SKILL.md +5 -1
  120. package/skills/memory-reasoning/SKILL.md +52 -0
  121. 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) {
@@ -95,7 +199,7 @@ export function readEnnoSnapshot(database, identity) {
95
199
  }
96
200
  if ((row.client_kind !== null && !ENNO_CLIENT_KINDS.includes(row.client_kind))
97
201
  || ((row.client_version !== null || row.client_session_id !== null) && row.client_kind === null)) {
98
- integrity('Stored Enno client binding is invalid');
202
+ integrity('Stored Enno client routing metadata is invalid');
99
203
  }
100
204
  const contract = parseEnnoContract(parseCanonicalJson(row.contract_json, 'Stored Enno contract is invalid'));
101
205
  const handoff = parseEnnoRequestHandoff(parseCanonicalJson(row.handoff_json, 'Stored Enno request handoff is invalid'));
@@ -117,7 +221,27 @@ export function readEnnoSnapshot(database, identity) {
117
221
  }
118
222
  if (meditation !== null && status !== 'completed')
119
223
  integrity('Stored Oduno meditation result is inconsistent');
120
- return {
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, {
229
+ runId: row.run_id,
230
+ revision: row.revision,
231
+ mutationRevision: row.mutation_revision,
232
+ verifiers: contract.finalVerifiers,
233
+ ...(currentRepositoryDigest === undefined ? {} : { repositoryDigest: currentRepositoryDigest }),
234
+ });
235
+ const finalEvidence = finalEvidenceReady
236
+ ? readFreshFinalVerifierResults(database, {
237
+ runId: row.run_id,
238
+ revision: row.revision,
239
+ mutationRevision: row.mutation_revision,
240
+ verifiers: contract.finalVerifiers,
241
+ ...(currentRepositoryDigest === undefined ? {} : { repositoryDigest: currentRepositoryDigest }),
242
+ }) ?? []
243
+ : [];
244
+ const snapshot = {
121
245
  runId: row.run_id,
122
246
  workspace: row.workspace,
123
247
  orchestrationId: row.orchestration_session_id,
@@ -131,13 +255,35 @@ export function readEnnoSnapshot(database, identity) {
131
255
  confirmationState: row.confirmation_state,
132
256
  attempts: row.attempts,
133
257
  mutationRevision: row.mutation_revision,
258
+ routeEpoch: row.route_epoch,
134
259
  ideal,
135
260
  meditation,
136
261
  contract,
137
262
  handoff,
138
- workUnits: workUnits(database, identity.runId, row.revision),
263
+ workUnits: workUnits(database, identity.runId, row.revision, row.repository_root),
264
+ finalEvidenceReady,
265
+ finalEvidence,
139
266
  blocker: row.blocker,
267
+ advisoryPhaseState: { state: 'not_started' },
140
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;
141
287
  }
142
288
  function emptyDiscovery(mode) {
143
289
  return {
@@ -259,21 +405,129 @@ export function setWorkUnitStatusInTransaction(database, input) {
259
405
  if (updated?.workUnitId !== input.workUnitId)
260
406
  throw new KiokukoError('CONFLICT', 'Enno WorkUnit changed concurrently');
261
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
+ }
262
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);
263
515
  const statement = database.prepare(`
264
516
  INSERT INTO enno_verifier_runs (
265
517
  verifier_run_id, run_id, work_unit_id, contract_revision, mutation_revision,
266
- verifier_id, verifier_json, status, started_at
267
- ) 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', ?, ?, ?, ?, ?, ?, ?)
268
521
  `);
269
- const now = new Date().toISOString();
522
+ const leaseMs = operationLeaseMsForVerifiers(input.verifiers);
523
+ const leaseExpiresAt = new Date(nowDate.getTime() + leaseMs).toISOString();
270
524
  return input.verifiers.map((verifier) => {
271
525
  const verifierRunId = randomUUID();
272
- 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);
273
527
  return verifierRunId;
274
528
  });
275
529
  }
276
- export function finishVerifierRunsInTransaction(database, verifierRunIds, results) {
530
+ export function finishVerifierRunsInTransaction(database, verifierRunIds, results, repositoryEvidence) {
277
531
  if (verifierRunIds.length !== results.length)
278
532
  integrity('Enno verifier result count is inconsistent');
279
533
  const finishedAt = new Date().toISOString();
@@ -284,26 +538,33 @@ export function finishVerifierRunsInTransaction(database, verifierRunIds, result
284
538
  const updated = database.prepare(`
285
539
  UPDATE enno_verifier_runs
286
540
  SET status = ?, exit_code = ?, signal = ?, duration_ms = ?,
287
- 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 = ?
288
543
  WHERE verifier_run_id = ? AND status = 'started'
289
544
  RETURNING verifier_run_id AS verifierRunId
290
- `).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);
291
546
  if (updated?.verifierRunId !== verifierRunId)
292
547
  throw new KiokukoError('CONFLICT', 'Enno verifier state changed concurrently');
293
548
  });
294
549
  }
295
550
  export function readFreshFinalVerifierResults(database, input) {
551
+ if (input.verifiers.length === 0)
552
+ return undefined;
296
553
  const rows = database.prepare(`
297
554
  SELECT verifier_id, verifier_json, status, exit_code, signal, duration_ms,
298
- 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
299
558
  FROM enno_verifier_runs
300
559
  WHERE run_id = ? AND work_unit_id IS NULL
301
560
  AND contract_revision = ? AND mutation_revision = ?
302
- ORDER BY verifier_id
561
+ ORDER BY verifier_id, finished_at DESC, verifier_run_id DESC
303
562
  `).all(input.runId, input.revision, input.mutationRevision);
304
- if (rows.length !== input.verifiers.length || rows.some((row) => row.status === 'started'))
305
- return undefined;
306
- 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);
307
568
  if (byId.size !== input.verifiers.length || input.verifiers.some((verifier) => !byId.has(verifier.id)))
308
569
  return undefined;
309
570
  for (const verifier of input.verifiers) {
@@ -311,6 +572,13 @@ export function readFreshFinalVerifierResults(database, input) {
311
572
  const storedVerifier = parseVerifierSpec(parseCanonicalJson(row.verifier_json, 'Stored Enno verifier is invalid'));
312
573
  if (canonicalJson(storedVerifier) !== canonicalJson(verifier))
313
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;
314
582
  }
315
583
  return input.verifiers.map((verifier) => {
316
584
  const row = byId.get(verifier.id);
@@ -325,52 +593,116 @@ export function readFreshFinalVerifierResults(database, input) {
325
593
  stderrPreview: row.stderr_preview,
326
594
  stdoutDigest: row.stdout_digest,
327
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 }),
328
599
  };
329
600
  });
330
601
  }
602
+ export function hasFreshFinalVerifierResults(database, input) {
603
+ try {
604
+ return readFreshFinalVerifierResults(database, input) !== undefined;
605
+ }
606
+ catch {
607
+ return false;
608
+ }
609
+ }
331
610
  export function readOperationReceipt(database, runId, operation) {
332
611
  const row = database.prepare(`
333
- SELECT request_digest, state, response_json
612
+ SELECT request_digest, state, response_json, lease_expires_at
334
613
  FROM enno_operation_receipts
335
614
  WHERE run_id = ? AND operation = ? AND idempotency_key = ?
336
615
  `).get(runId, operation.operation, operation.idempotencyKey);
337
616
  if (row === undefined)
338
617
  return undefined;
339
- if (row.request_digest !== operation.requestDigest) {
618
+ if (row.request_digest !== operation.requestDigest
619
+ && !operation.legacyRequestDigests?.includes(row.request_digest)) {
340
620
  throw new KiokukoError('CONFLICT', 'Enno idempotency key was reused with different input');
341
621
  }
342
- if (row.state === 'started')
343
- 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;
344
652
  if (row.response_json === null)
345
653
  integrity('Stored Enno operation receipt is invalid');
346
654
  return parseCanonicalJson(row.response_json, 'Stored Enno operation receipt is invalid');
347
655
  }
348
- export function startOperationInTransaction(database, runId, operation) {
656
+ export function startOperationInTransaction(database, runId, operation, leaseMs = OPERATION_LEASE_MS) {
349
657
  const replay = readOperationReceipt(database, runId, operation);
350
658
  if (replay !== undefined)
351
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);
352
669
  const active = database.prepare(`
353
670
  SELECT operation FROM enno_operation_receipts
354
- WHERE run_id = ? AND state = 'started'
671
+ WHERE run_id = ? AND state = 'started' AND lease_expires_at > ?
355
672
  LIMIT 1
356
- `).get(runId);
673
+ `).get(runId, now);
357
674
  if (active !== undefined)
358
675
  throw new KiokukoError('CONFLICT', 'Another Enno operation is already in progress');
359
- database.prepare(`
676
+ const ownerNonce = randomUUID();
677
+ const leaseExpiresAt = new Date(nowDate.getTime() + leaseMs).toISOString();
678
+ const started = database.prepare(`
360
679
  INSERT INTO enno_operation_receipts (
361
- run_id, operation, idempotency_key, request_digest, state, response_json, created_at, finished_at
362
- ) VALUES (?, ?, ?, ?, 'started', NULL, ?, NULL)
363
- `).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;
364
694
  }
365
- export function completeOperationInTransaction(database, runId, operation, response) {
695
+ export function completeOperationInTransaction(database, runId, operation, ownerNonce, response) {
366
696
  const serialized = canonicalJson(response);
697
+ const finishedAt = new Date().toISOString();
367
698
  const updated = database.prepare(`
368
699
  UPDATE enno_operation_receipts
369
700
  SET state = 'completed', response_json = ?, finished_at = ?
370
701
  WHERE run_id = ? AND operation = ? AND idempotency_key = ?
371
- AND request_digest = ? AND state = 'started'
702
+ AND request_digest = ? AND state = 'started' AND owner_nonce = ?
703
+ AND lease_expires_at > ?
372
704
  RETURNING run_id AS runId
373
- `).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);
374
706
  if (updated?.runId !== runId)
375
707
  throw new KiokukoError('CONFLICT', 'Enno operation receipt changed concurrently');
376
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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"}