refactor(workflow): contract shared core (#33)
This commit is contained in:
@@ -1,8 +1,5 @@
|
||||
import { Type } from "typebox";
|
||||
|
||||
import { buildMultiselectRequest } from "../builders.js";
|
||||
import { isReserved } from "../../reserved-labels.mjs";
|
||||
|
||||
// Compatibility note: reviewer labels move verbatim from the composition root.
|
||||
// Tickets #22 and #23 require observable parity; translating existing chrome is a
|
||||
// separate product behavior change rather than part of these extractions.
|
||||
@@ -80,14 +77,14 @@ function shouldSkipEmptyRecall({ meritCount, allowEmpty, advance }) {
|
||||
|
||||
|
||||
async function reviewRecall(ctx, params, phase, dependencies) {
|
||||
const { workflow, ledger, waitForReviewer, toTextResult } = dependencies;
|
||||
const { workflow, ledger, reviewer, waitForReviewer, toTextResult } = dependencies;
|
||||
try {
|
||||
const { session, advance } = params;
|
||||
const options = normalizeMemoryOptions(params.options);
|
||||
const typeError = ledger.validate(ctx, options, session);
|
||||
if (typeError) return toTextResult(typeError);
|
||||
const meritOptions = options
|
||||
.filter((option) => !isReserved(option.label))
|
||||
.filter((option) => !reviewer.isReserved(option.label))
|
||||
.map((option) => ({
|
||||
id: option.id,
|
||||
label: option.label,
|
||||
@@ -110,7 +107,7 @@ async function reviewRecall(ctx, params, phase, dependencies) {
|
||||
"avanzamento automatico alla fase successiva.",
|
||||
);
|
||||
}
|
||||
const widget = buildMultiselectRequest({
|
||||
const widget = reviewer.buildMultiselect({
|
||||
id: `u${Date.now()}`,
|
||||
phase,
|
||||
allowEmpty: params.allow_empty ?? false,
|
||||
@@ -225,7 +222,7 @@ function splitPromotionChoices(candidates, choices) {
|
||||
*/
|
||||
function installMemoryGate(
|
||||
pi,
|
||||
{ workflow, memory, ledger, waitForReviewer, toTextResult },
|
||||
{ workflow, memory, ledger, reviewer, waitForReviewer, toTextResult },
|
||||
) {
|
||||
pi.registerTool({
|
||||
name: "reviewer_memory_promote",
|
||||
@@ -285,7 +282,7 @@ function installMemoryGate(
|
||||
);
|
||||
}
|
||||
const options = promotionOptions(candidates);
|
||||
const widget = buildMultiselectRequest({
|
||||
const widget = reviewer.buildMultiselect({
|
||||
id: `u${Date.now()}`,
|
||||
phase: phase.id,
|
||||
title: "Quali concetti chiariti salvare nella memoria riutilizzabile?",
|
||||
|
||||
Reference in New Issue
Block a user