Menu
popagent
publicLatest change 59f3c89df7ac29e072aafa31e6ad04dc601a750d - Add bounded repository brief service by AkurAI Build
import { createTool } from "@mastra/core/tools";
import { z } from "zod";
import { AGENT_CONTEXT_KEYS, agentContextValue } from "../agent-context";
import { repositoryBrief } from "../repo-brief";
const symbolSchema = z.object({
name: z.string(),
kind: z.enum(["class", "const", "function", "interface", "type"]),
line: z.number().int().positive(),
});
export const repoBrief = createTool({
id: "repo-brief",
description: "Build a deterministic, bounded repository brief from request terms: matching source files, exported symbols, adjacent tests, and repository change state. It never calls a model or the network.",
inputSchema: z.object({ query: z.string().trim().min(1).max(2_000) }),
outputSchema: z.object({
repository: z.object({ clean: z.boolean(), changedFiles: z.array(z.string()) }),
candidates: z.array(z.object({ path: z.string(), score: z.number(), symbols: z.array(symbolSchema) })),
tests: z.array(z.string()),
readyForImplementation: z.boolean(),
gaps: z.array(z.string()),
}),
execute: async ({ query }, context) => {
const workspaceId = agentContextValue(context.requestContext, AGENT_CONTEXT_KEYS.workspaceId);
if (!workspaceId) throw new Error("Workspace context is required for a repository brief");
return repositoryBrief.build(workspaceId, query);
},
});