(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,191403,180127,516430,e=>{"use strict";var t=e.i(843476),s=e.i(271645),r=e.i(994388),a=e.i(212931),l=e.i(764205),n=e.i(269200),o=e.i(942232),i=e.i(977572),c=e.i(427612),d=e.i(64848),m=e.i(496020),p=e.i(94629),x=e.i(360820),u=e.i(871943),h=e.i(68155),g=e.i(592968),f=e.i(166406),j=e.i(152990),v=e.i(682830),y=e.i(916925);let b=e=>{let t=new Set,s=/\{\{(\w+)\}\}/g;if(e.messages.forEach(e=>{let r;for(;null!==(r=s.exec(e.content));)t.add(r[1])}),e.developerMessage){let r;for(;null!==(r=s.exec(e.developerMessage));)t.add(r[1])}return Array.from(t)},N=e=>{let t=b(e),s=`---
model: ${e.model}
`;return void 0!==e.config.temperature&&(s+=`temperature: ${e.config.temperature}
`),void 0!==e.config.max_tokens&&(s+=`max_tokens: ${e.config.max_tokens}
`),void 0!==e.config.top_p&&(s+=`top_p: ${e.config.top_p}
`),s+=`input:
  schema:
`,t.forEach(e=>{s+=`    ${e}: string
`}),s+=`output:
  format: text
`,e.tools&&e.tools.length>0&&(s+=`tools:
`,e.tools.forEach(e=>{let t=JSON.parse(e.json);s+=`  - ${JSON.stringify(t)}
`})),s+=`---

`,e.developerMessage&&""!==e.developerMessage.trim()&&(s+=`Developer: ${e.developerMessage.trim()}

`),e.messages.forEach(e=>{let t=e.role.charAt(0).toUpperCase()+e.role.slice(1);s+=`${t}: ${e.content}

`}),s.trim()},w=e=>{let t=Number(e);return Number.isFinite(t)?t:void 0},C=e=>{let t=e?.prompt_spec?.litellm_params?.dotprompt_content||"";if(!t)throw Error("No dotprompt_content found in API response");let s=t.split("---");if(s.length<3)throw Error("Invalid dotprompt format");let r=s[1],a=s.slice(2).join("---").trim(),l=(e=>{let t={config:{},tools:[]},s=e.split("\n");for(let e of(t.tools=(e=>{let t=[],s=!1;for(let r of e){let e=r.trim();if(!s){("tools:"===e||e.startsWith("tools:"))&&(s=!0);continue}if(r.length>0&&!/^\s/.test(r)&&"-"!==e&&!e.startsWith("-"))break;let a=e.match(/^-+\s*(.+)$/);if(!a)continue;let l=a[1].trim();if(l)try{let e=JSON.parse(l);t.push({name:e?.function?.name||"Unnamed Tool",description:e?.function?.description||"",json:JSON.stringify(e,null,2)})}catch{}}return t})(s),s)){let s=e.trim();if(!s||s.startsWith("input:")||s.startsWith("output:")||s.startsWith("schema:")||s.startsWith("format:")||s.startsWith("tools:")||s.startsWith("-"))continue;let r=s.indexOf(":");if(r<=0)continue;let a=s.substring(0,r).trim(),l=s.substring(r+1).trim();if("model"===a){t.model=l;continue}"temperature"===a&&(t.config.temperature=w(l)),"max_tokens"===a&&(t.config.max_tokens=w(l)),"top_p"===a&&(t.config.top_p=w(l))}return t})(r),n=(e=>{let t=/^(System|Developer|User|Assistant):(?:\s(.*)|\s*)$/,s=[],r="",a=null,l=[],n=()=>{if(!a)return;let e=l.join("\n").trim();"developer"===a?e&&(r=r?`${r}

${e}`:e):e?s.push({role:a,content:e}):s.push({role:a,content:""})};for(let s of e.split("\n")){let e=s.match(t);if(e){n(),a=e[1].toLowerCase(),l=[e[2]??""];continue}a&&l.push(s)}return n(),{developerMessage:r,messages:s}})(a),o=e?.prompt_spec?.prompt_id||"Unnamed Prompt";return{name:_(o)||o,model:l.model||"gpt-4o",config:l.config,tools:l.tools,developerMessage:n.developerMessage,messages:n.messages.length>0?n.messages:[{role:"user",content:"Enter task specifics. Use {{template_variables}} for dynamic inputs"}]}},_=e=>e?e.replace(/[._-]v\d+$/,""):"",k=e=>e?.prompt_id||"",T=e=>{try{let t=e.litellm_params;if(t?.dotprompt_content){let e=t.dotprompt_content.match(/model:\s*([^\n]+)/);if(e)return e[1].trim()}if(t?.prompt_data?.model)return t.prompt_data.model;if(t?.model)return t.model;return null}catch(e){return console.error("Error extracting model:",e),null}},S=({promptsList:e,isLoading:a,onPromptClick:b,onDeleteClick:N,accessToken:w,isAdmin:C})=>{let[_,k]=(0,s.useState)([{id:"created_at",desc:!0}]),[S,$]=(0,s.useState)(new Map);(0,s.useEffect)(()=>{(async()=>{if(w)try{let e=await (0,l.modelHubCall)(w);if(e?.data){let t=new Map;e.data.forEach(e=>{t.set(e.model_group,e)}),$(t)}}catch(e){console.error("Error fetching model hub data:",e)}})()},[w]);let P=e=>e?new Date(e).toLocaleString():"-",I=[{header:"Prompt ID",accessorKey:"prompt_id",cell:e=>{let s=String(e.getValue()||""),a=s.length>25?`${s.slice(0,25)}...`:s;return(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(g.Tooltip,{title:s,children:(0,t.jsx)(r.Button,{size:"xs",variant:"light",className:"font-mono text-blue-500 bg-blue-50 hover:bg-blue-100 text-xs font-normal px-2 py-0.5 text-left overflow-hidden truncate min-w-[220px] justify-start",onClick:()=>e.getValue()&&b?.(e.getValue()),children:a})}),(0,t.jsx)(g.Tooltip,{title:"Copy prompt ID",children:(0,t.jsx)(f.CopyOutlined,{onClick:e=>{e.stopPropagation(),navigator.clipboard.writeText(s)},className:"cursor-pointer text-gray-500 hover:text-blue-500 text-xs"})})]})}},{header:"Model",accessorKey:"model",cell:({row:e})=>{let s=T(e.original);if(!s)return(0,t.jsx)("span",{className:"text-xs text-gray-400",children:"-"});let r=((e,t)=>{if(!e)return null;let s=t.get(e);return s&&s.providers&&s.providers.length>0?s.providers[0]:null})(s,S),{logo:a}=(0,y.getProviderLogoAndName)(r||"");return(0,t.jsx)(g.Tooltip,{title:s,children:(0,t.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,t.jsx)("div",{className:"flex-shrink-0",children:r&&a?(0,t.jsx)("img",{src:a,alt:`${r} logo`,className:"w-4 h-4",onError:e=>{let t=e.currentTarget,s=t.parentElement;if(s&&s.contains(t))try{let e=document.createElement("div");e.className="w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",e.textContent=r?.charAt(0)||"-",s.replaceChild(e,t)}catch(e){console.error("Failed to replace provider logo fallback:",e)}}}):(0,t.jsx)("div",{className:"w-4 h-4 rounded-full bg-gray-200 flex items-center justify-center text-xs",children:"-"})}),(0,t.jsx)("span",{className:"max-w-[15ch] truncate block",children:s})]})})}},{header:"Created At",accessorKey:"created_at",cell:({row:e})=>{let s=e.original;return(0,t.jsx)(g.Tooltip,{title:s.created_at,children:(0,t.jsx)("span",{className:"text-xs",children:P(s.created_at)})})}},{header:"Updated At",accessorKey:"updated_at",cell:({row:e})=>{let s=e.original;return(0,t.jsx)(g.Tooltip,{title:s.updated_at,children:(0,t.jsx)("span",{className:"text-xs",children:P(s.updated_at)})})}},{header:"Type",accessorKey:"prompt_info.prompt_type",cell:({row:e})=>{let s=e.original;return(0,t.jsx)(g.Tooltip,{title:s.prompt_info.prompt_type,children:(0,t.jsx)("span",{className:"text-xs",children:s.prompt_info.prompt_type})})}},...C?[{header:"Actions",id:"actions",enableSorting:!1,cell:({row:e})=>{let s=e.original,a=s.prompt_id||"Unknown Prompt";return(0,t.jsx)("div",{className:"flex items-center gap-1",children:(0,t.jsx)(g.Tooltip,{title:"Delete prompt",children:(0,t.jsx)(r.Button,{size:"xs",variant:"light",color:"red",onClick:e=>{e.stopPropagation(),N?.(s.prompt_id,a)},icon:h.TrashIcon,className:"text-red-500 hover:text-red-700 hover:bg-red-50"})})})}}]:[]],O=(0,j.useReactTable)({data:e,columns:I,state:{sorting:_},onSortingChange:k,getCoreRowModel:(0,v.getCoreRowModel)(),getSortedRowModel:(0,v.getSortedRowModel)(),enableSorting:!0});return(0,t.jsx)("div",{className:"rounded-lg custom-border relative",children:(0,t.jsx)("div",{className:"overflow-x-auto",children:(0,t.jsxs)(n.Table,{className:"[&_td]:py-0.5 [&_th]:py-1",children:[(0,t.jsx)(c.TableHead,{children:O.getHeaderGroups().map(e=>(0,t.jsx)(m.TableRow,{children:e.headers.map(e=>(0,t.jsx)(d.TableHeaderCell,{className:"py-1 h-8",onClick:e.column.getToggleSortingHandler(),children:(0,t.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,t.jsx)("div",{className:"flex items-center",children:e.isPlaceholder?null:(0,j.flexRender)(e.column.columnDef.header,e.getContext())}),(0,t.jsx)("div",{className:"w-4",children:e.column.getIsSorted()?({asc:(0,t.jsx)(x.ChevronUpIcon,{className:"h-4 w-4 text-blue-500"}),desc:(0,t.jsx)(u.ChevronDownIcon,{className:"h-4 w-4 text-blue-500"})})[e.column.getIsSorted()]:(0,t.jsx)(p.SwitchVerticalIcon,{className:"h-4 w-4 text-gray-400"})})]})},e.id))},e.id))}),(0,t.jsx)(o.TableBody,{children:a?(0,t.jsx)(m.TableRow,{children:(0,t.jsx)(i.TableCell,{colSpan:I.length,className:"h-8 text-center",children:(0,t.jsx)("div",{className:"text-center text-gray-500",children:(0,t.jsx)("p",{children:"Loading..."})})})}):e.length>0?O.getRowModel().rows.map(e=>(0,t.jsx)(m.TableRow,{className:"h-8",children:e.getVisibleCells().map(e=>(0,t.jsx)(i.TableCell,{className:"py-0.5 max-h-8 overflow-hidden text-ellipsis whitespace-nowrap",children:(0,j.flexRender)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,t.jsx)(m.TableRow,{children:(0,t.jsx)(i.TableCell,{colSpan:I.length,className:"h-8 text-center",children:(0,t.jsx)("div",{className:"text-center text-gray-500",children:(0,t.jsx)("p",{children:"No prompts found"})})})})})]})})})};var $=e.i(304967),P=e.i(629569),I=e.i(599724),O=e.i(350967),B=e.i(389083),E=e.i(197647),D=e.i(653824),A=e.i(881073),L=e.i(404206),M=e.i(723731),z=e.i(464571),R=e.i(530212),F=e.i(797672),U=e.i(500330),J=e.i(678784),V=e.i(118366),H=e.i(727749),W=e.i(199133),K=e.i(653496),q=e.i(245094),G=e.i(650056),X=e.i(219470);let Y=({promptId:e,model:l,promptVariables:n={},accessToken:o,version:i="1",proxySettings:c})=>{let[d,m]=(0,s.useState)(!1),[p,x]=(0,s.useState)("curl"),[u,h]=(0,s.useState)("basic"),[g,f]=(0,s.useState)(""),j=window.location.origin,v=c?.LITELLM_UI_API_DOC_BASE_URL;v&&v.trim()?j=v:c?.PROXY_BASE_URL&&(j=c.PROXY_BASE_URL);let y=o||"sk-1234";return s.default.useEffect(()=>{d&&f((()=>{let t=Object.keys(n).length>0;if("curl"===p)if("basic"===u)return`curl -X POST '${j}/chat/completions' \\
  -H 'Content-Type: application/json' \\
  -H 'Authorization: Bearer ${y}' \\
  -d '{
    "model": "${l}",
    "prompt_id": "${e}"${t?`,
    "prompt_variables": ${JSON.stringify(n,null,6).replace(/\n/g,"\n    ")}`:""}
  }' | jq`;else if("messages"===u)return`curl -X POST '${j}/chat/completions' \\
  -H 'Content-Type: application/json' \\
  -H 'Authorization: Bearer ${y}' \\
  -d '{
    "model": "${l}",
    "prompt_id": "${e}"${t?`,
    "prompt_variables": ${JSON.stringify(n,null,6).replace(/\n/g,"\n    ")}`:""},
    "messages": [
      {
        "role": "user",
        "content": "hi"
      }
    ]
  }' | jq`;else return`curl -X POST '${j}/chat/completions' \\
  -H 'Content-Type: application/json' \\
  -H 'Authorization: Bearer ${y}' \\
  -d '{
    "model": "${l}",
    "prompt_id": "${e}",
    "prompt_version": ${i},
    "messages": [
      {
        "role": "user",
        "content": "Who are u"
      }
    ]
  }' | jq`;if("python"===p){let s=`import openai

client = openai.OpenAI(
    api_key="${y}",
    base_url="${j}"
)
`;return"basic"===u?`${s}
response = client.chat.completions.create(
    model="${l}",
    extra_body={
        "prompt_id": "${e}"${t?`,
        "prompt_variables": ${JSON.stringify(n,null,8).replace(/\n/g,"\n        ")}`:""}
    }
)

print(response)`:"messages"===u?`${s}
response = client.chat.completions.create(
    model="${l}",
    messages=[
        {"role": "user", "content": "hi"}
    ],
    extra_body={
        "prompt_id": "${e}"${t?`,
        "prompt_variables": ${JSON.stringify(n,null,8).replace(/\n/g,"\n        ")}`:""}
    }
)

print(response)`:`${s}
response = client.chat.completions.create(
    model="${l}",
    messages=[
        {"role": "user", "content": "Who are u"}
    ],
    extra_body={
        "prompt_id": "${e}",
        "prompt_version": ${i}
    }
)

print(response)`}{let s=`import OpenAI from 'openai';

const client = new OpenAI({
    apiKey: "${y}",
    baseURL: "${j}"
});
`;return"basic"===u?`${s}
async function main() {
    const response = await client.chat.completions.create({
        model: "${l}",
        ${t?`prompt_id: "${e}",
        prompt_variables: ${JSON.stringify(n,null,8).replace(/\n/g,"\n        ")}`:`prompt_id: "${e}"`}
    });
    
    console.log(response);
}

main();`:"messages"===u?`${s}
async function main() {
    const response = await client.chat.completions.create({
        model: "${l}",
        messages: [
            { role: "user", content: "hi" }
        ],
        ${t?`prompt_id: "${e}",
        prompt_variables: ${JSON.stringify(n,null,8).replace(/\n/g,"\n        ")}`:`prompt_id: "${e}"`}
    });
    
    console.log(response);
}

main();`:`${s}
async function main() {
    const response = await client.chat.completions.create({
        model: "${l}",
        messages: [
            { role: "user", content: "Who are u" }
        ],
        prompt_id: "${e}",
        prompt_version: ${i}
    });
    
    console.log(response);
}

main();`}})())},[d,p,u,e,l,n]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(r.Button,{variant:"secondary",icon:q.CodeOutlined,onClick:()=>{m(!0)},children:"Get Code"}),(0,t.jsxs)(a.Modal,{title:"Generated Code",open:d,onCancel:()=>{m(!1)},footer:null,width:800,children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(I.Text,{className:"font-medium block mb-1 text-gray-700",children:"Language"}),(0,t.jsx)(W.Select,{value:p,onChange:e=>x(e),style:{width:180},options:[{value:"curl",label:"cURL"},{value:"python",label:"Python (OpenAI SDK)"},{value:"javascript",label:"JavaScript (OpenAI SDK)"}]})]}),(0,t.jsx)(z.Button,{onClick:()=>{navigator.clipboard.writeText(g),H.default.success("Copied to clipboard!")},children:"Copy to Clipboard"})]}),(0,t.jsx)(K.Tabs,{activeKey:u,onChange:h,items:[{label:"Basic",key:"basic"},{label:"With Messages",key:"messages"},{label:"With Version",key:"version"}]}),(0,t.jsx)(G.Prism,{language:"curl"===p?"bash":"python"===p?"python":"javascript",style:X.coy,wrapLines:!0,wrapLongLines:!0,className:"rounded-md mt-0",customStyle:{maxHeight:"60vh",overflowY:"auto",marginTop:0,borderTopLeftRadius:0,borderTopRightRadius:0},children:g})]})]})},Z=({promptId:e,onClose:n,accessToken:o,isAdmin:i,onDelete:c,onEdit:d})=>{let[m,p]=(0,s.useState)(null),[x,u]=(0,s.useState)(null),[g,f]=(0,s.useState)(null),[j,v]=(0,s.useState)(!0),[y,b]=(0,s.useState)({}),[N,w]=(0,s.useState)(!1),[C,_]=(0,s.useState)(!1),S=async()=>{try{if(v(!0),!o)return;let t=await (0,l.getPromptInfo)(o,e);p(t.prompt_spec),u(t.raw_prompt_template),f(t)}catch(e){H.default.fromBackend("Failed to load prompt information"),console.error("Error fetching prompt info:",e)}finally{v(!1)}};if((0,s.useEffect)(()=>{S()},[e,o]),j)return(0,t.jsx)("div",{className:"p-4",children:"Loading..."});if(!m)return(0,t.jsx)("div",{className:"p-4",children:"Prompt not found"});let W=e=>e?new Date(e).toLocaleString():"-",K=async(e,t)=>{await (0,U.copyToClipboard)(e)&&(b(e=>({...e,[t]:!0})),setTimeout(()=>{b(e=>({...e,[t]:!1}))},2e3))},q=async()=>{if(o&&m){_(!0);try{await (0,l.deletePromptCall)(o,X),H.default.success(`Prompt "${X}" deleted successfully`),c?.(),n()}catch(e){console.error("Error deleting prompt:",e),H.default.fromBackend("Failed to delete prompt")}finally{_(!1),w(!1)}}},G=m&&T(m)||"gpt-4o",X=k(m),Z=(e=>{let t;if(e?.version)return String(e.version);var s=(t=k(e),e?.litellm_params?.prompt_id||t);if(!s)return"1";let r=s.match(/[._-]v(\d+)$/);return r?r[1]:"1"})(m);return(0,t.jsxs)("div",{className:"p-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(r.Button,{icon:R.ArrowLeftIcon,variant:"light",onClick:n,className:"mb-4",children:"Back to Prompts"}),(0,t.jsxs)("div",{className:"flex justify-between items-start mb-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(P.Title,{children:"Prompt Details"}),(0,t.jsxs)("div",{className:"flex items-center cursor-pointer",children:[(0,t.jsx)(I.Text,{className:"text-gray-500 font-mono",children:X}),(0,t.jsx)(z.Button,{type:"text",size:"small",icon:y["prompt-id"]?(0,t.jsx)(J.CheckIcon,{size:12}):(0,t.jsx)(V.CopyIcon,{size:12}),onClick:()=>K(X,"prompt-id"),className:`left-2 z-10 transition-all duration-200 ${y["prompt-id"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100"}`})]})]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(Y,{promptId:X,model:G,promptVariables:(e=>{let t;if(!e)return{};let s={},r=/\{\{(\w+)\}\}/g;for(;null!==(t=r.exec(e));){let e=t[1];s[e]||(s[e]=`example_${e}`)}return s})(x?.content),accessToken:o,version:Z}),(0,t.jsx)(r.Button,{icon:F.PencilIcon,variant:"primary",onClick:()=>d?.(g),className:"flex items-center",children:"Prompt Studio"}),i&&(0,t.jsx)(r.Button,{icon:h.TrashIcon,variant:"secondary",onClick:()=>{w(!0)},className:"flex items-center",children:"Delete Prompt"})]})]})]}),(0,t.jsxs)(D.TabGroup,{children:[(0,t.jsxs)(A.TabList,{className:"mb-4",children:[(0,t.jsx)(E.Tab,{children:"Overview"},"overview"),x?(0,t.jsx)(E.Tab,{children:"Prompt Template"},"prompt-template"):(0,t.jsx)(t.Fragment,{}),i?(0,t.jsx)(E.Tab,{children:"Details"},"details"):(0,t.jsx)(t.Fragment,{}),(0,t.jsx)(E.Tab,{children:"Raw JSON"},"raw-json")]}),(0,t.jsxs)(M.TabPanels,{children:[(0,t.jsxs)(L.TabPanel,{children:[(0,t.jsxs)(O.Grid,{numItems:1,numItemsSm:2,numItemsLg:3,className:"gap-6",children:[(0,t.jsxs)($.Card,{children:[(0,t.jsx)(I.Text,{children:"Prompt ID"}),(0,t.jsx)("div",{className:"mt-2",children:(0,t.jsx)(P.Title,{className:"font-mono text-sm",children:X})})]}),(0,t.jsxs)($.Card,{children:[(0,t.jsx)(I.Text,{children:"Version"}),(0,t.jsxs)("div",{className:"mt-2",children:[(0,t.jsx)(P.Title,{children:Z}),(0,t.jsxs)(B.Badge,{color:"blue",className:"mt-1",children:["v",Z]})]})]}),(0,t.jsxs)($.Card,{children:[(0,t.jsx)(I.Text,{children:"Prompt Type"}),(0,t.jsxs)("div",{className:"mt-2",children:[(0,t.jsx)(P.Title,{children:m.prompt_info?.prompt_type||"-"}),(0,t.jsx)(B.Badge,{color:"blue",className:"mt-1",children:m.prompt_info?.prompt_type||"Unknown"})]})]}),(0,t.jsxs)($.Card,{children:[(0,t.jsx)(I.Text,{children:"Created At"}),(0,t.jsxs)("div",{className:"mt-2",children:[(0,t.jsx)(P.Title,{children:W(m.created_at)}),(0,t.jsxs)(I.Text,{children:["Last Updated: ",W(m.updated_at)]})]})]})]}),m.litellm_params&&Object.keys(m.litellm_params).length>0&&(0,t.jsxs)($.Card,{className:"mt-6",children:[(0,t.jsx)(I.Text,{className:"font-medium",children:"LiteLLM Parameters"}),(0,t.jsx)("div",{className:"mt-2 p-3 bg-gray-50 rounded-md",children:(0,t.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap",children:JSON.stringify(m.litellm_params,null,2)})})]})]}),x&&(0,t.jsx)(L.TabPanel,{children:(0,t.jsxs)($.Card,{children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,t.jsx)(P.Title,{children:"Prompt Template"}),(0,t.jsx)(z.Button,{type:"text",size:"small",icon:y["prompt-content"]?(0,t.jsx)(J.CheckIcon,{size:16}):(0,t.jsx)(V.CopyIcon,{size:16}),onClick:()=>K(x.content,"prompt-content"),className:`transition-all duration-200 ${y["prompt-content"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100"}`,children:y["prompt-content"]?"Copied!":"Copy Content"})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(I.Text,{className:"font-medium",children:"Template ID"}),(0,t.jsx)("div",{className:"font-mono text-sm bg-gray-50 p-2 rounded",children:x.litellm_prompt_id})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(I.Text,{className:"font-medium",children:"Content"}),(0,t.jsx)("div",{className:"mt-2 p-4 bg-gray-50 rounded-md border overflow-auto max-h-96",children:(0,t.jsx)("pre",{className:"text-sm text-gray-800 whitespace-pre-wrap",children:x.content})})]}),x.metadata&&Object.keys(x.metadata).length>0&&(0,t.jsxs)("div",{children:[(0,t.jsx)(I.Text,{className:"font-medium",children:"Template Metadata"}),(0,t.jsx)("div",{className:"mt-2 p-3 bg-gray-50 rounded-md border",children:(0,t.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap overflow-auto max-h-64",children:JSON.stringify(x.metadata,null,2)})})]})]})]})}),i&&(0,t.jsx)(L.TabPanel,{children:(0,t.jsxs)($.Card,{children:[(0,t.jsx)(P.Title,{className:"mb-4",children:"Prompt Details"}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(I.Text,{className:"font-medium",children:"Prompt ID"}),(0,t.jsx)("div",{className:"font-mono text-sm bg-gray-50 p-2 rounded",children:X})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(I.Text,{className:"font-medium",children:"Prompt Type"}),(0,t.jsx)("div",{children:m.prompt_info?.prompt_type||"-"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(I.Text,{className:"font-medium",children:"Created At"}),(0,t.jsx)("div",{children:W(m.created_at)})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(I.Text,{className:"font-medium",children:"Last Updated"}),(0,t.jsx)("div",{children:W(m.updated_at)})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(I.Text,{className:"font-medium",children:"LiteLLM Parameters"}),(0,t.jsx)("div",{className:"mt-2 p-3 bg-gray-50 rounded-md border",children:(0,t.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap overflow-auto max-h-96",children:JSON.stringify(m.litellm_params,null,2)})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(I.Text,{className:"font-medium",children:"Prompt Info"}),(0,t.jsx)("div",{className:"mt-2 p-3 bg-gray-50 rounded-md border",children:(0,t.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap",children:JSON.stringify(m.prompt_info,null,2)})})]})]})]})}),(0,t.jsx)(L.TabPanel,{children:(0,t.jsxs)($.Card,{children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,t.jsx)(P.Title,{children:"Raw API Response"}),(0,t.jsx)(z.Button,{type:"text",size:"small",icon:y["raw-json"]?(0,t.jsx)(J.CheckIcon,{size:16}):(0,t.jsx)(V.CopyIcon,{size:16}),onClick:()=>K(JSON.stringify(g,null,2),"raw-json"),className:`transition-all duration-200 ${y["raw-json"]?"text-green-600 bg-green-50 border-green-200":"text-gray-500 hover:text-gray-700 hover:bg-gray-100"}`,children:y["raw-json"]?"Copied!":"Copy JSON"})]}),(0,t.jsx)("div",{className:"p-4 bg-gray-50 rounded-md border overflow-auto",children:(0,t.jsx)("pre",{className:"text-xs text-gray-800 whitespace-pre-wrap",children:JSON.stringify(g,null,2)})})]})})]})]}),(0,t.jsxs)(a.Modal,{title:"Delete Prompt",open:N,onOk:q,onCancel:()=>{w(!1)},confirmLoading:C,okText:"Delete",okButtonProps:{danger:!0},children:[(0,t.jsxs)("p",{children:["Are you sure you want to delete prompt: ",(0,t.jsx)("strong",{children:X}),"?"]}),(0,t.jsx)("p",{children:"This action cannot be undone."})]})]})};var Q=e.i(808613),ee=e.i(515831),et=e.i(312361),es=e.i(779241),er=e.i(519756);let{Option:ea}=W.Select,el=({visible:e,onClose:r,accessToken:n,onSuccess:o})=>{let[i]=Q.Form.useForm(),[c,d]=(0,s.useState)(!1),[m,p]=(0,s.useState)([]),[x,u]=(0,s.useState)("dotprompt"),h=()=>{i.resetFields(),p([]),u("dotprompt"),r()},g=async()=>{try{let e=await i.validateFields();if(console.log("values: ",e),!n)return void H.default.fromBackend("Access token is required");if("dotprompt"===x&&0===m.length)return void H.default.fromBackend("Please upload a .prompt file");d(!0);let t={};if("dotprompt"===x&&m.length>0){let s=m[0].originFileObj;try{let r=await (0,l.convertPromptFileToJson)(n,s);console.log("Conversion result:",r),t={prompt_id:e.prompt_id,litellm_params:{prompt_integration:"dotprompt",prompt_id:r.prompt_id,prompt_data:r.json_data},prompt_info:{prompt_type:"db"}}}catch(e){console.error("Error converting prompt file:",e),H.default.fromBackend("Failed to convert prompt file to JSON"),d(!1);return}}try{await (0,l.createPromptCall)(n,t),H.default.success("Prompt created successfully!"),h(),o()}catch(e){console.error("Error creating prompt:",e),H.default.fromBackend("Failed to create prompt")}}catch(e){console.error("Form validation error:",e)}finally{d(!1)}};return(0,t.jsx)(a.Modal,{title:"Add New Prompt",open:e,onCancel:h,footer:[(0,t.jsx)(z.Button,{onClick:h,children:"Cancel"},"cancel"),(0,t.jsx)(z.Button,{loading:c,onClick:g,children:"Create Prompt"},"submit")],width:600,children:(0,t.jsxs)(Q.Form,{form:i,layout:"vertical",requiredMark:!1,children:[(0,t.jsx)(Q.Form.Item,{label:"Prompt ID",name:"prompt_id",rules:[{required:!0,message:"Please enter a prompt ID"},{pattern:/^[a-zA-Z0-9_-]+$/,message:"Prompt ID can only contain letters, numbers, underscores, and hyphens"}],children:(0,t.jsx)(es.TextInput,{placeholder:"Enter unique prompt ID (e.g., my_prompt_id)"})}),(0,t.jsx)(Q.Form.Item,{label:"Prompt Integration",name:"prompt_integration",initialValue:"dotprompt",children:(0,t.jsx)(W.Select,{value:x,onChange:u,children:(0,t.jsx)(ea,{value:"dotprompt",children:"dotprompt"})})}),"dotprompt"===x&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(et.Divider,{}),(0,t.jsxs)(Q.Form.Item,{label:"Prompt File",extra:"Upload a .prompt file that follows the Dotprompt specification",children:[(0,t.jsx)(ee.Upload,{...{beforeUpload:e=>(e.name.endsWith(".prompt")||H.default.fromBackend("Please upload a .prompt file"),!1),fileList:m,onChange:({fileList:e})=>{p(e.slice(-1))},onRemove:()=>{p([])}},children:(0,t.jsx)(z.Button,{icon:(0,t.jsx)(er.UploadOutlined,{}),children:"Select .prompt File"})}),m.length>0&&(0,t.jsxs)("div",{className:"mt-2 text-sm text-gray-600",children:["Selected: ",m[0].name]})]})]})]})})},en=`{
  "type": "function",
  "function": {
    "name": "get_current_weather",
    "description": "Get the current weather in a given location",
    "parameters": {
      "type": "object",
      "properties": {
        "location": {
          "type": "string",
          "description": "The city and state, e.g. San Francisco, CA"
        },
        "unit": {
          "type": "string",
          "enum": ["celsius", "fahrenheit"]
        }
      },
      "required": ["location"]
    }
  }
}`,eo=({visible:e,initialJson:r,onSave:l,onClose:n})=>{let[o,i]=(0,s.useState)(r||en),[c,d]=(0,s.useState)(null),m=()=>{d(null),n()};return(0,t.jsx)(a.Modal,{title:(0,t.jsx)("div",{className:"flex items-center justify-between",children:(0,t.jsx)("span",{className:"text-lg font-medium",children:"Add Tool"})}),open:e,onCancel:m,width:800,footer:[(0,t.jsx)(z.Button,{onClick:m,children:"Cancel"},"cancel"),(0,t.jsx)(z.Button,{type:"primary",onClick:()=>{try{JSON.parse(o),d(null),l(o)}catch(e){d("Invalid JSON format. Please check your syntax.")}},children:"Add"},"save")],children:(0,t.jsxs)("div",{className:"space-y-3",children:[c&&(0,t.jsx)("div",{className:"p-3 bg-red-50 border border-red-200 rounded text-red-600 text-sm",children:c}),(0,t.jsx)("textarea",{value:o,onChange:e=>i(e.target.value),className:"w-full min-h-[400px] px-4 py-3 border border-gray-300 rounded-lg text-sm font-mono focus:outline-none focus:ring-2 focus:ring-blue-500 resize-none",placeholder:"Paste your tool JSON here..."})]})})};var ei=e.i(311451),ec=e.i(475254);let ed=(0,ec.default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["default",()=>ed],180127),e.s(["ArrowLeftIcon",()=>ed],516430);let em=(0,ec.default)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]),ep=(0,ec.default)("clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]),ex=({promptName:e,onNameChange:s,onBack:a,onSave:l,isSaving:n,editMode:o=!1,onShowHistory:i,version:c,promptModel:d="gpt-4o",promptVariables:m={},accessToken:p,proxySettings:x})=>(0,t.jsxs)("div",{className:"bg-white border-b border-gray-200 px-6 py-3 flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center space-x-3",children:[(0,t.jsx)(r.Button,{icon:ed,variant:"light",onClick:a,size:"xs",children:"Back"}),(0,t.jsx)(ei.Input,{value:e,onChange:e=>s(e.target.value),className:"text-base font-medium border-none shadow-none",style:{width:"200px"}}),c&&(0,t.jsx)("span",{className:"px-2 py-0.5 text-xs bg-blue-100 text-blue-700 rounded font-medium",children:c}),(0,t.jsx)("span",{className:"px-2 py-0.5 text-xs bg-gray-100 text-gray-600 rounded",children:"Draft"}),(0,t.jsx)("span",{className:"text-xs text-gray-400",children:"Unsaved changes"})]}),(0,t.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,t.jsx)(Y,{promptId:e,model:d,promptVariables:m,accessToken:p,version:c?.replace("v","")||"1",proxySettings:x}),o&&i&&(0,t.jsx)(r.Button,{icon:ep,variant:"secondary",onClick:i,children:"History"}),(0,t.jsx)(r.Button,{icon:em,onClick:l,loading:n,disabled:n,children:o?"Update":"Save"})]})]});var eu=e.i(903446),eu=eu,eh=e.i(992619);let eg=({model:e,temperature:r=1,maxTokens:a=1e3,accessToken:l,onModelChange:n,onTemperatureChange:o,onMaxTokensChange:i})=>{let[c,d]=(0,s.useState)(!1);return(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"w-[300px]",children:(0,t.jsx)(eh.default,{accessToken:l||"",value:e,onChange:n,showLabel:!1})}),(0,t.jsxs)("button",{onClick:()=>d(!c),className:"flex items-center gap-2 px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-lg hover:bg-gray-50",children:[(0,t.jsx)(eu.default,{size:16}),(0,t.jsx)("span",{children:"Parameters"})]}),c&&(0,t.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-30",children:(0,t.jsxs)("div",{className:"bg-white rounded-lg shadow-xl p-6 w-96",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,t.jsx)("h3",{className:"text-lg font-semibold",children:"Model Parameters"}),(0,t.jsx)("button",{onClick:()=>d(!1),className:"text-gray-400 hover:text-gray-600",children:"✕"})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)("div",{children:(0,t.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,t.jsx)(I.Text,{className:"text-sm text-gray-700",children:"Temperature"}),(0,t.jsx)(ei.Input,{type:"number",size:"small",min:0,max:2,step:.1,value:r,onChange:e=>o(parseFloat(e.target.value)||0),className:"w-20"})]})}),(0,t.jsx)("div",{children:(0,t.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,t.jsx)(I.Text,{className:"text-sm text-gray-700",children:"Max Tokens"}),(0,t.jsx)(ei.Input,{type:"number",size:"small",min:1,max:32768,value:a,onChange:e=>i(parseInt(e.target.value)||1e3),className:"w-24"})]})})]})]})})]})};var ef=e.i(603908),ef=ef;let ej=(0,ec.default)("trash",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}]]),ev=({tools:e,onAddTool:s,onEditTool:r,onRemoveTool:a})=>(0,t.jsxs)($.Card,{className:"p-3",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,t.jsx)(I.Text,{className:"text-sm font-medium",children:"Tools"}),(0,t.jsxs)("button",{onClick:s,className:"text-xs text-blue-600 hover:text-blue-700 flex items-center",children:[(0,t.jsx)(ef.default,{size:14,className:"mr-1"}),"Add"]})]}),0===e.length?(0,t.jsx)(I.Text,{className:"text-gray-500 text-xs",children:"No tools added"}):(0,t.jsx)("div",{className:"space-y-2",children:e.map((e,s)=>(0,t.jsxs)("div",{className:"flex items-center justify-between p-2 bg-gray-50 border border-gray-200 rounded",children:[(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsx)("div",{className:"font-medium text-xs truncate",children:e.name}),(0,t.jsx)("div",{className:"text-xs text-gray-500 truncate",children:e.description})]}),(0,t.jsxs)("div",{className:"flex items-center space-x-1 ml-2",children:[(0,t.jsx)("button",{onClick:()=>r(s),className:"text-xs text-blue-600 hover:text-blue-700",children:"Edit"}),(0,t.jsx)("button",{onClick:()=>a(s),className:"text-gray-400 hover:text-red-500",children:(0,t.jsx)(ej,{size:14})})]})]},s))})]});var ey=e.i(282786),eb=e.i(262218),eN=e.i(751904);let{TextArea:ew}=ei.Input,eC=({value:e,onChange:r,placeholder:a,rows:l=4,className:n})=>{let[o,i]=(0,s.useState)(null),[c,d]=(0,s.useState)(""),m=()=>{c.trim()&&o&&(r(e.substring(0,o.start)+`{{${c}}}`+e.substring(o.end)),i(null),d(""))},p=(()=>{let t,s=/\{\{(\w+)\}\}/g,r=[];for(;null!==(t=s.exec(e));)r.push({name:t[1],start:t.index,end:t.index+t[0].length});return r})();return(0,t.jsxs)("div",{className:`variable-textarea-container ${n}`,children:[(0,t.jsx)("style",{children:`
          .variable-highlight-text {
            color: #f97316;
            background-color: #fff7ed;
            border-radius: 4px;
            padding: 0 2px;
            border: 1px solid #fed7aa;
            font-family: monospace;
          }
        `}),(0,t.jsx)(ew,{value:e,onChange:e=>r(e.target.value),placeholder:a,rows:l,className:"font-sans"}),p.length>0&&(0,t.jsxs)("div",{className:"mt-2 flex flex-wrap gap-2 items-center",children:[(0,t.jsx)("span",{className:"text-xs text-gray-500 mr-1",children:"Detected variables:"}),p.map((e,s)=>(0,t.jsx)(ey.Popover,{content:(0,t.jsxs)("div",{className:"p-2",style:{minWidth:"200px"},children:[(0,t.jsx)("div",{className:"text-xs text-gray-500 mb-2",children:"Edit variable name"}),(0,t.jsx)(ei.Input,{size:"small",value:c,onChange:e=>d(e.target.value),onPressEnter:m,placeholder:"Variable name",autoFocus:!0}),(0,t.jsxs)("div",{className:"flex gap-2 mt-2",children:[(0,t.jsx)("button",{onClick:m,className:"text-xs px-2 py-1 bg-blue-500 text-white rounded hover:bg-blue-600",children:"Save"}),(0,t.jsx)("button",{onClick:()=>{i(null),d("")},className:"text-xs px-2 py-1 bg-gray-200 text-gray-700 rounded hover:bg-gray-300",children:"Cancel"})]})]}),open:o?.start===e.start,onOpenChange:e=>{e||(i(null),d(""))},trigger:"click",children:(0,t.jsx)(eb.Tag,{color:"orange",className:"cursor-pointer hover:opacity-80 transition-all m-0",icon:(0,t.jsx)(eN.EditOutlined,{}),onClick:()=>{i({oldName:e.name,start:e.start,end:e.end}),d(e.name)},children:e.name})},`${e.start}-${s}`))]})]})},e_=({value:e,onChange:s})=>(0,t.jsxs)($.Card,{className:"p-3",children:[(0,t.jsx)(I.Text,{className:"block mb-2 text-sm font-medium",children:"Developer message"}),(0,t.jsx)(I.Text,{className:"text-gray-500 text-xs mb-2",children:"Optional system instructions for the model"}),(0,t.jsx)(eC,{value:e,onChange:s,rows:3,placeholder:"e.g., You are a helpful assistant..."})]});var ef=ef;let ek=(0,ec.default)("grip-vertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]),{Option:eT}=W.Select,eS=({messages:e,onAddMessage:r,onUpdateMessage:a,onRemoveMessage:l,onMoveMessage:n})=>{let[o,i]=(0,s.useState)(null),[c,d]=(0,s.useState)(null),m=()=>{i(null),d(null)};return(0,t.jsxs)($.Card,{className:"p-3",children:[(0,t.jsxs)("div",{className:"mb-2",children:[(0,t.jsx)(I.Text,{className:"text-sm font-medium",children:"Prompt messages"}),(0,t.jsxs)(I.Text,{className:"text-gray-500 text-xs mt-1",children:["Use ",(0,t.jsx)("code",{className:"bg-gray-100 px-1 rounded text-xs",children:"{{variable}}"})," syntax for template variables"]})]}),(0,t.jsx)("div",{className:"space-y-2",children:e.map((s,r)=>(0,t.jsxs)("div",{draggable:!0,onDragStart:()=>{i(r)},onDragOver:e=>{e.preventDefault(),d(r)},onDrop:e=>{e.preventDefault(),null!==o&&o!==r&&n(o,r),i(null),d(null)},onDragEnd:m,className:`border border-gray-300 rounded overflow-hidden bg-white transition-all ${o===r?"opacity-50":""} ${c===r&&o!==r?"border-blue-500 border-2":""}`,children:[(0,t.jsxs)("div",{className:"bg-gray-50 px-2 py-1.5 border-b border-gray-300 flex items-center justify-between",children:[(0,t.jsxs)(W.Select,{value:s.role,onChange:e=>a(r,"role",e),style:{width:100},size:"small",bordered:!1,children:[(0,t.jsx)(eT,{value:"user",children:"User"}),(0,t.jsx)(eT,{value:"assistant",children:"Assistant"}),(0,t.jsx)(eT,{value:"system",children:"System"})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[e.length>1&&(0,t.jsx)("button",{onClick:()=>l(r),className:"text-gray-400 hover:text-red-500",children:(0,t.jsx)(ej,{size:14})}),(0,t.jsx)("div",{className:"cursor-grab active:cursor-grabbing text-gray-400 hover:text-gray-600",children:(0,t.jsx)(ek,{size:16})})]})]}),(0,t.jsx)("div",{className:"p-2",children:(0,t.jsx)(eC,{value:s.content,onChange:e=>a(r,"content",e),rows:3,placeholder:"Enter prompt content..."})})]},r))}),(0,t.jsxs)("button",{onClick:r,className:"mt-2 text-xs text-blue-600 hover:text-blue-700 flex items-center",children:[(0,t.jsx)(ef.default,{size:14,className:"mr-1"}),"Add message"]})]})};var e$=e.i(447593);let eP=({extractedVariables:e,variables:s,onVariableChange:r})=>0===e.length?null:(0,t.jsxs)("div",{className:"p-4 border-b border-gray-200 bg-blue-50",children:[(0,t.jsx)("h3",{className:"text-sm font-semibold text-gray-700 mb-3",children:"Fill in template variables to start testing"}),(0,t.jsx)("div",{className:"space-y-2",children:e.map(e=>(0,t.jsxs)("div",{children:[(0,t.jsxs)("label",{className:"block text-xs text-gray-600 mb-1 font-medium",children:["{{",e,"}}"]}),(0,t.jsx)(ei.Input,{value:s[e]||"",onChange:t=>r(e,t.target.value),placeholder:`Enter value for ${e}`,size:"small"})]},e))})]});var eI=e.i(56456),eO=e.i(482725),eB=e.i(983561);let eE=({hasVariables:e})=>(0,t.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-gray-400",children:[(0,t.jsx)(eB.RobotOutlined,{style:{fontSize:"48px",marginBottom:"16px"}}),(0,t.jsx)("span",{className:"text-base",children:e?"Fill in the variables above, then type a message to start testing":"Type a message below to start testing your prompt"})]});var eD=e.i(771674),eA=e.i(918789),eL=e.i(989022);let eM=({message:e})=>(0,t.jsx)("div",{className:`mb-4 flex ${"user"===e.role?"justify-end":"justify-start"}`,children:(0,t.jsxs)("div",{className:"max-w-[85%] rounded-lg shadow-sm p-3.5 px-4",style:{backgroundColor:"user"===e.role?"#f0f8ff":"#ffffff",border:"user"===e.role?"1px solid #e6f0fa":"1px solid #f0f0f0"},children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-1.5",children:[(0,t.jsx)("div",{className:"flex items-center justify-center w-6 h-6 rounded-full mr-1",style:{backgroundColor:"user"===e.role?"#e6f0fa":"#f5f5f5"},children:"user"===e.role?(0,t.jsx)(eD.UserOutlined,{style:{fontSize:"12px",color:"#2563eb"}}):(0,t.jsx)(eB.RobotOutlined,{style:{fontSize:"12px",color:"#4b5563"}})}),(0,t.jsx)("strong",{className:"text-sm capitalize",children:e.role}),"assistant"===e.role&&e.model&&(0,t.jsx)("span",{className:"text-xs px-2 py-0.5 rounded bg-gray-100 text-gray-600 font-normal",children:e.model})]}),(0,t.jsxs)("div",{className:"whitespace-pre-wrap break-words max-w-full message-content",style:{wordWrap:"break-word",overflowWrap:"break-word",wordBreak:"break-word",hyphens:"auto"},children:["assistant"===e.role?(0,t.jsx)(eA.default,{components:{code({node:e,inline:s,className:r,children:a,...l}){let n=/language-(\w+)/.exec(r||"");return!s&&n?(0,t.jsx)(G.Prism,{style:X.coy,language:n[1],PreTag:"div",className:"rounded-md my-2",wrapLines:!0,wrapLongLines:!0,...l,children:String(a).replace(/\n$/,"")}):(0,t.jsx)("code",{className:`${r} px-1.5 py-0.5 rounded bg-gray-100 text-sm font-mono`,style:{wordBreak:"break-word"},...l,children:a})},pre:({node:e,...s})=>(0,t.jsx)("pre",{style:{overflowX:"auto",maxWidth:"100%"},...s})},children:e.content}):(0,t.jsx)("div",{className:"whitespace-pre-wrap",children:e.content}),"assistant"===e.role&&(e.timeToFirstToken||e.totalLatency||e.usage)&&(0,t.jsx)(eL.default,{timeToFirstToken:e.timeToFirstToken,totalLatency:e.totalLatency,usage:e.usage})]})]})}),ez=({messages:e,isLoading:s,hasVariables:r,messagesEndRef:a})=>{let l=(0,t.jsx)(eI.LoadingOutlined,{style:{fontSize:24},spin:!0});return(0,t.jsxs)("div",{className:"flex-1 overflow-y-auto p-4 pb-0",children:[0===e.length&&(0,t.jsx)(eE,{hasVariables:r}),e.map((e,s)=>(0,t.jsx)(eM,{message:e},s)),s&&(0,t.jsx)("div",{className:"flex justify-center items-center my-4",children:(0,t.jsx)(eO.Spin,{indicator:l})}),(0,t.jsx)("div",{ref:a,style:{height:"1px"}})]})},eR=({extractedVariables:e,variables:s})=>{let r=e.filter(e=>!s[e]||""===s[e].trim());return 0===r.length?null:(0,t.jsx)("div",{className:"mb-3 p-3 bg-yellow-50 border border-yellow-200 rounded-lg",children:(0,t.jsxs)("div",{className:"flex items-start gap-2",children:[(0,t.jsx)("span",{className:"text-yellow-600 text-sm",children:"⚠️"}),(0,t.jsxs)("div",{className:"flex-1",children:[(0,t.jsx)("p",{className:"text-sm text-yellow-800 font-medium mb-1",children:"Please fill in all template variables above"}),(0,t.jsxs)("p",{className:"text-xs text-yellow-700",children:["Missing: ",r.map(e=>`{{${e}}}`).join(", ")]})]})]})})};var eF=e.i(132104);let{TextArea:eU}=ei.Input,eJ=({inputMessage:e,isLoading:s,isDisabled:a,onInputChange:l,onSend:n,onKeyDown:o,onCancel:i})=>(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("div",{className:"flex items-center flex-1 bg-white border border-gray-300 rounded-xl px-3 py-1 min-h-[44px]",children:[(0,t.jsx)(eU,{value:e,onChange:e=>l(e.target.value),onKeyDown:o,placeholder:"Type your message... (Shift+Enter for new line)",disabled:s,className:"flex-1",autoSize:{minRows:1,maxRows:4},style:{resize:"none",border:"none",boxShadow:"none",background:"transparent",padding:"4px 0",fontSize:"14px",lineHeight:"20px"}}),(0,t.jsx)(r.Button,{onClick:n,disabled:a,className:"flex-shrink-0 ml-2 !w-8 !h-8 !min-w-8 !p-0 !rounded-full !bg-blue-600 hover:!bg-blue-700 disabled:!bg-gray-300 !border-none !text-white disabled:!text-gray-500 !flex !items-center !justify-center",children:(0,t.jsx)(eF.ArrowUpOutlined,{style:{fontSize:"14px"}})})]}),s&&(0,t.jsx)(r.Button,{onClick:i,className:"bg-red-50 hover:bg-red-100 text-red-600 border-red-200",children:"Cancel"})]}),eV=({prompt:e,accessToken:a})=>{let{isLoading:n,messages:o,inputMessage:i,variables:c,variablesFilled:d,extractedVariables:m,allVariablesFilled:p,messagesEndRef:x,setInputMessage:u,handleSendMessage:h,handleCancelRequest:g,handleClearConversation:f,handleKeyDown:j,handleVariableChange:v}=((e,t)=>{let[r,a]=(0,s.useState)(!1),[n,o]=(0,s.useState)([]),[i,c]=(0,s.useState)(""),[d,m]=(0,s.useState)({}),[p,x]=(0,s.useState)(!1),[u,h]=(0,s.useState)(null),g=(0,s.useRef)(null),f=b(e),j=f.every(e=>d[e]&&""!==d[e].trim());(0,s.useEffect)(()=>{g.current&&setTimeout(()=>{g.current?.scrollIntoView({behavior:"smooth",block:"end"})},100)},[n]);let v=async()=>{let s;if(!t)return void H.default.fromBackend("Access token is required");if(f.length>0&&!j)return void H.default.fromBackend("Please fill in all template variables");if(!i.trim())return;!p&&f.length>0&&x(!0);let r={role:"user",content:i};o(e=>[...e,r]),c("");let m=new AbortController;h(m),a(!0);let u=Date.now();try{let r,a,c=N(e),p=(0,l.getProxyBaseUrl)(),x={dotprompt_content:c};0===n.length?x.prompt_variables=d:x.conversation_history=[...n.map(e=>({role:e.role,content:e.content})),{role:"user",content:i}];let h=await fetch(`${p}/prompts/test`,{method:"POST",headers:{[(0,l.getGlobalLitellmHeaderName)()]:`Bearer ${t}`,"Content-Type":"application/json"},body:JSON.stringify(x),signal:m.signal});if(!h.ok){let e=await h.text();throw Error(`HTTP error! status: ${h.status}, ${e}`)}if(!h.body)throw Error("No response body");let g=h.body.getReader(),f=new TextDecoder,j="";for(o(e=>[...e,{role:"assistant",content:""}]);;){let{done:e,value:t}=await g.read();if(e)break;for(let e of f.decode(t).split("\n"))if(e.startsWith("data: ")){let t=e.slice(6);if("[DONE]"===t)continue;try{let e=JSON.parse(t);!r&&e.model&&(r=e.model),e.usage&&(a=e.usage);let l=e.choices?.[0]?.delta?.content;l&&(s||(s=Date.now()-u),j+=l,o(e=>{let t=[...e];return t[t.length-1]={role:"assistant",content:j,model:r,timeToFirstToken:s},t}))}catch(e){console.error("Error parsing chunk:",e)}}}let v=Date.now()-u;o(e=>{let t=[...e];return t[t.length-1]={...t[t.length-1],totalLatency:v,usage:a},t})}catch(e){"AbortError"===e.name?console.log("Request was cancelled"):(console.error("Error testing prompt:",e),o(t=>{let s=t[t.length-1];return s&&"assistant"===s.role&&""===s.content?[...t.slice(0,-1),{role:"assistant",content:`Error: ${e.message}`}]:[...t,{role:"assistant",content:`Error: ${e.message}`}]}))}finally{a(!1),h(null)}};return{isLoading:r,messages:n,inputMessage:i,variables:d,variablesFilled:p,extractedVariables:f,allVariablesFilled:j,messagesEndRef:g,setInputMessage:c,handleSendMessage:v,handleCancelRequest:()=>{u&&(u.abort(),h(null),a(!1),H.default.info("Request cancelled"))},handleClearConversation:()=>{o([]),x(!1),H.default.success("Chat history cleared.")},handleKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),v())},handleVariableChange:(e,t)=>{m({...d,[e]:t})}}})(e,a);return(0,t.jsxs)("div",{className:"flex flex-col h-full bg-white",children:[!d&&(0,t.jsx)(eP,{extractedVariables:m,variables:c,onVariableChange:v}),o.length>0&&(0,t.jsx)("div",{className:"p-3 border-b border-gray-200 bg-white flex justify-end",children:(0,t.jsx)(r.Button,{onClick:f,className:"bg-gray-100 hover:bg-gray-200 text-gray-700 border-gray-300",icon:e$.ClearOutlined,children:"Clear Chat"})}),(0,t.jsx)(ez,{messages:o,isLoading:n,hasVariables:m.length>0,messagesEndRef:x}),(0,t.jsxs)("div",{className:"p-4 border-t border-gray-200 bg-white",children:[(0,t.jsx)(eR,{extractedVariables:m,variables:c}),(0,t.jsx)(eJ,{inputMessage:i,isLoading:n,isDisabled:n||!i.trim()||m.length>0&&!p,onInputChange:u,onSend:h,onKeyDown:j,onCancel:g})]})]})},eH=({visible:e,promptName:s,isSaving:l,onNameChange:n,onPublish:o,onCancel:i})=>(0,t.jsx)(a.Modal,{title:"Publish Prompt",open:e,onCancel:i,footer:[(0,t.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,t.jsx)(r.Button,{variant:"secondary",onClick:i,children:"Cancel"}),(0,t.jsx)(r.Button,{onClick:o,loading:l,children:"Publish"})]},"footer")],children:(0,t.jsxs)("div",{className:"py-4",children:[(0,t.jsx)(I.Text,{className:"mb-2",children:"Name"}),(0,t.jsx)(ei.Input,{value:s,onChange:e=>n(e.target.value),placeholder:"Enter prompt name",onPressEnter:o,autoFocus:!0}),(0,t.jsx)(I.Text,{className:"text-gray-500 text-xs mt-2",children:"Published prompts can be used in API calls and are versioned for easy tracking."})]})}),eW=({prompt:e})=>{let s=N(e);return(0,t.jsxs)("div",{className:"p-6",children:[(0,t.jsxs)("div",{className:"mb-4",children:[(0,t.jsx)("h3",{className:"text-sm font-medium text-gray-700 mb-2",children:"Generated .prompt file"}),(0,t.jsx)("p",{className:"text-xs text-gray-500",children:"This is the dotprompt format that will be saved to the database"})]}),(0,t.jsx)("div",{className:"bg-gray-50 border border-gray-200 rounded-lg p-4 overflow-auto",children:(0,t.jsx)("pre",{className:"text-sm text-gray-900 font-mono whitespace-pre-wrap",children:s})})]})};var eK=e.i(608856),eq=e.i(573421),eG=e.i(981339);let{Text:eX}=e.i(898586).Typography,eY=({isOpen:e,onClose:r,accessToken:a,promptId:n,activeVersionId:o,onSelectVersion:i})=>{let[c,d]=(0,s.useState)([]),[m,p]=(0,s.useState)(!1);(0,s.useEffect)(()=>{e&&a&&n&&x()},[e,a,n]);let x=async()=>{p(!0);try{let e=n.includes(".v")?n.split(".v")[0]:n,t=await (0,l.getPromptVersions)(a,e);d(t.prompts)}catch(e){console.error("Error fetching prompt versions:",e)}finally{p(!1)}},u=e=>{if(e.version)return`v${e.version}`;let t=e.litellm_params?.prompt_id||e.prompt_id;return t.includes(".v")?`v${t.split(".v")[1]}`:t.includes("_v")?`v${t.split("_v")[1]}`:"v1"};return(0,t.jsx)(eK.Drawer,{title:"Version History",placement:"right",onClose:r,open:e,width:400,mask:!1,maskClosable:!1,children:m?(0,t.jsx)(eG.Skeleton,{active:!0,paragraph:{rows:4}}):0===c.length?(0,t.jsx)("div",{className:"text-center py-8 text-gray-500",children:"No version history available."}):(0,t.jsx)(eq.List,{dataSource:c,renderItem:(e,s)=>{var r;let a=e.version||parseInt(u(e).replace("v","")),l=null;o&&(o.includes(".v")?l=parseInt(o.split(".v")[1]):o.includes("_v")&&(l=parseInt(o.split("_v")[1])));let n=l?a===l:0===s;return(0,t.jsxs)("div",{className:`mb-4 p-4 rounded-lg border cursor-pointer transition-all hover:shadow-md ${n?"border-blue-500 bg-blue-50":"border-gray-200 bg-white hover:border-blue-300"}`,onClick:()=>i?.(e),children:[(0,t.jsxs)("div",{className:"flex justify-between items-start mb-2",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(eb.Tag,{className:"m-0",children:u(e)}),0===s&&(0,t.jsx)(eb.Tag,{color:"blue",className:"m-0",children:"Latest"})]}),n&&(0,t.jsx)(eb.Tag,{color:"green",className:"m-0",children:"Active"})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,t.jsx)(eX,{className:"text-sm text-gray-600 font-medium",children:(r=e.created_at)?new Date(r).toLocaleString():"-"}),(0,t.jsx)(eX,{type:"secondary",className:"text-xs",children:e.prompt_info?.prompt_type==="db"?"Saved to Database":"Config Prompt"})]})]},`${e.prompt_id}-v${e.version||a}`)}})})},eZ=({onClose:e,onSuccess:r,accessToken:a,initialPromptData:n})=>{let[o,i]=(0,s.useState)((()=>{if(n)try{return C(n)}catch(e){console.error("Error parsing existing prompt:",e),H.default.fromBackend("Failed to parse prompt data")}return{name:"New prompt",model:"gpt-4o",config:{temperature:1,max_tokens:1e3},tools:[],developerMessage:"",messages:[{role:"user",content:"Enter task specifics. Use {{template_variables}} for dynamic inputs"}]}})()),[c,d]=(0,s.useState)(!!n),[m,p]=(0,s.useState)(!1),[x,u]=(0,s.useState)((()=>{if(!n?.prompt_spec)return;let e=n.prompt_spec.prompt_id,t=n.prompt_spec.version||n.prompt_spec.litellm_params?.prompt_id;return"number"==typeof t?`${e}.v${t}`:"string"==typeof t&&(t.includes(".v")||t.includes("_v"))?t:e})()),[h,g]=(0,s.useState)(!1),[f,j]=(0,s.useState)(!1),[v,y]=(0,s.useState)(null),[b,w]=(0,s.useState)(!1),[_,k]=(0,s.useState)("pretty"),T=e=>{void 0!==e?y(e):y(null),g(!0)},S=async()=>{if(!a)return void H.default.fromBackend("Access token is required");if(!o.name||""===o.name.trim())return void H.default.fromBackend("Please enter a valid prompt name");w(!0);try{let t=o.name.replace(/[^a-zA-Z0-9_-]/g,"_").toLowerCase(),s=N(o),i={prompt_id:t,litellm_params:{prompt_integration:"dotprompt",prompt_id:t,dotprompt_content:s},prompt_info:{prompt_type:"db"}};c&&n?.prompt_spec?.prompt_id?(await (0,l.updatePromptCall)(a,n.prompt_spec.prompt_id,i),H.default.success("Prompt updated successfully!")):(await (0,l.createPromptCall)(a,i),H.default.success("Prompt created successfully!")),r(),e()}catch(e){console.error("Error saving prompt:",e),H.default.fromBackend(c?"Failed to update prompt":"Failed to save prompt")}finally{w(!1),j(!1)}},$=x&&x.includes(".v")?`v${x.split(".v")[1]}`:null;return(0,t.jsxs)("div",{className:"flex h-full bg-white",children:[(0,t.jsxs)("div",{className:"flex-1 flex flex-col",children:[(0,t.jsx)(ex,{promptName:o.name,onNameChange:e=>i({...o,name:e}),onBack:e,onSave:()=>{o.name&&""!==o.name.trim()&&"New prompt"!==o.name?S():j(!0)},isSaving:b,editMode:c,onShowHistory:()=>p(!0),version:$,promptModel:o.model,promptVariables:(()=>{let e,t={},s=[o.developerMessage,...o.messages.map(e=>e.content)].join(" "),r=/\{\{(\w+)\}\}/g;for(;null!==(e=r.exec(s));){let s=e[1];t[s]||(t[s]=`example_${s}`)}return t})(),accessToken:a}),(0,t.jsxs)("div",{className:"flex-1 flex overflow-hidden",children:[(0,t.jsxs)("div",{className:"w-1/2 overflow-y-auto bg-white border-r border-gray-200 flex-shrink-0",children:[(0,t.jsxs)("div",{className:"border-b border-gray-200 bg-white px-6 py-4 flex items-center gap-3",children:[(0,t.jsx)(eg,{model:o.model,temperature:o.config.temperature,maxTokens:o.config.max_tokens,accessToken:a,onModelChange:e=>i({...o,model:e}),onTemperatureChange:e=>i({...o,config:{...o.config,temperature:e}}),onMaxTokensChange:e=>i({...o,config:{...o.config,max_tokens:e}})}),(0,t.jsxs)("div",{className:"ml-auto inline-flex items-center bg-gray-200 rounded-full p-0.5",children:[(0,t.jsx)("button",{className:`px-3 py-1 text-xs font-medium rounded-full transition-colors ${"pretty"===_?"bg-white text-gray-900 shadow-sm":"text-gray-600"}`,onClick:()=>k("pretty"),children:"PRETTY"}),(0,t.jsx)("button",{className:`px-3 py-1 text-xs font-medium rounded-full transition-colors ${"dotprompt"===_?"bg-white text-gray-900 shadow-sm":"text-gray-600"}`,onClick:()=>k("dotprompt"),children:"DOTPROMPT"})]})]}),"pretty"===_?(0,t.jsxs)("div",{className:"p-6 space-y-4 pb-20",children:[(0,t.jsx)(ev,{tools:o.tools,onAddTool:()=>T(),onEditTool:T,onRemoveTool:e=>{i({...o,tools:o.tools.filter((t,s)=>s!==e)})}}),(0,t.jsx)(e_,{value:o.developerMessage,onChange:e=>i({...o,developerMessage:e})}),(0,t.jsx)(eS,{messages:o.messages,onAddMessage:()=>{i({...o,messages:[...o.messages,{role:"user",content:""}]})},onUpdateMessage:(e,t,s)=>{let r=[...o.messages];r[e][t]=s,i({...o,messages:r})},onRemoveMessage:e=>{o.messages.length>1&&i({...o,messages:o.messages.filter((t,s)=>s!==e)})},onMoveMessage:(e,t)=>{let s=[...o.messages],[r]=s.splice(e,1);s.splice(t,0,r),i({...o,messages:s})}})]}):(0,t.jsx)(eW,{prompt:o})]}),(0,t.jsx)("div",{className:"w-1/2 flex-shrink-0",children:(0,t.jsx)(eV,{prompt:o,accessToken:a})})]})]}),(0,t.jsx)(eH,{visible:f,promptName:o.name,isSaving:b,onNameChange:e=>i({...o,name:e}),onPublish:S,onCancel:()=>j(!1)}),h&&(0,t.jsx)(eo,{visible:h,initialJson:null!==v?o.tools[v].json:"",onSave:e=>{try{let t=JSON.parse(e),s={name:t.function?.name||"Unnamed Tool",description:t.function?.description||"",json:e};if(null!==v){let e=[...o.tools];e[v]=s,i({...o,tools:e})}else i({...o,tools:[...o.tools,s]});g(!1),y(null)}catch(e){H.default.fromBackend("Invalid JSON format")}},onClose:()=>{g(!1),y(null)}}),(0,t.jsx)(eY,{isOpen:m,onClose:()=>p(!1),accessToken:a,promptId:n?.prompt_spec?.prompt_id||o.name,activeVersionId:x,onSelectVersion:e=>{try{let t=C({prompt_spec:e});i(t);let s=e.version||1;u(`${e.prompt_id}.v${s}`)}catch(e){console.error("Error loading version:",e),H.default.fromBackend("Failed to load prompt version")}}})]})};var eQ=e.i(708347);e.s(["default",0,({accessToken:e,userRole:n})=>{let[o,i]=(0,s.useState)([]),[c,d]=(0,s.useState)(!1),[m,p]=(0,s.useState)(null),[x,u]=(0,s.useState)(!1),[h,g]=(0,s.useState)(!1),[f,j]=(0,s.useState)(null),[v,y]=(0,s.useState)(!1),[b,N]=(0,s.useState)(null),w=!!n&&(0,eQ.isAdminRole)(n),C=async()=>{if(e){d(!0);try{let t=await (0,l.getPromptsList)(e);console.log(`prompts: ${JSON.stringify(t)}`),i(t.prompts)}catch(e){console.error("Error fetching prompts:",e)}finally{d(!1)}}};(0,s.useEffect)(()=>{C()},[e]);let _=()=>{C(),g(!1),j(null),p(null)},k=async()=>{if(b&&e){y(!0);try{await (0,l.deletePromptCall)(e,b.id),H.default.success(`Prompt "${b.name}" deleted successfully`),C()}catch(e){console.error("Error deleting prompt:",e),H.default.fromBackend("Failed to delete prompt")}finally{y(!1),N(null)}}};return(0,t.jsxs)("div",{className:"w-full mx-auto flex-auto overflow-y-auto m-8 p-2",children:[h?(0,t.jsx)(eZ,{onClose:()=>{g(!1),j(null)},onSuccess:_,accessToken:e,initialPromptData:f}):m?(0,t.jsx)(Z,{promptId:m,onClose:()=>p(null),accessToken:e,isAdmin:w,onDelete:C,onEdit:e=>{j(e),g(!0)}}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"flex justify-between items-center mb-4",children:(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(r.Button,{onClick:()=>{m&&p(null),j(null),g(!0)},disabled:!e,children:"+ Add New Prompt"}),(0,t.jsx)(r.Button,{onClick:()=>{m&&p(null),u(!0)},disabled:!e,variant:"secondary",children:"Upload .prompt File"})]})}),(0,t.jsx)(S,{promptsList:o,isLoading:c,onPromptClick:e=>{p(e)},onDeleteClick:(e,t)=>{N({id:e,name:t})},accessToken:e,isAdmin:w})]}),(0,t.jsx)(el,{visible:x,onClose:()=>{u(!1)},accessToken:e,onSuccess:_}),b&&(0,t.jsxs)(a.Modal,{title:"Delete Prompt",open:null!==b,onOk:k,onCancel:()=>{N(null)},confirmLoading:v,okText:"Delete",okButtonProps:{danger:!0},children:[(0,t.jsxs)("p",{children:["Are you sure you want to delete prompt: ",b.name," ?"]}),(0,t.jsx)("p",{children:"This action cannot be undone."})]})]})}],191403)}]);