PageSourceSearch

https://app.quotaflow.ai/assets/EnterpriseWorkspaceView-tvNKi-A3.js

js quotaflow.ai collected 2026-10-05 14:23:21 UTC 56,629 bytes, 1 lines download raw bytes

1import{d as ba,c as S,r as c,q as z,w as xa,o as fa,H as dt,I as ut,A as e,D as f,Z as ka,E as pt,k as ha,z as T,y as n,Q as q,N as u,Y as _,G as s,W as w,F as h,a0 as C,u as v,B as i,a2 as wa}from"./vendor-vue-Ct2QBaJZ.js";import{a as ja,a0 as ct,a1 as mt,a2 as gt,a3 as Sa,a4 as x,z as Ra,a5 as We,a6 as Ca}from"./index-BqUxLioV.js";import{m as Pa}from"./modelGroups-vedtEC0m.js";import{a as Ea}from"./AppLayout.vue_vue_type_script_setup_true_lang-DZ0AmTEw.js";import{_ as Ua}from"./Icon.vue_vue_type_script_setup_true_lang-CLaA0Ch4.js";import{u as Ia}from"./vendor-i18n-DbrYzI8e.js";import"./vendor-misc-BWzTkjaz.js";import"./StartPlanDialog.vue_vue_type_style_index_0_scoped_eb69b3a2_lang-QPAhLoPH.js";import"./publicStatus-iVjh3r6i.js";import"./logo-Ft4BtHHg.js";import"./LocaleSwitcher-C5iI8PTO.js";/* empty css                                                                       *//* empty css                                               */const Ma="no declared pricing";function Va(R){const K=_t(_t(R).pricing),$=Oa(K.effective_multiplier);return $===null?Ma:`effective ${Aa($)}`}function Aa(R){return`${Number(R.toPrecision(3))}×`}function Oa(R){if(typeof R=="number"&&Number.isFinite(R))return R;if(typeof R=="string"&&R.trim()){const K=Number(R);return Number.isFinite(K)?K:null}return null}function _t(R){return typeof R=="object"&&R!==null&&!Array.isArray(R)?R:{}}const Wa={class:"quotaflow-workspace-view space-y-6 p-4 sm:p-6 lg:p-8"},Na={class:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"},za={class:"flex gap-2"},Ta=["disabled"],$a={class:"grid gap-6 xl:grid-cols-[380px_minmax(0,1fr)]"},Da={class:"space-y-4 rounded-xl border border-gray-200 bg-white p-5 shadow-sm dark:border-dark-600 dark:bg-dark-800"},Ka=["disabled"],Fa={class:"space-y-2"},La=["onClick"],qa={class:"flex items-center justify-between gap-3"},Ba={class:"font-semibold text-gray-900 dark:text-white"},Ga={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Ya={key:0,class:"rounded-lg border border-dashed border-gray-300 p-4 text-center text-sm text-gray-500 dark:border-dark-600 dark:text-gray-400"},Ha={key:0,class:"space-y-6"},Qa={class:"rounded-xl border border-gray-200 bg-white p-5 shadow-sm dark:border-dark-600 dark:bg-dark-800"},Ja={class:"flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between"},Za={class:"text-lg font-semibold text-gray-900 dark:text-white"},Xa={class:"text-sm text-gray-500 dark:text-gray-400"},er={class:"grid gap-2 sm:grid-cols-3 lg:w-[560px]"},tr=["disabled"],ar={class:"grid gap-3 md:grid-cols-4"},rr={class:"rounded-xl border border-neutral-200 bg-white p-4 dark:border-primary-500/20 dark:bg-primary-500/10"},sr={class:"mt-2 text-2xl font-bold text-neutral-950 dark:text-white"},or={class:"rounded-xl border border-neutral-200 bg-white p-4 dark:border-blue-500/20 dark:bg-blue-500/10"},ir={class:"mt-2 text-2xl font-bold text-neutral-950 dark:text-white"},nr={class:"rounded-xl border border-neutral-200 bg-white p-4 dark:border-emerald-500/20 dark:bg-emerald-500/10"},lr={class:"mt-2 text-2xl font-bold text-neutral-950 dark:text-white"},dr={class:"rounded-xl border border-emerald-200 bg-emerald-50 p-5 shadow-sm dark:border-emerald-500/20 dark:bg-emerald-500/10"},ur={class:"mb-4 flex flex-col gap-2 lg:flex-row lg:items-start lg:justify-between"},pr={class:"rounded-lg bg-white px-3 py-2 text-right text-sm shadow-sm dark:bg-dark-800"},cr={class:"font-semibold text-gray-900 dark:text-white"},mr=["value"],gr=["value"],_r=["disabled"],vr={key:0,class:"mt-4 rounded-lg border border-emerald-200 bg-white p-3 text-sm text-emerald-900 dark:border-emerald-500/20 dark:bg-dark-800 dark:text-emerald-100"},yr={class:"font-semibold"},br={class:"mt-1"},xr={class:"rounded-xl border border-indigo-200 bg-indigo-50 p-5 shadow-sm dark:border-indigo-500/20 dark:bg-indigo-500/10"},fr={class:"mb-4"},kr={class:"text-base font-semibold text-indigo-950 dark:text-indigo-100"},hr={class:"text-sm text-indigo-700 dark:text-indigo-200/80"},wr={value:"group"},jr={value:"line"},Sr={value:"model_group"},Rr={key:0,class:"flex gap-2"},Cr={value:null},Pr=["value"],Er={value:""},Ur=["value"],Ir={value:""},Mr=["value"],Vr={value:""},Ar=["value"],Or=["placeholder"],Wr=["disabled"],Nr={class:"mt-2 text-xs text-indigo-700 dark:text-indigo-200/80"},zr={class:"mt-4"},Tr={class:"text-xs font-semibold uppercase tracking-wide text-indigo-900 dark:text-indigo-200"},$r={key:0,class:"mt-2 text-sm text-indigo-700 dark:text-indigo-200/80"},Dr={key:1,class:"mt-2 text-sm text-indigo-700 dark:text-indigo-200/80"},Kr={key:2,class:"mt-2 space-y-1"},Fr={class:"font-medium text-gray-900 dark:text-white"}
1,Lr={key:0,class:"ml-2 rounded bg-red-100 px-1.5 py-0.5 text-xs text-red-700 dark:bg-red-500/20 dark:text-red-200","data-testid":"contracted-rate-entitles-nothing"},qr={key:1,class:"ml-2 text-xs text-gray-600 dark:text-gray-300","data-testid":"contracted-rate-entitles"},Br={key:1,class:"ml-2 text-gray-700 dark:text-gray-300"},Gr={key:2,class:"ml-2 text-gray-700 dark:text-gray-300"},Yr={key:3,class:"ml-2 text-xs text-gray-500 dark:text-gray-400"},Hr=["disabled","onClick"],Qr={class:"rounded-xl border border-gray-200 bg-white p-5 shadow-sm dark:border-dark-600 dark:bg-dark-800"},Jr={class:"mb-4 flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between"},Zr=["disabled"],Xr={class:"mb-4 rounded-lg border border-dashed border-indigo-200 bg-indigo-50/60 p-4 dark:border-indigo-500/30 dark:bg-indigo-500/10"},es={class:"flex flex-col gap-3 lg:flex-row lg:items-end lg:justify-between"},ts=["disabled"],as={key:0,class:"mt-3 flex flex-col gap-2 rounded-lg bg-white p-3 text-sm dark:bg-dark-800 md:flex-row md:items-center"},rs={class:"flex-1 overflow-hidden text-ellipsis whitespace-nowrap rounded bg-gray-100 px-2 py-1 text-xs dark:bg-dark-700"},ss={key:1,class:"mt-3 grid gap-2 md:grid-cols-2"},os={class:"font-medium text-gray-900 dark:text-white"},is={class:"text-xs text-gray-500 dark:text-gray-400"},ns=["onClick"],ls={class:"grid gap-3 md:grid-cols-2 xl:grid-cols-3"},ds={class:"flex items-start justify-between gap-3"},us={class:"font-medium text-gray-900 dark:text-white"},ps={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},cs={class:"mt-3 flex items-center gap-2"},ms=["value","onChange"],gs=["onClick"],_s={key:0,class:"rounded-lg border border-dashed border-gray-300 p-4 text-sm text-gray-500 dark:border-dark-600 dark:text-gray-400"},vs={class:"rounded-xl border border-gray-200 bg-white p-5 shadow-sm dark:border-dark-600 dark:bg-dark-800"},ys={class:"mb-4 flex items-center justify-between"},bs=["disabled"],xs={key:0,class:"rounded-lg border border-amber-200 bg-amber-50 p-3 text-sm text-amber-800 dark:border-amber-700/50 dark:bg-amber-900/20 dark:text-amber-200"},fs={key:1,class:"grid gap-3 md:grid-cols-4"},ks={class:"rounded-lg bg-gray-50 p-3 dark:bg-dark-700/60"},hs={class:"mt-1 text-lg font-semibold text-gray-900 dark:text-white"},ws={class:"rounded-lg bg-gray-50 p-3 dark:bg-dark-700/60"},js={class:"mt-1 text-lg font-semibold text-gray-900 dark:text-white"},Ss={class:"rounded-lg bg-gray-50 p-3 dark:bg-dark-700/60"},Rs={class:"mt-1 text-lg font-semibold text-gray-900 dark:text-white"},Cs={class:"rounded-lg bg-gray-50 p-3 dark:bg-dark-700/60"},Ps={class:"mt-1 text-lg font-semibold text-gray-900 dark:text-white"},Es={class:"mt-4 grid gap-4 lg:grid-cols-2"},Us={class:"space-y-2"},Is={class:"font-medium text-gray-900 dark:text-white"},Ms={class:"text-gray-500 dark:text-gray-400"},Vs={key:0,class:"rounded-lg bg-gray-50 p-3 text-sm text-gray-500 dark:bg-dark-700/60"},As={class:"space-y-2"},Os={class:"flex items-center justify-between"},Ws={class:"font-medium text-gray-900 dark:text-white"},Ns={class:"text-gray-500 dark:text-gray-400"},zs={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Ts={key:0,class:"rounded-lg border border-amber-200 bg-amber-50 p-3 text-sm text-amber-800 dark:border-amber-700/50 dark:bg-amber-900/20 dark:text-amber-200"},$s={key:1,class:"rounded-lg bg-gray-50 p-3 text-sm text-gray-500 dark:bg-dark-700/60"},Ds={class:"grid gap-6 xl:grid-cols-2"},Ks={class:"rounded-xl border border-gray-200 bg-white p-5 shadow-sm dark:border-dark-600 dark:bg-dark-800"},Fs={class:"mb-4 flex items-center justify-between"},Ls={class:"text-sm text-gray-500 dark:text-gray-400"},qs={class:"space-y-2"},Bs=["onClick"],Gs={class:"flex items-center justify-between gap-3"},Ys={class:"font-semibold text-gray-900 dark:text-white"},Hs={class:"mt-2 flex flex-wrap gap-2 text-xs text-gray-500 dark:text-gray-400"},Qs={key:0,class:"rounded-lg border border-dashed border-gray-300 p-4 text-center text-sm text-gray-500 dark:border-dark-600 dark:text-gray-400"},Js={class:"rounded-xl border border-gray-200 bg-white p-5 shadow-sm dark:border-dark-600 dark:bg-dark-800"},Zs={class:"grid gap-2 sm:grid-cols-4"},Xs={key:0,class:"rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-xs text-amber-700 dark:border-amber-500/30 dark:bg-amber-500/10 dark:text-amber-200"},eo={key:1,class:"rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-xs text-amber-700 dark:border-amber-500/30 dark:bg-amber-500/10 dark:text-amber-200"},to={class:"grid gap-2 sm:grid-cols-4"},ao=["disabled"],ro=["disabled"],so=["value"],oo=["disabled"],io=["value"],no={class:"grid gap-2 sm:grid-cols-3"},lo=["disabled"],uo=["disabled"],po=["disabled"],co={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-dark-600 dark:bg-dark-700/60"},mo={class:"grid gap-2 sm:grid-cols-2 lg:grid-cols-4"},go=["disabled","value"],_o={class:"block font-medium text-gray-900 dark:text-white"},vo={class:"block text-xs text-gray-500 dark:text-gray-400"},yo={class:"mt-0.5 block text-xs text-gray-400 dark:text-gray-500"},bo={class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},xo={key:0},fo={class:"grid gap-2 sm:grid-cols-[1fr_1fr_1fr_120px]"},ko=["disabled"],ho={class:"space-y-2"},wo={class:"flex items-center justify-between gap-3"},jo={class:"font-medium text-gray-900 dark:text-white"},So={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Ro={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Co={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Po={key:0,class:"rounded-lg bg-gray-50 p-4 text-center text-sm text-gray-500 dark:bg-dark-700/60 dark:text-gray-400"},Eo={class:"rounded-xl border border-gray-200 bg-white p-5 shadow-sm dark:border-dark-600 dark:bg-dark-800"},Uo={class:"mb-4 flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between"},Io={class:"text-sm text-gray-500 dark:text-gray-400"},Mo={class:"grid gap-2 sm:grid-cols-5 lg:w-[860px]"},Vo=["disabled"],Ao={class:"overflow-x-auto"},Oo={key:0,class:"mb-4 rounded-lg border border-neutral-200 bg-white p-3 text-sm dark:border-primary-500/20 dark:bg-primary-500/10"},Wo={class:"mb-2 font-semibold text-primary-800 dark:text-primary-200"},No={class:"flex flex-wrap gap-2"},zo={key:0,class:"text-xs text-gray-500 dark:text-gray-400"},To={class:"min-w-full divide-y divide-gray-200 dark:divide-dark-600"},$o={class:"divide-y divide-gray-100 dark:divide-dark-700"},Do={class:"px-3 py-3 font-medium text-gray-900 dark:text-white"},Ko={class:"px-3 py-3"},Fo={class:"px-3 py-3"},Lo={class:"font-medium"},qo={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Bo={class:"px-3 py-3"},Go={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Yo={class:"px-3 py-3"},Ho={class:"px-3 py-3"},Qo={key:0},Jo={key:1,class:"rounded-xl border border-dashed border-gray-300 bg-white p-10 text-center dark:border-dark-600 dark:bg-dark-800"},mi=ba({__name:"EnterpriseWorkspaceView",setup(R){const K={gpt_codex:"Responses, chat completions, Codex coding",image2:"gpt-image-2, gpt-image-2.5-flare, gpt-image-2.5-sunburst image generation",claude:"Claude-compatible messages",gemini_text:"Gemini-compatible text models",glm:"GLM / Z.ai-compatible text, coding, and reasoning models",kimi:"Kimi / Moonshot long-context and coding models",nanobanana:"Gemini image / NanoBanana image pool",grokimage:"xAI Grok Imagine image generation",veo:"Video generation pool",embeddings:"Text embeddings",all_models:"One-key-for-all package"},$=S(()=>Ne.value.map(a=>({value:a.product_code,label:a.product_name,description:K[a.product_code]??"",weights:a.weights}))),{t:g}=Ia(),p=ja(),B=c([]),G=c([]),re=c([]),Y=c([]),N=c([]),H=c([]),Q=c([]),F=c([]),U=c(null),l=c(null),j=c(null),vt=c(0),ke=c(0),yt=c(0),bt=c(0),se=c(!1),oe=c(!1),he
1=c(!1),ie=c(!1),ne=c(!1),le=c(!1),de=c(!1),D=c(!1),we=c(!1),je=c(!1),J=c(""),ue=c(!1),pe=c(!1),Se=c(!1),Re=c(!1),ce=c(!1),me=c(!1),Z=c(null),Ce=c(!1),W=c(null),P=z({name:"",slug:"",billing_email:""}),M=z({user_id:null,role:"admin"}),V=z({email:"",role:"member"}),A=z({name:"",code:""}),k=z({name:"",provider:"openai",credential_type:"api_key",credential:"",endpoint:""}),o=z({name:"",credential_subject_type:"project",group_id:null,supply_source_id:null,product_package:"",capabilities:[],supply_class:"",supply_owner:"",supply_mechanism:"",executor:"",quota:0,expires_in_days:null,rate_limit_5h:null,rate_limit_1d:null,rate_limit_7d:null}),d=z({owner_user_id:null,paid_amount_usd:1e3,official_rate:.4,funding_source_kind:"payment_order",funding_reference:"",approval_reference:"",project_spend_target_usd:0,project_name:"",project_code:"",key_name:"Team prepaid main key",group_id:null,supply_source_id:null}),y=z({scope:"group",group_id:null,route_namespace:"",product_code:"",rate_multiplier:null}),X=c([]),Pe=c([]),Ne=c([]),ze=S(()=>se.value||oe.value||he.value||ie.value||ne.value||le.value||de.value||D.value),L=S(()=>F.value.filter(Ct)),ee=S(()=>Pt(Number(o.group_id)||null)),Te=S(()=>o.credential_subject_type==="project"?St():Rt()),xt=S(()=>o.capabilities.includes("gpt_codex")&&o.capabilities.includes("image2")),ft=S(()=>ma(H.value.map(a=>(a.route_namespace??"").trim()))),Ee=S(()=>ct(y)),$e=S(()=>typeof y.rate_multiplier=="number"&&Number.isFinite(y.rate_multiplier)?y.rate_multiplier:null),kt=S(()=>!!l.value&&mt(Ee.value)&&gt(Ee.value,$e.value));xa(()=>y.scope,(a,t)=>{if(a===t)return;const m=Ca({scope:t,group_id:y.group_id,route_namespace:y.route_namespace,product_code:y.product_code},a);y.product_code=m.product_code});const De=S(()=>!!(l.value&&d.owner_user_id&&d.paid_amount_usd>0&&d.official_rate>0&&d.group_id&&d.supply_source_id&&d.funding_reference&&(d.funding_source_kind!=="approved_grant"||d.approval_reference))),ht=S(()=>d.official_rate>0?d.paid_amount_usd/d.official_rate:0),Ke=S(()=>N.value.filter(a=>a.owner_type==="organization").length),wt=S(()=>N.value.filter(a=>a.owner_type==="platform").length),jt=S(()=>G.value.filter(a=>a.status==="active").length),ge=S(()=>{var a,t;return((t=(a=U.value)==null?void 0:a.usage_coverage)==null?void 0:t.unavailable_reason)??""}),Fe=S(()=>{var t;const a={};for(const m of((t=U.value)==null?void 0:t.unavailable_dimensions)??[])a[m.dimension]=m.reason;return a});function St(){return!!(o.name&&o.group_id&&(o.product_package||o.capabilities.length>0)&&o.supply_source_id&&o.executor&&o.supply_class&&o.supply_owner&&o.supply_mechanism&&!ee.value)}function Rt(){return!!(o.name&&o.group_id&&ee.value)}function Ct(a){return a.status==="active"&&Le(a)==="project"}function Pt(a){return a?L.value.find(t=>t.group_id===a):L.value.length===1?L.value[0]:void 0}function Le(a){return a.credential_subject_type||"legacy_user"}function Et(a){return Le(a)==="project"?"main key":"child key"}fa(()=>{qe()});async function qe(){await Promise.all([Be(),Ut(),Mt(),It()]),l.value&&await Ue()}async function Ut(){try{H.value=await Sa.getAll()}catch(a){p.showError(b(a))}}async function It(){try{const{items:a}=await Pa.listModelGroups();Ne.value=a}catch(a){p.showError(b(a))}}async function Mt(){try{const{items:a}=await x.listContractedRateModelGroups();Pe.value=a}catch(a){p.showError(b(a))}}async function Be(){se.value=!0;try{const a=await x.listOrganizations({page:1,page_size:100});B.value=a.items,vt.value=a.total,Zt(a.items)}catch(a){p.showError(b(a))}finally{se.value=!1}}async function Ue(){l.value&&(await Promise.all([_e(),Ie(),Ge(),Ye(),He()]),await ve(),await Ve())}async function _e(){if(l.value){oe.value=!0;try{const a=await x.listMembers(l.value.id,{page:1,page_size:100});G.value=a.items,yt.value=a.total}catch(a){p.showError(b(a))}finally{oe.value=!1}}}async function Ie(){if(l.value){he.value=!0;try{const a=await x.listInvitations(l.value.id,{page:1,page_size:20});re.value=a.items,bt.value=a.total}catch(a){p.showError(b(a))}finally{he.value=!1}}}async function Ge(){if(l.value){ie.value=!0;try{const a=await x.listProjects(l.value.id,{page:1,page_size:100});Y.value=a.items,ke.value=a.total,Xt(a.items)}catch(a){p.showError(b(a))}finally{ie.value=!1}}}async function Ye(){if(l.value){ne.value=!0;try{const a=await x.listSupplySources(l.value.id,{page:1,page_size:100});N.value=a.items}catch(a){p.showError(b(a))}finally{ne.value=!1}}}async function Me(){if(!(!l.value||!j.value)){de.value=!0;try{const a=await x.listProjectAPIKeys(l.value.id,j.value.id,{page:1,page_size:100});F.value=a.items}catch(a){p.showError(b(a))}finally{de.value=!1}}}async function ve(){var a;if(l.value){le.value=!0;
1try{const t=await x.listEffectiveSupplySources(l.value.id,{project_id:(a=j.value)==null?void 0:a.id});Q.value=t.items}catch(t){p.showError(b(t))}finally{le.value=!1}}}async function He(){if(l.value){D.value=!0;try{U.value=await x.getUsageReport(l.value.id)}catch(a){p.showError(b(a))}finally{D.value=!1}}}async function Vt(){if(P.name){ue.value=!0;try{const a=await x.createOrganization({name:P.name,slug:P.slug||void 0,billing_email:P.billing_email||void 0});ea(),await Be(),Qe(a),p.showSuccess("Enterprise workspace created")}catch(a){p.showError(b(a))}finally{ue.value=!1}}}async function At(){if(!(!l.value||!A.name)){pe.value=!0;try{const a=await x.createProject(l.value.id,{name:A.name,code:A.code||void 0,routing_policy:"byo_first"});ta(),await Ge(),Ae(a),p.showSuccess("Project created")}catch(a){p.showError(b(a))}finally{pe.value=!1}}}async function Ot(){if(!(!l.value||!M.user_id)){we.value=!0;try{await x.addMember(l.value.id,Wt()),aa(),await _e(),p.showSuccess("Enterprise member added")}catch(a){p.showError(b(a))}finally{we.value=!1}}}function Wt(){return{user_id:Number(M.user_id),role:M.role}}async function Nt(){if(!(!l.value||!V.email.trim())){je.value=!0,J.value="";try{const a=await x.createInvitation(l.value.id,zt());J.value=a.invite_url||"",ra(),await Ie(),p.showSuccess("Invitation email sent. You can also copy the link below.")}catch(a){p.showError(b(a))}finally{je.value=!1}}}function zt(){return{email:V.email.trim(),role:V.role}}async function Tt(a){a&&(await navigator.clipboard.writeText(a),p.showSuccess("Invitation link copied"))}async function $t(a){if(!(!l.value||a.status!=="pending"))try{await x.revokeInvitation(l.value.id,a.id),await Ie(),p.showSuccess("Invitation revoked")}catch(t){p.showError(b(t))}}async function Dt(a,t){if(l.value)try{await x.updateMember(l.value.id,a.id,{role:t}),await _e(),p.showSuccess("Member role updated")}catch(m){p.showError(b(m))}}async function Kt(a){if(!l.value)return;const t=a.status==="active"?"disabled":"active";try{await x.updateMember(l.value.id,a.id,{status:t}),await _e(),p.showSuccess("Member status updated")}catch(m){p.showError(b(m))}}async function Ft(){if(!(!l.value||!k.name)){Se.value=!0;try{await x.createSupplySource(l.value.id,{name:k.name,provider:k.provider,credential_type:k.credential_type,credential:k.credential||void 0,endpoint:k.endpoint||void 0,billing_mode:"customer_owned"}),oa(),await Ye(),await ve(),p.showSuccess("Enterprise private upstream added")}catch(a){p.showError(b(a))}finally{Se.value=!1}}}async function Lt(){if(!(!l.value||!j.value||!Te.value)){Re.value=!0;try{const a=await x.createProjectAPIKey(l.value.id,j.value.id,qt());ia(),await Me(),p.showSuccess(`Project key created: ${a.key||a.key_preview}`)}catch(a){p.showError(b(a))}finally{Re.value=!1}}}function qt(){const a=ee.value,t=o.credential_subject_type==="project";return{name:o.name,group_id:Number(o.group_id),supply_source_id:t?Number(o.supply_source_id):a==null?void 0:a.supply_source_id,product_package:t?o.product_package:a==null?void 0:a.product_package,capabilities:t?[...o.capabilities]:void 0,supply_class:t?o.supply_class:a==null?void 0:a.supply_class,supply_owner:t?o.supply_owner:a==null?void 0:a.supply_owner,supply_mechanism:t?o.supply_mechanism:a==null?void 0:a.supply_mechanism,executor:t?o.executor:a==null?void 0:a.executor,credential_subject_type:o.credential_subject_type,quota:o.quota,expires_in_days:o.expires_in_days||void 0,rate_limit_5h:o.rate_limit_5h||void 0,rate_limit_1d:o.rate_limit_1d||void 0,rate_limit_7d:o.rate_limit_7d||void 0}}async function Bt(){if(!(!l.value||!De.value||!d.owner_user_id)){ce.value=!0;try{const a=`team-prepaid-${l.value.id}-${d.owner_user_id}-${Date.now()}`,t=await x.provisionTeamPrepaidPackage({organization_id:l.value.id,organization_name:l.value.name,organization_slug:l.value.slug,billing_email:l.value.billing_email||void 0,owner_user_id:d.owner_user_id,project_name:d.project_name||void 0,project_code:d.project_code||void 0,paid_amount_usd:d.paid_amount_usd,official_rate:d.official_rate,project_spend_target_usd:d.project_spend_target_usd,funding_source_kind:d.funding_source_kind,funding_reference:d.funding_reference,approval_reference:d.approval_reference||void 0,group_id:d.group_id||void 0,supply_source_id:d.supply_source_id||void 0,product_package:"codex-auth-team-prepaid",key_name:d.key_name||void 0},a);W.value=t,await Ue(),Jt(t.project.id),p.showSuccess("Team prepaid package configured")}catch(a){p.showError(b(a))}finally{ce.value=!1}}}async function Gt(){const a=Ee.value,t=$e.value;if(!(!l.value||a===null||!mt(a)||!gt(a,t))){me.value=!0;try{await x.setOrganizationContractedRate(l.value.id,a,t);const m=await x.updateOrganization(l.value.id,{metadata:Ht(l.value.metadata)});Qt(m),y.rate_multiplier=null,await Ve(),p.showSuccess(g("admin.enterpriseWorkspaces.contractedRate.declared"))}catch(m){p.showError(b(m))}finally{me.value=!1}}}
1async function Ve(){if(!l.value){X.value=[];return}Ce.value=!0;try{const{items:a}=await x.listOrganizationContractedRates(l.value.id);X.value=a}catch(a){p.showError(b(a))}finally{Ce.value=!1}}async function Yt(a){if(!(!l.value||Z.value!==null)){Z.value=a.id;try{const t=ct(a);if(t===null){p.showError(g("admin.enterpriseWorkspaces.contractedRate.unretirableScope"));return}await x.retireOrganizationContractedRate(l.value.id,t),await Ve(),p.showSuccess(g("admin.enterpriseWorkspaces.contractedRate.retired"))}catch(t){p.showError(b(t))}finally{Z.value=null}}}function Ht(a){const t=et(a);return{...t,commercial_terms:{...et(t.commercial_terms),pricing_source:"admin_locked",locked_by:"admin",locked_at:new Date().toISOString()}}}function Qt(a){l.value=a,B.value=B.value.map(t=>t.id===a.id?a:t)}function Jt(a){const t=Y.value.find(m=>m.id===a);t&&Ae(t)}function Qe(a){l.value=a,j.value=null,F.value=[],W.value=null,X.value=[],Ue()}function Ae(a){j.value=a,Me(),ve()}function Zt(a){if(a.length===0){l.value=null,Y.value=[],N.value=[],G.value=[],re.value=[],Q.value=[],U.value=null;return}const t=a.find(m=>{var O;return m.id===((O=l.value)==null?void 0:O.id)});l.value=t??a[0]}function Xt(a){var O;if(a.length===0){j.value=null,F.value=[],Q.value=[];return}const m=a.find(xe=>{var ae;return xe.id===((ae=j.value)==null?void 0:ae.id)})??a[0];if(((O=j.value)==null?void 0:O.id)!==m.id){j.value=m,Me(),ve();return}j.value=m}function ea(){P.name="",P.slug="",P.billing_email=""}function ta(){A.name="",A.code=""}function aa(){M.user_id=null,M.role="admin"}function ra(){V.email="",V.role="member"}function sa(a){return a?new Date(a).toLocaleDateString():"-"}function oa(){k.name="",k.provider="openai",k.credential_type="api_key",k.credential="",k.endpoint=""}function ia(){var a;o.name="",o.credential_subject_type=L.value.length>0?"service":"project",o.group_id=L.value.length===1?((a=L.value[0])==null?void 0:a.group_id)??null:null,o.supply_source_id=null,o.product_package="",o.capabilities=[],o.supply_class="",o.supply_owner="",o.supply_mechanism="",o.executor="",o.quota=0,o.expires_in_days=null,o.rate_limit_5h=null,o.rate_limit_1d=null,o.rate_limit_7d=null}function na(){if(o.product_package==="custom-multi-capability"){be(["gpt_codex","image2"]),ye("managed_platform","managed_multi_pool","sub2api-native");return}if(o.product_package==="all-in-one"){be(["all_models"]),ye("managed_platform","managed_multi_pool","sub2api-native");return}if(o.product_package.startsWith("codex-auth")){be(["gpt_codex"]),ye("codex_auth","auth_oauth","sub2api-native");return}if(o.product_package==="openai-credit-prepaid"){be(["gpt_codex"]),ye("openai_credit","api_key","sub2api-native");return}o.product_package==="workspace-self-supply"&&Je("workspace_self_supply","organization","api_key","sub2api-native")}function ye(a,t,m){Je(a,"platform",t,m)}function Je(a,t,m,O){o.supply_class=a,o.supply_owner=t,o.supply_mechanism=m,o.executor=O}function be(a){o.capabilities=a,Ze()}function Ze(){if(o.capabilities.includes("all_models")){o.capabilities=["all_models"];return}const a=new Set($.value.map(m=>m.value)),t=new Set(o.capabilities.filter(m=>a.has(m)));o.capabilities=$.value.map(m=>m.value).filter(m=>t.has(m))}function la(a){switch(a){case"open":return"Open weights";case"closed":return"Closed weights";case"mixed":return"Open and closed weights";case"":return"Weights not recorded";default:return`Weights not recorded (${a})`}}function da(){return o.capabilities.length===0?"Not selected":$.value.filter(t=>o.capabilities.includes(t.value)).map(t=>t.label).join(" + ")}function I(a){return Ra(a??0,"USD")}function Oe(a){return new Intl.NumberFormat().format(a??0)}function ua(a){return a?new Date(a).toLocaleDateString():"never expires"}function pa(a){const t=[a.rate_limit_5h?`5h ${I(a.rate_limit_5h)}`:"",a.rate_limit_1d?`1d ${I(a.rate_limit_1d)}`:"",a.rate_limit_7d?`7d ${I(a.rate_limit_7d)}`:""].filter(Boolean);return t.length>0?t.join(" · "):"unlimited rate"}function ca(a){return a.user_email||a.user_name||`User #${a.user_id}`}function Zo(a){return a}function ma(a){return Array.from(new Set(a.filter(t=>t!==""))).sort()}function ga(a){return a.scope==="group"?g("admin.enterpriseWorkspaces.contractedRate.groupScopeLabel",{name:a.group_name||`#${a.group_id}`}):a.scope==="line"?g("admin.enterpriseWorkspaces.contractedRate.lineScopeLabel",{name:a.route_namespace}):g("admin.enterpriseWorkspaces.contractedRate.modelGroupScopeLabel",{name:a.product_code})}function Xe(a){return Va(a.metadata)}function _a(a){return`${Number(a.toPrecision(3))}×`}function et(a){return typeof a=="object"&&a!==null&&!Array.isArray(a)?a:{}}function va(a){return a.owner_type==="organization"?"Enterprise private resource, available only to this enterprise.":"Platform-managed fallback credit, available when enterprise credit is insufficient."}function te(a){const t="rounded-full px-2 py-0.5 text-xs font-medium";return a==="active"?`${t} bg-green-100 text-green-700 dark:bg-green-500/10 dark:text-green-300`:a==="disabled"?`${t} bg-yellow-100 text-yellow-700 dark:bg-yellow-500/10 dark:text-yellow-300`:`${t} bg-gray-100 text-gray-700 dark:bg-dark-700 dark:text-gray-300`}function b(a){return typeof a=="object"&&a!==null&&"message"in a?ya(String(a.message)):"Operation failed"}function ya(a){return a.includes("PROJECT_MAIN_KEY_SELECTOR_REQUIRED")?"This project has multiple main keys. Select the product group before creating a child key.":a.includes("PROJECT_MAIN_KEY_ALREADY_EXISTS")?"This project already has an active main key for the selected group. Choose another group or create a child service key.":a}return(a,t)=>{const m=ka("router-link");return i(),dt(Ea,null,{default:ut(()=>{var O,xe,ae,tt,at,rt,st,ot,it,nt,lt;return[e("div",Wa,[e("div",Na,[t[49]||(t[49]=e("div",null,[e("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"},"Enterprise Workspaces"),e("p",{class:"mt-1 text-sm text-gray-500 dark:text-gray-400"}," Manage enterprise workspaces, project-level keys, private upstream
1s, and managed credit boundaries. ")],-1)),e("div",za,[l.value?(i(),dt(m,{key:0,class:"btn btn-secondary",to:{path:"/api-keys",query:{view_as_organization_id:l.value.id}}},{default:ut(()=>[...t[47]||(t[47]=[pt("View as workspace",-1)])]),_:1},8,["to"])):f("",!0),e("button",{class:"btn btn-secondary",disabled:ze.value,onClick:qe},[ha(Ua,{name:"refresh",size:"md",class:T(ze.value?"animate-spin":"")},null,8,["class"]),t[48]||(t[48]=e("span",{class:"ml-2"},"Refresh",-1))],8,Ta)])]),e("div",$a,[e("section",Da,[t[53]||(t[53]=e("div",null,[e("h2",{class:"text-lg font-semibold text-gray-900 dark:text-white"},"Organizations"),e("p",{class:"text-sm text-gray-500 dark:text-gray-400"},"Each enterprise private upstream only enters its own effective pool.")],-1)),e("form",{class:"space-y-3 rounded-lg bg-gray-50 p-4 dark:bg-dark-700/60",onSubmit:q(Vt,["prevent"])},[e("div",null,[t[50]||(t[50]=e("label",{class:"input-label"},"Name",-1)),u(e("input",{"onUpdate:modelValue":t[0]||(t[0]=r=>P.name=r),class:"input",placeholder:"Acme AI Team"},null,512),[[_,P.name,void 0,{trim:!0}]])]),e("div",null,[t[51]||(t[51]=e("label",{class:"input-label"},"Slug",-1)),u(e("input",{"onUpdate:modelValue":t[1]||(t[1]=r=>P.slug=r),class:"input",placeholder:"acme-ai"},null,512),[[_,P.slug,void 0,{trim:!0}]])]),e("div",null,[t[52]||(t[52]=e("label",{class:"input-label"},"Billing email",-1)),u(e("input",{"onUpdate:modelValue":t[2]||(t[2]=r=>P.billing_email=r),class:"input",placeholder:"[email protected]"},null,512),[[_,P.billing_email,void 0,{trim:!0}]])]),e("button",{class:"btn btn-primary w-full",disabled:ue.value||!P.name},s(ue.value?"Creating...":"Create Enterprise Workspace"),9,Ka)],32),e("div",Fa,[(i(!0),n(h,null,w(B.value,r=>{var E;return i(),n("button",{key:r.id,type:"button",class:T(["w-full rounded-lg border p-3 text-left transition",((E=l.value)==null?void 0:E.id)===r.id?"border-primary-500 bg-primary-50 dark:border-primary-400 dark:bg-primary-500/10":"border-gray-200 hover:border-primary-300 dark:border-dark-600 dark:hover:border-primary-500"]),onClick:fe=>Qe(r)},[e("div",qa,[e("span",Ba,s(r.name),1),e("span",{class:T(te(r.status))},s(r.status),3)]),e("div",Ga,s(r.slug)+" · ID "+s(r.id),1)],10,La)}),128)),!se.value&&B.value.length===0?(i(),n("p",Ya," No enterprise workspaces ")):f("",!0)])]),l.value?(i(),n("section",Ha,[e("div",Qa,[e("div",Ja,[e("div",null,[e("h2",Za,s(l.value.name),1),e("p",Xa,s(l.value.slug)+" · private pool + allowed platform fallback",1)]),e("div",er,[u(e("input",{"onUpdate:modelValue":t[3]||(t[3]=r=>A.name=r),class:"input",placeholder:"Project name"},null,512),[[_,A.name,void 0,{trim:!0}]]),u(e("input",{"onUpdate:modelValue":t[4]||(t[4]=r=>A.code=r),class:"input",placeholder:"project-code"},null,512),[[_,A.code,void 0,{trim:!0}]]),e("button",{class:"btn btn-primary",disabled:pe.value||!A.name,onClick:At},s(pe.value?"Creating...":"Create Project"),9,tr)])])]),e("div",ar,[e("div",rr,[t[54]||(t[54]=e("p",{class:"text-xs font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},"Active members",-1)),e("p",sr,s(jt.value),1),t[55]||(t[55]=e("p",{class:"mt-1 text-xs text-neutral-500 dark:text-neutral-400"},"Company owners/admins/members/contractors can sign in and view their own data.",-1))]),e("div",or,[t[56]||(t[56]=e("p",{class:"text-xs font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},"Projects",-1)),e("p",ir,s(ke.value),1),t[57]||(t[57]=e("p",{class:"mt-1 text-xs text-neutral-500 dark:text-neutral-400"},"Issue keys by internal team, freelancer, or outsourced project.",-1))]),e("div",nr,[t[58]||(t[58]=e("p",{class:"text-xs font-medium uppercase tracking-wide text-neutral-500 dark:text-neutral-400"},"Private supply",-1)),e("p",lr,s(Ke.value),1),t[59]||(t[59]=e("p",{class:"mt-1 text-xs text-neutral-500 dark:text-neutral-400"},"Enterprise-owned accounts only enter their own pool and are not shared with other enterprises.",-1))])]),e("div",dr,[e("div",ur,[t[61]||(t[61]=e("div",null,[e("h3",{class:"text-base font-semibold text-emerald-950 dark:text-emerald-100"},"Team prepaid package"),e("p",{class:"text-sm text-emerald-700 dark:text-emerald-200/80"},"Activate a team package only after its payment or approved grant already appears in the organization balance ledger. Project spend targets are display-only and never create wallet funds.")],-1)),e("div",pr,[t[60]||(t[60]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"Estimated official usage capacity",-1)),e("p",cr,s(I(ht.value)),1)])]),e("form",{class:"grid gap-3 lg:grid-cols-6",onSubmit:q(Bt,["prevent"])},[u(e("input",{"onUpdate:modelValue":t[5]||(t[5]=r=>d.owner_user_id=r),class:"input",min:"1",type:"number",placeholder:"Owner User ID"},null,512),[[_,d.owner_user_id,void 0,{number:!0}]]),u(e("input",{"onUpdate:modelValue":t[6]||(t[6]=r=>d.paid_amount_usd=r),class:"input",min:"1",step:"0.01",type:"number",placeholder:"Cash received or credit line $"},null,512),[[_,d.paid_amount_usd,void 0,{number:!0}]]),u(e("input",{"onUpdate:modelValue":t[7]||(t[7]=r=>d.official_rate=r),class:"input",max:"1",min:"0.01",step:"0.01",type:"number",placeholder:"Official rate multiplier, e.g. 0.4"},null,512),[[_,d.official_rate,void 0,{number:!0}]]),u(e("select",{"onUpdate:modelValue":t[8]||(t[8]=r=>d.funding_source_kind=r),class:"input"},[...t[62]||(t[62]=[e("option",{value:"payment_order"},"Recorded payment order",-1),e("option",{value:"approved_grant"},"Approved grant",-1)])],512),[[C,d.funding_source_kind]]),u(e("input",{"onUpdate:modelValue":t[9]||(t[9]=r=>d.funding_reference=r),class:"input",placeholder:"Payment order ID or grant reference"},null,512),[[_,d.funding_reference,void 0,{trim:!0}]]),d.funding_source_kind==="approved_grant"?u((i(),n("input",{key:0,"onUpdate:modelValue":t[10]||(t[10]=r=>d.approval_reference=r),class:"input",placeholder:"Grant approval reference"},null,512)),[[_,d.approval_reference,void 0,{trim:!0}]]):f("",!0),u(e("input",{"onUpdate:modelValue":t[11]||(t[11]=r=>d.project_spend_target_usd=r),class:"input",min:"0",step:"0.01",type:"number",placeholder:"Project spend target (display only)"},null,512),[[_,d.project_spend_target_usd,void 0,{number:!0}]]),u(e("select",{"onUpdate:modelValue":t[12]||(t[12]=r=>d.group_id=r),class:"input"},[t[63]||(t[63]=e("option",{value:null},"Group for new key",-1)),(i(!0),n(h,null,w(H.value,r=>
1(i(),n("option",{key:r.id,value:r.id},s(r.name),9,mr))),128))],512),[[C,d.group_id]]),u(e("select",{"onUpdate:modelValue":t[13]||(t[13]=r=>d.supply_source_id=r),class:"input"},[t[64]||(t[64]=e("option",{value:null},"Supply for new key",-1)),(i(!0),n(h,null,w(N.value,r=>(i(),n("option",{key:r.id,value:r.id},s(r.name)+" · "+s(r.provider),9,gr))),128))],512),[[C,d.supply_source_id]]),u(e("input",{"onUpdate:modelValue":t[14]||(t[14]=r=>d.project_name=r),class:"input lg:col-span-2",placeholder:"Project name, optional"},null,512),[[_,d.project_name,void 0,{trim:!0}]]),u(e("input",{"onUpdate:modelValue":t[15]||(t[15]=r=>d.project_code=r),class:"input lg:col-span-2",placeholder:"Project code, optional"},null,512),[[_,d.project_code,void 0,{trim:!0}]]),u(e("input",{"onUpdate:modelValue":t[16]||(t[16]=r=>d.key_name=r),class:"input",placeholder:"Main key name"},null,512),[[_,d.key_name,void 0,{trim:!0}]]),e("button",{class:"btn btn-primary lg:col-span-6",disabled:ce.value||!De.value},s(ce.value?"Provisioning...":"Activate package against recorded funding"),9,_r)],32),W.value?(i(),n("div",vr,[e("p",yr,"Package applied against "+s(W.value.funding_source_kind)+" "+s(W.value.funding_reference)+".",1),e("p",br,"Project "+s(W.value.project.name)+" spend target is "+s(I(W.value.project.budget_limit_usd))+" (display only). Main key: "+s(((O=W.value.project_api_key)==null?void 0:O.key)||((xe=W.value.project_api_key)==null?void 0:xe.key_preview)||"unchanged"),1)])):f("",!0)]),e("div",xr,[e("div",fr,[e("h3",kr,s(v(g)("admin.enterpriseWorkspaces.contractedRate.title")),1),e("p",hr,s(v(g)("admin.enterpriseWorkspaces.contractedRate.description")),1)]),e("form",{class:"grid gap-2 lg:grid-cols-[160px_minmax(0,1fr)_160px_auto]",onSubmit:q(Gt,["prevent"])},[u(e("select",{"onUpdate:modelValue":t[17]||(t[17]=r=>y.scope=r),class:"input"},[e("option",wr,s(v(g)("admin.enterpriseWorkspaces.contractedRate.scopeGroup")),1),e("option",jr,s(v(g)("admin.enterpriseWorkspaces.contractedRate.scopeLine")),1),e("option",Sr,
1s(v(g)("admin.enterpriseWorkspaces.contractedRate.scopeModelGroup")),1)],512),[[C,y.scope]]),y.scope==="group"?(i(),n("div",Rr,[u(e("select",{"onUpdate:modelValue":t[18]||(t[18]=r=>y.group_id=r),class:"input"},[e("option",Cr,s(v(g)("admin.enterpriseWorkspaces.contractedRate.selectGroup")),1),(i(!0),n(h,null,w(H.value,r=>(i(),n("option",{key:r.id,value:r.id},s(r.name),9,Pr))),128))],512),[[C,y.group_id,void 0,{number:!0}]]),u(e("select",{"onUpdate:modelValue":t[19]||(t[19]=r=>y.product_code=r),class:"input","data-testid":"contracted-rate-group-product"},[e("option",Er,s(v(g)("admin.enterpriseWorkspaces.contractedRate.selectGroupProduct")),1),t[65]||(t[65]=e("option",{value:"all_models"},"all_models",-1)),(i(!0),n(h,null,w(Pe.value,r=>(i(),n("option",{key:r.product_code,value:r.product_code},s(r.product_name)+" ("+s(r.product_code)+")",9,Ur))),128))],512),[[C,y.product_code]])])):y.scope==="line"?u((i(),n("select",{key:1,"onUpdate:modelValue":t[20]||(t[20]=r=>y.route_namespace=r),class:"input"},[e("option",Ir,s(v(g)("admin.enterpriseWorkspaces.contractedRate.selectLine")),1),(i(!0),n(h,null,w(ft.value,r=>(i(),n("option",{key:r,value:r},s(r),9,Mr))),128))],512)),[[C,y.route_namespace]]):u((i(),n("select",{key:2,"onUpdate:modelValue":t[21]||(t[21]=r=>y.product_code=r),class:"input"},[e("option",Vr,s(v(g)("admin.enterpriseWorkspaces.contractedRate.selectModelGroup")),1),(i(!0),n(h,null,w(Pe.value,r=>(i(),n("option",{key:r.product_code,value:r.product_code},s(r.product_name)+" ("+s(r.product_code)+")",9,Ar))),128))],512)),[[C,y.product_code]]),u(e("input",{"onUpdate:modelValue":t[22]||(t[22]=r=>y.rate_multiplier=r),class:"input",min:"0.01",step:"0.01",type:"number",placeholder:y.scope==="group"?v(g)("admin.enterpriseWorkspaces.contractedRate.groupMultiplierPlaceholder"):v(g)("admin.enterpriseWorkspaces.contractedRate.multiplierPlaceholder")},null,8,Or),[[_,y.rate_multiplier,void 0,{number:!0}]]),e("button",{class:"btn btn-primary",disabled:me.value||!kt.value},s(me.value?v(g)("admin.enterpriseWorkspaces.contractedRate.declaring"):v(g)("admin.enterpriseWorkspaces.contractedRate.declare")),9,Wr)],32),e("p",Nr,s(v(g)("admin.enterpriseWorkspaces.contractedRate.multiplierHint")),1),e("div",zr,[e("p",Tr,s(v(g)("admin.enterpriseWorkspaces.contractedRate.existingTitle")),1),Ce.value?(i(),n("p",$r,s(v(g)("admin.enterpriseWorkspaces.contractedRate.loading")),1)):X.value.length===0?(i(),n("p",Dr,s(v(g)("admin.enterpriseWorkspaces.contractedRate.none")),1)):(i(),n("ul",Kr,[(i(!0),n(h,null,w(X.value,r=>{var E,fe;return i(),n("li",{key:r.id,class:"rounded-lg border border-indigo-100 bg-white px-3 py-2 text-sm dark:border-indigo-500/20 dark:bg-dark-800"},[e("span",Fr,s(ga(r)),1),v(We)(r)?(i(),n(h,{key:0},[(E=v(We)(r))!=null&&E.entitlesNothing?(i(),n("span",Lr,s(v(g)("admin.enterpriseWorkspaces.contractedRate.entitlesNothing")),1)):(i(),n("span",qr,s(v(g)("admin.enterpriseWorkspaces.contractedRate.entitlesProduct",{product:(fe=v(We)(r))==null?void 0:fe.product})),1))],64)):f("",!0),r.rate_inherited?(i(),n("span",Br,s(v(g)("admin.enterpriseWorkspaces.contractedRate.inheritsRate")),1)):(i(),n("span",Gr,s(_a(r.rate_multiplier)),1)),r.negotiated?f("",!0):(i(),n("span",Yr,s(v(g)("admin.enterpriseWorkspaces.contractedRate.seededDefault")),1)),r.negotiated?(i(),n("button",{key:4,type:"button",class:"btn btn-secondary ml-3 px-2 py-1 text-xs",disabled:Z.value===r.id,onClick:Xo=>Yt(r)},s(Z.value===r.id?v(g)("admin.enterpriseWorkspaces.contractedRate.retiring"):v(g)("admin.enterpriseWorkspaces.contractedRate.retire")),9,Hr)):f("",!0)])}),128))]))])]),e("div",Qr,[e("div",Jr,[t[67]||(t[67]=e("div",null,[e("h3",{class:"text-base font-semibold text-gray-900 dark:text-white"},"Company Members & Roles"),e("p",{class:"text-sm text-gray-500 dark:text-gray-400"},"Company-level accounts: owners/admins/members/contractors can sign in to view their projects, keys, and usage.")],-1)),e("form",{class:"grid gap-2 sm:grid-cols-[140px_160px_120px]",onSubmit:q(Ot,["prevent"])},[u(e("input",{"onUpdate:modelValue":t[23]||(t[23]=r=>M.user_id=r),class:"input",min:"1",type:"number",placeholder:"User ID"},null,512),[[_,M.user_id,void 0,{number:!0}]]),u(e("select",{"onUpdate:modelValue":t[24]||(t[24]=r=>
1M.role=r),class:"input"},[...t[66]||(t[66]=[e("option",{value:"owner"},"owner",-1),e("option",{value:"admin"},"admin",-1),e("option",{value:"member"},"member",-1),e("option",{value:"viewer"},"viewer",-1),e("option",{value:"contractor"},"contractor",-1)])],512),[[C,M.role]]),e("button",{class:"btn btn-primary",disabled:we.value||!M.user_id},"Add Member",8,Zr)],32)]),e("div",Xr,[e("div",es,[t[69]||(t[69]=e("div",null,[e("h4",{class:"text-sm font-semibold text-indigo-950 dark:text-indigo-100"},"Email invite"),e("p",{class:"text-xs text-indigo-700 dark:text-indigo-200/80"},"Recipients create a password from the link and automatically join this organization.")],-1)),e("form",{class:"grid flex-1 gap-2 sm:grid-cols-[minmax(220px,1fr)_150px_120px]",onSubmit:q(Nt,["prevent"])},[u(e("input",{"onUpdate:modelValue":t[25]||(t[25]=r=>V.email=r),class:"input",type:"email",placeholder:"[email protected]"},null,512),[[_,V.email,void 0,{trim:!0}]]),u(e("select",{"onUpdate:modelValue":t[26]||(t[26]=r=>V.role=r),class:"input"},[...t[68]||(t[68]=[e("option",{value:"owner"},"owner",-1),e("option",{value:"admin"},"admin",-1),e("option",{value:"member"},"member",-1),e("option",{value:"viewer"},"viewer",-1),e("option",{value:"contractor"},"contractor",-1)])],512),[[C,V.role]]),e("button",{class:"btn btn-primary",disabled:je.value||!V.email},"Invite",8,ts)],32)]),J.value?(i(),n("div",as,[t[70]||(t[70]=e("span",{class:"font-medium text-gray-700 dark:text-gray-200"},"Invite link",-1)),e("code",rs,s(J.value),1),e("button",{class:"btn btn-secondary btn-sm",onClick:t[27]||
1(t[27]=r=>Tt(J.value))},"Copy")])):f("",!0),re.value.length>0?(i(),n("div",ss,[(i(!0),n(h,null,w(re.value,r=>(i(),n("div",{key:r.id,class:"flex items-center justify-between gap-3 rounded-lg bg-white p-3 text-sm dark:bg-dark-800"},[e("div",null,[e("p",os,s(r.email),1),e("p",is,s(r.role)+" · "+s(r.status)+" · expires "+s(sa(r.expires_at)),1)]),r.status==="pending"?(i(),n("button",{key:0,class:"btn btn-secondary btn-sm",onClick:E=>$t(r)},"Revoke",8,ns)):f("",!0)]))),128))])):f("",!0)]),e("div",ls,[(i(!0),n(h,null,w(G.value,r=>(i(),n("div",{key:r.id,class:"rounded-lg border border-gray-200 p-3 dark:border-dark-600"},[e("div",ds,[e("div",null,[e("p",us,s(ca(r)),1),e("p",ps,"User ID "+s(r.user_id)+" · Member #"+s(r.id),1)]),e("span",{class:T(te(r.status))},s(r.status),3)]),e("div",cs,[e("select",{class:"input h-9 text-sm",value:r.role,onChange:E=>Dt(r,E.target.value)},[...t[71]||(t[71]=[e("option",{value:"owner"},"owner",-1),e("option",{value:"admin"},"admin",-1),e("option",{value:"member"},"member",-1),e("option",{value:"viewer"},"viewer",-1),e("option",{value:"contractor"},"contractor",-1)])],40,ms),e("button",{class:"btn btn-secondary btn-sm",onClick:E=>Kt(r)},s(r.status==="active"?"Disable":"Enable"),9,gs)])]))),128)),!oe.value&&G.value.length===0?(i(),n("p",_s," No members yet. Add the enterprise admin or planner user ID first. ")):f("",!0)])]),e("div",vs,[e("div",ys,[t[72]||(t[72]=e("div",null,[e("h3",{class:"text-base font-semibold text-gray-900 dark:text-white"},"Usage & Cost Report"),e("p",{class:"text-sm text-gray-500 dark:text-gray-400"},"Reconcile by project and upstream source, separating enterprise-owned accounts from platform credit.")],-1)),e("button",{class:"btn btn-secondary btn-sm",disabled:D.value,onClick:He},"Refresh Report",8,bs)]),ge.value?(i(),n("p",xs,s(ge.value),1)):(i(),n("div",fs,[e("div",ks,[t[73]||(t[73]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"Requests",-1)),e("p",hs,s(((ae=U.value)==null?void 0:ae.totals.requests)??0),1)]),e("div",ws,[t[74]||(t[74]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"Tokens",-1)),e("p",js,s(Oe((tt=U.value)==null?void 0:tt.totals.total_tokens)),1)]),e("div",Ss,[t[75]||(t[75]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"Official cost",-1)),e("p",Rs,s(I((at=U.value)==null?void 0:at.totals.cost_usd)),1)]),e("div",Cs,[t[76]||(t[76]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"Actual cost",-1)),e("p",Ps,s(I((rt=U.value)==null?void 0:rt.totals.actual_cost_usd)),1)])])),e("div",Es,[e("div",null,[t[77]||(t[77]=e("h4",{class:"mb-2 text-sm font-semibold text-gray-900 dark:text-white"},"By project",-1)),e("div",Us,[(i(!0),n(h,null,w(((st=U.value)==null?void 0:st.projects)??[],r=>(i(),n("div",{key:r.project_id??"unassigned",class:"flex items-center justify-between rounded-lg border border-gray-200 p-3 text-sm dark:border-dark-600"},[e("span",Is,s(r.project_name),1),e("span",Ms,s(I(r.actual_cost_usd))+" · "+s(Oe(r.total_tokens)),1)]))),128)),!D.value&&!ge.value&&(((ot=U.value)==null?void 0:ot.projects.length)??0)===0?(i(),n("p",Vs,"No project usage")):f("",!0)])]),e("div",null,[t[78]||(t[78]=e("h4",{class:"mb-2 text-sm font-semibold text-gray-900 dark:text-white"},"By supply source",-1)),e("div",As,[(i(!0),n(h,null,w(((it=U.value)==null?void 0:it.supply_sources)??[],r=>(i(),n("div",{key:r.supply_source_id??r.supply_name,class:"rounded-lg border border-gray-200 p-3 text-sm dark:border-dark-600"},[e("div",Os,[e("span",Ws,s(r.supply_name),1),e("span",Ns,s(I(r.actual_cost_usd)),1)]),e("div",zs,s(r.owner_type)+" · "+s(r.billing_mode)+" · "+s(Oe(r.total_tokens)),1)]))),128)),!D.value&&(((nt=U.value)==null?void 0:nt.supply_sources.length)??0)===0&&Fe.value.supply_sources?(i(),n("p",Ts,s(Fe.value.supply_sources),1)):!D.value&&!ge.value&&(((lt=U.value)==null?void 0:lt.supply_sources.length)??0)===0?(i(),n("p",$s,"No upstream usage")):f("",!0)])])])]),e("div",Ds,[e("div",Ks,[e("div",Fs,[t[79]||(t[79]=e("div",null,[e("h3",{class:"text-base font-semibold text-gray-900 dark:text-white"},"Projects"),e("p",{class:"text-sm text-gray-500 dark:text-gray-400"},"Issue keys by project for internal teams, freelancers, and outsourced work.")],-1)),e("span",Ls,s(ke.value)+" total",1)]),e("div",qs,[(i(!0),n(h,null,w(Y.value,r=>{var E;return i(),n("button",{key:r.id,type:"button",class:T(["w-full rounded-lg border p-3 text-left transition",((E=j.value)==null?void 0:E.id)===r.id?"border-primary-500 bg-primary-50 dark:border-primary-400 dark:bg-primary-500/10":"border-gray-200 hover:border-primary-300 dark:border-dark-600 dark:hover:border-primary-500"]),onClick:fe=>Ae(r)}
1,[e("div",Gs,[e("span",Ys,s(r.name),1),e("span",{class:T(te(r.status))},s(r.status),3)]),e("div",Hs,[e("span",null,s(r.code),1),e("span",null,s(r.routing_policy),1),e("span",null,"budget "+s(I(r.budget_used_usd))+" / "+s(I(r.budget_limit_usd)),1)])],10,Bs)}),128)),!ie.value&&Y.value.length===0?(i(),n("p",Qs," No projects ")):f("",!0)])]),e("div",Js,[t[87]||(t[87]=e("div",{class:"mb-4"},[e("h3",{class:"text-base font-semibold text-gray-900 dark:text-white"},"Project API Keys"),e("p",{class:"text-sm text-gray-500 dark:text-gray-400"},"Project keys are written to api_keys and bound to organization/project.")],-1)),j.value?(i(),n("form",{key:0,class:"mb-4 space-y-3",onSubmit:q(Lt,["prevent"])},[e("div",Zs,[u(e("input",{"onUpdate:modelValue":t[28]||(t[28]=r=>o.name=r),class:"input sm:col-span-2",placeholder:"Key name / contractor / service"},null,512),[[_,o.name,void 0,{trim:!0}]]),u(e("input",{"onUpdate:modelValue":t[29]||(t[29]=r=>o.quota=r),class:"input",min:"0",step:"0.01",type:"number",placeholder:"Total quota $"},null,512),[[_,o.quota,void 0,{number:!0}]]),u(e("input",{"onUpdate:modelValue":t[30]||(t[30]=r=>o.expires_in_days=r),class:"input",min:"1",type:"number",placeholder:"Expire days"},null,512),[[_,o.expires_in_days,void 0,{number:!0}]]),u(e("select",{"onUpdate:modelValue":t[31]||(t[31]=r=>o.credential_subject_type=r),class:"input"},[...t[80]||(t[80]=[e("option",{value:"project"},"Main key",-1),e("option",{value:"service"},"Child service key",-1)])],512),[[C,o.credential_subject_type]])]),ee.value&&o.credential_subject_type==="project"?(i(),n("p",Xs," This project already has an active main key for the selected group. Choose another group or create child service keys under this group. ")):f("",!0),!ee.value&&o.credential_subject_type!=="project"?(i(),n("p",eo," Child keys require an active main key for the selected group. Select the product group first. ")):f("",!0),e("div",to,[u(e("select",{"onUpdate:modelValue":t[32]||(t[32]=r=>o.product_package=r),class:"input",disabled:o.credential_subject_type!=="project",onChange:na},[...t[81]||(t[81]=[e("option",{value:""},"Select product",-1),e("option",{value:"custom-multi-capability"},"Custom multi-capability",-1),e("option",{value:"all-in-one"},"One key for all",-1),e("option",{value:"codex-auth-dev-pro"},"Codex/auth Dev Pro",-1),e("option",{value:"codex-auth-dev-max"},"Codex/auth Dev Max",-1),e("option",{value:"codex-auth-owner-unlimited"},"Codex/auth Owner Unlimited",-1),e("option",{value:"openai-credit-prepaid"},"OpenAI credit prepaid",-1),e("option",{value:"workspace-self-supply"},"Workspace self supply",-1)])],40,ao),[[C,o.product_package]]),u(e("select",{"onUpdate:modelValue":t[33]||(t[33]=r=>o.supply_source_id=r),class:"input",disabled:o.credential_subject_type!=="project"},[t[82]||(t[82]=e("option",{value:null},"Select supply",-1)),(i(!0),n(h,null,w(N.value,r=>(i(),n("option",{key:r.id,value:r.id},s(r.name)+" · "+s(r.provider),9,so))),128))],8,ro),[[C,o.supply_source_id]]),u(e("select",{"onUpdate:modelValue":t[34]||(t[34]=r=>o.executor=r),class:"input",disabled:o.credential_subject_type!=="project"},[...t[83]||(t[83]=[e("option",{value:""},"Select executor",-1),e("option",{value:"sub2api-native"},"Quotaflow native",-1)])],8,oo),[[C,o.executor]]),u(e("select",{"onUpdate:modelValue":t[35]||(t[35]=r=>o.group_id=r),class:"input"},[t[84]||(t[84]=e("option",{value:null},"Select group",-1)),(i(!0),n(h,null,w(H.value,r=>(i(),n("option",{key:r.id,value:r.id},s(r.name),9,io))),128))],512),[[C,o.group_id]])]),e("div",no,[u(e("input",{"onUpdate:modelValue":t[36]||(t[36]=r=>o.supply_class=r),class:"input",disabled:o.credential_subject_type!=="project",placeholder:"supply class, e.g. codex_auth"},null,8,lo),[[_,o.supply_class,void 0,{trim:!0}]]),u(e("input",{"onUpdate:modelValue":t[37]||(t[37]=r=>o.supply_owner=r),class:"input",disabled:o.credential_subject_type!=="project",placeholder:"supply owner, e.g. organization"},null,8,uo),[[_,o.supply_owner,void 0,{trim:!0}]]),u(e("input",{"onUpdate:modelValue":t[38]||(t[38]=r=>o.supply_mechanism=r),class:"input",disabled:o.credential_subject_type!=="project",placeholder:"mechanism, e.g. auth_oauth/api_key"},null,8,po),[[_,o.supply_mechanism,void 0,{trim:!0}]])]),e("div",co,[t[85]||(t[85]=e("div",{class:"mb-2 flex flex-col gap-1 sm:flex-row sm:items-center sm:justify-between"},[e("span",{class:"text-sm font-medium text-gray-900 dark:text-white"},"Capabilities / Models"),e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"A single key can select multiple capabilities; the backend still applies different group discounts and rate limits by capability.")],-1)),e("div",mo,[(i(!0),n(h,null,w($.value,r=>(i(),n("label",{key:r.value,class:"flex cursor-pointer items-start gap-2 rounded-md border border-gray-200 bg-white p-2 text-sm dark:border-dark-600 dark:bg-dark-800"},[u(e("input",{"onUpdate:modelValue":t[39]||(t[39]=E=>
1o.capabilities=E),class:"mt-1",type:"checkbox",disabled:o.credential_subject_type!=="project",value:r.value,onChange:Ze},null,40,go),[[wa,o.capabilities]]),e("span",null,[e("span",_o,s(r.label),1),e("span",vo,s(r.description),1),e("span",yo,s(la(r.weights)),1)])]))),128))]),e("p",bo,[pt(" Current profile: "+s(da())+" ",1),xt.value?(i(),n("span",xo," · Responses image_generation bridge enabled")):f("",!0)])]),e("div",fo,[u(e("input",{"onUpdate:modelValue":t[40]||(t[40]=r=>o.rate_limit_5h=r),class:"input",min:"0",step:"0.01",type:"number",placeholder:"5h limit $"},null,512),[[_,o.rate_limit_5h,void 0,{number:!0}]]),u(e("input",{"onUpdate:modelValue":t[41]||(t[41]=r=>o.rate_limit_1d=r),class:"input",min:"0",step:"0.01",type:"number",placeholder:"1d limit $"},null,512),[[_,o.rate_limit_1d,void 0,{number:!0}]]),u(e("input",{"onUpdate:modelValue":t[42]||(t[42]=r=>o.rate_limit_7d=r),class:"input",min:"0",step:"0.01",type:"number",placeholder:"7d limit $"},null,512),[[_,o.rate_limit_7d,void 0,{number:!0}]]),e("button",{class:"btn btn-primary",disabled:Re.value||!Te.value},"Issue Key",8,ko)]),t[86]||(t[86]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"Creating a key requires explicit product / supply / executor / group selection; Codex/auth is served by the native executor.",-1))],32)):f("",!0),e("div",ho,[(i(!0),n(h,null,w(F.value,r=>(i(),n("div",{key:r.id,class:"rounded-lg border border-gray-200 p-3 text-sm dark:border-dark-600"},[e("div",wo,[e("span",jo,s(r.name),1),e("span",{class:T(te(r.status))},s(r.status),3)]),e("div",So,s(r.key||r.key_preview)+" · "+s(Et(r))+" · quota "+s(I(r.quota_used))+" / "+s(I(r.quota)),1),e("div",Ro,s(r.product_package)+" · "+s(r.supply_class)+" · "+s(r.executor)+" · group "+s(r.group_id??"-"),1),e("div",Co,s(pa(r))+" · expires "+s(ua(r.expires_at)),1)]))),128)),j.value&&!de.value&&F.value.length===0?(i(),n("p",Po," No project keys ")):f("",!0)])])]),e("div",Eo,[e("div",Uo,[e("div",null,[t[88]||(t[88]=e("h3",{class:"text-base font-semibold text-gray-900 dark:text-white"},"Supply Sources",-1)),e("p",Io,"Enterprise private: "+s(Ke.value)+"; platform fallback: "+s(wt.value)+". Enterprise-owned upstreams are only available to the current enterprise.",1)]),e("div",Mo,[u(e("input",{"onUpdate:modelValue":t[43]||(t[43]=r=>k.name=r),class:"input",placeholder:"OpenAI Team"},null,512),[[_,k.name,void 0,{trim:!0}]]),u(e("select",{"onUpdate:modelValue":t[44]||(t[44]=r=>k.provider=r),class:"input"},[...t[89]||(t[89]=[e("option",{value:"openai"},"openai",-1),e("option",{value:"claude"},"claude",-1),e("option",{value:"gemini"},"gemini",-1),e("option",{value:"openrouter"},"openrouter",-1),e("option",{value:"oneapi"},"oneapi",-1)])],512),[[C,k.provider]]),u(e("input",{"onUpdate:modelValue":t[45]||(t[45]=r=>k.endpoint=r),class:"input",placeholder:"Relay/base URL"},null,512),[[_,k.endpoint,void 0,{trim:!0}]]),u(e("input",{"onUpdate:modelValue":t[46]||(t[46]=r=>k.credential=r),class:"input",type:"password",placeholder:"API key / token"},null,512),[[_,k.credential,void 0,{trim:!0}]]),e("button",{class:"btn btn-primary",disabled:Se.value||!k.name,onClick:Ft},"Add Upstream",8,Vo)])]),e("div",Ao,[j.value?(i(),n("div",Oo,[e("div",Wo," Effective pool for "+s(j.value.name),1),e("div",No,[(i(!0),n(h,null,w(Q.value,r=>(i(),n("span",{key:r.id,class:"rounded-full bg-white px-2.5 py-1 text-xs font-medium text-gray-700 shadow-sm dark:bg-dark-700 dark:text-gray-200"},s(r.owner_type)+" · "+s(r.provider)+" · "+s(r.billing_mode)+" · "+s(Xe(r)),1))),128)),!le.value&&Q.value.length===0?(i(),n("span",zo," No available upstream
1s for the current project ")):f("",!0)])])):f("",!0),e("table",To,[t[91]||(t[91]=e("thead",null,[e("tr",{class:"text-left text-xs font-medium uppercase tracking-wide text-gray-500 dark:text-gray-400"},[e("th",{class:"px-3 py-2"},"Name"),e("th",{class:"px-3 py-2"},"Owner"),e("th",{class:"px-3 py-2"},"Provider"),e("th",{class:"px-3 py-2"},"Billing"),e("th",{class:"px-3 py-2"},"Credential"),e("th",{class:"px-3 py-2"},"Health")])],-1)),e("tbody",$o,[(i(!0),n(h,null,w(N.value,r=>(i(),n("tr",{key:r.id,class:"text-sm text-gray-700 dark:text-gray-300"},[e("td",Do,s(r.name),1),e("td",Ko,s(r.owner_type),1),e("td",Fo,[e("div",Lo,s(r.provider)+" / "+s(r.credential_type),1),e("div",qo,s(va(r)),1)]),e("td",Bo,[e("div",null,s(r.billing_mode),1),e("div",Go,s(Xe(r)),1)]),e("td",Yo,s(r.credential_preview||"-"),1),e("td",Ho,[e("span",{class:T(te(r.status))},s(r.status),3)])]))),128)),!ne.value&&N.value.length===0?(i(),n("tr",Qo,[...t[90]||(t[90]=[e("td",{colspan:"6",class:"px-3 py-6 text-center text-sm text-gray-500 dark:text-gray-400"},"No supply sources",-1)])])):f("",!0)])])])])])):(i(),n("section",Jo,[...t[92]||(t[92]=[e("p",{class:"text-base font-medium text-gray-900 dark:text-white"},"Select or create an enterprise workspace",-1),e("p",{class:"mt-2 text-sm text-gray-500 dark:text-gray-400"}
1,"Next, configure projects, project keys, and private upstreams.",-1)])]))])])]}),_:1})}}});export{mi as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.