@sema-agent/core
Version:
Stateless, task-oriented AI agent core
40 lines (39 loc) • 1.64 kB
JavaScript
import { isThinkingLevel } from "../brain/reasoning.js";
import { SCENARIO_REGISTRY } from "./scenario-registry.js";
import { TEACHER_PROFILE } from "./teacher-quickstart.js";
export const DEFAULT_REASONING_INTENSITY = "medium";
function parseMode(raw) {
if (raw === undefined || raw === "")
return "solo";
if (raw === "solo" || raw === "teacher")
return raw;
throw new Error(`ORCHESTRATION_MODE="${raw}" is not valid — expected one of: solo, teacher.`);
}
function parseScenario(raw) {
if (raw === undefined || raw === "")
return "solo";
if (Object.prototype.hasOwnProperty.call(SCENARIO_REGISTRY, raw))
return raw;
throw new Error(`SCENARIO="${raw}" is not a known scenario — expected one of: ${Object.keys(SCENARIO_REGISTRY).join(", ")}.`);
}
function parseReasoning(raw) {
if (raw === undefined || raw === "")
return DEFAULT_REASONING_INTENSITY;
if (isThinkingLevel(raw))
return raw;
throw new Error(`REASONING_INTENSITY="${raw}" is not a valid thinking level — expected one of: ` +
`off, minimal, low, medium, high, xhigh, max.`);
}
export function loadOrchestrationEnv(env = process.env) {
const mode = parseMode(env.ORCHESTRATION_MODE);
const result = {
mode,
scenario: parseScenario(env.SCENARIO),
reasoning: parseReasoning(env.REASONING_INTENSITY),
};
if (mode === "teacher") {
result.teacherStudentRole = env.TEACHER_STUDENT_ROLE ?? TEACHER_PROFILE.studentRole;
result.teacherAdvisorRole = env.TEACHER_ADVISOR_ROLE ?? TEACHER_PROFILE.advisorRole;
}
return result;
}