UNPKG

@sema-agent/core

Version:

Stateless, task-oriented AI agent core

32 lines (31 loc) • 1.39 kB
import { webFetchToolSpec, createWebSearchTool } from "../tools/web.js"; import { createTodoWriteTool } from "../tools/todo.js"; import { createTaskListTools } from "../tools/task-list.js"; import { createSubagentTool } from "../agents/subagent.js"; import { CODE_SYSTEM_PROMPT } from "../prompts/default.js"; export function assembleCodeTools(cfg = {}) { const web = [webFetchToolSpec(cfg.webFetch ?? {})]; if (cfg.webSearch) web.push(createWebSearchTool(cfg.webSearch)); const stamp = (t) => ({ ...t, modelGate: "task-scaffold" }); const taskListOn = cfg.taskList !== false; const scaffolds = []; if (cfg.todoWrite !== false && !taskListOn) { scaffolds.push(cfg.todoWrite === true ? createTodoWriteTool() : stamp(createTodoWriteTool())); } if (taskListOn) { const family = createTaskListTools(cfg.taskListStore); scaffolds.push(...(cfg.taskList === true ? family : family.map(stamp))); } const tools = [...web]; if (cfg.subagent) { tools.push(createSubagentTool({ ...cfg.subagent, systemPrompt: cfg.subagent.systemPrompt ?? CODE_SYSTEM_PROMPT, inheritedTools: cfg.subagent.inheritedTools ?? [...web, ...scaffolds], })); } tools.push(...scaffolds); return tools; } export const CODE_ROLE = { systemPrompt: CODE_SYSTEM_PROMPT, thinking: "high" };