12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879(******************************************************************************)(* *)(* Copyright (c) 2026 Epure Team *)(* All rights reserved. *)(* *)(******************************************************************************)(** Agentic backend module type implementation. *)openBackend_typestypeconfig_check_result=|Config_valid|Config_invalidofstring|Config_check_unsupportedofstringmoduletypeS=sigvalid:stringvalname:stringvalmodels:stringlistvalmodels_probe:(sw:Eio.Switch.t->env:Eio_unix.Stdenv.base->(stringlist,string)result)optionvalavailable:sw:Eio.Switch.t->env:Eio_unix.Stdenv.base->boolvalsupports_session_resume:boolvalnative_json_schema_output:boolvalis_resume_failure:task_result->boolvalcheck_project_config:sw:Eio.Switch.t->env:Eio_unix.Stdenv.base->project_dir:string->setup_result:Backend_config_writer.setup_result->config_check_resultvalrun_task:sw:Eio.Switch.t->env:Eio_unix.Stdenv.base->?on_raw_line:(string->unit)->task_spec->task_resultendtypet=(moduleS)letid(moduleB:S)=B.idletname(moduleB:S)=B.nameletmodels(moduleB:S)=B.modelsletmodels_probe(moduleB:S)=B.models_probeletavailable~sw~env(moduleB:S)=B.available~sw~envletsupports_session_resume(moduleB:S)=B.supports_session_resumeletnative_json_schema_output(moduleB:S)=B.native_json_schema_outputletis_resume_failure(moduleB:S)result=B.is_resume_failureresultletcheck_project_config~sw~env~project_dir~setup_result(moduleB:S)=B.check_project_config~sw~env~project_dir~setup_resultletrun_task~sw~env?on_raw_line(moduleB:S)spec=B.run_task~sw~env?on_raw_linespecletrun_task_with_ctxt~sw~env?on_raw_linebackendrequest=letresult=run_task~sw~env?on_raw_linebackendrequest.specinBackend_types.make_task_response~result~ctxt:request.ctxt()