fix: a2ui actions were not wired up at all

This commit is contained in:
2026-02-26 19:19:31 +01:00
parent 5152a4429f
commit daf8addb53
4 changed files with 191 additions and 12 deletions

View File

@@ -8,7 +8,7 @@
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { A2UISurfaceManager } from './A2UISurfaceManager';
import { replaySurfacesFromMessages } from './surfaceAssociation';
import type { A2UIResolvedComponent, A2UIServerMessage, A2UIClientAction } from '../../main/a2ui/types';
import type { A2UIResolvedComponent, A2UIServerMessage } from '../../main/a2ui/types';
import type { ChatMessage } from '../../main/shared/electronApi';
interface UseA2UISurfaceInput {
@@ -31,8 +31,6 @@ interface UseA2UISurfaceResult {
dismissedSurfaceIds: Set<string>;
/** Dismiss a surface by ID */
dismissSurface: (surfaceId: string) => void;
/** Dispatch an action back to the main process */
dispatchAction: (action: A2UIClientAction) => void;
/** Update a local data binding (for form inputs) */
updateLocalData: (surfaceId: string, path: string, value: unknown) => void;
/** Get the data model for a surface */
@@ -148,10 +146,6 @@ export function useA2UISurface(input: UseA2UISurfaceInput): UseA2UISurfaceResult
});
}, []);
const dispatchAction = useCallback((action: A2UIClientAction) => {
window.electronAPI?.chat.dispatchA2UIAction?.(action);
}, []);
const updateLocalData = useCallback((surfaceId: string, path: string, value: unknown) => {
managerRef.current.updateLocalData(surfaceId, path, value);
}, []);
@@ -183,7 +177,6 @@ export function useA2UISurface(input: UseA2UISurfaceInput): UseA2UISurfaceResult
latestSurfaceId,
dismissedSurfaceIds,
dismissSurface,
dispatchAction,
updateLocalData,
getDataModel,
clearSurfaces,

View File

@@ -59,7 +59,6 @@ export const AssistantSidebar: React.FC = () => {
latestSurfaceId,
dismissedSurfaceIds,
dismissSurface,
dispatchAction,
updateLocalData,
} = useA2UISurface({ conversationId });
@@ -281,7 +280,7 @@ export const AssistantSidebar: React.FC = () => {
latestSurfaceId={latestSurfaceId}
dismissedSurfaceIds={dismissedSurfaceIds}
onSurfaceDismiss={dismissSurface}
onSurfaceAction={dispatchAction}
onSurfaceAction={(a) => handleAssistantAction(a.action, a.payload)}
onSurfaceDataChange={updateLocalData}
currentTurnIndex={currentTurnIndex}
/>

View File

@@ -64,7 +64,6 @@ export const ChatPanel: React.FC<ChatPanelProps> = ({ conversationId }) => {
latestSurfaceId,
dismissedSurfaceIds,
dismissSurface,
dispatchAction,
updateLocalData,
replayFromMessages,
} = useA2UISurface({ conversationId });
@@ -387,7 +386,7 @@ export const ChatPanel: React.FC<ChatPanelProps> = ({ conversationId }) => {
latestSurfaceId={latestSurfaceId}
dismissedSurfaceIds={dismissedSurfaceIds}
onSurfaceDismiss={dismissSurface}
onSurfaceAction={dispatchAction}
onSurfaceAction={(a) => handleAssistantAction(a.action, a.payload)}
onSurfaceDataChange={updateLocalData}
currentTurnIndex={currentTurnIndex}
/>