@askdkc/kiokuko 0.2.2 → 0.2.3
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 +63 -45
- package/README.ko.md +60 -39
- package/README.md +60 -44
- package/README.zh-CN.md +59 -39
- package/dist/agent-file/render.d.ts +1 -1
- package/dist/agent-file/render.js +1 -1
- package/dist/enno-oduno/adapters.d.ts.map +1 -1
- package/dist/enno-oduno/adapters.js +42 -54
- package/dist/enno-oduno/adapters.js.map +1 -1
- package/dist/enno-oduno/advisory-store.d.ts +6 -0
- package/dist/enno-oduno/advisory-store.d.ts.map +1 -1
- package/dist/enno-oduno/advisory-store.js +13 -1
- package/dist/enno-oduno/advisory-store.js.map +1 -1
- package/dist/enno-oduno/advisory.d.ts +2 -0
- package/dist/enno-oduno/advisory.d.ts.map +1 -1
- package/dist/enno-oduno/advisory.js +89 -14
- package/dist/enno-oduno/advisory.js.map +1 -1
- package/dist/enno-oduno/directives.d.ts.map +1 -1
- package/dist/enno-oduno/directives.js +4 -2
- package/dist/enno-oduno/directives.js.map +1 -1
- package/dist/enno-oduno/instructions.d.ts +4 -3
- package/dist/enno-oduno/instructions.d.ts.map +1 -1
- package/dist/enno-oduno/instructions.js +3 -2
- package/dist/enno-oduno/instructions.js.map +1 -1
- package/dist/enno-oduno/role-runner.d.ts.map +1 -1
- package/dist/enno-oduno/role-runner.js +16 -1
- package/dist/enno-oduno/role-runner.js.map +1 -1
- package/dist/enno-oduno/schemas.d.ts +141 -5
- package/dist/enno-oduno/schemas.d.ts.map +1 -1
- package/dist/enno-oduno/schemas.js +102 -11
- package/dist/enno-oduno/schemas.js.map +1 -1
- package/dist/enno-oduno/service.d.ts +1 -0
- package/dist/enno-oduno/service.d.ts.map +1 -1
- package/dist/enno-oduno/service.js +134 -37
- package/dist/enno-oduno/service.js.map +1 -1
- package/dist/enno-oduno/store.d.ts +7 -1
- package/dist/enno-oduno/store.d.ts.map +1 -1
- package/dist/enno-oduno/store.js +26 -1
- package/dist/enno-oduno/store.js.map +1 -1
- package/dist/enno-oduno/types.d.ts +51 -4
- 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/verifier.d.ts.map +1 -1
- package/dist/enno-oduno/verifier.js +29 -4
- package/dist/enno-oduno/verifier.js.map +1 -1
- package/dist/ledger/types.d.ts +1 -1
- package/dist/ledger/types.d.ts.map +1 -1
- package/dist/ledger/types.js +1 -1
- package/dist/ledger/types.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +10 -4
- package/dist/mcp/server.js.map +1 -1
- package/dist/memory/secrets.d.ts.map +1 -1
- package/dist/memory/secrets.js +1 -0
- package/dist/memory/secrets.js.map +1 -1
- package/migrations/017_enno_advisory_protocol_v2.sql +101 -0
- package/migrations/018_enno_repository_routing.sql +5 -0
- package/package.json +1 -1
- package/skills/kiokuko-enno-oduno/SKILL.md +2 -2
- package/templates/AGENTS.md +3 -3
|
@@ -2,6 +2,7 @@ import path from 'node:path';
|
|
|
2
2
|
import * as z from 'zod/v4';
|
|
3
3
|
import { KiokukoError } from '../errors.js';
|
|
4
4
|
import { STANDARD_FUNCTION_EXPERT_IDS, STANDARD_FUNCTION_SKILL_NAME, STANDARD_SOUL_SKILL_NAME, STANDARD_UI_EXPERT_IDS, STANDARD_UI_SKILL_NAME, } from '../setup/standard-skills.js';
|
|
5
|
+
import { findSecret } from '../memory/secrets.js';
|
|
5
6
|
import { ADVISORY_FAILURE_CODES, ADVISORY_OUTCOMES, ADVISORY_PHASES, ADVISORY_SLOT_DEFINITIONS, ENNO_MAX_ATTEMPTS, ENNO_MIN_ATTEMPTS, ENNO_PROVENANCE_KEYS, } from './types.js';
|
|
6
7
|
const canonicalText = (maximum) => z.string().min(1).max(maximum).refine((value) => value.trim() === value && !/[\p{Cc}\p{Cf}]/u.test(value), 'Value must be bounded canonical text');
|
|
7
8
|
const identifier = canonicalText(256).refine((value) => value !== '.' && value !== '..' && !/[\\/]/u.test(value));
|
|
@@ -17,6 +18,18 @@ export const verifierSpecSchema = z.object({
|
|
|
17
18
|
cwd: boundedPath,
|
|
18
19
|
timeoutMs: z.number().int().min(100).max(300_000),
|
|
19
20
|
}).strict();
|
|
21
|
+
const verifierListSchema = (minimum = 0) => z.array(verifierSpecSchema)
|
|
22
|
+
.min(minimum)
|
|
23
|
+
.max(32)
|
|
24
|
+
.superRefine((verifiers, context) => {
|
|
25
|
+
const seen = new Set();
|
|
26
|
+
for (const [index, verifier] of verifiers.entries()) {
|
|
27
|
+
if (seen.has(verifier.id)) {
|
|
28
|
+
context.addIssue({ code: 'custom', message: 'Verifier IDs must be unique', path: [index, 'id'] });
|
|
29
|
+
}
|
|
30
|
+
seen.add(verifier.id);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
20
33
|
const standardExpertIds = [...STANDARD_FUNCTION_EXPERT_IDS, ...STANDARD_UI_EXPERT_IDS];
|
|
21
34
|
export const expertRefSchema = z.object({
|
|
22
35
|
id: z.enum(standardExpertIds),
|
|
@@ -30,7 +43,7 @@ export const workUnitSchema = z.object({
|
|
|
30
43
|
skillNames: z.array(canonicalText(300)).max(64),
|
|
31
44
|
expertRefs: z.array(expertRefSchema).max(3).default([]),
|
|
32
45
|
acceptanceCriteria: z.array(canonicalText(8_192)).min(1).max(128),
|
|
33
|
-
focusedVerifiers:
|
|
46
|
+
focusedVerifiers: verifierListSchema(),
|
|
34
47
|
}).strict().superRefine((unit, context) => {
|
|
35
48
|
const ids = unit.expertRefs.map((reference) => reference.id);
|
|
36
49
|
if (new Set(ids).size !== ids.length) {
|
|
@@ -115,13 +128,54 @@ const skillSetEntrySchema = z.object({
|
|
|
115
128
|
const orchestrationIdSchema = canonicalText(256)
|
|
116
129
|
.describe('Exact ennoOduno.orchestrationId returned by task_prepare or task_answer; this is not a host client session ID');
|
|
117
130
|
const advisorySlotIds = ADVISORY_SLOT_DEFINITIONS.map((slot) => slot.slotId);
|
|
118
|
-
const advisoryContextSchema = z.
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
131
|
+
const advisoryContextSchema = z.discriminatedUnion('phase', [
|
|
132
|
+
z.object({
|
|
133
|
+
phase: z.literal('ideal'),
|
|
134
|
+
objective: canonicalText(16_384),
|
|
135
|
+
constraints: z.array(canonicalText(8_192)).max(32),
|
|
136
|
+
expectedOutcome: canonicalText(4_096),
|
|
137
|
+
successSignals: z.array(canonicalText(8_192)).max(32),
|
|
138
|
+
skillTrust: z.array(z.object({
|
|
139
|
+
name: canonicalText(500),
|
|
140
|
+
source: z.enum(['local', 'imported_fresh', 'external_reference', 'unavailable']),
|
|
141
|
+
required: z.boolean(),
|
|
142
|
+
trustStatus: z.enum(['available', 'reference_only', 'unavailable']),
|
|
143
|
+
}).strict()).max(64),
|
|
144
|
+
}).strict(),
|
|
145
|
+
z.object({
|
|
146
|
+
phase: z.literal('planning'),
|
|
147
|
+
idealObjective: canonicalText(16_384),
|
|
148
|
+
acceptanceCriteria: z.array(canonicalText(8_192)).max(128),
|
|
149
|
+
planningConstraints: z.array(canonicalText(8_192)).max(32),
|
|
150
|
+
skillAvailability: z.array(z.object({
|
|
151
|
+
name: canonicalText(500),
|
|
152
|
+
source: z.enum(['local', 'imported_fresh', 'external_reference', 'unavailable']),
|
|
153
|
+
required: z.boolean(),
|
|
154
|
+
trustStatus: z.enum(['available', 'reference_only', 'unavailable']),
|
|
155
|
+
}).strict()).max(64),
|
|
156
|
+
}).strict(),
|
|
157
|
+
z.object({
|
|
158
|
+
phase: z.literal('final_review'),
|
|
159
|
+
workPlanSummary: canonicalText(16_384),
|
|
160
|
+
workUnitOutcomes: z.array(z.object({
|
|
161
|
+
id: identifier,
|
|
162
|
+
status: z.enum(['completed', 'failed', 'blocked']),
|
|
163
|
+
mutated: z.boolean(),
|
|
164
|
+
changedPaths: z.array(repositoryRelativePath).max(256),
|
|
165
|
+
}).strict()).max(128),
|
|
166
|
+
changedPaths: z.array(repositoryRelativePath).max(256),
|
|
167
|
+
verifierEvidence: z.array(z.object({
|
|
168
|
+
id: identifier,
|
|
169
|
+
status: z.enum(['passed', 'failed', 'timeout', 'spawn_failed']),
|
|
170
|
+
exitCode: z.number().int().nullable(),
|
|
171
|
+
signal: z.string().max(200).nullable(),
|
|
172
|
+
stdoutDigest: z.string().regex(/^[0-9a-f]{64}$/u),
|
|
173
|
+
stderrDigest: z.string().regex(/^[0-9a-f]{64}$/u),
|
|
174
|
+
}).strict()).max(32),
|
|
175
|
+
freshnessMarker: canonicalText(256),
|
|
176
|
+
evidenceSetDigest: z.string().regex(/^[0-9a-f]{64}$/u),
|
|
177
|
+
}).strict(),
|
|
178
|
+
]);
|
|
125
179
|
const advisoryEvidenceSchema = z.object({
|
|
126
180
|
path: repositoryRelativePath,
|
|
127
181
|
statement: canonicalText(8_192),
|
|
@@ -141,6 +195,14 @@ const advisoryContributionSchema = z.union([
|
|
|
141
195
|
reasonCode: z.enum(ADVISORY_FAILURE_CODES),
|
|
142
196
|
}).strict(),
|
|
143
197
|
]);
|
|
198
|
+
function parseStoredAdvisoryContribution(input) {
|
|
199
|
+
const parsed = advisoryContributionSchema.safeParse(input);
|
|
200
|
+
if (!parsed.success)
|
|
201
|
+
throw new KiokukoError('INTEGRITY_ERROR', 'Stored advisory contribution is invalid');
|
|
202
|
+
return parsed.data;
|
|
203
|
+
}
|
|
204
|
+
export { parseStoredAdvisoryContribution };
|
|
205
|
+
export const advisoryContributionSchemaPublic = advisoryContributionSchema;
|
|
144
206
|
export const adviceSubmissionSchema = z.object({
|
|
145
207
|
runId: identifier,
|
|
146
208
|
workspace: canonicalText(256),
|
|
@@ -153,6 +215,21 @@ export const adviceSubmissionSchema = z.object({
|
|
|
153
215
|
contributions: z.array(advisoryContributionSchema).length(3),
|
|
154
216
|
}).strict();
|
|
155
217
|
const advisoryRoundDigestSchema = z.string().regex(/^[0-9a-f]{64}$/u);
|
|
218
|
+
const advisoryDispositionSchema = z.object({
|
|
219
|
+
slotId: z.enum(advisorySlotIds),
|
|
220
|
+
disposition: z.enum(['adopted', 'not_adopted', 'unavailable']),
|
|
221
|
+
rationale: canonicalText(500).refine((value) => findSecret(value) === undefined, 'Advisory rationale must not contain secret material'),
|
|
222
|
+
}).strict();
|
|
223
|
+
const requireDispositionWithDigest = (value, context) => {
|
|
224
|
+
if (value.advisoryRoundDigest !== undefined) {
|
|
225
|
+
if (value.advisoryDisposition === undefined
|
|
226
|
+
|| !Array.isArray(value.advisoryDisposition)
|
|
227
|
+
|| value.advisoryDisposition.length === 0) {
|
|
228
|
+
context.addIssue({ code: 'custom', message: 'advisoryDisposition is required when an advisory digest is supplied' });
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
};
|
|
156
233
|
export const ennoContractSchema = z.object({
|
|
157
234
|
revision: z.number().int().min(1),
|
|
158
235
|
scope: z.array(boundedPath).max(256),
|
|
@@ -164,7 +241,7 @@ export const ennoContractSchema = z.object({
|
|
|
164
241
|
intakeDiscovery: skillDiscoverySummarySchema,
|
|
165
242
|
zenkiDiscovery: skillDiscoverySummarySchema,
|
|
166
243
|
}).strict(),
|
|
167
|
-
finalVerifiers:
|
|
244
|
+
finalVerifiers: verifierListSchema(),
|
|
168
245
|
maxAttempts: z.number().int().min(ENNO_MIN_ATTEMPTS).max(ENNO_MAX_ATTEMPTS),
|
|
169
246
|
provenance: contractProvenanceSchema,
|
|
170
247
|
}).strict();
|
|
@@ -226,8 +303,9 @@ export const idealSubmissionSchema = z.object({
|
|
|
226
303
|
expectedRevision: z.number().int().min(1),
|
|
227
304
|
idempotencyKey: identifier,
|
|
228
305
|
advisoryRoundDigest: advisoryRoundDigestSchema.optional(),
|
|
306
|
+
advisoryDisposition: z.array(advisoryDispositionSchema).max(3).optional(),
|
|
229
307
|
ideal: odunoIdealSchema,
|
|
230
|
-
}).strict();
|
|
308
|
+
}).strict().superRefine(requireDispositionWithDigest);
|
|
231
309
|
export const planSubmissionSchema = z.object({
|
|
232
310
|
runId: identifier,
|
|
233
311
|
workspace: canonicalText(256),
|
|
@@ -235,16 +313,18 @@ export const planSubmissionSchema = z.object({
|
|
|
235
313
|
expectedRevision: z.number().int().min(1),
|
|
236
314
|
idempotencyKey: identifier,
|
|
237
315
|
advisoryRoundDigest: advisoryRoundDigestSchema.optional(),
|
|
316
|
+
advisoryDisposition: z.array(advisoryDispositionSchema).max(3).optional(),
|
|
238
317
|
scope: z.array(boundedPath).min(1).max(256),
|
|
239
318
|
exclusions: z.array(boundedPath).max(256),
|
|
240
319
|
acceptanceCriteria: z.array(acceptanceCriterionSchema).min(1).max(128),
|
|
241
320
|
workPlan: workPlanSchema,
|
|
242
321
|
skillRequirements: z.array(skillRequirementSchema).max(64),
|
|
243
|
-
finalVerifiers:
|
|
322
|
+
finalVerifiers: verifierListSchema(1),
|
|
244
323
|
maxAttempts: z.number().int().min(ENNO_MIN_ATTEMPTS).max(ENNO_MAX_ATTEMPTS).default(8),
|
|
245
324
|
provenance: contractProvenanceSchema,
|
|
246
325
|
capabilities: z.array(z.unknown()).optional().describe('Complete current client capability descriptors. The field remains transport-optional only so omission can return a safe user-facing recovery choice before any plan effect.'),
|
|
247
326
|
}).strict().superRefine((submission, context) => {
|
|
327
|
+
requireDispositionWithDigest(submission, context);
|
|
248
328
|
const requirements = new Set(submission.skillRequirements.map((requirement) => requirement.name.normalize('NFKC').toLowerCase()));
|
|
249
329
|
const standardSkills = new Set([
|
|
250
330
|
STANDARD_SOUL_SKILL_NAME,
|
|
@@ -301,10 +381,18 @@ export const finishSchema = z.object({
|
|
|
301
381
|
expectedRevision: z.number().int().min(1),
|
|
302
382
|
idempotencyKey: identifier,
|
|
303
383
|
advisoryRoundDigest: advisoryRoundDigestSchema.optional(),
|
|
384
|
+
advisoryDisposition: z.array(advisoryDispositionSchema).max(3).optional(),
|
|
304
385
|
review: z.object({
|
|
305
386
|
decision: z.enum(['accept', 'replan']),
|
|
306
387
|
summary: canonicalText(16_384),
|
|
307
388
|
}).strict(),
|
|
389
|
+
}).strict().superRefine(requireDispositionWithDigest);
|
|
390
|
+
export const verificationPrepareSchema = z.object({
|
|
391
|
+
runId: identifier,
|
|
392
|
+
workspace: canonicalText(256),
|
|
393
|
+
orchestrationId: orchestrationIdSchema,
|
|
394
|
+
expectedRevision: z.number().int().min(1),
|
|
395
|
+
idempotencyKey: identifier,
|
|
308
396
|
}).strict();
|
|
309
397
|
export const meditationSubmissionSchema = z.object({
|
|
310
398
|
runId: identifier,
|
|
@@ -359,6 +447,9 @@ export function parseWorkReport(input) {
|
|
|
359
447
|
export function parseFinishRequest(input) {
|
|
360
448
|
return parseBoundary(finishSchema, input, 'Enno finish request is invalid');
|
|
361
449
|
}
|
|
450
|
+
export function parseVerificationPrepare(input) {
|
|
451
|
+
return parseBoundary(verificationPrepareSchema, input, 'Enno verification preparation is invalid');
|
|
452
|
+
}
|
|
362
453
|
export function parseMeditationSubmission(input) {
|
|
363
454
|
return parseBoundary(meditationSubmissionSchema, input, 'Oduno meditation submission is invalid');
|
|
364
455
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/enno-oduno/schemas.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/enno-oduno/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,6 +43,7 @@ export declare function submitOdunoIdeal(database: SqliteDatabase, rawInput: unk
|
|
|
43
43
|
export declare function submitEnnoPlan(database: SqliteDatabase, rawInput: unknown, dependencies?: EnnoServiceDependencies): Promise<EnnoOperationResponse>;
|
|
44
44
|
export declare function answerEnno(database: SqliteDatabase, rawInput: unknown): EnnoOperationResponse;
|
|
45
45
|
export declare function reportEnnoWork(database: SqliteDatabase, rawInput: unknown, dependencies?: EnnoServiceDependencies): Promise<EnnoOperationResponse>;
|
|
46
|
+
export declare function prepareEnnoVerification(database: SqliteDatabase, rawInput: unknown, dependencies?: EnnoServiceDependencies): Promise<EnnoOperationResponse>;
|
|
46
47
|
export declare function finishEnno(database: SqliteDatabase, rawInput: unknown, dependencies?: EnnoServiceDependencies): Promise<EnnoOperationResponse>;
|
|
47
48
|
export declare function submitOdunoMeditation(database: SqliteDatabase, rawInput: unknown): EnnoOperationResponse;
|
|
48
49
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/enno-oduno/service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAW7F,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,OAAO,KAAK,EAAuB,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/enno-oduno/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,12 +12,12 @@ import { canonicalContentHash, canonicalJson } from '../serialization/validate.j
|
|
|
12
12
|
import { sanitizeJson } from '../security/sanitize.js';
|
|
13
13
|
import { LedgerStore } from '../ledger/store.js';
|
|
14
14
|
import { directiveForIntake, directiveForRun } from './directives.js';
|
|
15
|
-
import { advisoryDirectiveForSnapshot, advisoryInputDigest, advisoryPhaseForStatus } from './advisory.js';
|
|
16
|
-
import { createAdvisoryRoundInTransaction, ensureAdvisoryRoundConsumedInTransaction, readAdvisoryRound, } from './advisory-store.js';
|
|
15
|
+
import { advisoryDirectiveForSnapshot, advisoryInputDigest, advisoryPhaseForStatus, normalizeAdvisoryContributions } from './advisory.js';
|
|
16
|
+
import { createAdvisoryRoundInTransaction, ensureAdvisoryRoundConsumedInTransaction, readAdvisoryRound, readSubmittedAdvisoryRound, } from './advisory-store.js';
|
|
17
17
|
import { assertWorkPlanExpertCoverage } from './experts.js';
|
|
18
18
|
import { buildEnnoRequestHandoff } from './handoff.js';
|
|
19
19
|
import { identifyEnnoClientKind } from './harness.js';
|
|
20
|
-
import { assertContractVerifierCwds, parseEnnoAnswer, parseAdviceSubmission, parseFinishRequest, parseIdealSubmission, parseMeditationSubmission, parseOdunoIdeal, parseOdunoMeditation, parsePlanSubmission, parseWorkReport, } from './schemas.js';
|
|
20
|
+
import { assertContractVerifierCwds, parseEnnoAnswer, parseAdviceSubmission, parseFinishRequest, parseIdealSubmission, parseMeditationSubmission, parseOdunoIdeal, parseOdunoMeditation, parsePlanSubmission, parseVerificationPrepare, parseWorkReport, } from './schemas.js';
|
|
21
21
|
import { completeRequiredSkillList, createSkillSetEntries, orderedUniqueSkillNames, unavailableRequiredSkills, } from './skills.js';
|
|
22
22
|
import { appendEnnoEventInTransaction, completeOperationInTransaction, createEnnoDraft, finishVerifierRunsInTransaction, readEnnoSnapshot, readFreshFinalVerifierResults, readOperationReceipt, replaceWorkUnitsInTransaction, setWorkUnitStatusInTransaction, startOperationInTransaction, startVerifierRunsInTransaction, terminalizeLedgerRunInTransaction, updateContractInTransaction, } from './store.js';
|
|
23
23
|
import { ENNO_APPLICABLE_TASK_TYPES, ENNO_MAX_EXTERNAL_SKILLS, ENNO_MAX_TOTAL_SKILL_QUERIES, ENNO_PROVENANCE_KEYS, } from './types.js';
|
|
@@ -37,7 +37,7 @@ function stateForSnapshot(snapshot) {
|
|
|
37
37
|
else if (snapshot.status === 'goki_executing')
|
|
38
38
|
nextAction = 'execute_work_unit';
|
|
39
39
|
else if (snapshot.status === 'enno_verifying')
|
|
40
|
-
nextAction = 'run_final_verification';
|
|
40
|
+
nextAction = snapshot.finalEvidenceReady ? 'submit_final_review' : 'run_final_verification';
|
|
41
41
|
else if (snapshot.status === 'oduno_meditation')
|
|
42
42
|
nextAction = 'submit_meditation';
|
|
43
43
|
else if (snapshot.status === 'blocked')
|
|
@@ -186,17 +186,61 @@ function requireAdvisoryRound(database, snapshot, phase, mutationRevision, conte
|
|
|
186
186
|
if (round === undefined)
|
|
187
187
|
throw new KiokukoError('CONFLICT', 'Required advisory round was not submitted');
|
|
188
188
|
}
|
|
189
|
-
function
|
|
190
|
-
|
|
189
|
+
function assertDispositionCoversRound(round, dispositions) {
|
|
190
|
+
const expected = new Set(round.contributions.map((contribution) => contribution.slotId));
|
|
191
|
+
const covered = new Set();
|
|
192
|
+
for (const disposition of dispositions) {
|
|
193
|
+
if (!expected.has(disposition.slotId)) {
|
|
194
|
+
throw new KiokukoError('VALIDATION_ERROR', 'advisoryDisposition references a slot outside the advisory round');
|
|
195
|
+
}
|
|
196
|
+
if (covered.has(disposition.slotId)) {
|
|
197
|
+
throw new KiokukoError('VALIDATION_ERROR', 'advisoryDisposition must provide at most one entry per slot');
|
|
198
|
+
}
|
|
199
|
+
covered.add(disposition.slotId);
|
|
200
|
+
}
|
|
201
|
+
for (const slotId of expected) {
|
|
202
|
+
if (!covered.has(slotId)) {
|
|
203
|
+
throw new KiokukoError('VALIDATION_ERROR', 'advisoryDisposition must cover every slot in the advisory round');
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
function consumeAdvisoryRoundIfPresent(database, snapshot, phase, mutationRevision, context, inputDigest, disposition) {
|
|
208
|
+
if (inputDigest === undefined) {
|
|
209
|
+
const submitted = readSubmittedAdvisoryRound(database, {
|
|
210
|
+
runId: snapshot.runId,
|
|
211
|
+
contractRevision: snapshot.revision,
|
|
212
|
+
mutationRevision,
|
|
213
|
+
phase,
|
|
214
|
+
});
|
|
215
|
+
if (submitted !== undefined) {
|
|
216
|
+
throw new KiokukoError('CONFLICT', 'Advisory round was submitted; pass its advisory digest and disposition before advancing the phase');
|
|
217
|
+
}
|
|
191
218
|
return undefined;
|
|
219
|
+
}
|
|
220
|
+
if (context === undefined) {
|
|
221
|
+
throw new KiokukoError('CONFLICT', 'Advisory round is not valid for the current Enno phase');
|
|
222
|
+
}
|
|
192
223
|
assertAdvisoryRoundInput(snapshot, phase, mutationRevision, context, inputDigest);
|
|
193
|
-
|
|
224
|
+
const dispositions = disposition ?? [];
|
|
225
|
+
if (dispositions.length === 0) {
|
|
226
|
+
throw new KiokukoError('VALIDATION_ERROR', 'advisoryDisposition is required when consuming an advisory round');
|
|
227
|
+
}
|
|
228
|
+
const round = ensureAdvisoryRoundConsumedInTransaction(database, {
|
|
194
229
|
runId: snapshot.runId,
|
|
195
230
|
contractRevision: snapshot.revision,
|
|
196
231
|
mutationRevision,
|
|
197
232
|
phase,
|
|
198
233
|
inputDigest,
|
|
199
234
|
});
|
|
235
|
+
assertDispositionCoversRound(round, dispositions);
|
|
236
|
+
appendEnnoEventInTransaction(database, snapshot.runId, 'enno.advice_disposition', 'enno-oduno', 'recorded', {
|
|
237
|
+
phase,
|
|
238
|
+
contractRevision: snapshot.revision,
|
|
239
|
+
mutationRevision,
|
|
240
|
+
inputDigest,
|
|
241
|
+
dispositions: dispositions.map((entry) => ({ slotId: entry.slotId, disposition: entry.disposition, rationale: entry.rationale })),
|
|
242
|
+
});
|
|
243
|
+
return round;
|
|
200
244
|
}
|
|
201
245
|
export function submitEnnoAdvice(database, rawInput) {
|
|
202
246
|
const input = parseAdviceSubmission(rawInput);
|
|
@@ -232,14 +276,24 @@ export function submitEnnoAdvice(database, rawInput) {
|
|
|
232
276
|
phase: input.phase,
|
|
233
277
|
inputDigest,
|
|
234
278
|
});
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
}
|
|
279
|
+
let round;
|
|
280
|
+
if (existing !== undefined) {
|
|
281
|
+
const incoming = normalizeAdvisoryContributions(input.phase, input.contributions);
|
|
282
|
+
if (canonicalJson(existing.contributions) !== canonicalJson(incoming)) {
|
|
283
|
+
throw new KiokukoError('CONFLICT', 'Advisory round was already submitted with different contributions');
|
|
284
|
+
}
|
|
285
|
+
round = existing;
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
round = createAdvisoryRoundInTransaction(database, {
|
|
289
|
+
runId: input.runId,
|
|
290
|
+
contractRevision: current.revision,
|
|
291
|
+
mutationRevision: input.mutationRevision,
|
|
292
|
+
phase: input.phase,
|
|
293
|
+
inputDigest,
|
|
294
|
+
contributions: input.contributions,
|
|
295
|
+
});
|
|
296
|
+
}
|
|
243
297
|
appendEnnoEventInTransaction(database, input.runId, 'enno.advice_submitted', 'enno-oduno', 'aggregated', {
|
|
244
298
|
phase: input.phase,
|
|
245
299
|
contractRevision: current.revision,
|
|
@@ -483,7 +537,7 @@ export function submitOdunoIdeal(database, rawInput) {
|
|
|
483
537
|
assertExpected(current, input.expectedRevision, ['oduno_ideal']);
|
|
484
538
|
assertIdealSkillCoverage(current, ideal);
|
|
485
539
|
startOperationInTransaction(database, input.runId, operation);
|
|
486
|
-
const advisoryRound = consumeAdvisoryRoundIfPresent(database, current, 'ideal', current.mutationRevision, advisoryContextForSubmission(current, 'ideal'), input.advisoryRoundDigest);
|
|
540
|
+
const advisoryRound = consumeAdvisoryRoundIfPresent(database, current, 'ideal', current.mutationRevision, advisoryContextForSubmission(current, 'ideal'), input.advisoryRoundDigest, input.advisoryDisposition);
|
|
487
541
|
updateContractInTransaction(database, current, {
|
|
488
542
|
contract: current.contract,
|
|
489
543
|
status: 'zenki_planning',
|
|
@@ -580,7 +634,7 @@ export async function submitEnnoPlan(database, rawInput, dependencies = {}) {
|
|
|
580
634
|
const current = readEnnoSnapshot(database, identity(input));
|
|
581
635
|
assertExpected(current, input.expectedRevision, ['zenki_planning']);
|
|
582
636
|
startOperationInTransaction(database, input.runId, operation);
|
|
583
|
-
const advisoryRound = consumeAdvisoryRoundIfPresent(database, current, 'planning', current.mutationRevision, advisoryContextForSubmission(current, 'planning'), input.advisoryRoundDigest);
|
|
637
|
+
const advisoryRound = consumeAdvisoryRoundIfPresent(database, current, 'planning', current.mutationRevision, advisoryContextForSubmission(current, 'planning'), input.advisoryRoundDigest, input.advisoryDisposition);
|
|
584
638
|
const status = unavailable.length > 0
|
|
585
639
|
? 'blocked'
|
|
586
640
|
: needsConfirmation ? 'needs_confirmation' : 'goki_executing';
|
|
@@ -874,36 +928,30 @@ export async function reportEnnoWork(database, rawInput, dependencies = {}) {
|
|
|
874
928
|
return response;
|
|
875
929
|
});
|
|
876
930
|
}
|
|
877
|
-
export async function
|
|
878
|
-
const input =
|
|
879
|
-
const operation = operationIdentity('
|
|
931
|
+
export async function prepareEnnoVerification(database, rawInput, dependencies = {}) {
|
|
932
|
+
const input = parseVerificationPrepare(rawInput);
|
|
933
|
+
const operation = operationIdentity('verify_prepare', input.idempotencyKey, input);
|
|
880
934
|
const replay = readOperationReceipt(database, input.runId, operation);
|
|
881
935
|
if (replay !== undefined)
|
|
882
936
|
return replay;
|
|
883
937
|
const before = readEnnoSnapshot(database, identity(input));
|
|
884
938
|
assertExpected(before, input.expectedRevision, ['enno_verifying']);
|
|
885
|
-
if (input.advisoryRoundDigest !== undefined) {
|
|
886
|
-
requireAdvisoryRound(database, before, 'final_review', before.mutationRevision, advisoryContextForSubmission(before, 'final_review'), input.advisoryRoundDigest);
|
|
887
|
-
}
|
|
888
|
-
const reviewSummary = sanitizedReviewSummary(input.review.summary, before.repositoryRoot);
|
|
889
939
|
if (before.attempts >= before.contract.maxAttempts) {
|
|
890
940
|
return withImmediateTransaction(database, () => blockedForAttemptLimit(database, readEnnoSnapshot(database, identity(input)), operation));
|
|
891
941
|
}
|
|
892
942
|
let verifierRunIds = [];
|
|
893
|
-
let
|
|
894
|
-
let advisoryRound;
|
|
943
|
+
let cachedResults;
|
|
895
944
|
withImmediateTransaction(database, () => {
|
|
896
945
|
const current = readEnnoSnapshot(database, identity(input));
|
|
897
946
|
assertExpected(current, input.expectedRevision, ['enno_verifying']);
|
|
898
|
-
advisoryRound = consumeAdvisoryRoundIfPresent(database, current, 'final_review', current.mutationRevision, advisoryContextForSubmission(current, 'final_review'), input.advisoryRoundDigest);
|
|
899
947
|
startOperationInTransaction(database, input.runId, operation);
|
|
900
|
-
|
|
948
|
+
cachedResults = readFreshFinalVerifierResults(database, {
|
|
901
949
|
runId: input.runId,
|
|
902
950
|
revision: current.revision,
|
|
903
951
|
mutationRevision: current.mutationRevision,
|
|
904
952
|
verifiers: current.contract.finalVerifiers,
|
|
905
953
|
});
|
|
906
|
-
if (
|
|
954
|
+
if (cachedResults === undefined) {
|
|
907
955
|
verifierRunIds = startVerifierRunsInTransaction(database, {
|
|
908
956
|
runId: input.runId,
|
|
909
957
|
workUnitId: null,
|
|
@@ -912,20 +960,15 @@ export async function finishEnno(database, rawInput, dependencies = {}) {
|
|
|
912
960
|
verifiers: current.contract.finalVerifiers,
|
|
913
961
|
});
|
|
914
962
|
}
|
|
915
|
-
appendEnnoEventInTransaction(database, input.runId, 'enno.
|
|
916
|
-
contractRevision: current.revision,
|
|
917
|
-
mutationRevision: current.mutationRevision,
|
|
918
|
-
requestedDecision: input.review.decision,
|
|
919
|
-
});
|
|
920
|
-
appendEnnoEventInTransaction(database, input.runId, 'enno.verification_started', 'enno-oduno', cachedVerifierResults === undefined ? 'started' : 'reused', {
|
|
963
|
+
appendEnnoEventInTransaction(database, input.runId, 'enno.verification_started', 'enno-oduno', cachedResults === undefined ? 'started' : 'reused', {
|
|
921
964
|
contractRevision: current.revision,
|
|
922
965
|
mutationRevision: current.mutationRevision,
|
|
923
966
|
verifierIds: current.contract.finalVerifiers.map((verifier) => verifier.id),
|
|
924
967
|
});
|
|
925
968
|
});
|
|
926
969
|
let results;
|
|
927
|
-
if (
|
|
928
|
-
results =
|
|
970
|
+
if (cachedResults !== undefined) {
|
|
971
|
+
results = cachedResults;
|
|
929
972
|
}
|
|
930
973
|
else {
|
|
931
974
|
try {
|
|
@@ -940,6 +983,60 @@ export async function finishEnno(database, rawInput, dependencies = {}) {
|
|
|
940
983
|
assertExpected(current, input.expectedRevision, ['enno_verifying']);
|
|
941
984
|
if (verifierRunIds.length > 0)
|
|
942
985
|
finishVerifierRunsInTransaction(database, verifierRunIds, results);
|
|
986
|
+
const response = {
|
|
987
|
+
ennoOduno: stateForSnapshot(readEnnoSnapshot(database, identity(input))),
|
|
988
|
+
verifierResults: results,
|
|
989
|
+
};
|
|
990
|
+
completeOperationInTransaction(database, input.runId, operation, response);
|
|
991
|
+
return response;
|
|
992
|
+
});
|
|
993
|
+
}
|
|
994
|
+
export async function finishEnno(database, rawInput, dependencies = {}) {
|
|
995
|
+
const input = parseFinishRequest(rawInput);
|
|
996
|
+
const operation = operationIdentity('finish', input.idempotencyKey, input);
|
|
997
|
+
const replay = readOperationReceipt(database, input.runId, operation);
|
|
998
|
+
if (replay !== undefined)
|
|
999
|
+
return replay;
|
|
1000
|
+
const before = readEnnoSnapshot(database, identity(input));
|
|
1001
|
+
assertExpected(before, input.expectedRevision, ['enno_verifying']);
|
|
1002
|
+
if (input.advisoryRoundDigest !== undefined) {
|
|
1003
|
+
requireAdvisoryRound(database, before, 'final_review', before.mutationRevision, advisoryContextForSubmission(before, 'final_review'), input.advisoryRoundDigest);
|
|
1004
|
+
}
|
|
1005
|
+
const reviewSummary = sanitizedReviewSummary(input.review.summary, before.repositoryRoot);
|
|
1006
|
+
if (before.attempts >= before.contract.maxAttempts) {
|
|
1007
|
+
return withImmediateTransaction(database, () => blockedForAttemptLimit(database, readEnnoSnapshot(database, identity(input)), operation));
|
|
1008
|
+
}
|
|
1009
|
+
let advisoryRound;
|
|
1010
|
+
let results;
|
|
1011
|
+
withImmediateTransaction(database, () => {
|
|
1012
|
+
const current = readEnnoSnapshot(database, identity(input));
|
|
1013
|
+
assertExpected(current, input.expectedRevision, ['enno_verifying']);
|
|
1014
|
+
advisoryRound = consumeAdvisoryRoundIfPresent(database, current, 'final_review', current.mutationRevision, input.advisoryRoundDigest === undefined ? undefined : advisoryContextForSubmission(current, 'final_review'), input.advisoryRoundDigest, input.advisoryDisposition);
|
|
1015
|
+
const fresh = readFreshFinalVerifierResults(database, {
|
|
1016
|
+
runId: input.runId,
|
|
1017
|
+
revision: current.revision,
|
|
1018
|
+
mutationRevision: current.mutationRevision,
|
|
1019
|
+
verifiers: current.contract.finalVerifiers,
|
|
1020
|
+
});
|
|
1021
|
+
if (fresh === undefined) {
|
|
1022
|
+
throw new KiokukoError('CONFLICT', 'Final verification evidence is not prepared; call enno_verify_prepare first');
|
|
1023
|
+
}
|
|
1024
|
+
results = fresh;
|
|
1025
|
+
startOperationInTransaction(database, input.runId, operation);
|
|
1026
|
+
appendEnnoEventInTransaction(database, input.runId, 'enno.review_started', 'enno-oduno', 'started', {
|
|
1027
|
+
contractRevision: current.revision,
|
|
1028
|
+
mutationRevision: current.mutationRevision,
|
|
1029
|
+
requestedDecision: input.review.decision,
|
|
1030
|
+
});
|
|
1031
|
+
appendEnnoEventInTransaction(database, input.runId, 'enno.verification_started', 'enno-oduno', 'reused', {
|
|
1032
|
+
contractRevision: current.revision,
|
|
1033
|
+
mutationRevision: current.mutationRevision,
|
|
1034
|
+
verifierIds: current.contract.finalVerifiers.map((verifier) => verifier.id),
|
|
1035
|
+
});
|
|
1036
|
+
});
|
|
1037
|
+
return withImmediateTransaction(database, () => {
|
|
1038
|
+
const current = readEnnoSnapshot(database, identity(input));
|
|
1039
|
+
assertExpected(current, input.expectedRevision, ['enno_verifying']);
|
|
943
1040
|
const passed = results.length > 0 && results.every((result) => result.status === 'passed');
|
|
944
1041
|
const unsafe = results.some((result) => result.status === 'spawn_failed');
|
|
945
1042
|
const attempts = current.attempts + 1;
|