@sema-agent/core
Version:
Stateless, task-oriented AI agent core
32 lines (31 loc) • 1.39 kB
JavaScript
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" };