@mieweb/q 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4 @@
1
+ "use strict";var We=Object.create;var ue=Object.defineProperty;var Ye=Object.getOwnPropertyDescriptor;var Qe=Object.getOwnPropertyNames;var Ge=Object.getPrototypeOf,Ze=Object.prototype.hasOwnProperty;var Me=(e,n,t,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let a of Qe(n))!Ze.call(e,a)&&a!==t&&ue(e,a,{get:()=>n[a],enumerable:!(i=Ye(n,a))||i.enumerable});return e};var Xe=(e,n,t)=>(t=e!=null?We(Ge(e)):{},Me(n||!e||!e.__esModule?ue(t,"default",{value:e,enumerable:!0}):t,e));const r=require("react/jsx-runtime"),S=require("react"),le=require("js-yaml"),z=require("lucide-react"),T=require("@mieweb/ui"),et=require("@mieweb/forms-renderer"),tt=require("@monaco-editor/react"),nt="mieforms-v1.0",rt="Agent Configuration",it=[{id:"sec-basic",fieldType:"section",title:"Basic Info",fields:[{id:"_id",fieldType:"text",question:"Config ID (_id)",answer:"",required:!1},{id:"name",fieldType:"text",question:"Name",answer:"New Agent Config",required:!1},{id:"timezone",fieldType:"dropdown",question:"Timezone",answer:"America/New_York",required:!1,options:[{id:"tz-ny",label:"America/New_York",value:"America/New_York"},{id:"tz-chi",label:"America/Chicago",value:"America/Chicago"},{id:"tz-den",label:"America/Denver",value:"America/Denver"},{id:"tz-la",label:"America/Los_Angeles",value:"America/Los_Angeles"},{id:"tz-hon",label:"Pacific/Honolulu",value:"Pacific/Honolulu"},{id:"tz-anc",label:"America/Anchorage",value:"America/Anchorage"},{id:"tz-phx",label:"America/Phoenix",value:"America/Phoenix"}]},{id:"description",fieldType:"text",question:"Description",answer:"Agent Assistant Description",required:!1}]},{id:"sec-telephony",fieldType:"section",title:"Telephony Settings",fields:[{id:"twilio.phoneNumber",fieldType:"text",question:"Twilio Phone Number",answer:"",required:!1},{id:"twilio.accountSid",fieldType:"text",question:"Twilio Account SID",answer:"",required:!1},{id:"twilio.authToken",fieldType:"text",question:"Twilio Auth Token",answer:"",required:!1}]},{id:"sec-office",fieldType:"section",title:"Office Hours",fields:[{id:"officeOpeningTime",fieldType:"dropdown",question:"Opening Time (Hour)",answer:"8",required:!1,configType:"number",options:[{id:"h0",label:"0:00",value:"0"},{id:"h1",label:"1:00",value:"1"},{id:"h2",label:"2:00",value:"2"},{id:"h3",label:"3:00",value:"3"},{id:"h4",label:"4:00",value:"4"},{id:"h5",label:"5:00",value:"5"},{id:"h6",label:"6:00",value:"6"},{id:"h7",label:"7:00",value:"7"},{id:"h8",label:"8:00",value:"8"},{id:"h9",label:"9:00",value:"9"},{id:"h10",label:"10:00",value:"10"},{id:"h11",label:"11:00",value:"11"},{id:"h12",label:"12:00",value:"12"},{id:"h13",label:"13:00",value:"13"},{id:"h14",label:"14:00",value:"14"},{id:"h15",label:"15:00",value:"15"},{id:"h16",label:"16:00",value:"16"},{id:"h17",label:"17:00",value:"17"},{id:"h18",label:"18:00",value:"18"},{id:"h19",label:"19:00",value:"19"},{id:"h20",label:"20:00",value:"20"},{id:"h21",label:"21:00",value:"21"},{id:"h22",label:"22:00",value:"22"},{id:"h23",label:"23:00",value:"23"}]},{id:"officeClosingTime",fieldType:"dropdown",question:"Closing Time (Hour)",answer:"17",required:!1,configType:"number",options:[{id:"h0",label:"0:00",value:"0"},{id:"h1",label:"1:00",value:"1"},{id:"h2",label:"2:00",value:"2"},{id:"h3",label:"3:00",value:"3"},{id:"h4",label:"4:00",value:"4"},{id:"h5",label:"5:00",value:"5"},{id:"h6",label:"6:00",value:"6"},{id:"h7",label:"7:00",value:"7"},{id:"h8",label:"8:00",value:"8"},{id:"h9",label:"9:00",value:"9"},{id:"h10",label:"10:00",value:"10"},{id:"h11",label:"11:00",value:"11"},{id:"h12",label:"12:00",value:"12"},{id:"h13",label:"13:00",value:"13"},{id:"h14",label:"14:00",value:"14"},{id:"h15",label:"15:00",value:"15"},{id:"h16",label:"16:00",value:"16"},{id:"h17",label:"17:00",value:"17"},{id:"h18",label:"18:00",value:"18"},{id:"h19",label:"19:00",value:"19"},{id:"h20",label:"20:00",value:"20"},{id:"h21",label:"21:00",value:"21"},{id:"h22",label:"22:00",value:"22"},{id:"h23",label:"23:00",value:"23"}]},{id:"afterHoursNotice",fieldType:"longtext",question:"After Hours Notice",answer:"Our office is currently closed.",required:!1},{id:"officeHoursHumanNumber",fieldType:"text",question:"Human Handover Number",answer:"",required:!1}]},{id:"sec-webchart",fieldType:"section",title:"WebChart Integration",fields:[{id:"webchart.url",fieldType:"text",question:"WebChart URL",answer:"",required:!1},{id:"webchart.username",fieldType:"text",question:"WebChart Username",answer:"",required:!1},{id:"webchart.password",fieldType:"text",question:"WebChart Password",answer:"",required:!1},{id:"defaultServiceLocation",fieldType:"text",question:"Default Service Location",answer:"",required:!1},{id:"defaultPatientId",fieldType:"text",question:"Default Patient ID",answer:"",required:!1,configType:"number"},{id:"transcript_doc_type",fieldType:"text",question:"Transcript Doc Type",answer:"",required:!1},{id:"defaultPhysicianId",fieldType:"text",question:"Default Physician ID",answer:"",required:!1,configType:"number"},{id:"userId",fieldType:"text",question:"User ID",answer:"",required:!1},{id:"visitType",fieldType:"text",question:"Visit Type",answer:"",required:!1}]},{id:"sec-audio",fieldType:"section",title:"Audio Configuration",fields:[{id:"elevenLabsPronunciationDictionaries",fieldType:"text",question:"ElevenLabs Pronunciation Dictionary IDs (comma-separated)",answer:"",required:!1,configTransform:"elevenLabsDictIds"},{id:"elevenLabsPronunciationDictionaries__versions",fieldType:"text",question:"ElevenLabs Pronunciation Dictionary Version IDs (comma-separated)",answer:"",required:!1,configTransform:"elevenLabsDictVersions"}]},{id:"sec-agent",fieldType:"section",title:"Agent Specific Info",fields:[{id:"welcome",fieldType:"longtext",question:"Welcome Message",answer:"Thank you for calling. How can I help you today?",required:!1},{id:"systemPrompt",fieldType:"longtext",question:"System Prompt",answer:"You are a helpful AI assistant.",required:!1},{id:"disabledGenericTools",fieldType:"check",question:"Enabled Generic Tools",answer:[],required:!1,configTransform:"genericToolsInvert",options:[{id:"gt-hangup",label:"force_hangup_bad_call",value:"force_hangup_bad_call"},{id:"gt-birthdate",label:"validate_birth_date",value:"validate_birth_date"},{id:"gt-goodbye",label:"thanks_for_calling_goodbye",value:"thanks_for_calling_goodbye"},{id:"gt-human",label:"connect_to_a_human",value:"connect_to_a_human"},{id:"gt-multiple",label:"handle_multiple_patients",value:"handle_multiple_patients"},{id:"gt-schedule",label:"schedule_call_later",value:"schedule_call_later"},{id:"gt-objective",label:"mark_objective_complete",value:"mark_objective_complete"}]}]}],Z={schemaType:nt,title:rt,fields:it};function be(e){const n=[];for(const t of e||[])t.fieldType==="section"&&Array.isArray(t.fields)?n.push(...be(t.fields)):n.push(t);return n}function st(e,n){return n.split(".").reduce(function(t,i){return t?t[i]:void 0},e)}function xe(e,n){const t=be((n||Z).fields),i=[];for(const a of t){if(!a.id||a.id.startsWith("sec-")||!a.required)continue;const s=st(e,a.id);(s==null||s==="")&&i.push(`${a.text||a.question||a.id} is required`)}return i}function ie(e){return le.dump(e,{lineWidth:-1,forceQuotes:!1,quotingType:'"',noCompatMode:!0,styles:{"!!null":"empty"},replacer:function(n,t){return t===""?null:t}})}function at(e){return le.load(e)}function we(e,n,t,i="yaml",a=""){const s=xe(e);if(s.length>0){alert(`Please fix the following errors before downloading:
2
+
3
+ - ${s.join(`
4
+ - `)}`);return}const l=i==="json",u=l?a:n,c=l?"application/json":"text/yaml",w=l?"config.json":"config.yaml";if(t){t(u,i);return}const N=new Blob([u],{type:c}),f=URL.createObjectURL(N),j=document.createElement("a");j.href=f,j.download=w,document.body.appendChild(j),j.click(),document.body.removeChild(j),URL.revokeObjectURL(f)}async function je(e){try{await navigator.clipboard.writeText(e),alert("Copied to clipboard!")}catch(n){console.error("Clipboard failed:",n),alert("Failed to copy to clipboard. Please check your browser permissions or try again.")}}let ne;const ot=new Uint8Array(16);function lt(){if(!ne&&(ne=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!ne))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return ne(ot)}const U=[];for(let e=0;e<256;++e)U.push((e+256).toString(16).slice(1));function ct(e,n=0){return U[e[n+0]]+U[e[n+1]]+U[e[n+2]]+U[e[n+3]]+"-"+U[e[n+4]]+U[e[n+5]]+"-"+U[e[n+6]]+U[e[n+7]]+"-"+U[e[n+8]]+U[e[n+9]]+"-"+U[e[n+10]]+U[e[n+11]]+U[e[n+12]]+U[e[n+13]]+U[e[n+14]]+U[e[n+15]]}const ut=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),de={randomUUID:ut};function dt(e,n,t){if(de.randomUUID&&!e)return de.randomUUID();e=e||{};const i=e.random||(e.rng||lt)();return i[6]=i[6]&15|64,i[8]=i[8]&63|128,ct(i)}function D(e,n,t){const i=n.split(".");let a=e;for(let s=0;s<i.length-1;s++)(!a[i[s]]||typeof a[i[s]]!="object")&&(a[i[s]]={}),a=a[i[s]];a[i[i.length-1]]=t}function Q(e,n){const t=n.split(".");let i=e;for(const a of t){if(i==null)return;i=i[a]}return i}function Te(e,n){if(n==="number"){if(e===""||e==null)return"";const t=Number(e);return isNaN(t)?"":t}return n==="boolean"?typeof e=="boolean"?e:e==="true"||e===!0:e??""}function H(e){return e.id}function Ce(e,n){const t=n.split(".");let i=e;for(let a=0;a<t.length-1;a++){if(i==null||typeof i!="object")return;i=i[t[a]]}i!=null&&typeof i=="object"&&delete i[t[t.length-1]]}function fe(e,n,t){const i=n.split("."),a=t.split(".");if(i.length===1&&a.length===1){const u={};for(const c of Object.keys(e))c===i[0]?u[a[0]]=e[c]:u[c]=e[c];return u}if(i.length===a.length&&i.slice(0,-1).join(".")===a.slice(0,-1).join(".")){const u=structuredClone(e);let c=u;for(let p=0;p<i.length-1;p++){if(c[i[p]]==null||typeof c[i[p]]!="object")return e;c=c[i[p]]}const w=i[i.length-1],N=a[a.length-1],f={};for(const p of Object.keys(c))p===w?f[N]=c[p]:f[p]=c[p];let j=u;for(let p=0;p<i.length-2;p++)j=j[i[p]];return j[i[i.length-2]]=f,u}const s=structuredClone(e),l=Q(s,n);return Ce(s,n),l!==void 0&&D(s,t,l),s}function se(e,n){const t={};for(const i of Object.keys(e||{})){if(!n&&(i==="tools"||i==="mcp_servers"))continue;const a=n?n+"."+i:i,s=e[i];s&&typeof s=="object"&&!Array.isArray(s)?Object.assign(t,se(s,a)):t[a]=s}return t}function ae(e,n,t){for(const i of e||[]){if(i.id===n)return i.id=t,!0;if(i.fields&&ae(i.fields,n,t))return!0}return!1}function Se(e,n){if(!Array.isArray(e))return!1;const t=e.findIndex(function(i){return i.id===n});if(t!==-1)return e.splice(t,1),!0;for(const i of e)if(i.fields&&Se(i.fields,n))return!0;return!1}function Ne(e,n){for(const t of e||[])if(t.id===n||t.fields&&Ne(t.fields,n))return!0;return!1}function ft(e){return e.split(".").pop().replace(/([A-Z])/g," $1").replace(/^(.)/,function(t){return t.toUpperCase()}).trim()}function mt(e,n,t){const i=typeof t=="boolean"?"dropdown":"text",a=typeof t=="number"?"number":void 0,s={id:n,fieldType:i,text:ft(n),required:!1};a&&(s.configType=a);const l=n.includes(".")?n.split(".").slice(0,-1).join("."):null;if(l){for(const c of e.fields||[])if(c.fieldType==="section"&&Array.isArray(c.fields)&&!M(c)&&c.fields.some(function(N){return N.id&&N.id.startsWith(l+".")})){c.fields.push(s);return}}const u=(e.fields||[]).filter(function(c){return c.fieldType==="section"&&!M(c)});if(u.length>0){const c=u[u.length-1];c.fields=c.fields||[],c.fields.push(s)}else e.fields=e.fields||[],e.fields.push(s)}function ht(e,n,t){const i=se(e),a=se(n),s=new Set(Object.keys(i)),l=new Set(Object.keys(a)),u=[...s].filter(function(A){return!l.has(A)}),c=[...l].filter(function(A){return!s.has(A)});if(u.length===0&&c.length===0)return t;const w=structuredClone(t),N=new Set,f=new Set;if(u.length>0&&c.length>0){for(const o of u){const v=JSON.stringify(i[o]);for(const b of c)if(!N.has(b)&&JSON.stringify(a[b])===v){ae(w.fields,o,b),N.add(b),f.add(o);break}}const A=u.filter(function(o){return!f.has(o)}),d=c.filter(function(o){return!N.has(o)});A.length===1&&d.length===1&&(ae(w.fields,A[0],d[0]),N.add(d[0]),f.add(A[0]))}const j=c.filter(function(A){return!N.has(A)});for(const A of j)Ne(w.fields,A)||mt(w,A,a[A]);const p=u.filter(function(A){return!f.has(A)});for(const A of p)Se(w.fields,A);return w}function oe(e){const n={};for(const t of e||[]){if(t.fieldType==="section"&&Array.isArray(t.fields)){if(M(t))continue;Object.assign(n,oe(t.fields));continue}t.id&&(n[t.id]=t.text||"")}return n}function pt(e,n,t){const i=oe(e==null?void 0:e.fields),a=oe(n==null?void 0:n.fields),s=new Set(Object.keys(i)),l=new Set(Object.keys(a)),u=[...s].filter(function(d){return!l.has(d)}),c=[...l].filter(function(d){return!s.has(d)});if(u.length===0&&c.length===0)return{config:t,renames:[]};let w=t;const N=[],f=new Set,j=new Set;if(u.length>0&&c.length>0){for(const v of u){const b=i[v];if(b){for(const h of c)if(!f.has(h)&&a[h]===b){w=fe(w,v,h),N.push({oldId:v,newId:h}),f.add(h),j.add(v);break}}}const d=u.filter(function(v){return!j.has(v)}),o=c.filter(function(v){return!f.has(v)});d.length===1&&o.length===1&&(w=fe(w,d[0],o[0]),N.push({oldId:d[0],newId:o[0]}),f.add(o[0]),j.add(d[0]))}const p=c.filter(function(d){return!f.has(d)});if(p.length>0){w===t&&(w=structuredClone(t));for(const d of p)Q(w,d)===void 0&&D(w,d,"")}const A=u.filter(function(d){return!j.has(d)});if(A.length>0){w===t&&(w=structuredClone(t));for(const d of A)Ce(w,d)}return{config:w,renames:N}}function ce(e){const n=[];for(const t of e||[])M(t)||(t.fieldType==="section"&&Array.isArray(t.fields)?n.push(...ce(t.fields)):n.push(t));return n}function re(e){const n=e.answer;if(n==null)return"";if(e.fieldType==="dropdown"&&e.options){const t=e.options.find(i=>i.id===n||i.value===n);if(t)return t.value}return n}function me(e){const n=e.answer;return Array.isArray(n)?e.options?n.map(t=>{const i=e.options.find(a=>a.id===t||a.value===t);return i?i.value:t}):n:[]}function Ae(e){return e.options?e.options.map(n=>n.value):[]}function M(e){return e.fieldType==="section"&&/^sec-tool-\d+$/.test(e.id)}function ke(e){return(e||[]).filter(n=>M(n))}function X(e,n){const t=(e.fields||[]).find(i=>i.id.endsWith("-"+n));return t?re(t):""}function vt(e,n){const t=ke(e.fields||[]),i=[];for(const a of t){const s=X(a,"name"),l=X(a,"description"),u=X(a,"endpoint"),c=X(a,"method"),w=X(a,"params");let N;try{N=w?JSON.parse(w):{type:"object",properties:{},required:[]}}catch{N={type:"object",properties:{},required:[]}}const f={name:s,description:l,inputSchema:N};u&&(f.endpoint=u),c&&c!=="GET"&&(f.method=c),i.push(f)}n.tools=i}function _e(e,n){const t=structuredClone(n),i=ce(e.fields||[]);ke(e.fields||[]).length>0&&vt(e,t);for(const s of i){const l=s.configTransform;if(l==="genericToolsInvert"){const w=me(s),N=Ae(s),f=H(s);D(t,f,N.filter(j=>!w.includes(j)));continue}if(l==="elevenLabsDictIds"){const w=(re(s)||"").split(",").map(p=>p.trim()).filter(Boolean),N=i.find(p=>p.configTransform==="elevenLabsDictVersions"),f=N?(re(N)||"").split(",").map(p=>p.trim()).filter(Boolean):[],j=H(s);D(t,j,w.map((p,A)=>({pronunciation_dictionary_id:p,version_id:f[A]||""})));continue}if(l==="elevenLabsDictVersions")continue;const u=H(s),c=s.configType||"string";s.fieldType==="check"?D(t,u,me(s)):D(t,u,Te(re(s),c))}return t}function G(e,n){const t=structuredClone(n);return qe(t.fields,e),t}function qe(e,n){for(const t of e||[]){if(M(t))continue;if(t.fieldType==="section"&&Array.isArray(t.fields)){qe(t.fields,n);continue}const i=t.configTransform;if(i==="genericToolsInvert"){const l=H(t),u=Q(n,l)||[],N=Ae(t).filter(f=>!u.includes(f)).map(function(f){const j=(t.options||[]).find(function(p){return p.value===f});return j?j.id:f});t.selected=N,t.answer=N;continue}if(i==="elevenLabsDictIds"){const l=H(t),u=Q(n,l)||[];t.answer=u.map(c=>c.pronunciation_dictionary_id).join(", ");continue}if(i==="elevenLabsDictVersions"){const l=H(t).replace(/__versions$/,""),u=Q(n,l)||[];t.answer=u.map(c=>c.version_id).join(", ");continue}const a=H(t),s=Q(n,a);if(t.fieldType==="check"){const l=Array.isArray(s)?s:[],u=t.options?l.map(function(c){const w=t.options.find(function(N){return N.value===c||N.id===c});return w?w.id:c}):l;t.selected=u,t.answer=u;continue}if(t.fieldType==="dropdown"&&t.options){const l=t.options.find(u=>u.value===String(s??""));t.selected=l?l.id:null,t.answer=l?l.value:String(s??"");continue}t.answer=s!=null?String(s):""}}function Ie(e){const n={_id:dt(),tools:[]},t=ce((e==null?void 0:e.fields)||[]);for(const i of t){if(i.id==="_id")continue;const a=i.configTransform;if(a==="genericToolsInvert"){D(n,H(i),[]);continue}if(a==="elevenLabsDictIds"){D(n,H(i),[]);continue}if(a==="elevenLabsDictVersions")continue;const s=H(i),l=i.configType||"string";i.fieldType==="check"?D(n,s,Array.isArray(i.answer)?i.answer:[]):D(n,s,Te(i.answer??"",l))}return n}function gt(e){if(!Array.isArray(e))return e;if(e.length>0&&e[0]&&typeof e[0]=="object"&&"value"in e[0]){var n=e.map(function(t){return t.value});return n.length===1?n[0]:n}return e}function Ee(e,n){n||(n={});for(var t=0;t<(e||[]).length;t++){var i=e[t];i.id&&i.answer!==void 0&&(n[i.id]=gt(i.answer)),i.fields&&Ee(i.fields,n)}return n}function Re(e,n){for(var t=0;t<(e||[]).length;t++){var i=e[t];i.id&&n[i.id]!==void 0&&(i.answer=n[i.id]),i.fields&&Re(i.fields,n)}}function Pe({config:e,schema:n,onConfigChange:t}){const i=n||Z,a=S.useRef(null),s=S.useRef(null),l=S.useRef(e),u=S.useRef(i),c=S.useRef(t);l.current=e,u.current=i,c.current=t;const w=S.useMemo(()=>G(e,i),[e,i]),N=S.useCallback(function(){if(a.current)try{var f=a.current.getResponse();if(!f)return;var j=f.fields||f;if(!Array.isArray(j)&&typeof j=="object"&&!j.length&&(j=f.fields),!j)return;var p=Ee(Array.isArray(j)?j:[j]);if(Object.keys(p).length===0)return;var A=structuredClone(u.current);Re(A.fields,p);var d=_e(A,l.current);c.current(d)}catch(o){console.error("[FormBuilder] syncConfig error:",o)}},[]);return S.useEffect(function(){var f=s.current;if(!f)return;var j=null;function p(){clearTimeout(j),j=setTimeout(N,50)}return f.addEventListener("input",p),f.addEventListener("change",p),f.addEventListener("click",p),function(){clearTimeout(j),f.removeEventListener("input",p),f.removeEventListener("change",p),f.removeEventListener("click",p)}},[N]),r.jsxs("div",{ref:s,className:"max-w-6xl mx-auto p-6 rounded-lg shadow",style:{background:"var(--mieweb-card)",borderRadius:"var(--mieweb-radius-lg, 0.75rem)"},children:[r.jsx("h2",{className:"text-2xl font-bold mb-6",style:{color:"var(--mieweb-foreground)"},children:"General Configuration"}),r.jsx(et.QuestionnaireRenderer,{ref:a,formData:w,hideUnsupportedFields:!0})]})}function Oe({yamlOutput:e,jsonOutput:n,editorMode:t,onEditorModeChange:i,onEditorChange:a,onDownload:s}){return r.jsxs(T.Card,{padding:"none",className:"h-[calc(100vh-10rem)] max-w-full overflow-hidden flex flex-col",children:[r.jsxs("div",{className:"p-2 border-b flex justify-between items-center flex-shrink-0",style:{background:"var(--mieweb-muted)"},children:[r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx("div",{className:"flex rounded gap-1",children:["yaml","json"].map(function(l){var u=t===l;return r.jsx("button",{onClick:function(){i(l)},className:"px-3 h-7 text-sm rounded transition-all "+(u?"":"ivr-hover"),style:u?{background:"var(--mieweb-primary-700, #1786b3)",color:"var(--mieweb-primary-foreground, #fff)",fontWeight:600}:{background:"transparent",color:"var(--mieweb-neutral-600, #525252)"},children:l.toUpperCase()},l)})}),r.jsxs("span",{className:"hidden sm:block text-sm font-medium",style:{color:"var(--mieweb-muted-foreground)"},children:["config.",t]})]}),r.jsxs("div",{className:"flex items-center gap-1",children:[s&&r.jsx(T.Button,{variant:"primary",size:"sm",onClick:function(){s(t)},leftIcon:r.jsx(z.Download,{className:"h-4 w-4"}),"aria-label":`Download config.${t}`,children:r.jsxs("span",{className:"hidden sm:inline",children:["Download .",t]})}),r.jsx(T.Button,{variant:"ghost",size:"icon",onClick:function(){je(t==="yaml"?e:n)},"aria-label":"Copy to clipboard",className:"ivr-hover h-8 w-8",style:{color:"var(--mieweb-muted-foreground)"},children:r.jsx(z.Copy,{className:"h-4 w-4"})})]})]}),r.jsx(tt,{height:"100%",language:t,value:t==="yaml"?e:n,onChange:function(l){a(l,t)},options:{minimap:{enabled:!1},fontSize:14}},t)]})}const yt=[{value:"string",label:"String"},{value:"number",label:"Number"},{value:"boolean",label:"Boolean"},{value:"object",label:"Object"},{value:"array",label:"Array"}],bt=[{value:"string",label:"String"},{value:"number",label:"Number"},{value:"boolean",label:"Boolean"},{value:"object",label:"Object"}],he=new Set(["string","number"]);function pe({value:e,onChange:n,size:t,...i}){const[a,s]=S.useState(e);S.useEffect(function(){s(e)},[e]);function l(){if(a!==e){var c=n(a);c===!1&&s(e)}}function u(c){c.key==="Enter"&&c.target.blur()}return r.jsx(T.Input,{...i,size:t||"sm",value:a,onChange:function(c){s(c.target.value)},onBlur:l,onKeyDown:u})}function ve({values:e,onChange:n}){const[t,i]=S.useState((e||[]).join(", "));S.useEffect(function(){i((e||[]).join(", "))},[e]);function a(s){var l=s.split(",").map(function(u){return u.trim()}).filter(function(u){return u!==""});n(l)}return r.jsx(T.Input,{size:"sm",value:t,onChange:function(s){i(s.target.value)},onBlur:function(){a(t)},onKeyDown:function(s){s.key==="Enter"&&s.target.blur()},placeholder:"e.g. dev, staging, prod"})}function ze({config:e,onConfigChange:n}){var A;function t(d){var o=structuredClone(e);d(o),n(o)}function i(){t(function(d){d.tools||(d.tools=[]);for(var o=1;d.tools.some(function(v){return v.name==="tool_"+o});)o++;d.tools.push({name:"tool_"+o,description:"Description of the tool",inputSchema:{type:"object",properties:{},required:[]}})})}function a(d){t(function(o){o.tools.splice(d,1)})}function s(d,o,v){if(o==="name"){var b=e.tools[d].name;if(v!==b){var h=e.tools.some(function(x,L){return L!==d&&x.name===v});if(h)return alert('Tool name "'+v+'" already exists.'),!1}}return t(function(x){x.tools[d].name,x.tools[d][o]=v}),!0}function l(d){t(function(o){var v=o.tools[d];v.inputSchema||(v.inputSchema={type:"object",properties:{},required:[]}),v.inputSchema.properties||(v.inputSchema.properties={});for(var b=1;v.inputSchema.properties["param_"+b];)b++;v.inputSchema.properties["param_"+b]={type:"string",description:"Parameter description"}})}function u(d,o,v,b){if(o!==v){var h=e.tools[d];if(h.inputSchema.properties[v])return alert('Parameter "'+v+'" already exists.'),!1}return t(function(x){var L=x.tools[d],F=L.inputSchema.properties;if(o!==v){var V={};Object.keys(F).forEach(function(g){V[g===o?v:g]=g===o?b:F[g]}),L.inputSchema.properties=V,L.inputSchema.required&&L.inputSchema.required.includes(o)&&(L.inputSchema.required=L.inputSchema.required.map(function(g){return g===o?v:g}))}else F[o]=b}),!0}function c(d,o){t(function(v){var b=v.tools[d];delete b.inputSchema.properties[o],b.inputSchema.required&&(b.inputSchema.required=b.inputSchema.required.filter(function(h){return h!==o}))})}function w(d,o){t(function(v){var b=v.tools[d];b.inputSchema.required||(b.inputSchema.required=[]),b.inputSchema.required.includes(o)?b.inputSchema.required=b.inputSchema.required.filter(function(h){return h!==o}):b.inputSchema.required.push(o)})}function N(d,o,v,b){var h={type:b,description:v.description||""};v.default!==void 0&&(h.default=v.default),b==="array"&&(h.items=v.items||{type:"string"}),he.has(b)&&v.enum&&(h.enum=v.enum),u(d,o,o,h)}function f(d,o,v,b){u(d,o,o,{...v,items:{type:b}})}function j(d,o,v,b){var h={...v};b?h.enum=[]:delete h.enum,u(d,o,o,h)}function p(d,o,v,b){var h={...v,enum:b};if(h.default!==void 0){var x=b.map(String);x.includes(String(h.default))||(h.default=b.length>0?b[0]:void 0,h.default===void 0&&delete h.default)}u(d,o,o,h)}return r.jsxs("div",{className:"max-w-4xl mx-auto",children:[r.jsxs("div",{className:"flex justify-between items-center mb-6",children:[r.jsx("h2",{className:"text-2xl font-bold",style:{color:"var(--mieweb-foreground)"},children:"Tool Builder"}),r.jsx(T.Button,{variant:"primary",size:"sm",onClick:i,leftIcon:r.jsx(z.Plus,{className:"h-4 w-4"}),children:"Add Tool"})]}),r.jsxs("div",{className:"space-y-4",children:[(A=e.tools)==null?void 0:A.map(function(d,o){var v,b;return r.jsxs(T.Card,{padding:"md",className:"relative",children:[r.jsx(T.Button,{variant:"ghost",size:"icon",onClick:function(){a(o)},className:"absolute top-3 right-3 ivr-hover-destructive",style:{color:"var(--mieweb-destructive)"},"aria-label":"Remove tool",children:r.jsx(z.Trash2,{className:"h-5 w-5"})}),r.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-4",children:[r.jsx(pe,{label:"Tool Name",value:d.name,onChange:function(h){return s(o,"name",h)},size:"md"}),r.jsx(T.Input,{label:"Description",size:"md",value:d.description,onChange:function(h){s(o,"description",h.target.value)}})]}),r.jsxs("div",{className:"p-4 rounded-lg border",style:{background:"var(--mieweb-muted)",borderColor:"var(--mieweb-border)",borderRadius:"var(--mieweb-radius-lg, 0.75rem)"},children:[r.jsxs("div",{className:"flex justify-between items-center mb-3",children:[r.jsx("h4",{className:"font-medium text-sm",style:{color:"var(--mieweb-foreground)"},children:"Input Schema Parameters"}),r.jsx(T.Button,{variant:"primary",size:"sm",onClick:function(){l(o)},leftIcon:r.jsx(z.Plus,{className:"h-3 w-3"}),children:"Add Parameter"})]}),r.jsx("div",{className:"space-y-2",children:((v=d.inputSchema)==null?void 0:v.properties)&&Object.entries(d.inputSchema.properties).map(function([h,x],L){var C,k,q;var F=x.type==="array",V=he.has(x.type),g=Array.isArray(x.enum);return r.jsxs("div",{className:"rounded border p-2 space-y-2",style:{background:"var(--mieweb-card)",borderColor:"var(--mieweb-border)"},children:[r.jsxs("div",{className:"flex flex-col md:flex-row gap-2 items-start",children:[r.jsx("div",{className:"w-full md:w-36 flex-shrink-0",children:r.jsx(pe,{value:h,onChange:function(m){return u(o,h,m,x)},placeholder:"Name",size:"sm"})}),r.jsx("div",{className:"w-full md:w-28 flex-shrink-0",children:r.jsx(T.Select,{options:yt,value:x.type,onValueChange:function(m){N(o,h,x,m)},size:"sm"})}),F&&r.jsx("div",{className:"w-full md:w-32 flex-shrink-0",children:r.jsx(T.Select,{options:bt,value:((C=x.items)==null?void 0:C.type)||"string",onValueChange:function(m){f(o,h,x,m)},size:"sm"})}),r.jsx("div",{className:"w-full flex-1",children:r.jsx(T.Input,{size:"sm",value:x.description||"",onChange:function(m){u(o,h,h,{...x,description:m.target.value})},placeholder:"Description"})}),r.jsxs("div",{className:"flex items-center gap-3 flex-shrink-0 mt-1 md:mt-0",children:[r.jsx(T.Checkbox,{label:"Req",size:"sm",checked:(k=d.inputSchema.required)==null?void 0:k.includes(h),onChange:function(){w(o,h)}}),r.jsx(T.Checkbox,{label:"Default",size:"sm",checked:x.default!==void 0,onChange:function(m){var I={...x};m.target.checked?F?I.default=[]:g&&x.enum&&x.enum.length>0?I.default=x.enum[0]:I.default="":delete I.default,u(o,h,h,I)}}),r.jsx(T.Button,{variant:"ghost",size:"icon",onClick:function(){c(o,h)},className:"ivr-hover-destructive h-8 w-8",style:{color:"var(--mieweb-destructive)"},"aria-label":"Remove parameter",children:r.jsx(z.Trash2,{className:"h-4 w-4"})})]})]}),x.default!==void 0&&r.jsxs("div",{className:"flex gap-2 items-center pl-1",children:[r.jsx("span",{className:"text-xs w-16 flex-shrink-0",style:{color:"var(--mieweb-muted-foreground)"},children:"Default:"}),r.jsx("div",{className:"flex-1",children:F?r.jsxs("div",{className:"flex gap-2 items-center",children:[r.jsx("div",{className:"flex-1",children:r.jsx(ve,{values:Array.isArray(x.default)?x.default:[],onChange:function(m){u(o,h,h,{...x,default:m})}})}),r.jsx("span",{className:"text-xs whitespace-nowrap",style:{color:"var(--mieweb-muted-foreground)"},children:"comma-separated"})]}):g&&x.enum&&x.enum.length>0?r.jsx(T.Select,{size:"sm",options:x.enum.map(function(m){return{value:String(m),label:String(m)}}),value:String(x.default),onValueChange:function(m){u(o,h,h,{...x,default:m})}}):g?r.jsx("span",{className:"text-xs italic",style:{color:"var(--mieweb-warning)"},children:"Add enum values first to pick a default"}):r.jsx(T.Input,{size:"sm",value:x.default,onChange:function(m){u(o,h,h,{...x,default:m.target.value})},placeholder:"Default value"})})]}),V&&r.jsxs("div",{className:"flex flex-col gap-1 pl-1",children:[r.jsx(T.Checkbox,{label:"Enum — restrict to allowed values",size:"sm",checked:g,onChange:function(m){j(o,h,x,m.target.checked)}}),g&&r.jsxs("div",{className:"flex gap-2 items-start pl-5",children:[r.jsx("div",{className:"flex-1",children:r.jsx(ve,{values:x.enum,onChange:function(m){p(o,h,x,m)}})}),r.jsx("span",{className:"text-xs mt-2 whitespace-nowrap",style:{color:"var(--mieweb-muted-foreground)"},children:"comma-separated"})]}),g&&x.enum&&x.enum.length>0&&r.jsx("div",{className:"pl-5 flex flex-wrap gap-1",children:x.enum.map(function(m){return r.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium",style:{background:"var(--mieweb-primary-100, #b3e6f6)",color:"var(--mieweb-primary-700, #1786b3)"},children:m},m)})})]}),F&&r.jsxs("div",{className:"pl-1 text-xs text-gray-500",children:["Items type: ",r.jsx("span",{className:"font-medium text-gray-700",children:((q=x.items)==null?void 0:q.type)||"string"})," ","— the array selector above controls this"]})]},L)})}),(!((b=d.inputSchema)!=null&&b.properties)||Object.keys(d.inputSchema.properties).length===0)&&r.jsx("p",{className:"text-sm text-gray-500 italic",children:"No parameters defined."})]})]},o)}),(!e.tools||e.tools.length===0)&&r.jsx("div",{className:"text-center py-12 text-gray-500",children:"No custom tools defined. Click “Add Tool” to create one."})]})]})}const xt=[{value:"none",label:"None"},{value:"bearer",label:"Bearer token"},{value:"header",label:"Custom header"}],wt=/^\$\{\{\s*secrets\.([A-Za-z_][A-Za-z0-9_]*)\s*\}\}$/;function ge(e){return"${{ secrets."+e+" }}"}function ye(e){var n=typeof e=="string"?e.match(wt):null;return n?n[1]:null}function jt(e,n){var t=String(e||"server_"+(n+1)).toUpperCase().replace(/[^A-Z0-9]+/g,"_").replace(/^_+|_+$/g,"");return"MCP_"+(t||"SERVER")+"_TOKEN"}function Y(e){var n=e&&e.auth;return n?n.type==="bearer"?ye(n.token):n.type==="header"?ye(n.value):null:null}function Tt({secretName:e,isSet:n,onSecretChange:t}){const[i,a]=S.useState("");function s(){i&&(t(e,i),a(""))}return r.jsxs("div",{className:"space-y-1",children:[r.jsxs("div",{className:"flex items-center gap-2 text-sm",style:{color:"var(--mieweb-foreground)"},children:[r.jsx(z.KeyRound,{className:"h-4 w-4"}),r.jsxs("span",{children:["Credential ",r.jsx("code",{className:"text-xs",children:e}),":"]}),r.jsx("span",{"data-testid":"credential-status",style:{color:n?"var(--mieweb-success, green)":"var(--mieweb-muted-foreground)"},children:n?"set":"not set"})]}),r.jsxs("div",{className:"flex gap-2 items-end",children:[r.jsx("div",{className:"flex-1",children:r.jsx(T.Input,{type:"password",size:"sm",autoComplete:"new-password",placeholder:n?"Enter a new value to replace":"Enter value",value:i,onChange:function(l){a(l.target.value)},onKeyDown:function(l){l.key==="Enter"&&s()}})}),r.jsx(T.Button,{variant:"primary",size:"sm",onClick:s,disabled:!i,children:"Save"}),n&&r.jsx(T.Button,{variant:"ghost",size:"sm",onClick:function(){t(e,null)},children:"Clear"})]})]})}function Ct({config:e,onConfigChange:n,secretNames:t=[],pendingSecrets:i={},onSecretChange:a,onDiscoverTools:s}){const l=Array.isArray(e.mcp_servers)?e.mcp_servers:[],[u,c]=S.useState({}),w=S.useRef([]),N=S.useRef(0),f=S.useRef({});function j(){return"mcp-"+N.current++}w.current.length!==l.length&&(w.current=l.map(j),f.current={});const p=w.current;function A(g){n({...e,mcp_servers:g})}function d(g){delete f.current[g],c(function(C){if(!(g in C))return C;var k={...C};return delete k[g],k})}function o(g,C){("url"in C||"auth"in C)&&d(p[g]),A(l.map(function(k,q){return q===g?{...k,...C}:k}))}function v(){w.current=p.concat([j()]),A(l.concat([{name:"",url:"",auth:{type:"none"},tools:[]}]))}function b(g){var C=Y(l[g]),k=l.filter(function(m,I){return I!==g}),q=k.some(function(m){return Y(m)===C});C&&!q&&h(C)&&a(C,null),d(p[g]),w.current=p.filter(function(m,I){return I!==g}),A(k)}function h(g){return Object.prototype.hasOwnProperty.call(i,g)?i[g]!==null:t.includes(g)}function x(g,C){var k=new Set(t.concat(Object.keys(i)));l.forEach(function(P,B){B!==C&&k.add(Y(P))});for(var q=jt(g.name,C),m=q,I=2;k.has(m);I++)m=q+"_"+I;return m}function L(g,C){var I;var k=l[g],q=Y(k)||x(k,g),m;C==="bearer"?m={type:"bearer",token:ge(q)}:C==="header"?m={type:"header",name:((I=k.auth)==null?void 0:I.name)||"X-API-Key",value:ge(q)}:m={type:"none"},o(g,{auth:m})}function F(g,C,k){var q=l[g].tools||[],m=k?q.concat(q.includes(C)?[]:[C]):q.filter(function(I){return I!==C});o(g,{tools:m})}async function V(g){var C=l[g],k=p[g],q=Y(C),m={};q&&Object.prototype.hasOwnProperty.call(i,q)&&(m[q]=i[q]);var I={};f.current[k]=I,c(function(O){var ee;return{...O,[k]:{status:"loading",tools:((ee=O[k])==null?void 0:ee.tools)||[]}}});var P;try{var B=await s(C,m),R=(Array.isArray(B)?B:[]).filter(function(O){return O&&O.name});P={status:"done",tools:R}}catch(O){P={status:"error",tools:[],error:(O==null?void 0:O.message)||String(O)}}f.current[k]===I&&c(function(O){return{...O,[k]:P}})}return r.jsxs("div",{className:"max-w-6xl mx-auto mt-6 p-6 rounded-lg shadow",style:{background:"var(--mieweb-card)",borderRadius:"var(--mieweb-radius-lg, 0.75rem)"},children:[r.jsxs("div",{className:"flex justify-between items-center mb-4",children:[r.jsx("h2",{className:"text-2xl font-bold",style:{color:"var(--mieweb-foreground)"},children:"MCP Servers"}),r.jsx(T.Button,{variant:"primary",size:"sm",onClick:v,leftIcon:r.jsx(z.Plus,{className:"h-4 w-4"}),children:"Add Server"})]}),l.length===0&&r.jsx("p",{className:"text-sm",style:{color:"var(--mieweb-muted-foreground)"},children:"No MCP servers configured."}),r.jsx("div",{className:"space-y-4",children:l.map(function(g,C){var B;var k=((B=g.auth)==null?void 0:B.type)||"none",q=Y(g),m=u[p[C]],I=g.tools||[],P=((m==null?void 0:m.tools)||[]).slice();return I.forEach(function(R){P.some(function(O){return O.name===R})||P.push({name:R})}),r.jsxs(T.Card,{padding:"md",className:"relative","data-testid":"mcp-server",children:[r.jsx(T.Button,{variant:"ghost",size:"icon",onClick:function(){b(C)},className:"absolute top-3 right-3 ivr-hover-destructive",style:{color:"var(--mieweb-destructive)"},"aria-label":"Remove server",children:r.jsx(z.Trash2,{className:"h-5 w-5"})}),r.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 mb-4 pr-10",children:[r.jsx(T.Input,{label:"Name",size:"md",value:g.name||"",onChange:function(R){o(C,{name:R.target.value})}}),r.jsx(T.Input,{label:"URL",size:"md",type:"url",value:g.url||"",onChange:function(R){o(C,{url:R.target.value})}}),r.jsx(T.Select,{label:"Auth",options:xt,value:k,onValueChange:function(R){L(C,R)},size:"md"})]}),k==="header"&&r.jsx("div",{className:"mb-4 md:w-1/3",children:r.jsx(T.Input,{label:"Header name",size:"sm",value:g.auth.name||"",onChange:function(R){o(C,{auth:{...g.auth,name:R.target.value}})}})}),k!=="none"&&q&&r.jsx("div",{className:"mb-4",children:r.jsx(Tt,{secretName:q,isSet:h(q),onSecretChange:a},q)}),r.jsxs("div",{className:"p-4 rounded-lg border",style:{background:"var(--mieweb-muted)",borderColor:"var(--mieweb-border)"},children:[r.jsxs("div",{className:"flex justify-between items-center mb-3",children:[r.jsxs("h4",{className:"font-medium text-sm",style:{color:"var(--mieweb-foreground)"},children:["Enabled tools (",I.length,")"]}),s&&r.jsx(T.Button,{variant:"primary",size:"sm",onClick:function(){V(C)},disabled:!g.url||(m==null?void 0:m.status)==="loading",leftIcon:r.jsx(z.Search,{className:"h-3 w-3"}),children:(m==null?void 0:m.status)==="loading"?"Discovering...":"Discover tools"})]}),(m==null?void 0:m.status)==="error"&&r.jsxs("p",{className:"text-sm mb-2",style:{color:"var(--mieweb-destructive)"},children:["Discovery failed: ",m.error]}),P.length===0?r.jsxs("p",{className:"text-sm",style:{color:"var(--mieweb-muted-foreground)"},children:["No tools enabled. ",s?'Use "Discover tools" to list available tools.':""]}):r.jsx("div",{className:"space-y-2",children:P.map(function(R){return r.jsxs("div",{children:[r.jsx(T.Checkbox,{label:R.name,size:"sm",checked:I.includes(R.name),onChange:function(O){F(C,R.name,O.target.checked)}}),R.description&&r.jsx("p",{className:"text-xs ml-6",style:{color:"var(--mieweb-muted-foreground)"},children:R.description})]},R.name)})})]})]},p[C])})})]})}function St({initialConfig:e,schema:n,onConfigChange:t,onDownload:i,onSubmit:a,showEditor:s=!0,secretNames:l,onDiscoverTools:u}){const[c,w]=S.useState({}),N=S.useCallback(function(y,E){w(function(_){return{..._,[y]:E}})},[]),[f,j]=S.useState(function(){return e||Ie(n||Z)}),[p,A]=S.useState("form"),[d,o]=S.useState("yaml"),[v,b]=S.useState(""),[h,x]=S.useState(""),[L,F]=S.useState(n||Z),[V,g]=S.useState(!1),[C,k]=S.useState(null),[q,m]=S.useState(0);S.useEffect(function(){if(!C)return;const y=setTimeout(function(){k(null)},5e3);return function(){clearTimeout(y)}},[C]);const I=S.useRef(null),P=S.useRef(null),B=S.useRef(f);B.current=f,S.useEffect(function(){try{b(ie(f)),x(JSON.stringify(f,null,2))}catch(y){console.error("Error generating output",y)}},[f]),S.useEffect(function(){try{p==="editor"&&(d==="yaml"?b(ie(f)):d==="json"&&x(JSON.stringify(f,null,2)))}catch(y){console.error("Error resetting output on tab change",y)}},[p,d,f]),S.useEffect(function(){t&&t(f)},[f,t]);function R(y){B.current=y,j(y)}function O(y){if(Array.isArray(y))return y.map(O);if(y!==null&&typeof y=="object"){var E={};for(var _ of Object.keys(y))E[_]=O(y[_]);return E}return y===null?"":y}function ee(y,E){try{let _;E==="yaml"?(b(y),_=O(le.load(y))):(x(y),_=JSON.parse(y)),_&&typeof _=="object"&&(F(function(K){return ht(f,_,K)}),j(_),m(function(K){return K+1}))}catch{}}function Le(y){we(f,v,i,y||"yaml",h)}const[te,Fe]=S.useState(null);S.useEffect(function(){V&&!te&&import("@mieweb/forms-editor").then(function(y){Fe(function(){return y.QuestionnaireEditor})})},[V,te]);const Ue=S.useCallback(function(){var y;(y=P.current)==null||y.call(P),F(function(E){return G(B.current,E)}),g(!0)},[]),Be=S.useCallback(function(){var y;(y=P.current)==null||y.call(P),F(function(E){return m(function(_){return _+1}),G(B.current,E)}),g(!1)},[]),Ve=new Set(["text","longtext","dropdown","check","section"]);function De(y){let E=0;function _(J){return Array.isArray(J)?J.reduce(function($,W){return W.fieldType&&!Ve.has(W.fieldType)?(E++,$):Array.isArray(W.fields)?$.concat([{...W,fields:_(W.fields)}]):$.concat([W])},[]):J}return{filtered:{...y,fields:_(y.fields)},removedCount:E}}const He=S.useCallback(function(y){const{filtered:E,removedCount:_}=De(y);_>0&&k(`${_} unsupported field type${_>1?"s were":" was"} removed. Only Text, Long Text, Dropdown, and Checkbox fields are supported.`),F(function(K){const J=pt(K,E,B.current);return J.config!==B.current&&j(J.config),E})},[]),Ke=S.useCallback(function(){const y=new Blob([JSON.stringify(L,null,2)],{type:"application/json"}),E=URL.createObjectURL(y),_=document.createElement("a");_.href=E,_.download=(L.title||"form-schema").replace(/\s+/g,"-").toLowerCase()+".json",document.body.appendChild(_),_.click(),document.body.removeChild(_),URL.revokeObjectURL(E)},[L]),$e=S.useCallback(function(y){var K;const E=(K=y.target.files)==null?void 0:K[0];if(!E)return;const _=new FileReader;_.onload=function(J){try{const $=JSON.parse(J.target.result);if(!$.fields||!Array.isArray($.fields)){alert('Invalid schema file: missing "fields" array.');return}F(G(B.current,$)),m(function(W){return W+1})}catch($){alert("Failed to parse schema file: "+$.message)}},_.readAsText(E),y.target.value=""},[]),Je=S.useCallback(function(){var y;window.confirm("Reset the form to the default Agent schema? Any custom fields will be lost.")&&((y=P.current)==null||y.call(P),F(G(B.current,Z)),m(function(E){return E+1}))},[]);return r.jsx("div",{className:"flex flex-col h-full",style:{fontFamily:"var(--mieweb-font-sans, inherit)"},children:r.jsxs("div",{className:"flex-1 flex flex-col overflow-hidden",children:[r.jsx("div",{className:"shadow-sm border-b",style:{background:"var(--mieweb-card)",borderColor:"var(--mieweb-border)"},children:r.jsxs("div",{className:"px-4 flex items-center justify-between gap-2 flex-wrap",children:[r.jsx(T.Tabs,{value:p,onValueChange:function(y){A(y),g(!1)},variant:"underline",children:r.jsxs(T.TabsList,{className:"border-b-0",children:[r.jsxs(T.TabsTrigger,{value:"form",className:"gap-2 px-3 py-3 text-sm",children:[r.jsx(z.Settings,{className:"h-4 w-4"}),r.jsx("span",{className:"hidden sm:inline",children:"Form Builder"})]}),r.jsxs(T.TabsTrigger,{value:"tools",className:"gap-2 px-3 py-3 text-sm",children:[r.jsx(z.Wrench,{className:"h-4 w-4"}),r.jsx("span",{className:"hidden sm:inline",children:"Tool Builder"})]}),s&&r.jsxs(T.TabsTrigger,{value:"editor",className:"gap-2 px-3 py-3 text-sm",children:[r.jsx(z.Code,{className:"h-4 w-4"}),r.jsx("span",{className:"hidden sm:inline",children:"Config Editor"})]})]})}),a&&r.jsx(T.Button,{variant:"primary",size:"sm",onClick:()=>a(v,{...c}),leftIcon:r.jsx(z.Send,{className:"h-4 w-4"}),className:"my-1 shrink-0",children:r.jsx("span",{className:"hidden sm:inline",children:"Submit"})})]})}),r.jsxs("div",{className:"flex-1 overflow-auto p-4 md:p-6",children:[r.jsxs("div",{style:{display:p==="form"&&!V?"":"none"},children:[r.jsxs("div",{className:"max-w-6xl mx-auto mb-4 flex flex-wrap items-center justify-between gap-2",children:[r.jsx(T.Button,{variant:"primary",size:"sm",onClick:Ue,leftIcon:r.jsx(z.Pencil,{className:"h-4 w-4"}),children:"Customize Form"}),r.jsxs("div",{className:"flex items-center gap-1.5 flex-wrap",children:[r.jsx(T.Button,{variant:"primary",size:"sm",onClick:Ke,leftIcon:r.jsx(z.Download,{className:"h-4 w-4"}),title:"Export schema as JSON",children:"Export"}),r.jsx(T.Button,{variant:"primary",size:"sm",onClick:function(){var y;(y=I.current)==null||y.click()},leftIcon:r.jsx(z.Upload,{className:"h-4 w-4"}),title:"Import a schema JSON file",children:"Import"}),r.jsx("input",{ref:I,type:"file",accept:".json",className:"hidden",onChange:$e}),r.jsx(T.Button,{variant:"ghost",size:"sm",onClick:Je,leftIcon:r.jsx(z.RotateCcw,{className:"h-4 w-4"}),style:{color:"var(--mieweb-destructive)"},className:"ivr-hover-destructive",title:"Reset to default Agent schema",children:"Reset"})]})]}),r.jsx(Pe,{config:f,schema:L,onConfigChange:R,syncRef:P},q),r.jsx(Ct,{config:f,onConfigChange:R,secretNames:l,pendingSecrets:c,onSecretChange:N,onDiscoverTools:u})]}),p==="form"&&V&&r.jsxs("div",{className:"max-w-7xl mx-auto",children:[r.jsxs("div",{className:"mb-4 flex items-center gap-3",children:[r.jsx(T.Button,{variant:"ghost",size:"sm",onClick:Be,leftIcon:r.jsx(z.ArrowLeft,{className:"h-4 w-4"}),children:"Back to Form"}),r.jsxs("span",{className:"text-sm",style:{color:"var(--mieweb-muted-foreground)"},children:["Add, remove, or reorder fields. The field ",r.jsx("code",{className:"text-xs px-1 rounded",style:{background:"var(--mieweb-muted)",color:"var(--mieweb-foreground)"},children:"ID"})," is used as the config key (dot-notation for nesting, e.g. ",r.jsx("code",{className:"text-xs px-1 rounded",style:{background:"var(--mieweb-muted)",color:"var(--mieweb-foreground)"},children:"twilio.phoneNumber"}),")."]})]}),C&&r.jsx(T.Alert,{variant:"warning",dismissible:!0,onDismiss:function(){k(null)},className:"mb-3",children:r.jsx(T.AlertDescription,{children:C})}),r.jsx("div",{className:"rounded-lg shadow p-4 min-h-[600px]",style:{background:"var(--mieweb-card)",borderRadius:"var(--mieweb-radius-lg, 0.75rem)"},children:te?r.jsx(te,{initialFormData:L||void 0,onChange:He}):r.jsx("div",{className:"flex items-center justify-center h-64",style:{color:"var(--mieweb-muted-foreground)"},children:"Loading form editor..."})})]}),p==="editor"&&s&&r.jsx(Oe,{yamlOutput:v,jsonOutput:h,editorMode:d,onEditorModeChange:o,onEditorChange:ee,onDownload:Le}),p==="tools"&&r.jsx(ze,{config:f,onConfigChange:R})]})]})})}exports.AgentConfigGenerator=St;exports.ConfigEditor=Oe;exports.FormBuilder=Pe;exports.ToolBuilder=ze;exports.configToQuestionnaire=G;exports.configToYaml=ie;exports.copyToClipboard=je;exports.defaultSchema=Z;exports.deriveDefaultConfig=Ie;exports.downloadConfig=we;exports.questionnaireToConfig=_e;exports.validateConfig=xe;exports.yamlToConfig=at;