1import{aD as ne,aC as _e,r as M,c as r,l as ve,p as ye,w as ge,L as _,Z as l,S as I,_ as le,Q as ce,N as j,G as k,O as m,K as c,M as pe,T as R,W as he,a6 as be,n as we,z as ke,u as Te}from"./vue-vendor-CyH4x1-E.js";import{P as Ie}from"./PageWrapper-XTAzDjCc.js";import{T as ie}from"./TableWrapper-CKLJ_MZI.js";import{E as Se}from"./EmptyState-lc4JG4jH.js";import{S as Ae}from"./SetupBanner-C5wfHx4K.js";import{W as xe}from"./WidgetWrapper-BuZxCGmz.js";import{P as re}from"./WidgetView-DOBWdbBm.js";import{o as Ee,r as K,a as J}from"./filters-utils-C6owUqWb.js";import{F as Fe}from"./use-persist-query-V3RV2H3J.js";import{_ as ue,D as Pe}from"./main-CMIpD3jd.js";import{p as Le,q as Oe,r as Ce,s as De}from"./diagnose-service-CzrW_UR-.js";import{a as qe}from"./filter-options-store-COScA8op.js";import{a as Be,F}from"./metric-query-utils-DBUUshoc.js";import{u as $e}from"./use-url-query-B9EStKLM.js";import{f as Ne}from"./time-utils-sTSci0xm.js";import{f as Me}from"./teams-utils-DTHifhP0.js";import{d as Re}from"./period-utils-B7g8wIei.js";import{b as Ue}from"./filter-storage-2K9GaPdC.js";import"./Header-CR2Demvq.js";import"./DataSettings-Da5RUkpu.js";import"./ui-vendor-Kc4f6fey.js";import"./utils-vendor-BqjKlC8F.js";import"./DateRangeCalendar-wy5wbS1c.js";import"./TableView-jFeMm2gu.js";import"./tanstack-vendor-BkJgoSrC.js";import"./WaydevLoader-gCHJE3X1.js";import"./ui-components-BvRCf8IE.js";import"./LazySelect-DHpw0XM8.js";import"./Tooltip-CfCnJnFT.js";import"./SearchInput-Dd-In7G8.js";import"./role-utils-MDJaoYbN.js";import"./vuedraggable.umd-DgsFpGg2.js";import"./layout-vendor-DlsjU7av.js";import"./GoalsScopesCell-BqYwf4yK.js";import"./format-utils-DOcDBbtO.js";import"./use-tooltip-DEc1LRSQ.js";import"./AiSparkleMenu-CVvlOXIf.js";import"./metric-report-route-utils-C7yeOcAR.js";import"./d3-chart-utils-VcBcCQC0.js";import"./d3-vendor-BSjYYawF.js";import"./use-metric-metadata-ABztC6dh.js";import"./metric-service-IF4keZbE.js";import"./ClickHint-BsJ6LMVq.js";import"./D3Chart-DDhx0NXE.js";import"./form-vendor-CKjjkstR.js";import"./auth-vendor-BCsRLuQJ.js";import"./teams-service-HVyEToxR.js";import"./attributes-service-9RwT5ntw.js";import"./repositories-service-C3Wz1XrV.js";import"./repository-groups-service-DCpVLuYg.js";import"./issue-collection-groups-service-D1V_3kRM.js";import"./issue-collections-service-C0lCDBLE.js";import"./detection-service-B4uHB19G.js";import"./path-segments-service-ChRWb7EK.js";import"./issue-attributes-service-Dn-9cfIo.js";import"./select-options-utils-uQe9oLNH.js";import"./ai-tool-meta-F7HIT987.js";const Ve={class:"outcome-filter","data-test-id":"outcome-filter"},Qe={class:"outcome-filter__value"},We={key:0,class:"outcome-filter__all"},ze={key:1,class:"outcome-filter__selected"},Ge={class:"outcome-filter__selected-text"},He={__name:"OutcomeFilter",props:{options:{type:Array,required:!0}},setup(X){const h=X,P=ne(),Y=_e(),d=M(null),p=M(null),u=M(!1),L=M({}),O=r(()=>h.options.map(o=>o.id)),U=r(()=>h.options.map(o=>({id:o.id,value:o.id,label:o.label}))),A=r(()=>{var a;const o=String(((a=P.query)==null?void 0:a["filters[outcome]"])||"").trim();return O.value.includes(o)?o:null}),y=r(()=>A.value?[A.value]:[]),V=r(()=>{var o;return((o=h.options.find(a=>a.id===A.value))==null?void 0:o.label)??""}),C=(o,a,n)=>Math.min(Math.max(o,a),n),g=async()=>{var b,H,x,$;await we();const o=(H=(b=d.value)==null?void 0:b.getBoundingClientRect)==null?void 0:H.call(b),a=($=(x=p.value)==null?void 0:x.getBoundingClientRect)==null?void 0:$.call(x);if(!o||!a)return;const n=12,T=window.innerWidth||0,z=window.innerHeight||0,G=C(o.bottom+8,n,Math.max(n,z-n-a.height)),Z=C(o.left,n,Math.max(n,T-n-a.width));L.value={top:`${G}px`,left:`${Z}px`}},S=()=>{u.value=!1},Q=async()=>{u.value=!u.value,u.value&&await g()},D=o=>{var a,n;u.value&&((a=d.value)!=null&&a.contains(o.target)||(n=p.value)!=null&&n.contains(o.target)||S())},q=()=>S();ve(()=>{document.addEventListener("click",D),document.addEventListener("close-filter-dropdowns",q),window.addEventListener("scroll",g,!0),window.addEventListener("resize",g)}),ye(()=>{document.removeEventListener("click",D),document.removeEventListener("close-filter-dropdowns",q),window.removeEventListener("scroll",g,!0),window.removeEventListener("resize",g)}),ge(u,o=>o&&g());const B=o=>{const a={...P.query,page:"1"};o&&O.value.includes(o)?a["filters[outcome]"]=o:delete a["filters[outcome]"],Y.replace({query:Ee(a)})},W=o=>{const n=(Array.isArray(o)?o:[]).find(T=>O.value.includes(String(T)));B(n||null)};return(o,a)=>(c(),_("div",Ve,[l("button",{ref_key:"btn",ref:d,type:"button",class:ce(["outcome-filter__bt
1n",{"outcome-filter__btn--open":u.value}]),"data-test-id":"outcome-filter-trigger",onClick:Q},[a[2]||(a[2]=l("span",{class:"outcome-filter__label"},"Outcome",-1)),a[3]||(a[3]=l("span",{class:"outcome-filter__sep","aria-hidden":"true"},null,-1)),l("span",Qe,[A.value?(c(),_("span",ze,[l("span",Ge,I(V.value),1),l("button",{type:"button",class:"outcome-filter__selected-clear","aria-label":"Clear outcome filter","data-test-id":"outcome-filter-clear",onClick:a[0]||(a[0]=le(n=>B(null),["stop"]))},[...a[1]||(a[1]=[l("i",{class:"fe fe-x","aria-hidden":"true"},null,-1)])])])):(c(),_("span",We,"All"))]),a[4]||(a[4]=l("i",{class:"fe fe-chevron-down outcome-filter__chevron","aria-hidden":"true"},null,-1))],2),(c(),j(be,{to:"body"},[k(he,{name:"filter-dropdown"},{default:m(()=>[u.value?(c(),_("div",{key:0,ref_key:"panel",ref:p,class:"outcome-filter__panel","data-test-id":"outcome-filter-panel",style:pe(L.value)},[k(Fe,{variant:"inline",items:U.value,"model-value":y.value,"show-search":!1,"show-total-count":!1,"data-test-id":"outcome-filter-panel-list","onUpdate:modelValue":W},null,8,["items","model-value"])],4)):R("",!0)]),_:1})]))]))}},Ke=ue(He,[["__scopeId","data-v-5aca426c"]]),je={class:"ai-footprint-page","data-test-id":"ai-footprint-page"},Ye={class:"afp-content"},Ze=["onClick"],Je={key:1,class:"afp-expand-placeholder"},Xe={class:"afp-team-name"},et={class:"afp-pct-cell","data-test-id":"ai-footprint-by-team-cell-footprint"},tt={key:1,class:"afp-pct-empty"},ot={class:"afp-outcomes-cell","data-test-id":"ai-footprint-by-team-cell-outcomes"},at={key:0,class:"afp-outcomes-cell__success"},st={key:1,class:"afp-outcomes-cell__incident"},it={"data-test-id":"ai-footprint-cell-repository"},rt={"data-test-id":"ai-footprint-cell-deployed-at"},nt={class:"afp-pct-cell","data-test-id":"ai-footprint-cell-footprint"},lt={key:1,class:"afp-pct-empty"},ct={key:0,"data-test-id":"ai-footprint-empty"}
1,pt="https://docs.waydev.co/docs/ai-checkpoints",ut={__name:"AiFootprint",setup(X){const h=[{id:"success",label:"Success",color:"#16a34a"},{id:"incident",label:"Incident",color:"#dc2626"}],P={page:1,pages:0,per_page:10,total:0},Y=e=>h.find(s=>s.id===e)??{id:e,label:"Unknown",color:"#9ca3af"},d=ne(),p=e=>J(d.query[e]),u=e=>p(e)?{[e]:p(e)}:{},L=qe(["teams","repository_groups","repositories"]),O=r(()=>[...Be(["repository_groups","repos","teams"],L),{key:"outcome",type:"custom",slot:"filter-outcome"}]),{params:U}=$e(e=>{const s=J(e["filters[date_from]"]),t=J(e["filters[date_to]"]);return s&&t?{"filters[date_from]":s,"filters[date_to]":t}:null}),A=r(()=>{var e;return{...F.repos.build(F.repos.read(d.query)),...F.repository_groups.build(F.repository_groups.read(d.query)),...F.teams.build(F.teams.read(d.query),{teamItems:((e=L.teamItems)==null?void 0:e.value)??[]})}}),y=r(()=>U.value?{...U.value,...A.value,...u("filters[outcome]")}:null),V=r(()=>{if(!y.value)return null;const e=Re(p("filters[date_from]"),p("filters[date_to]"));return{...y.value,"settings[granularity]":p("settings[granularity]")||Ue(e),"settings[comparison]":p("settings[comparison]")==="none"?"none":"previous"}}),C=r(()=>y.value?{...y.value,...u("filters[team_name]"),page:K(d.query.team_page,1),per_page:K(d.query.team_per_page,10),...p("team_sort")?{sort:p("team_sort")}:{}}:null),g=r(()=>y.value?{...y.value,...u("filters[search]"),page:K(d.query.page,1),per_page:K(d.query.per_page,10),...u("sort")}:null),S=e=>r(()=>!!e.value),{data:Q,isLoading:D}=Le(y,{enabled:S(y)}),{data:q,isLoading:B}=Oe(V,{enabled:S(V)}),{data:W,isLoading:o}=Ce(C,{enabled:S(C)}),{data:a,isLoading:n}=De(g,{enabled:S(g)}),T=r(()=>{const e=p("filters[outcome]");return h.some(s=>s.id===e)?e:null}),z=r(()=>T.value?h.filter(e=>e.id===T.value):h),G=e=>!T.value||T.value===e,Z=r(()=>{var E,ae,se;const e=((E=q.value)==null?void 0:E.current)??[],s=((ae=q.value)==null?void 0:ae.previous)??null,t=((se=Q.value)==null?void 0:se.buckets)??{},i=(f,v)=>f.map(N=>({date:N.date,value:N[v]??0})),w=z.value.flatMap(f=>[{data:i(e,f.id),color:f.color,label:f.label},...s?[{data:i(s,f.id),color:f.color,dashed:!0,label:`${f.label} (previous)`}]:[]]);return[{id:"ai-footprint-trend",title:"AI Footprint Over Time",description:"AI-written share of code per period, split by deployment outcome.",unit:"%",chartTypes:["line","bar","area"],chartHeight:260,showStats:!0,isLoading:D.value||B.value,stats:z.value.map(f=>{const v=t[f.id],N=(v==null?void 0:v.deployments_count)??0;return{label:`AI Footprint â ${f.label}`,value:(v==null?void 0:v.avg_ai_footprint_percentage)??"â",unit:"%",color:f.color,description:`${N} deployment${N===1?"":"s"}, ${(v==null?void 0:v.instrumented_deployments_count)??0} with AI-instrumented commits`}}),lines:w}]}),b=M(new Set),H=e=>{const s=new Set(b.value);s.has(e)?s.delete(e):s.add(e),b.value=s},x=r(()=>{var t;const e=i=>({...i,id:i.team_id,child_teams:(i.child_teams??[]).map(e)}),s=(((t=W.value)==null?void 0:t.items)||[]).map(e);return p("filters[team_name]")?s.map(i=>({...i,depth:0,child_teams:[]})):Me(s,b.value)}),$=e=>e.map(([s,t,i,w=!1,E=s])=>({id:s,accessorKey:E,header:t,enableSorting:w,size:i})),ee=(e,s,t,i,w,E={})=>({data:e,columns:s,isLoading:t,showPagination:!0,showControls:!0,storageKey:w,pageSize:i.per_page||10,totalItems:i.total??0,totalPages:i.pages??0,currentPage:i.page??1,...E}),me=r(()=>{var e;return ee(x.value,$([["name","Team",200],["users_count","Users",80],["deployments_count","Deployments",120],["outcomes","Outcomes",180,!1,"success_count"],["avg_ai_footprint_percentage","AI Footprint",220,!0]]),o.value,((e=W.value)==null?void 0:e.meta)??P,"ai-footprint-by-team",{getRowClass:s=>s.team_id===null?"row--unassigned":null})}),te=r(()=>{var e;return((e=a.value)==null?void 0:e.deployments)??[]}),oe=r(()=>!n.value&&!!g.value&&!te.value.length),de=r(()=>{var e,s,t;return!(D.value||n.value||B.value||o.value)&&!Number(((e=Q.value)==null?void 0:e.total_deployments)??0)&&!Number(((t=(s=a.value)==null?void 0:s.meta)==null?void 0:t.total)??0)}),fe=r(()=>{var e;return ee(te.value,$([["label","Deployment",220,!0],["repository","Repository",160],["deployed_at","Deployed At",160,!0],["outcome","Outcome",120],["ai_footprint_percentage","AI Footprint",200,!0],["commits","Instrumented / Total Commits",200,!1,"instrumented_commits_count"]]),n.value,((e=a.value)==null?void 0:e.meta)??P,"ai-footprint-list")});
1return(e,s)=>(c(),_("div",je,[k(Ie,{title:"AI Footprint",subtitle:"See how the AI-written share of code in each deployment correlates with successful releases versus incidents.","docs-url":"https://docs.waydev.co/docs/ai-footprint",filters:O.value,"persist-query":!0,"persist-query-keys":["filters[outcome]","filters[search]"],"show-period":!0,"show-granularity":!0,"show-comparison":!0,"default-comparison":"previous"},{"filter-outcome":m(()=>[k(Ke,{options:h})]),"pre-content":m(()=>[de.value?(c(),j(Ae,{key:0,message:"No deployments with AI-instrumented commits found yet. Install and enable Entire in your repositories to start tracking AI-assisted commits.","link-text":"View Docs","link-href":pt,"test-id":"ai-footprint-entire-setup-banner","link-test-id":"ai-footprint-entire-setup-docs-link"})):R("",!0)]),default:m(()=>[l("div",Ye,[k(xe,{widgets:Z.value,"show-filters":!1,"show-settings":!1,"persist-query":!1,"widgets-per-row":1,"show-layout-toggle":!1,"show-view-report":!1,"storage-key":"ai-footprint-widgets","data-test-id":"ai-footprint-widgets"},null,8,["widgets"]),k(ie,{"toolbar-title":"Breakdown by Team","toolbar-description":"AI footprint computed from each team's own authored commits, across deployments the team touched.",search:!0,"search-key":"filters[team_name]","search-placeholder":"Search teams...","page-key":"team_page","per-page-key":"team_per_page","sort-key":"team_sort","table-view-props":me.value,"data-test-id":"ai-footprint-by-team-wrapper"},{"cell-name":m(({row:t})=>{var i;return[l("div",{class:"afp-name-cell",style:pe({paddingLeft:`${(t.original.depth||0)*20}px`}),"data-test-id":"ai-footprint-by-team-cell-name"},[(i=t.original.child_teams)!=null&&i.length?(c(),_("button",{key:0,type:"button",class:"afp-expand-btn","data-test-id":"ai-footprint-by-team-expand-btn",onClick:le(w=>H(t.original.team_id),["stop"])},[l("i",{class:ce(["pi",b.value.has(t.original.team_id)?"pi-chevron-down":"pi-chevron-right"])},null,2)],8,Ze)):(c(),_("span",Je)),l("span",Xe,I(t.original.name),1)],4)]}),"cell-avg_ai_footprint_percentage":m(({row:t})=>[l("div",et,[t.original.avg_ai_footprint_percentage!=null?(c(),j(re,{key:0,items:[{percent:t.original.avg_ai_footprint_percentage,color:"#2563eb"}],borderless:"",inline:""},null,8,["items"])):(c(),_("span",tt,"No AI data"))])]),"cell-outcomes":m(({row:t})=>[l("div",ot,[G("success")?(c(),_("span",at,I(t.original.success_count)+" success ",1)):R("",!0),G("incident")?(c(),_("span",st,I(t.original.incident_count)+" incident ",1)):R("",!0)])]),_:1},8,["table-view-props"]),k(ie,{"toolbar-title":"Deployments","toolbar-description":"Individual deployments with computed AI footprint and outcome for the selected filters.",search:!0,"search-key":"filters[search]","search-placeholder":"Search deployments...","search-test-id":"ai-footprint-deployments-search","show-table":!oe.value,"page-key":"page","per-page-key":"per_page","table-view-props":fe.value,"data-test-id":"ai-footprint-table-wrapper"},{"cell-repository":m(({row:t})=>{var i,w;return[l("span",it,I(((i=t.original.repository)==null?void 0:i.full_name)||((w=t.original.repository)==null?void 0:w.name)||"â"),1)]}),"cell-deployed_at":m(({row:t})=>[l("span",rt,I(Te(Ne)(t.original.deployed_at)),1)]),"cell-outcome":m(({row:t})=>[k(Pe,{text:Y(t.original.outcome).label,variant:{success:"success",incident:"danger"}[t.original.outcome]||"neutral","data-test-id":"ai-footprint-cell-outcome"},null,8,["text","variant"])]),"cell-ai_footprint_percentage":m(({row:t})=>[l("div",nt,[t.original.ai_footprint_percentage!=null?(c(),j(re,{key:0,items:[{percent:t.original.ai_footprint_percentage,color:"#2563eb"}],borderless:"",inline:""},null,8,["items"])):(c(),_("span",lt,"No AI data"))])]),"cell-commits":m(({row:t})=>[ke(I(t.original.instrumented_commits_count)+" / "+I(t.original.total_commits_count),1)]),beforeTable:m(()=>[oe.value?(c(),_("div",ct,[k(Se,{icon:"fe fe-git-commit",message:"No deployments found",compact:!0,hint:"Try adjusting filters or the date range"})])):R("",!0)]),_:1},8,["show-table","table-view-props"])])]),_:1},8,["filters"])]))}},vo=ue(ut,[["__scopeId","data-v-65dbd1df"]]);export{vo 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.