UNPKG

@sema-agent/core

Version:

Stateless, task-oriented AI agent core

61 lines (60 loc) • 3.34 kB
import { CONFIG_CATALOG_VERSION, declarationReasons, resolveEffectiveConfig } from "../../config/catalog.js"; import { engineVersion } from "../version.js"; import { emitTrace } from "../trace.js"; import { writeFamilyOfCanonical } from "./tool-end-body.js"; export function runToolMountFacts(input) { const { spec, prepared, rs } = input; const todoToolMounted = rs.attach.attachState !== undefined && prepared.tools.some((t) => t.name === "TodoWrite"); const taskToolsMounted = rs.attach.attachState !== undefined && prepared.tools.some((t) => t.name === "TaskCreate"); const writeFamilyByName = new Map(); if (rs.attach.attachState !== undefined) { for (const t of prepared.tools) { const family = writeFamilyOfCanonical(t.name); if (family !== undefined) for (const n of [t.name, ...(t.aliases ?? [])]) writeFamilyByName.set(n, family); } } const writeFamilyOf = (name) => writeFamilyByName.get(name) ?? writeFamilyOfCanonical(name); const toolStartAt = new Map(); const startedToolCallIds = new Set(); emitTrace(rs.telemetry.tracer, () => ({ kind: "task.start", version: 1, taskId: rs.telemetry.taskId, runId: rs.telemetry.runId, model: prepared.model.id, engineVersion: engineVersion(), ts: rs.telemetry.taskStart })); emitTrace(rs.telemetry.tracer, () => ({ kind: "prompt.assembled", version: 3, taskId: rs.telemetry.taskId, identity: prepared.promptManifest.identity, selectors: prepared.promptManifest.selectors, blocks: prepared.promptManifest.blocks, sections: prepared.promptManifest.sections, ...(prepared.promptManifest.superseded ? { superseded: prepared.promptManifest.superseded } : {}), ...(prepared.promptManifest.tools ? { tools: prepared.promptManifest.tools } : {}), ...(prepared.promptManifest.snapshot ? { snapshot: prepared.promptManifest.snapshot } : {}), ...(prepared.promptManifest.lowering ? { lowering: prepared.promptManifest.lowering } : {}), ...(prepared.promptManifest.toolDisclosure ? { toolDisclosure: prepared.promptManifest.toolDisclosure } : {}), totalChars: prepared.promptManifest.blocks.reduce((n, b) => n + b.chars, 0), ts: rs.telemetry.taskStart, })); emitTrace(rs.telemetry.tracer, () => { const reasons = declarationReasons(spec.configOverrides); return { kind: "config.assembled", version: 1, taskId: rs.telemetry.taskId, catalogVersion: CONFIG_CATALOG_VERSION, fields: resolveEffectiveConfig(spec, { modelMaxTokens: prepared.model.maxTokens }), ...(Object.keys(reasons).length > 0 ? { overrideReasons: reasons } : {}), ts: rs.telemetry.taskStart, }; }); if (prepared.turnSnapshot !== undefined) { prepared.turnSnapshot.onChange = (snap) => emitTrace(rs.telemetry.tracer, () => ({ kind: "prompt.snapshot_changed", version: 1, taskId: rs.telemetry.taskId, snapshot: { cacheIdentity: snap.cacheIdentity, elements: { ...snap.elements } }, ts: Date.now(), })); } return { todoToolMounted, taskToolsMounted, writeFamilyOf, toolStartAt, startedToolCallIds }; }