@autobe/agent
Version:
AI backend server code generator
52 lines (49 loc) • 1.83 kB
text/typescript
import {
AutoBeProgressEventBase,
AutoBeRealizeCollectorFunction,
AutoBeRealizeCollectorPlan,
} from "@autobe/interface";
import { AutoBeContext } from "../../context/AutoBeContext";
import { orchestrateRealizeCorrectWithRetry } from "./correct/orchestrateRealizeCorrectWithRetry";
import { orchestrateRealizeCollectorCorrectCasting } from "./orchestrateRealizeCollectorCorrectCasting";
import { orchestrateRealizeCollectorCorrectOverall } from "./orchestrateRealizeCollectorCorrectOverall";
import { orchestrateRealizeCollectorPlan } from "./orchestrateRealizeCollectorPlan";
import { orchestrateRealizeCollectorWrite } from "./orchestrateRealizeCollectorWrite";
export async function orchestrateRealizeCollector(
ctx: AutoBeContext,
props: {
planProgress: AutoBeProgressEventBase;
writeProgress: AutoBeProgressEventBase;
validateProgress: AutoBeProgressEventBase;
},
): Promise<AutoBeRealizeCollectorFunction[]> {
const plans: AutoBeRealizeCollectorPlan[] =
await orchestrateRealizeCollectorPlan(ctx, {
progress: props.planProgress,
});
return orchestrateRealizeCorrectWithRetry({
write: () =>
orchestrateRealizeCollectorWrite(ctx, {
plans,
progress: props.writeProgress,
}),
rewrite: (failed) =>
orchestrateRealizeCollectorWrite(ctx, {
plans: failed.map((f) => f.plan),
progress: props.writeProgress,
}),
correctCasting: (functions) =>
orchestrateRealizeCollectorCorrectCasting(ctx, {
functions,
progress: props.validateProgress,
}),
correctOverall: (functions) =>
orchestrateRealizeCollectorCorrectOverall(ctx, {
functions,
progress: props.validateProgress,
}),
addProgress: (count) => {
props.validateProgress.total += count;
},
});
}