/** * The form a paused run is answered with. * * Core's human-input node collects a real answer — a sentence, a secret, one * choice, several choices — and resumes the run with it. The widget previously * rendered only `action.elements` as approve/reject buttons, so any prompt that * was not a confirmation showed its question with a dead control underneath and * could never be answered. * * Validation and the submitted `formData` shape are mirrored from Core's own * `useHumanInputForm`, deliberately, so an answer accepted here is accepted by * the engine: * * textInput / enterSecret -> { value: string } * singleSelect -> { value: custom.trim() || selected } * multiSelect -> { value: string[] } (custom appended) * * `fileUpload` is not implemented. Core's form puts File objects on * `formData.files`, which cannot survive the JSON prediction body the widget * resumes through — it would serialize to `{}` and the run would resume with no * files at all. It degrades to an explicit message rather than a control that * silently discards the upload. * * Direction is `auto` on every input: these prompts are frequently Arabic, and * the widget has no locale of its own to consult. */ import type { HumanInputActionConfig, HumanInputFormData, HumanInteractionType } from '@/widget/types'; export type HumanInputFormProps = { interactionType: HumanInteractionType; config?: HumanInputActionConfig; /** Free-text questions for a clarification prompt. */ questions?: Array<{ question: string; }>; disabled?: boolean; sendButtonColor?: string; textColor?: string; onSubmit: (formData: HumanInputFormData) => void; onCancel?: () => void; }; export declare const HumanInputForm: (props: HumanInputFormProps) => import("solid-js").JSX.Element;