fix(coding-agent): unify source provenance, closes #1734
This commit is contained in:
@@ -67,7 +67,23 @@ describe("AgentSession dynamic tool registration", () => {
|
||||
|
||||
await session.bindExtensions({});
|
||||
|
||||
expect(session.getAllTools().map((tool) => tool.name)).toContain("dynamic_tool");
|
||||
const allTools = session.getAllTools();
|
||||
const dynamicTool = allTools.find((tool) => tool.name === "dynamic_tool");
|
||||
const readTool = allTools.find((tool) => tool.name === "read");
|
||||
|
||||
expect(allTools.map((tool) => tool.name)).toContain("dynamic_tool");
|
||||
expect(dynamicTool?.sourceInfo).toMatchObject({
|
||||
path: "<inline:1>",
|
||||
source: "inline",
|
||||
scope: "temporary",
|
||||
origin: "top-level",
|
||||
});
|
||||
expect(readTool?.sourceInfo).toMatchObject({
|
||||
path: "<builtin:read>",
|
||||
source: "builtin",
|
||||
scope: "temporary",
|
||||
origin: "top-level",
|
||||
});
|
||||
expect(session.getActiveToolNames()).toContain("dynamic_tool");
|
||||
expect(session.systemPrompt).toContain("- dynamic_tool: Run dynamic test behavior");
|
||||
expect(session.systemPrompt).toContain("- Use dynamic_tool when the user asks for dynamic behavior tests.");
|
||||
@@ -75,6 +91,49 @@ describe("AgentSession dynamic tool registration", () => {
|
||||
session.dispose();
|
||||
});
|
||||
|
||||
it("returns source metadata for SDK custom tools", async () => {
|
||||
const settingsManager = SettingsManager.create(tempDir, agentDir);
|
||||
const sessionManager = SessionManager.inMemory();
|
||||
const resourceLoader = new DefaultResourceLoader({
|
||||
cwd: tempDir,
|
||||
agentDir,
|
||||
settingsManager,
|
||||
});
|
||||
await resourceLoader.reload();
|
||||
|
||||
const { session } = await createAgentSession({
|
||||
cwd: tempDir,
|
||||
agentDir,
|
||||
model: getModel("anthropic", "claude-sonnet-4-5")!,
|
||||
settingsManager,
|
||||
sessionManager,
|
||||
resourceLoader,
|
||||
customTools: [
|
||||
{
|
||||
name: "sdk_tool",
|
||||
label: "SDK Tool",
|
||||
description: "Tool registered through createAgentSession",
|
||||
parameters: Type.Object({}),
|
||||
execute: async () => ({
|
||||
content: [{ type: "text", text: "ok" }],
|
||||
details: {},
|
||||
}),
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
const sdkTool = session.getAllTools().find((tool) => tool.name === "sdk_tool");
|
||||
expect(sdkTool?.sourceInfo).toMatchObject({
|
||||
path: "<sdk:sdk_tool>",
|
||||
source: "sdk",
|
||||
scope: "temporary",
|
||||
origin: "top-level",
|
||||
});
|
||||
expect(session.getActiveToolNames()).toContain("sdk_tool");
|
||||
|
||||
session.dispose();
|
||||
});
|
||||
|
||||
it("keeps custom tools active but omits them from available tools when promptSnippet is not provided", async () => {
|
||||
const settingsManager = SettingsManager.create(tempDir, agentDir);
|
||||
const sessionManager = SessionManager.inMemory();
|
||||
|
||||
Reference in New Issue
Block a user