// Optional browser agent support. Stages a visible draft; never sends it.
export function registerContactDraft(host:HTMLElement,signal:AbortSignal){
 type Tool={name:string;title:string;description:string;inputSchema:object;annotations:object;execute:(input:unknown)=>Promise<object>};
 const context=(document as Document&{modelContext?:{registerTool:(tool:Tool,options:{signal:AbortSignal})=>void|Promise<void>}}).modelContext;
 if(!context?.registerTool)return;
 try{void Promise.resolve(context.registerTool({name:'prepare_cas7_contact_request',title:'Prepare a Cas7 contact request',description:'Fill the visible Cas7 inquiry form for review. This stages a draft only; the visitor must press Send my request to submit it.',inputSchema:{type:'object',properties:Object.fromEntries(['name','email','company','phone','message'].map(k=>[k,{type:'string',maxLength:k==='message'?5000:k==='email'?254:120}])),required:['name','email','company','message'],additionalProperties:false},annotations:{readOnlyHint:false,untrustedContentHint:false},async execute(input){if(!input||typeof input!=='object')throw new Error('Provide contact details.');const data=input as Record<string,unknown>;const allowed=['name','email','company','phone','message'];if(Object.keys(data).some(k=>!allowed.includes(k)))throw new Error('Unexpected field.');for(const k of ['name','email','company','message'])if(typeof data[k]!=='string'||!(data[k] as string).trim())throw new Error('Missing required field.');for(const [k,v]of Object.entries(data))if(typeof v!=='string'||v.length>(k==='message'?5000:k==='email'?254:120))throw new Error('Invalid field length.');if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(data.email as string)||(data.message as string).trim().length<10)throw new Error('Invalid email or message.');const form=host.querySelector('form');if(!form)throw new Error('The contact form is not available.');for(const[k,v]of Object.entries(data)){const field=form.elements.namedItem(k) as HTMLInputElement|HTMLTextAreaElement|null;if(field){field.value=v as string;field.dispatchEvent(new Event('input',{bubbles:true}));}}form.scrollIntoView({behavior:'smooth',block:'center'});return {status:'draft_ready',submitted:false,nextStep:'Review the visible form and press Send my request.'};}},{signal})).catch(()=>{});}catch{/* Browsers without this optional API use the normal form. */}
}
