UNPKG

@sema-agent/core

Version:

Stateless, task-oriented AI agent core

48 lines (47 loc) • 2.33 kB
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()}`; }