import { type Ref } from '#imports'; import type { MutationAction } from '#blokkli/agent/app/types'; import type { PageContext } from '#blokkli/agent/shared/types'; import type { BlokkliApp } from '#blokkli/editor/types/app'; import type { FullBlokkliAdapter } from '#blokkli/editor/adapter'; import type { AgentToolName, AgentToolMap } from '#blokkli-build/agent-client'; import type { SocketProvider } from './socketProvider.js'; import type { ConversationProvider } from './conversationProvider.js'; export type PendingMutationState = { action: MutationAction; resolve: (approved: boolean) => void; }; export type PendingToolCall = { toolName: string; params: Record; }; export type ToolsProvider = { pendingMutation: Ref; pendingToolCall: Ref; autoApprove: Ref; pageContext: Readonly>; init: () => Promise<{ toolNames: string[]; }>; setPageContext: (ctx: PageContext) => void; dispatch: (callId: string, tool: string, params: Record) => Promise; runForPrompt: (toolName: T, params: AgentToolMap[T]['params']) => Promise<{ toolName: T; params: AgentToolMap[T]['params']; result: AgentToolMap[T]['result']; label: string; }>; approve: () => void; reject: () => void; setAutoApprove: (value: boolean) => void; onComponentDone: (result: unknown) => void; cancelPending: () => void; }; export default function toolsProvider({ app, adapter, socket, conversation, }: { app: BlokkliApp; adapter: FullBlokkliAdapter; socket: SocketProvider; conversation: ConversationProvider; }): ToolsProvider;