@sema-agent/core
Version:
Stateless, task-oriented AI agent core
48 lines (47 loc) • 2.33 kB
JavaScript
export const WORKFLOW_SIZE_GUIDELINES = ["unrestricted", "small", "medium", "large"];
export const WORKFLOW_SIZE_GUIDELINE_DEFAULT = "medium";
export const WORKFLOW_SIZE_GUIDELINE_AGENT_CAPS = Object.freeze({
small: 5,
medium: 15,
large: 50,
});
export function normalizeWorkflowSizeGuideline(value) {
return WORKFLOW_SIZE_GUIDELINES.includes(value) ? value : undefined;
}
export function resolveWorkflowSizeGuideline(value) {
const configured = normalizeWorkflowSizeGuideline(value);
return configured === undefined ? { size: WORKFLOW_SIZE_GUIDELINE_DEFAULT, isDefault: true } : { size: configured, isDefault: false };
}
export function workflowSizeGuidelineAgentCap(g) {
return g === "small" || g === "medium" || g === "large" ? WORKFLOW_SIZE_GUIDELINE_AGENT_CAPS[g] : undefined;
}
export function describeWorkflowSizeGuideline(g) {
if (!(g in WORKFLOW_SIZE_GUIDELINE_AGENT_CAPS))
return g;
return `${g} — keep workflows under ${WORKFLOW_SIZE_GUIDELINE_AGENT_CAPS[g]} agents`;
}
function guidelineNotHardLimit() {
return "This is a guideline, not a hard limit — follow it unless the user's prompt calls for a different scale.";
}
export function formatWorkflowSizeGuidelineLabel(g) {
const cap = workflowSizeGuidelineAgentCap(g);
return cap === undefined ? g : `${g} (aim for <${cap} agents)`;
}
function workflowSizeGuidelineSentence(g, isDefault) {
const lead = isDefault
? "This session has the default workflow size guideline:"
: "A workflow size guideline is configured for this session:";
const escape = isDefault ? ' The user can raise or remove it with "Dynamic workflow size" in /config.' : "";
return `${lead} ${describeWorkflowSizeGuideline(g)}. ${guidelineNotHardLimit()}${escape}`;
}
export function workflowSizeGuidelineSection(value) {
const { size, isDefault } = resolveWorkflowSizeGuideline(value);
if (size === "unrestricted")
return "";
return `\n\n${workflowSizeGuidelineSentence(size, isDefault)}`;
}
export function workflowSizeGuidelineChangeNotice(g) {
if (g === "unrestricted")
return "Workflow size is now unrestricted — no size guideline applies.";
return `The workflow size guideline for this session changed: ${describeWorkflowSizeGuideline(g)}. ${guidelineNotHardLimit()}`;
}