@askdkc/kiokuko 0.2.3 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +25 -5
- package/README.ko.md +24 -5
- package/README.md +29 -5
- package/README.zh-CN.md +21 -4
- package/dist/agent-file/render.d.ts +1 -1
- package/dist/agent-file/render.d.ts.map +1 -1
- package/dist/agent-file/render.js +5 -3
- package/dist/agent-file/render.js.map +1 -1
- package/dist/akinator/agent-task.js +2 -2
- package/dist/akinator/agent-task.js.map +1 -1
- package/dist/akinator/capabilities.d.ts +5 -1
- package/dist/akinator/capabilities.d.ts.map +1 -1
- package/dist/akinator/capabilities.js +20 -3
- package/dist/akinator/capabilities.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +4 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +36 -9
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/doctor.d.ts +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +33 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +2 -1
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/use.d.ts +1 -0
- package/dist/commands/use.d.ts.map +1 -1
- package/dist/commands/use.js +76 -16
- package/dist/commands/use.js.map +1 -1
- package/dist/enno-oduno/adapters.d.ts +4 -1
- package/dist/enno-oduno/adapters.d.ts.map +1 -1
- package/dist/enno-oduno/adapters.js +63 -14
- package/dist/enno-oduno/adapters.js.map +1 -1
- package/dist/enno-oduno/advisory.d.ts.map +1 -1
- package/dist/enno-oduno/advisory.js +133 -26
- package/dist/enno-oduno/advisory.js.map +1 -1
- package/dist/enno-oduno/confirmation.d.ts.map +1 -1
- package/dist/enno-oduno/confirmation.js +3 -0
- package/dist/enno-oduno/confirmation.js.map +1 -1
- package/dist/enno-oduno/directives.d.ts.map +1 -1
- package/dist/enno-oduno/directives.js +63 -34
- package/dist/enno-oduno/directives.js.map +1 -1
- package/dist/enno-oduno/experts.d.ts +1 -1
- package/dist/enno-oduno/experts.d.ts.map +1 -1
- package/dist/enno-oduno/experts.js +21 -7
- package/dist/enno-oduno/experts.js.map +1 -1
- package/dist/enno-oduno/instructions.d.ts +5 -4
- package/dist/enno-oduno/instructions.d.ts.map +1 -1
- package/dist/enno-oduno/instructions.js +4 -3
- package/dist/enno-oduno/instructions.js.map +1 -1
- package/dist/enno-oduno/plan-recovery.d.ts +15 -0
- package/dist/enno-oduno/plan-recovery.d.ts.map +1 -1
- package/dist/enno-oduno/plan-recovery.js +26 -0
- package/dist/enno-oduno/plan-recovery.js.map +1 -1
- package/dist/enno-oduno/repository-state.d.ts +8 -0
- package/dist/enno-oduno/repository-state.d.ts.map +1 -0
- package/dist/enno-oduno/repository-state.js +139 -0
- package/dist/enno-oduno/repository-state.js.map +1 -0
- package/dist/enno-oduno/role-runner.d.ts.map +1 -1
- package/dist/enno-oduno/role-runner.js +34 -1
- package/dist/enno-oduno/role-runner.js.map +1 -1
- package/dist/enno-oduno/sanitize.d.ts +17 -0
- package/dist/enno-oduno/sanitize.d.ts.map +1 -0
- package/dist/enno-oduno/sanitize.js +88 -0
- package/dist/enno-oduno/sanitize.js.map +1 -0
- package/dist/enno-oduno/schemas.d.ts +185 -36
- package/dist/enno-oduno/schemas.d.ts.map +1 -1
- package/dist/enno-oduno/schemas.js +172 -46
- package/dist/enno-oduno/schemas.js.map +1 -1
- package/dist/enno-oduno/service.d.ts +2 -1
- package/dist/enno-oduno/service.d.ts.map +1 -1
- package/dist/enno-oduno/service.js +310 -137
- package/dist/enno-oduno/service.js.map +1 -1
- package/dist/enno-oduno/store.d.ts +37 -4
- package/dist/enno-oduno/store.d.ts.map +1 -1
- package/dist/enno-oduno/store.js +343 -36
- package/dist/enno-oduno/store.js.map +1 -1
- package/dist/enno-oduno/types.d.ts +55 -2
- package/dist/enno-oduno/types.d.ts.map +1 -1
- package/dist/enno-oduno/types.js +1 -0
- package/dist/enno-oduno/types.js.map +1 -1
- package/dist/enno-oduno/validation-errors.d.ts +92 -0
- package/dist/enno-oduno/validation-errors.d.ts.map +1 -0
- package/dist/enno-oduno/validation-errors.js +151 -0
- package/dist/enno-oduno/validation-errors.js.map +1 -0
- package/dist/enno-oduno/verifier.d.ts +1 -0
- package/dist/enno-oduno/verifier.d.ts.map +1 -1
- package/dist/enno-oduno/verifier.js +70 -12
- package/dist/enno-oduno/verifier.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +70 -16
- package/dist/mcp/server.js.map +1 -1
- package/dist/memory/secrets.js +1 -1
- package/dist/memory/secrets.js.map +1 -1
- package/dist/server/routes/agent-capability-gate.js +2 -2
- package/dist/server/routes/agent-capability-gate.js.map +1 -1
- package/dist/setup/render.js +1 -1
- package/dist/setup/render.js.map +1 -1
- package/dist/setup/standard-skills.d.ts +12 -5
- package/dist/setup/standard-skills.d.ts.map +1 -1
- package/dist/setup/standard-skills.js +12 -2
- package/dist/setup/standard-skills.js.map +1 -1
- package/migrations/019_enno_execution_integrity.sql +149 -0
- package/package.json +1 -1
- package/skills/kiokuko-enno-oduno/SKILL.md +19 -8
- package/skills/kiokuko-single-purpose-functions/SKILL.md +18 -10
- package/skills/kiokuko-single-purpose-functions/references/problem-shaping-and-language.md +84 -0
- package/skills/kiokuko-ui-design-soul/SKILL.md +5 -1
- package/skills/memory-reasoning/SKILL.md +52 -0
- package/templates/AGENTS.md +6 -4
package/dist/enno-oduno/store.js
CHANGED
|
@@ -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
|
|
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
|
-
:
|
|
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
|
|
121
|
-
|
|
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
|
-
|
|
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,
|
|
284
|
-
|
|
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
|
|
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 = ?,
|
|
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
|
-
|
|
322
|
-
|
|
323
|
-
const
|
|
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.
|
|
368
|
-
|
|
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
|
-
|
|
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,
|
|
387
|
-
|
|
388
|
-
|
|
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,
|
|
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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"}
|