import { z } from "zod"; import type { ToolMetadata } from "../base-tool.js"; import { SimpleReportTool } from "../base-tool.js"; import { CommonOptionsSchema } from "../types.js"; const ActivityInputSchema = CommonOptionsSchema.extend({ interval: z .enum(["daily", "weekly", "monthly", "quarterly", "yearly"]) .optional() .describe("Reporting interval"), cumulative: z.boolean().optional().describe("Show cumulative activity"), }); export class ActivityTool extends SimpleReportTool { readonly metadata: ToolMetadata = { name: "hledger_activity", description: "Show posting activity counts as a bar chart", schema: ActivityInputSchema, }; constructor(journalFilePath?: string) { super(journalFilePath); } protected getCommand(): string { return "activity"; } protected buildArgs(input: z.infer): string[] { const args = this.buildCommonArgs(input); if (input.interval) args.push(`--${input.interval}`); if (input.cumulative) args.push("--cumulative"); return args; } }