/** * Framework-neutral agent capabilities — the single source of truth for the * tools that back the hub chat, the hub MCP server, the desktop chat, the * desktop MCP server, and (directly) the CLI. Each consumer adapts these to * its own surface (AI SDK `tool()`, MCP `registerTool`, or a direct call); * the definitions here depend only on Drizzle + zod, never on `ai` or any MCP * package. * * See docs/plans/2026-05-28-agent-capabilities-and-mcp.md. */ export type { AnyCapability, Capability, CapabilityContext, CapabilityDb, ReportNarrative, ReportNarrativeInput, } from "./context"; export { defineCapability, isCapabilityAllowed } from "./context"; export { buildChatSystemPrompt } from "./prompt"; export { buildTimelineScope } from "./scope"; export { toChatSafeToolOutput, toJsonSafeToolOutput } from "./tool-output"; export { AUTO_RENDERED_TOOL_UI, type ChatUiTool, chatUiTools, RENDER_CHART, RENDER_STAT_CARDS, RENDER_TABLE, renderChartInputSchema, renderStatCardsInputSchema, renderTableInputSchema, } from "./ui-tools"; import { createClient, createProject, deleteProject, listClients, listInvoices, listProjects, mergeProjects, updateClient, updateProject, } from "./billing"; import type { AnyCapability } from "./context"; import { getDataFreshness } from "./freshness"; import { clearLocalMappings, getUnassignedWork, mapUnassignedWork, proposeMappings, } from "./mapping"; import { purgeWork } from "./purge"; import { generateReport, getReport, listReports, saveReport } from "./report"; import { createTimelineEntry, deleteTimelineEntry, getProjectActivity, getRecentActivity, searchTimeline, updateTimelineEntry, } from "./timeline"; import { searchTranscripts } from "./transcripts"; export { createClient, createProject, deleteProject, listClients, listInvoices, listProjects, mergeProjects, updateClient, updateProject, } from "./billing"; export { getDataFreshness } from "./freshness"; export { clearLocalMappings, getUnassignedWork, mapUnassignedWork, proposeMappings, } from "./mapping"; export { purgeWork } from "./purge"; export type { BuildReportPayloadOptions, EventsExportRef, NarrativeSkippedReason, ReportDepth, ReportEventQueryArgs, ReportFilter, ReportPayload, ReportPayloadBase, ReportScope, } from "./report"; export { buildReportPayload, generateReport, getReport, listReports, matchesClientFilter, saveReport, streamReportEvents, toNarrativeInput, } from "./report"; export { createTimelineEntry, deleteTimelineEntry, getProjectActivity, getRecentActivity, searchTimeline, updateTimelineEntry, } from "./timeline"; export { searchTranscripts } from "./transcripts"; /** All capabilities, in a stable order. */ export const capabilities: readonly AnyCapability[] = [ searchTimeline, searchTranscripts, getRecentActivity, generateReport, saveReport, listReports, getReport, listProjects, getProjectActivity, getUnassignedWork, proposeMappings, mapUnassignedWork, clearLocalMappings, listInvoices, listClients, createTimelineEntry, updateTimelineEntry, deleteTimelineEntry, createProject, updateProject, mergeProjects, deleteProject, purgeWork, createClient, updateClient, getDataFreshness, ];