<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
import { recordAgentActivity } from '@agent/api';
import { useWorkflowStore } from '@agent/state/workflows';
import { useCallback, useMemo } from '@wordpress/element';

export const useWhenFinishedToolProps = () => {
	const { whenFinishedToolProps, setWhenFinishedToolProps, getWorkflow } =
		useWorkflowStore();

	const onConfirm = useCallback(
		(props = {}) => {
			if (!whenFinishedToolProps) return;
			const workflow = getWorkflow();
			recordAgentActivity({
				sessionId: workflow?.sessionId,
				action: 'workflow_tool_event',
				value: { trigger: 'confirm', workflow: workflow?.id },
			});
			window.dispatchEvent(
				new CustomEvent('extendify-agent:workflow-confirm', {
					detail: { ...props, whenFinishedToolProps },
				}),
			);
		},
		[whenFinishedToolProps, getWorkflow],
	);

	const onCancel = useCallback(() => {
		if (!whenFinishedToolProps) return;
		const workflow = getWorkflow();
		recordAgentActivity({
			sessionId: workflow?.sessionId,
			action: 'workflow_tool_event',
			value: { trigger: 'cancel', workflow: workflow?.id },
		});
		window.dispatchEvent(
			new CustomEvent('extendify-agent:workflow-cancel', {
				detail: { whenFinishedToolProps },
			}),
		);
	}, [whenFinishedToolProps, getWorkflow]);

	const onRetry = useCallback(() => {
		if (!whenFinishedToolProps) return;
		setWhenFinishedToolProps(null);
		const workflow = getWorkflow();
		recordAgentActivity({
			sessionId: workflow?.sessionId,
			action: 'workflow_tool_event',
			value: { trigger: 'retry', workflow: workflow?.id },
		});
		window.dispatchEvent(
			new CustomEvent('extendify-agent:workflow-retry', {
				detail: { whenFinishedToolProps },
			}),
		);
	}, [whenFinishedToolProps, setWhenFinishedToolProps, getWorkflow]);

	const onLoad = useCallback(() => {
		if (!whenFinishedToolProps) return;
		const c = Array.from(
			document.querySelectorAll(
				'#extendify-agent-chat-scroll-area div:last-child',
			),
		)?.at(-1);
		c?.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
	}, [whenFinishedToolProps]);

	return useMemo(() => {
		if (!whenFinishedToolProps) return null;
		return { ...whenFinishedToolProps, onConfirm, onCancel, onRetry, onLoad };
	}, [whenFinishedToolProps, onConfirm, onCancel, onRetry, onLoad]);
};
