@sema-agent/core
Version:
Stateless, task-oriented AI agent core
59 lines (58 loc) • 3.24 kB
JavaScript
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: 1,
taskId: rs.telemetry.taskId,
constitution: prepared.promptManifest.constitution,
blocks: prepared.promptManifest.blocks,
...(prepared.promptManifest.sections ? { sections: prepared.promptManifest.sections } : {}),
...(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 };
}