@weppy/roblox-mcp 2.17.20 → 2.17.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/dashboard/dist/assets/AiPromptExamples-CQGYhsSq.js +1 -0
- package/dashboard/dist/assets/{AssetsPage-CAyaS2og.js → AssetsPage-tnh7G0oI.js} +1 -1
- package/dashboard/dist/assets/{ChangelogPage-3HMHHgjw.js → ChangelogPage-niZk_9S5.js} +1 -1
- package/dashboard/dist/assets/{ConfirmModal-DtH41UBe.js → ConfirmModal-BSuAB3WU.js} +1 -1
- package/dashboard/dist/assets/{ConnectionPage-DEKNG3dL.js → ConnectionPage-4Bu7ELYr.js} +1 -1
- package/dashboard/dist/assets/{ContentScopedDialog-CO7HgbDh.js → ContentScopedDialog-BZBRfU-h.js} +1 -1
- package/dashboard/dist/assets/{ControlsPage-DALL8aLL.js → ControlsPage-CMQLZIv5.js} +1 -1
- package/dashboard/dist/assets/{DialogHeader-DGlG63xP.js → DialogHeader-DYe1ZbDg.js} +1 -1
- package/dashboard/dist/assets/{GameChangeDetail-DWovwQok.js → GameChangeDetail-C3zrRv4g.js} +1 -1
- package/dashboard/dist/assets/{InfoLabel-CH5CpR7R.js → InfoLabel-C9QuVrs9.js} +1 -1
- package/dashboard/dist/assets/{OverviewPage-C3wYZrG8.js → OverviewPage-CI3l2Ay4.js} +1 -1
- package/dashboard/dist/assets/{PageHeader-DfhSm4j-.js → PageHeader-plAaGWcw.js} +1 -1
- package/dashboard/dist/assets/{PlaceSelectOptions-CMtQalSy.js → PlaceSelectOptions-Bh6TVGoa.js} +1 -1
- package/dashboard/dist/assets/{PlaytestAiPromptExamples-DJFxefZu.js → PlaytestAiPromptExamples-CV1U6nF6.js} +1 -1
- package/dashboard/dist/assets/{PlaytestPage-DU9ZdQ21.js → PlaytestPage-BgG_4l9a.js} +17 -22
- package/dashboard/dist/assets/SettingsPage-CKqiItPX.js +23 -0
- package/dashboard/dist/assets/{SyncPage-D_yCFS3B.js → SyncPage-k_67oQ0S.js} +1 -1
- package/dashboard/dist/assets/{Tabs-D9FkOjPv.js → Tabs-BDAljzT9.js} +1 -1
- package/dashboard/dist/assets/{TierPromoPanel-e1H_6c6Z.js → TierPromoPanel-DUwTC3Zz.js} +1 -1
- package/dashboard/dist/assets/{ToolsPage-CKfktddT.js → ToolsPage-RoWl4i2b.js} +1 -1
- package/dashboard/dist/assets/{TooltipText-DSn3s49K.js → TooltipText-Btgvmrqc.js} +1 -1
- package/dashboard/dist/assets/{UiStudioPage-DmWjv22S.css → UiStudioPage-SojeKPNs.css} +1 -1
- package/dashboard/dist/assets/UiStudioPage-Tbo30itW.js +23 -0
- package/dashboard/dist/assets/WhatsNewPage-C4uGwv-a.css +1 -0
- package/dashboard/dist/assets/WhatsNewPage-n-lW5_0g.js +1 -0
- package/dashboard/dist/assets/{bot-BQBLv2uC.js → bot-Cw9-c1xX.js} +1 -1
- package/dashboard/dist/assets/{check-uNk3Ma2d.js → check-D8GciAv-.js} +1 -1
- package/dashboard/dist/assets/{copy-D8MSHyQE.js → copy-CcmKRqlO.js} +1 -1
- package/dashboard/dist/assets/index-CfT3smRY.js +900 -0
- package/dashboard/dist/assets/{index-VXvX8jPK.css → index-CrljkNgf.css} +1 -1
- package/dashboard/dist/assets/{rotate-ccw-Dwy8_z07.js → rotate-ccw-B9h7F-0m.js} +1 -1
- package/dashboard/dist/assets/{sample-requests-x7wuDmFr.js → sample-requests-cbyN06Aw.js} +1 -1
- package/dashboard/dist/assets/{trash-2-Cw-jysM1.js → trash-2-ElF9PcCM.js} +1 -1
- package/dashboard/dist/assets/{useLiveUptime-BEJbC8rw.js → useLiveUptime-CXdR7Bos.js} +1 -1
- package/dashboard/dist/assets/useSettings-DhD_vaHX.js +2 -0
- package/dashboard/dist/index.html +2 -2
- package/dist/index.js +165 -518
- package/package.json +1 -1
- package/roblox-plugin/WeppyRobloxMCP.rbxm +0 -0
- package/dashboard/dist/assets/AiPromptExamples-BLQgKnq1.js +0 -1
- package/dashboard/dist/assets/SettingsPage-OMdBse7E.js +0 -23
- package/dashboard/dist/assets/UiStudioPage-DD_9F7Lm.js +0 -11
- package/dashboard/dist/assets/WhatsNewPage-BmnQR1Zm.js +0 -1
- package/dashboard/dist/assets/WhatsNewPage-WMbbAUsL.css +0 -1
- package/dashboard/dist/assets/index-CJYQedSN.js +0 -858
- package/dashboard/dist/assets/useSettings-PZ2Tx5jE.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as e,r as i,d as I,D as ht,u as at,X as mt,b as bt,k as xt}from"./index-CJYQedSN.js";import{P as ft}from"./PageHeader-DfhSm4j-.js";import{T as M}from"./TooltipText-DSn3s49K.js";import{C as _t}from"./ConfirmModal-DtH41UBe.js";import{C as gt}from"./ContentScopedDialog-CO7HgbDh.js";import{C as jt,T as yt}from"./Tabs-D9FkOjPv.js";import"./ConfirmModal.module-DJksQHBd.js";import"./PlaceSelectOptions-CMtQalSy.js";const Ct="_wrapper_1s3lp_2",kt="_table_1s3lp_7",Tt="_sortable_1s3lp_32",Nt="_sortArrow_1s3lp_41",St="_clickable_1s3lp_52",wt="_empty_1s3lp_57",A={wrapper:Ct,table:kt,sortable:Tt,sortArrow:Nt,clickable:St,empty:wt};function vt({columns:t,data:o,sortBy:c,sortDir:k="asc",onSort:b,onRowClick:l,rowKey:N,emptyMessage:S}){return e.jsx("div",{className:A.wrapper,children:e.jsxs("table",{className:A.table,children:[e.jsx("thead",{children:e.jsx("tr",{children:t.map(h=>e.jsxs("th",{style:h.width?{width:h.width}:void 0,className:h.sortable?A.sortable:void 0,onClick:h.sortable&&b?()=>b(h.key):void 0,children:[e.jsx("span",{children:h.label}),h.sortable&&c===h.key&&e.jsx("span",{className:A.sortArrow,children:k==="asc"?"▴":"▾"})]},h.key))})}),e.jsx("tbody",{children:o.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:t.length,className:A.empty,children:S||"No data"})}):o.map((h,w)=>{const C=N?N(h):String(w);return e.jsx("tr",{className:l?A.clickable:void 0,tabIndex:l?-1:void 0,onClick:l?_=>l(h,_.currentTarget):void 0,children:t.map(_=>e.jsx("td",{children:_.render?_.render(h):String(h[_.key]??"")},_.key))},C)})})]})})}function Mt(t){return{...t,sequenceNumber:typeof t.sequenceNumber=="number"?t.sequenceNumber:void 0,executionTimeMs:typeof t.executionTimeMs=="number"?t.executionTimeMs:void 0}}const Bt=50;function Pt(t){if(typeof t=="number")return{placeId:String(t)}}function Y(t,o){return typeof o!="number"?t:`${t}?placeId=${encodeURIComponent(String(o))}`}function Lt(t){const o=(t==null?void 0:t.placeId)??null,[c,k]=i.useState(null),[b,l]=i.useState(!0),[N,S]=i.useState([]),[h,w]=i.useState(0),[C,_]=i.useState(!1),[U,O]=i.useState(!0),[m,E]=i.useState(0),[g,F]=i.useState(""),B=i.useRef(null),T=i.useCallback(async()=>{l(!0);try{const j=Pt(o),u=j?await I.get("/api/dashboard/tool-stats",j):await I.get("/api/dashboard/tool-stats");k(u)}catch{}finally{l(!1)}},[o]),x=i.useCallback(async(j,u)=>{O(!0);try{const P={limit:String(Bt),offset:String(j)};u&&(P.tool=u),typeof o=="number"&&(P.placeId=String(o));const H=await I.get("/api/dashboard/history",P);S(H.entries.map(Mt)),w(H.total),_(H.hasMore)}catch{S([]),w(0),_(!1)}finally{O(!1)}},[o]),D=i.useCallback(()=>{T(),x(m,g)},[x,T,m,g]),V=i.useCallback(async()=>{await I.post(Y("/api/dashboard/tools/history/clear",o)),x(m,g)},[x,m,g,o]),K=i.useCallback(async()=>{await I.post(Y("/api/dashboard/tools/statistics/clear",o)),T()},[T,o]);return i.useEffect(()=>{T()},[T]),i.useEffect(()=>{x(m,g)},[x,m,g]),i.useEffect(()=>{const j=new ht;B.current=j,j.connect();const u=j.on("command",()=>{T(),x(m,g)});return()=>{u(),j.disconnect(),B.current=null}},[x,T,m,g]),{statistics:c,statsLoading:b,history:N,historyTotal:h,historyHasMore:C,historyLoading:U,historyOffset:m,historyToolFilter:g,setHistoryOffset:E,setHistoryToolFilter:F,refresh:D,clearHistory:V,clearStatistics:K}}const Et="_page_1rtjt_2",Ht="_card_1rtjt_14",At="_cardToolbar_1rtjt_21",Rt="_sectionTitle_1rtjt_29",It="_dangerButton_1rtjt_36",Ot="_proBadge_1rtjt_55",Ft="_statusOk_1rtjt_70",Dt="_statusFallback_1rtjt_83",$t="_statusUnsupported_1rtjt_96",qt="_statusWarning_1rtjt_109",Wt="_statusError_1rtjt_122",Ut="_tierBasic_1rtjt_136",Vt="_tierPro_1rtjt_140",Kt="_tierMixed_1rtjt_145",Gt="_filterRow_1rtjt_156",zt="_filterLabel_1rtjt_163",Jt="_filterSelect_1rtjt_172",Qt="_detailsButton_1rtjt_187",Zt="_detailShell_1rtjt_210",Xt="_detailHeader_1rtjt_218",Yt="_detailHeading_1rtjt_229",te="_detailTitle_1rtjt_236",ee="_detailRecordName_1rtjt_243",se="_detailHeaderActions_1rtjt_252",ae="_detailCloseButton_1rtjt_259",oe="_detailBody_1rtjt_282",le="_detailSection_1rtjt_294",re="_detailList_1rtjt_313",ie="_detailItem_1rtjt_319",ne="_detailLabel_1rtjt_326",ce="_detailValue_1rtjt_331",de="_pre_1rtjt_337",ue="_pagination_1rtjt_355",pe="_pageInfo_1rtjt_363",he="_btn_1rtjt_369",me="_tierDistribution_1rtjt_397",be="_tierBarWrap_1rtjt_401",xe="_tierBarBasic_1rtjt_409",fe="_tierBarPro_1rtjt_414",_e="_tierLabels_1rtjt_419",ge="_statsTableWrap_1rtjt_428",je="_statsTable_1rtjt_428",ye="_sortableHeader_1rtjt_460",Ce="_sortArrow_1rtjt_465",ke="_statsToolRow_1rtjt_469",Te="_statsActionRow_1rtjt_477",Ne="_expandButton_1rtjt_481",Se="_expandIcon_1rtjt_493",we="_actionLabel_1rtjt_498",ve="_emptyStats_1rtjt_505",Me="_summaryLine_1rtjt_511",a={page:Et,card:Ht,cardToolbar:At,sectionTitle:Rt,dangerButton:It,proBadge:Ot,statusOk:Ft,statusFallback:Dt,statusUnsupported:$t,statusWarning:qt,statusError:Wt,tierBasic:Ut,tierPro:Vt,tierMixed:Kt,filterRow:Gt,filterLabel:zt,filterSelect:Jt,detailsButton:Qt,detailShell:Zt,detailHeader:Xt,detailHeading:Yt,detailTitle:te,detailRecordName:ee,detailHeaderActions:se,detailCloseButton:ae,detailBody:oe,detailSection:le,detailList:re,detailItem:ie,detailLabel:ne,detailValue:ce,pre:de,pagination:ue,pageInfo:pe,btn:he,tierDistribution:me,tierBarWrap:be,tierBarBasic:xe,tierBarPro:fe,tierLabels:_e,statsTableWrap:ge,statsTable:je,sortableHeader:ye,sortArrow:Ce,statsToolRow:ke,statsActionRow:Te,expandButton:Ne,expandIcon:Se,actionLabel:we,emptyStats:ve,summaryLine:Me},Be=new Set(["clientId","placeId","pinnedTarget","recentPriority","globalQueue"]);function tt(t){return typeof t=="string"&&t.length>0?t:void 0}function Pe(t){if(!Array.isArray(t))return;const o=t.filter(c=>typeof c=="string"&&c.length>0);return o.length>0?o:void 0}function Le(t){const o=t.result??{};return{requestedCommand:t.requestedCommand??tt(o.requestedCommand),executedCommand:t.executedCommand??tt(o.executedCommand),alternatives:t.alternatives??Pe(o.alternatives)}}function ot(t,o){switch(t.status){case"fallback":return{label:o("tools.badge.fallback","FALLBACK"),tooltip:o("tools.badge.fallback.tooltip","The requested Pro action succeeded via a Basic fallback."),className:a.statusFallback};case"unsupported":return{label:o("tools.badge.unsupported","UNSUPPORTED"),tooltip:o("tools.badge.unsupported.tooltip","The requested Pro action was blocked and no fallback ran."),className:a.statusUnsupported};case"warning":return{label:o("tools.badge.warn","WARN"),tooltip:o("tools.badge.warn.tooltip","The tool call failed as an expected caller, project, policy, or user-code issue."),className:a.statusWarning};case"error":return{label:o("tools.badge.err","FAILED"),tooltip:o("tools.badge.err.tooltip","The tool run failed."),className:a.statusError};default:return{label:o("tools.status.ok","OK"),tooltip:o("tools.status.ok.tooltip","The tool run completed successfully."),className:a.statusOk}}}function y(t,o){return e.jsxs("div",{className:a.detailItem,children:[e.jsx("span",{className:a.detailLabel,children:t}),e.jsx("span",{className:a.detailValue,children:o})]})}function Ee(t){if(!t||typeof t!="object")return;const o=t;if(typeof o.selectionMode=="string"&&Be.has(o.selectionMode))return o}function et(t){if(!(!t||typeof t!="object"||!("routing"in t)))return Ee(t.routing)}function He(t){return t.routing??et(t.result)??et(t.data)}function Ae(t,o){return t.requestedClientId?t.requestedClientId:t.requestedPlaceId!==void 0?t.requestedPlaceId:o("tools.history.routing.none","No Studio target named")}function Re(t){return t.actualPlaceName?`${t.actualPlaceName} · ${t.actualPlaceId??"-"}`:t.actualClientId??"-"}function Ie({entry:t,onClose:o}){const{t:c}=at(),k=ot(t,c),b=Le(t),l=He(t);return e.jsxs("div",{className:a.detailShell,children:[e.jsxs("header",{className:a.detailHeader,children:[e.jsxs("div",{className:a.detailHeading,children:[e.jsx("span",{className:a.detailTitle,children:c("tools.detail.title","Tool execution")}),e.jsx("span",{className:a.detailRecordName,children:t.command})]}),e.jsxs("div",{className:a.detailHeaderActions,children:[e.jsx(M,{text:k.tooltip,children:e.jsx("span",{className:k.className,children:k.label})}),e.jsx("button",{type:"button",className:a.detailCloseButton,onClick:o,"aria-label":c("common.close","Close"),children:e.jsx(mt,{size:18,"aria-hidden":"true"})})]})]}),e.jsxs("div",{className:a.detailBody,children:[e.jsxs("section",{className:a.detailSection,children:[e.jsx("strong",{children:e.jsx(M,{text:c("tools.detail.params.tooltip","Input parameters passed to this tool run."),children:c("tools.detail.params","Parameters")})}),e.jsx("pre",{className:a.pre,children:JSON.stringify(t.parameters,null,2)})]}),t.result&&e.jsxs("section",{className:a.detailSection,children:[e.jsx("strong",{children:e.jsx(M,{text:c("tools.detail.result.tooltip","Returned result payload for this tool run."),children:c("tools.detail.result","Result")})}),e.jsx("pre",{className:a.pre,children:JSON.stringify(t.result,null,2)})]}),l&&e.jsxs("section",{className:a.detailSection,children:[e.jsx("strong",{children:c("tools.history.routing","Routing")}),e.jsxs("div",{className:a.detailList,children:[y(c("tools.history.routing.mode","Mode"),l.selectionMode),y(c("tools.history.routing.requested","Requested"),Ae(l,c)),y(c("tools.history.routing.actual","Actual"),Re(l))]})]}),(t.status==="fallback"||t.status==="unsupported"||t.status==="warning"||t.status==="error")&&e.jsx("section",{className:a.detailSection,children:e.jsxs("div",{className:a.detailList,children:[t.status==="fallback"&&b.requestedCommand?y(c("tools.detail.requestedCommand","Requested Command"),b.requestedCommand):null,t.status==="fallback"&&b.executedCommand?y(c("tools.detail.executedCommand","Executed Command"),b.executedCommand):null,t.status==="fallback"&&b.alternatives?y(c("tools.detail.alternatives","Alternatives"),b.alternatives.join(", ")):null,t.status==="unsupported"&&t.blockedMessage?y(c("tools.detail.blockedMessage","Blocked Reason"),t.blockedMessage):null,t.status==="unsupported"?y(c("tools.detail.noFallback","No Fallback"),c("tools.detail.noFallback.value","No fallback ran.")):null,t.status==="warning"&&t.warningMessage?y(c("tools.detail.warningMessage","Warning Message"),t.warningMessage):null,t.status==="error"&&t.errorMessage?y(c("tools.detail.errorMessage","Error Message"),t.errorMessage):null,t.status==="error"&&t.blockedMessage?y(c("tools.detail.blockedMessage","Blocked Reason"),t.blockedMessage):null,t.status==="error"&&t.fallbackCommand?y(c("tools.detail.executedCommand","Executed Command"),t.fallbackCommand):null]})})]})]})}const G=50;function Oe(t){const o=new Date(t);return`${String(o.getHours()).padStart(2,"0")}:${String(o.getMinutes()).padStart(2,"0")}:${String(o.getSeconds()).padStart(2,"0")}`}function W(t){return typeof t!="number"||!Number.isFinite(t)?"-":t<1e3?`${t}ms`:`${(t/1e3).toFixed(1)}s`}function R(t,o){return o==="pro"?t("tier.pro","Pro"):o==="mixed"?t("tier.mixed","Mixed"):t("tier.basic","Basic")}function lt(t,o){return o!==t&&o.startsWith(`${t}_`)?o.slice(t.length+1):""}function st(t,o){const c=lt(t,o);return c?`${t}.${c}`:t}function ze(){const{t}=at(),{trackEvent:o,trackPageView:c}=bt(),[k,b]=i.useState(null),l=Lt({placeId:k}),{show:N}=xt(),[S,h]=i.useState("history"),[w,C]=i.useState(null),_=i.useRef(null),[U,O]=i.useState(null),[m,E]=i.useState(null),[g,F]=i.useState(!1),[B,T]=i.useState("totalCalls"),[x,D]=i.useState("desc"),V=i.useCallback(s=>{T(n=>n===s?(D(r=>r==="asc"?"desc":"asc"),s):(D("desc"),s))},[]),K=i.useMemo(()=>{var n;const s=new Set;return Object.keys(((n=l.statistics)==null?void 0:n.tools)??{}).forEach(r=>s.add(r)),l.history.forEach(r=>{r.tool&&s.add(r.tool)}),l.historyToolFilter&&s.add(l.historyToolFilter),Array.from(s).sort()},[l.history,l.historyToolFilter,l.statistics]),j=i.useMemo(()=>{var s;return(s=l.statistics)!=null&&s.tools?Object.values(l.statistics.tools).map(n=>{var X;const r=Object.entries(n.commands??{}).map(([p,d])=>({toolName:n.tool,commandName:d.command??p,label:lt(n.tool,d.command??p)||(d.command??p),tier:d.tier,totalCalls:d.totalCalls,successCount:d.successCount,fallbackCount:d.fallbackCount,unsupportedCount:d.unsupportedCount,warningCount:d.warningCount??0,failureCount:d.failureCount,totalExecutionTimeMs:d.totalExecutionTimeMs,avgExecutionTimeMs:d.avgExecutionTimeMs})),f=r.reduce((p,d)=>p+d.totalCalls,0),v=r.reduce((p,d)=>p+d.successCount,0),$=r.reduce((p,d)=>p+d.fallbackCount,0),q=r.reduce((p,d)=>p+d.unsupportedCount,0),dt=r.reduce((p,d)=>p+d.warningCount,0),ut=r.reduce((p,d)=>p+d.failureCount,0),Z=r.reduce((p,d)=>p+d.totalExecutionTimeMs,0),pt=new Set(r.map(p=>p.tier)).size>1?"mixed":((X=r[0])==null?void 0:X.tier)??n.tier;return{toolName:n.tool,tier:pt,commands:r,totalCalls:f,successCount:v,fallbackCount:$,unsupportedCount:q,warningCount:dt,failureCount:ut,totalExecutionTimeMs:Z,avgExecutionTimeMs:f>0?Math.round(Z/f):0}}):[]},[l.statistics]),u=i.useCallback((s,n,r,f)=>e.jsx(M,{text:t(r,f),children:t(s,n)}),[t]),P=i.useCallback((s,n)=>{_.current=n,C(s)},[]),H=i.useCallback(()=>{C(null)},[]),z=i.useMemo(()=>[...j].sort((n,r)=>{const f=n[B],v=r[B];if(typeof f=="number"&&typeof v=="number")return x==="asc"?f-v:v-f;const $=String(f??""),q=String(v??"");return x==="asc"?$.localeCompare(q):q.localeCompare($)}),[j,B,x]),rt=i.useMemo(()=>[{key:"timestamp",label:u("tools.col.time","Time","tools.col.time.tooltip","When the tool run was recorded."),width:"80px",render:s=>Oe(s.timestamp)},{key:"toolName",label:u("tools.col.toolAction","Tool.Action","tools.col.toolAction.tooltip","Tool name and action that were executed."),render:s=>e.jsxs("span",{children:[st(s.tool,s.command),s.tier==="pro"&&e.jsx(M,{text:t("tools.badge.pro.tooltip","This entry used a Pro-only tool or action."),children:e.jsx("span",{className:a.proBadge,children:t("tools.badge.pro","PRO")})})]})},{key:"executionTimeMs",label:u("tools.col.duration","Duration","tools.col.duration.tooltip","How long the tool took to finish."),width:"80px",render:s=>W(s.executionTimeMs)},{key:"status",label:u("tools.col.status","Status","tools.col.status.tooltip","Outcome of the recorded tool run."),width:"120px",render:s=>{const n=ot(s,t);return e.jsx(M,{text:n.tooltip,children:e.jsx("span",{className:n.className,children:n.label})})}},{key:"tier",label:u("tools.col.tier","Tier","tools.col.tier.tooltip","License tier required for the tool or action."),width:"60px",render:s=>e.jsx("span",{className:s.tier==="pro"?a.tierPro:a.tierBasic,children:R(t,s.tier)})},{key:"details",label:t("tools.detail.open","Details"),width:"84px",render:s=>{const n=st(s.tool,s.command);return e.jsx("button",{type:"button",className:a.detailsButton,"aria-haspopup":"dialog","aria-label":t("tools.detail.openLabel","View details for {command}").replace("{command}",n),onClick:r=>{r.stopPropagation(),P(s,r.currentTarget)},children:t("tools.detail.open","Details")})}}],[P,t,u]),J=i.useMemo(()=>[{key:"toolName",label:u("tools.col.tool","Tool","tools.col.tool.tooltip","Consolidated tool name in the statistics table."),sortable:!0},{key:"totalCalls",label:u("tools.col.calls","Calls","tools.col.calls.tooltip","Total number of recorded calls for this tool."),sortable:!0,width:"70px"},{key:"successCount",label:u("tools.col.ok","OK","tools.col.ok.tooltip","Number of direct successful runs."),sortable:!0,width:"70px"},{key:"fallbackCount",label:u("tools.col.fallback","FALLBACK","tools.col.fallback.tooltip","Number of runs that succeeded through fallback execution."),sortable:!0,width:"110px"},{key:"unsupportedCount",label:u("tools.col.unsupported","UNSUPPORTED","tools.col.unsupported.tooltip","Number of blocked runs without fallback execution."),sortable:!0,width:"130px"},{key:"warningCount",label:u("tools.col.warn","WARN","tools.col.warn.tooltip","Number of expected failures caused by caller input, project state, Roblox policy, or user code."),sortable:!0,width:"80px"},{key:"failureCount",label:u("tools.col.err","FAILED","tools.col.err.tooltip","Number of runs that failed."),sortable:!0,width:"70px"},{key:"avgExecutionTimeMs",label:u("tools.col.avgTime","Avg Time","tools.col.avgTime.tooltip","Average execution time across recorded calls."),sortable:!0,width:"90px",render:s=>W(s.avgExecutionTimeMs)},{key:"tier",label:u("tools.col.tier","Tier","tools.col.tierStats.tooltip","Basic, Pro, or Mixed summary for the tool statistics row."),sortable:!0,width:"70px",render:s=>e.jsx(M,{text:s.tier==="mixed"?t("tools.tier.mixed.tooltip","This tool includes both Basic and Pro actions."):"",children:e.jsx("span",{className:s.tier==="pro"?a.tierPro:s.tier==="mixed"?a.tierMixed:a.tierBasic,children:R(t,s.tier)})})}],[t,u]),L=i.useMemo(()=>{if(!l.statistics)return null;const s=l.statistics.tierSummary.basic.totalCalls,n=l.statistics.tierSummary.pro.totalCalls,r=s+n;if(r===0)return null;const f=Math.round(s/r*100),v=100-f;return{basic:s,pro:n,basicPct:f,proPct:v}},[l.statistics]),Q=i.useCallback(s=>{O(n=>n===s?null:s)},[]),it=i.useCallback(async()=>{if(m){F(!0);try{m==="history"?await l.clearHistory():await l.clearStatistics(),N(t("toast.clearSuccess","Cleared successfully"),"success"),E(null)}catch{N(t("toast.clearFailed","Failed to clear data"),"error")}finally{F(!1)}}},[m,N,t,l]),nt=i.useCallback(s=>{const n=s==="history"?"tools_history":"tools_statistics";o("dashboard_click_event",{click_target:s==="history"?"tools_tab_history":"tools_tab_statistics",page:"tools",tab:n}),c({page:"tools",tab:n}),C(null),h(s)},[o,c]),ct=["history","statistics"].map(s=>({key:s,label:t(`tools.tab.${s}`,s.charAt(0).toUpperCase()+s.slice(1))}));return e.jsxs("div",{className:a.page,children:[e.jsx(ft,{title:t("page.tools.title","Tools"),description:t("page.tools.description","Inspect tool history, outcomes, fallback details, and usage statistics."),helpTopicId:"tools"}),e.jsx(jt,{surface:"tools",selectable:!0,selectedPlaceId:k,onSelectedPlaceIdChange:s=>{C(null),b(s),l.setHistoryOffset(0)}}),e.jsx(yt,{items:ct,value:S,onChange:nt}),S==="history"&&e.jsxs("div",{className:a.card,children:[e.jsxs("div",{className:a.cardToolbar,children:[e.jsx("div",{className:a.sectionTitle,children:t("tools.tab.history","History")}),e.jsx("button",{className:a.dangerButton,onClick:()=>{o("dashboard_click_event",{click_target:"tools_clear_history",page:"tools",tab:"tools_history"}),E("history")},children:t("common.clear","Clear")})]}),e.jsx("div",{className:a.filterRow,children:e.jsxs("label",{className:a.filterLabel,children:[t("tools.filter.tool","Tool"),":",e.jsxs("select",{className:a.filterSelect,value:l.historyToolFilter,onChange:s=>{C(null),l.setHistoryToolFilter(s.target.value),l.setHistoryOffset(0)},children:[e.jsx("option",{value:"",children:t("tools.filter.all","All")}),K.map(s=>e.jsx("option",{value:s,children:s},s))]})]})}),e.jsx(vt,{columns:rt,data:l.history,rowKey:s=>s.id,onRowClick:(s,n)=>P(s,n),emptyMessage:t("tools.empty.history","No tool history entries for this place")}),e.jsxs("div",{className:a.pagination,children:[e.jsx("button",{className:a.btn,disabled:l.historyOffset===0,title:t("tools.page.prev.tooltip","Go to the previous page of tool history results."),onClick:()=>{C(null),l.setHistoryOffset(Math.max(0,l.historyOffset-G))},children:t("tools.page.prev","Prev")}),e.jsxs("span",{className:a.pageInfo,children:[l.historyOffset+1,"–",Math.min(l.historyOffset+G,l.historyTotal)," / ",l.historyTotal]}),e.jsx("button",{className:a.btn,disabled:!l.historyHasMore,title:t("tools.page.next.tooltip","Go to the next page of tool history results."),onClick:()=>{C(null),l.setHistoryOffset(l.historyOffset+G)},children:t("tools.page.next","Next")})]})]}),S==="statistics"&&e.jsxs("div",{className:a.card,children:[e.jsxs("div",{className:a.cardToolbar,children:[e.jsx("div",{className:a.sectionTitle,children:t("tools.tab.statistics","Statistics")}),e.jsx("button",{className:a.dangerButton,onClick:()=>{o("dashboard_click_event",{click_target:"tools_clear_statistics",page:"tools",tab:"tools_statistics"}),E("statistics")},children:t("common.clear","Clear")})]}),L&&e.jsxs("div",{className:a.tierDistribution,children:[e.jsxs("div",{className:a.tierBarWrap,children:[e.jsx("div",{className:a.tierBarBasic,style:{width:`${L.basicPct}%`}}),e.jsx("div",{className:a.tierBarPro,style:{width:`${L.proPct}%`}})]}),e.jsxs("div",{className:a.tierLabels,children:[e.jsxs("span",{children:[R(t,"basic")," ",L.basicPct,"% (",L.basic,")"]}),e.jsxs("span",{children:[R(t,"pro")," ",L.proPct,"% (",L.pro,")"]})]})]}),e.jsx("div",{className:a.statsTableWrap,children:e.jsxs("table",{className:a.statsTable,children:[e.jsx("thead",{children:e.jsx("tr",{children:J.map(s=>e.jsxs("th",{style:s.width?{width:s.width}:void 0,className:s.sortable?a.sortableHeader:void 0,onClick:s.sortable?()=>V(s.key):void 0,children:[e.jsx("span",{children:s.label}),s.sortable&&B===s.key&&e.jsx("span",{className:a.sortArrow,children:x==="asc"?"▴":"▾"})]},s.key))})}),e.jsx("tbody",{children:z.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:J.length,className:a.emptyStats,children:t("tools.empty.stats","No tool statistics for this place")})}):z.map(s=>{const n=U===s.toolName;return e.jsxs(i.Fragment,{children:[e.jsxs("tr",{className:a.statsToolRow,onClick:()=>Q(s.toolName),children:[e.jsx("td",{children:e.jsxs("button",{type:"button",className:a.expandButton,"aria-expanded":n,"aria-label":`${s.toolName} ${n?t("common.collapse","Collapse"):t("common.expand","Expand")}`,onClick:r=>{r.stopPropagation(),Q(s.toolName)},children:[e.jsx("span",{className:a.expandIcon,"aria-hidden":"true",children:n?"▾":"▸"}),e.jsx("span",{children:s.toolName})]})}),e.jsx("td",{children:s.totalCalls}),e.jsx("td",{children:s.successCount}),e.jsx("td",{children:s.fallbackCount}),e.jsx("td",{children:s.unsupportedCount}),e.jsx("td",{children:s.warningCount}),e.jsx("td",{children:s.failureCount}),e.jsx("td",{children:W(s.avgExecutionTimeMs)}),e.jsx("td",{children:e.jsx(M,{text:s.tier==="mixed"?t("tools.tier.mixed.tooltip","This tool includes both Basic and Pro actions."):"",children:e.jsx("span",{className:s.tier==="pro"?a.tierPro:s.tier==="mixed"?a.tierMixed:a.tierBasic,children:R(t,s.tier)})})})]}),n&&s.commands.map(r=>e.jsxs("tr",{className:a.statsActionRow,children:[e.jsx("td",{children:e.jsx("span",{className:a.actionLabel,children:r.label})}),e.jsx("td",{children:r.totalCalls}),e.jsx("td",{children:r.successCount}),e.jsx("td",{children:r.fallbackCount}),e.jsx("td",{children:r.unsupportedCount}),e.jsx("td",{children:r.warningCount}),e.jsx("td",{children:r.failureCount}),e.jsx("td",{children:W(r.avgExecutionTimeMs)}),e.jsx("td",{children:e.jsx("span",{className:r.tier==="pro"?a.tierPro:a.tierBasic,children:R(t,r.tier)})})]},`${s.toolName}:${r.commandName}`))]},s.toolName)})})]})}),l.statistics&&e.jsxs("div",{className:a.summaryLine,children:[t("tools.summary.total","Total"),": ",l.statistics.totalCalls," ",t("tools.summary.calls","calls")," | ",t("tools.summary.sessions","Sessions"),": ",l.statistics.totalSessions]})]}),e.jsx(gt,{open:w!==null,ariaLabel:t("tools.detail.dialogLabel","Tool execution detail"),onClose:H,returnFocusTo:_.current,testId:"tools-history-detail-popup-layer",children:w&&e.jsx(Ie,{entry:w,onClose:H})}),e.jsx(_t,{open:m!==null,title:m==="history"?t("tools.clear.history.title","Clear history?"):t("tools.clear.statistics.title","Clear statistics?"),message:m==="history"?t("tools.clear.history.message","This permanently removes the current place tools history."):t("tools.clear.statistics.message","This permanently resets the current place tool statistics."),cancelLabel:t("common.cancel","Cancel"),confirmLabel:t("common.clear","Clear"),loading:g,onCancel:()=>!g&&E(null),onConfirm:it})]})}export{ze as Component};
|
|
1
|
+
import{j as e,r as i,d as I,D as ht,u as at,X as mt,b as bt,k as xt}from"./index-CfT3smRY.js";import{P as ft}from"./PageHeader-plAaGWcw.js";import{T as M}from"./TooltipText-Btgvmrqc.js";import{C as _t}from"./ConfirmModal-BSuAB3WU.js";import{C as gt}from"./ContentScopedDialog-BZBRfU-h.js";import{C as jt,T as yt}from"./Tabs-BDAljzT9.js";import"./ConfirmModal.module-DJksQHBd.js";import"./PlaceSelectOptions-Bh6TVGoa.js";const Ct="_wrapper_1s3lp_2",kt="_table_1s3lp_7",Tt="_sortable_1s3lp_32",Nt="_sortArrow_1s3lp_41",St="_clickable_1s3lp_52",wt="_empty_1s3lp_57",A={wrapper:Ct,table:kt,sortable:Tt,sortArrow:Nt,clickable:St,empty:wt};function vt({columns:t,data:o,sortBy:c,sortDir:k="asc",onSort:b,onRowClick:l,rowKey:N,emptyMessage:S}){return e.jsx("div",{className:A.wrapper,children:e.jsxs("table",{className:A.table,children:[e.jsx("thead",{children:e.jsx("tr",{children:t.map(h=>e.jsxs("th",{style:h.width?{width:h.width}:void 0,className:h.sortable?A.sortable:void 0,onClick:h.sortable&&b?()=>b(h.key):void 0,children:[e.jsx("span",{children:h.label}),h.sortable&&c===h.key&&e.jsx("span",{className:A.sortArrow,children:k==="asc"?"▴":"▾"})]},h.key))})}),e.jsx("tbody",{children:o.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:t.length,className:A.empty,children:S||"No data"})}):o.map((h,w)=>{const C=N?N(h):String(w);return e.jsx("tr",{className:l?A.clickable:void 0,tabIndex:l?-1:void 0,onClick:l?_=>l(h,_.currentTarget):void 0,children:t.map(_=>e.jsx("td",{children:_.render?_.render(h):String(h[_.key]??"")},_.key))},C)})})]})})}function Mt(t){return{...t,sequenceNumber:typeof t.sequenceNumber=="number"?t.sequenceNumber:void 0,executionTimeMs:typeof t.executionTimeMs=="number"?t.executionTimeMs:void 0}}const Bt=50;function Pt(t){if(typeof t=="number")return{placeId:String(t)}}function Y(t,o){return typeof o!="number"?t:`${t}?placeId=${encodeURIComponent(String(o))}`}function Lt(t){const o=(t==null?void 0:t.placeId)??null,[c,k]=i.useState(null),[b,l]=i.useState(!0),[N,S]=i.useState([]),[h,w]=i.useState(0),[C,_]=i.useState(!1),[U,O]=i.useState(!0),[m,E]=i.useState(0),[g,F]=i.useState(""),B=i.useRef(null),T=i.useCallback(async()=>{l(!0);try{const j=Pt(o),u=j?await I.get("/api/dashboard/tool-stats",j):await I.get("/api/dashboard/tool-stats");k(u)}catch{}finally{l(!1)}},[o]),x=i.useCallback(async(j,u)=>{O(!0);try{const P={limit:String(Bt),offset:String(j)};u&&(P.tool=u),typeof o=="number"&&(P.placeId=String(o));const H=await I.get("/api/dashboard/history",P);S(H.entries.map(Mt)),w(H.total),_(H.hasMore)}catch{S([]),w(0),_(!1)}finally{O(!1)}},[o]),D=i.useCallback(()=>{T(),x(m,g)},[x,T,m,g]),V=i.useCallback(async()=>{await I.post(Y("/api/dashboard/tools/history/clear",o)),x(m,g)},[x,m,g,o]),K=i.useCallback(async()=>{await I.post(Y("/api/dashboard/tools/statistics/clear",o)),T()},[T,o]);return i.useEffect(()=>{T()},[T]),i.useEffect(()=>{x(m,g)},[x,m,g]),i.useEffect(()=>{const j=new ht;B.current=j,j.connect();const u=j.on("command",()=>{T(),x(m,g)});return()=>{u(),j.disconnect(),B.current=null}},[x,T,m,g]),{statistics:c,statsLoading:b,history:N,historyTotal:h,historyHasMore:C,historyLoading:U,historyOffset:m,historyToolFilter:g,setHistoryOffset:E,setHistoryToolFilter:F,refresh:D,clearHistory:V,clearStatistics:K}}const Et="_page_1rtjt_2",Ht="_card_1rtjt_14",At="_cardToolbar_1rtjt_21",Rt="_sectionTitle_1rtjt_29",It="_dangerButton_1rtjt_36",Ot="_proBadge_1rtjt_55",Ft="_statusOk_1rtjt_70",Dt="_statusFallback_1rtjt_83",$t="_statusUnsupported_1rtjt_96",qt="_statusWarning_1rtjt_109",Wt="_statusError_1rtjt_122",Ut="_tierBasic_1rtjt_136",Vt="_tierPro_1rtjt_140",Kt="_tierMixed_1rtjt_145",Gt="_filterRow_1rtjt_156",zt="_filterLabel_1rtjt_163",Jt="_filterSelect_1rtjt_172",Qt="_detailsButton_1rtjt_187",Zt="_detailShell_1rtjt_210",Xt="_detailHeader_1rtjt_218",Yt="_detailHeading_1rtjt_229",te="_detailTitle_1rtjt_236",ee="_detailRecordName_1rtjt_243",se="_detailHeaderActions_1rtjt_252",ae="_detailCloseButton_1rtjt_259",oe="_detailBody_1rtjt_282",le="_detailSection_1rtjt_294",re="_detailList_1rtjt_313",ie="_detailItem_1rtjt_319",ne="_detailLabel_1rtjt_326",ce="_detailValue_1rtjt_331",de="_pre_1rtjt_337",ue="_pagination_1rtjt_355",pe="_pageInfo_1rtjt_363",he="_btn_1rtjt_369",me="_tierDistribution_1rtjt_397",be="_tierBarWrap_1rtjt_401",xe="_tierBarBasic_1rtjt_409",fe="_tierBarPro_1rtjt_414",_e="_tierLabels_1rtjt_419",ge="_statsTableWrap_1rtjt_428",je="_statsTable_1rtjt_428",ye="_sortableHeader_1rtjt_460",Ce="_sortArrow_1rtjt_465",ke="_statsToolRow_1rtjt_469",Te="_statsActionRow_1rtjt_477",Ne="_expandButton_1rtjt_481",Se="_expandIcon_1rtjt_493",we="_actionLabel_1rtjt_498",ve="_emptyStats_1rtjt_505",Me="_summaryLine_1rtjt_511",a={page:Et,card:Ht,cardToolbar:At,sectionTitle:Rt,dangerButton:It,proBadge:Ot,statusOk:Ft,statusFallback:Dt,statusUnsupported:$t,statusWarning:qt,statusError:Wt,tierBasic:Ut,tierPro:Vt,tierMixed:Kt,filterRow:Gt,filterLabel:zt,filterSelect:Jt,detailsButton:Qt,detailShell:Zt,detailHeader:Xt,detailHeading:Yt,detailTitle:te,detailRecordName:ee,detailHeaderActions:se,detailCloseButton:ae,detailBody:oe,detailSection:le,detailList:re,detailItem:ie,detailLabel:ne,detailValue:ce,pre:de,pagination:ue,pageInfo:pe,btn:he,tierDistribution:me,tierBarWrap:be,tierBarBasic:xe,tierBarPro:fe,tierLabels:_e,statsTableWrap:ge,statsTable:je,sortableHeader:ye,sortArrow:Ce,statsToolRow:ke,statsActionRow:Te,expandButton:Ne,expandIcon:Se,actionLabel:we,emptyStats:ve,summaryLine:Me},Be=new Set(["clientId","placeId","pinnedTarget","recentPriority","globalQueue"]);function tt(t){return typeof t=="string"&&t.length>0?t:void 0}function Pe(t){if(!Array.isArray(t))return;const o=t.filter(c=>typeof c=="string"&&c.length>0);return o.length>0?o:void 0}function Le(t){const o=t.result??{};return{requestedCommand:t.requestedCommand??tt(o.requestedCommand),executedCommand:t.executedCommand??tt(o.executedCommand),alternatives:t.alternatives??Pe(o.alternatives)}}function ot(t,o){switch(t.status){case"fallback":return{label:o("tools.badge.fallback","FALLBACK"),tooltip:o("tools.badge.fallback.tooltip","The requested Pro action succeeded via a Basic fallback."),className:a.statusFallback};case"unsupported":return{label:o("tools.badge.unsupported","UNSUPPORTED"),tooltip:o("tools.badge.unsupported.tooltip","The requested Pro action was blocked and no fallback ran."),className:a.statusUnsupported};case"warning":return{label:o("tools.badge.warn","WARN"),tooltip:o("tools.badge.warn.tooltip","The tool call failed as an expected caller, project, policy, or user-code issue."),className:a.statusWarning};case"error":return{label:o("tools.badge.err","FAILED"),tooltip:o("tools.badge.err.tooltip","The tool run failed."),className:a.statusError};default:return{label:o("tools.status.ok","OK"),tooltip:o("tools.status.ok.tooltip","The tool run completed successfully."),className:a.statusOk}}}function y(t,o){return e.jsxs("div",{className:a.detailItem,children:[e.jsx("span",{className:a.detailLabel,children:t}),e.jsx("span",{className:a.detailValue,children:o})]})}function Ee(t){if(!t||typeof t!="object")return;const o=t;if(typeof o.selectionMode=="string"&&Be.has(o.selectionMode))return o}function et(t){if(!(!t||typeof t!="object"||!("routing"in t)))return Ee(t.routing)}function He(t){return t.routing??et(t.result)??et(t.data)}function Ae(t,o){return t.requestedClientId?t.requestedClientId:t.requestedPlaceId!==void 0?t.requestedPlaceId:o("tools.history.routing.none","No Studio target named")}function Re(t){return t.actualPlaceName?`${t.actualPlaceName} · ${t.actualPlaceId??"-"}`:t.actualClientId??"-"}function Ie({entry:t,onClose:o}){const{t:c}=at(),k=ot(t,c),b=Le(t),l=He(t);return e.jsxs("div",{className:a.detailShell,children:[e.jsxs("header",{className:a.detailHeader,children:[e.jsxs("div",{className:a.detailHeading,children:[e.jsx("span",{className:a.detailTitle,children:c("tools.detail.title","Tool execution")}),e.jsx("span",{className:a.detailRecordName,children:t.command})]}),e.jsxs("div",{className:a.detailHeaderActions,children:[e.jsx(M,{text:k.tooltip,children:e.jsx("span",{className:k.className,children:k.label})}),e.jsx("button",{type:"button",className:a.detailCloseButton,onClick:o,"aria-label":c("common.close","Close"),children:e.jsx(mt,{size:18,"aria-hidden":"true"})})]})]}),e.jsxs("div",{className:a.detailBody,children:[e.jsxs("section",{className:a.detailSection,children:[e.jsx("strong",{children:e.jsx(M,{text:c("tools.detail.params.tooltip","Input parameters passed to this tool run."),children:c("tools.detail.params","Parameters")})}),e.jsx("pre",{className:a.pre,children:JSON.stringify(t.parameters,null,2)})]}),t.result&&e.jsxs("section",{className:a.detailSection,children:[e.jsx("strong",{children:e.jsx(M,{text:c("tools.detail.result.tooltip","Returned result payload for this tool run."),children:c("tools.detail.result","Result")})}),e.jsx("pre",{className:a.pre,children:JSON.stringify(t.result,null,2)})]}),l&&e.jsxs("section",{className:a.detailSection,children:[e.jsx("strong",{children:c("tools.history.routing","Routing")}),e.jsxs("div",{className:a.detailList,children:[y(c("tools.history.routing.mode","Mode"),l.selectionMode),y(c("tools.history.routing.requested","Requested"),Ae(l,c)),y(c("tools.history.routing.actual","Actual"),Re(l))]})]}),(t.status==="fallback"||t.status==="unsupported"||t.status==="warning"||t.status==="error")&&e.jsx("section",{className:a.detailSection,children:e.jsxs("div",{className:a.detailList,children:[t.status==="fallback"&&b.requestedCommand?y(c("tools.detail.requestedCommand","Requested Command"),b.requestedCommand):null,t.status==="fallback"&&b.executedCommand?y(c("tools.detail.executedCommand","Executed Command"),b.executedCommand):null,t.status==="fallback"&&b.alternatives?y(c("tools.detail.alternatives","Alternatives"),b.alternatives.join(", ")):null,t.status==="unsupported"&&t.blockedMessage?y(c("tools.detail.blockedMessage","Blocked Reason"),t.blockedMessage):null,t.status==="unsupported"?y(c("tools.detail.noFallback","No Fallback"),c("tools.detail.noFallback.value","No fallback ran.")):null,t.status==="warning"&&t.warningMessage?y(c("tools.detail.warningMessage","Warning Message"),t.warningMessage):null,t.status==="error"&&t.errorMessage?y(c("tools.detail.errorMessage","Error Message"),t.errorMessage):null,t.status==="error"&&t.blockedMessage?y(c("tools.detail.blockedMessage","Blocked Reason"),t.blockedMessage):null,t.status==="error"&&t.fallbackCommand?y(c("tools.detail.executedCommand","Executed Command"),t.fallbackCommand):null]})})]})]})}const G=50;function Oe(t){const o=new Date(t);return`${String(o.getHours()).padStart(2,"0")}:${String(o.getMinutes()).padStart(2,"0")}:${String(o.getSeconds()).padStart(2,"0")}`}function W(t){return typeof t!="number"||!Number.isFinite(t)?"-":t<1e3?`${t}ms`:`${(t/1e3).toFixed(1)}s`}function R(t,o){return o==="pro"?t("tier.pro","Pro"):o==="mixed"?t("tier.mixed","Mixed"):t("tier.basic","Basic")}function lt(t,o){return o!==t&&o.startsWith(`${t}_`)?o.slice(t.length+1):""}function st(t,o){const c=lt(t,o);return c?`${t}.${c}`:t}function ze(){const{t}=at(),{trackEvent:o,trackPageView:c}=bt(),[k,b]=i.useState(null),l=Lt({placeId:k}),{show:N}=xt(),[S,h]=i.useState("history"),[w,C]=i.useState(null),_=i.useRef(null),[U,O]=i.useState(null),[m,E]=i.useState(null),[g,F]=i.useState(!1),[B,T]=i.useState("totalCalls"),[x,D]=i.useState("desc"),V=i.useCallback(s=>{T(n=>n===s?(D(r=>r==="asc"?"desc":"asc"),s):(D("desc"),s))},[]),K=i.useMemo(()=>{var n;const s=new Set;return Object.keys(((n=l.statistics)==null?void 0:n.tools)??{}).forEach(r=>s.add(r)),l.history.forEach(r=>{r.tool&&s.add(r.tool)}),l.historyToolFilter&&s.add(l.historyToolFilter),Array.from(s).sort()},[l.history,l.historyToolFilter,l.statistics]),j=i.useMemo(()=>{var s;return(s=l.statistics)!=null&&s.tools?Object.values(l.statistics.tools).map(n=>{var X;const r=Object.entries(n.commands??{}).map(([p,d])=>({toolName:n.tool,commandName:d.command??p,label:lt(n.tool,d.command??p)||(d.command??p),tier:d.tier,totalCalls:d.totalCalls,successCount:d.successCount,fallbackCount:d.fallbackCount,unsupportedCount:d.unsupportedCount,warningCount:d.warningCount??0,failureCount:d.failureCount,totalExecutionTimeMs:d.totalExecutionTimeMs,avgExecutionTimeMs:d.avgExecutionTimeMs})),f=r.reduce((p,d)=>p+d.totalCalls,0),v=r.reduce((p,d)=>p+d.successCount,0),$=r.reduce((p,d)=>p+d.fallbackCount,0),q=r.reduce((p,d)=>p+d.unsupportedCount,0),dt=r.reduce((p,d)=>p+d.warningCount,0),ut=r.reduce((p,d)=>p+d.failureCount,0),Z=r.reduce((p,d)=>p+d.totalExecutionTimeMs,0),pt=new Set(r.map(p=>p.tier)).size>1?"mixed":((X=r[0])==null?void 0:X.tier)??n.tier;return{toolName:n.tool,tier:pt,commands:r,totalCalls:f,successCount:v,fallbackCount:$,unsupportedCount:q,warningCount:dt,failureCount:ut,totalExecutionTimeMs:Z,avgExecutionTimeMs:f>0?Math.round(Z/f):0}}):[]},[l.statistics]),u=i.useCallback((s,n,r,f)=>e.jsx(M,{text:t(r,f),children:t(s,n)}),[t]),P=i.useCallback((s,n)=>{_.current=n,C(s)},[]),H=i.useCallback(()=>{C(null)},[]),z=i.useMemo(()=>[...j].sort((n,r)=>{const f=n[B],v=r[B];if(typeof f=="number"&&typeof v=="number")return x==="asc"?f-v:v-f;const $=String(f??""),q=String(v??"");return x==="asc"?$.localeCompare(q):q.localeCompare($)}),[j,B,x]),rt=i.useMemo(()=>[{key:"timestamp",label:u("tools.col.time","Time","tools.col.time.tooltip","When the tool run was recorded."),width:"80px",render:s=>Oe(s.timestamp)},{key:"toolName",label:u("tools.col.toolAction","Tool.Action","tools.col.toolAction.tooltip","Tool name and action that were executed."),render:s=>e.jsxs("span",{children:[st(s.tool,s.command),s.tier==="pro"&&e.jsx(M,{text:t("tools.badge.pro.tooltip","This entry used a Pro-only tool or action."),children:e.jsx("span",{className:a.proBadge,children:t("tools.badge.pro","PRO")})})]})},{key:"executionTimeMs",label:u("tools.col.duration","Duration","tools.col.duration.tooltip","How long the tool took to finish."),width:"80px",render:s=>W(s.executionTimeMs)},{key:"status",label:u("tools.col.status","Status","tools.col.status.tooltip","Outcome of the recorded tool run."),width:"120px",render:s=>{const n=ot(s,t);return e.jsx(M,{text:n.tooltip,children:e.jsx("span",{className:n.className,children:n.label})})}},{key:"tier",label:u("tools.col.tier","Tier","tools.col.tier.tooltip","License tier required for the tool or action."),width:"60px",render:s=>e.jsx("span",{className:s.tier==="pro"?a.tierPro:a.tierBasic,children:R(t,s.tier)})},{key:"details",label:t("tools.detail.open","Details"),width:"84px",render:s=>{const n=st(s.tool,s.command);return e.jsx("button",{type:"button",className:a.detailsButton,"aria-haspopup":"dialog","aria-label":t("tools.detail.openLabel","View details for {command}").replace("{command}",n),onClick:r=>{r.stopPropagation(),P(s,r.currentTarget)},children:t("tools.detail.open","Details")})}}],[P,t,u]),J=i.useMemo(()=>[{key:"toolName",label:u("tools.col.tool","Tool","tools.col.tool.tooltip","Consolidated tool name in the statistics table."),sortable:!0},{key:"totalCalls",label:u("tools.col.calls","Calls","tools.col.calls.tooltip","Total number of recorded calls for this tool."),sortable:!0,width:"70px"},{key:"successCount",label:u("tools.col.ok","OK","tools.col.ok.tooltip","Number of direct successful runs."),sortable:!0,width:"70px"},{key:"fallbackCount",label:u("tools.col.fallback","FALLBACK","tools.col.fallback.tooltip","Number of runs that succeeded through fallback execution."),sortable:!0,width:"110px"},{key:"unsupportedCount",label:u("tools.col.unsupported","UNSUPPORTED","tools.col.unsupported.tooltip","Number of blocked runs without fallback execution."),sortable:!0,width:"130px"},{key:"warningCount",label:u("tools.col.warn","WARN","tools.col.warn.tooltip","Number of expected failures caused by caller input, project state, Roblox policy, or user code."),sortable:!0,width:"80px"},{key:"failureCount",label:u("tools.col.err","FAILED","tools.col.err.tooltip","Number of runs that failed."),sortable:!0,width:"70px"},{key:"avgExecutionTimeMs",label:u("tools.col.avgTime","Avg Time","tools.col.avgTime.tooltip","Average execution time across recorded calls."),sortable:!0,width:"90px",render:s=>W(s.avgExecutionTimeMs)},{key:"tier",label:u("tools.col.tier","Tier","tools.col.tierStats.tooltip","Basic, Pro, or Mixed summary for the tool statistics row."),sortable:!0,width:"70px",render:s=>e.jsx(M,{text:s.tier==="mixed"?t("tools.tier.mixed.tooltip","This tool includes both Basic and Pro actions."):"",children:e.jsx("span",{className:s.tier==="pro"?a.tierPro:s.tier==="mixed"?a.tierMixed:a.tierBasic,children:R(t,s.tier)})})}],[t,u]),L=i.useMemo(()=>{if(!l.statistics)return null;const s=l.statistics.tierSummary.basic.totalCalls,n=l.statistics.tierSummary.pro.totalCalls,r=s+n;if(r===0)return null;const f=Math.round(s/r*100),v=100-f;return{basic:s,pro:n,basicPct:f,proPct:v}},[l.statistics]),Q=i.useCallback(s=>{O(n=>n===s?null:s)},[]),it=i.useCallback(async()=>{if(m){F(!0);try{m==="history"?await l.clearHistory():await l.clearStatistics(),N(t("toast.clearSuccess","Cleared successfully"),"success"),E(null)}catch{N(t("toast.clearFailed","Failed to clear data"),"error")}finally{F(!1)}}},[m,N,t,l]),nt=i.useCallback(s=>{const n=s==="history"?"tools_history":"tools_statistics";o("dashboard_click_event",{click_target:s==="history"?"tools_tab_history":"tools_tab_statistics",page:"tools",tab:n}),c({page:"tools",tab:n}),C(null),h(s)},[o,c]),ct=["history","statistics"].map(s=>({key:s,label:t(`tools.tab.${s}`,s.charAt(0).toUpperCase()+s.slice(1))}));return e.jsxs("div",{className:a.page,children:[e.jsx(ft,{title:t("page.tools.title","Tools"),description:t("page.tools.description","Inspect tool history, outcomes, fallback details, and usage statistics."),helpTopicId:"tools"}),e.jsx(jt,{surface:"tools",selectable:!0,selectedPlaceId:k,onSelectedPlaceIdChange:s=>{C(null),b(s),l.setHistoryOffset(0)}}),e.jsx(yt,{items:ct,value:S,onChange:nt}),S==="history"&&e.jsxs("div",{className:a.card,children:[e.jsxs("div",{className:a.cardToolbar,children:[e.jsx("div",{className:a.sectionTitle,children:t("tools.tab.history","History")}),e.jsx("button",{className:a.dangerButton,onClick:()=>{o("dashboard_click_event",{click_target:"tools_clear_history",page:"tools",tab:"tools_history"}),E("history")},children:t("common.clear","Clear")})]}),e.jsx("div",{className:a.filterRow,children:e.jsxs("label",{className:a.filterLabel,children:[t("tools.filter.tool","Tool"),":",e.jsxs("select",{className:a.filterSelect,value:l.historyToolFilter,onChange:s=>{C(null),l.setHistoryToolFilter(s.target.value),l.setHistoryOffset(0)},children:[e.jsx("option",{value:"",children:t("tools.filter.all","All")}),K.map(s=>e.jsx("option",{value:s,children:s},s))]})]})}),e.jsx(vt,{columns:rt,data:l.history,rowKey:s=>s.id,onRowClick:(s,n)=>P(s,n),emptyMessage:t("tools.empty.history","No tool history entries for this place")}),e.jsxs("div",{className:a.pagination,children:[e.jsx("button",{className:a.btn,disabled:l.historyOffset===0,title:t("tools.page.prev.tooltip","Go to the previous page of tool history results."),onClick:()=>{C(null),l.setHistoryOffset(Math.max(0,l.historyOffset-G))},children:t("tools.page.prev","Prev")}),e.jsxs("span",{className:a.pageInfo,children:[l.historyOffset+1,"–",Math.min(l.historyOffset+G,l.historyTotal)," / ",l.historyTotal]}),e.jsx("button",{className:a.btn,disabled:!l.historyHasMore,title:t("tools.page.next.tooltip","Go to the next page of tool history results."),onClick:()=>{C(null),l.setHistoryOffset(l.historyOffset+G)},children:t("tools.page.next","Next")})]})]}),S==="statistics"&&e.jsxs("div",{className:a.card,children:[e.jsxs("div",{className:a.cardToolbar,children:[e.jsx("div",{className:a.sectionTitle,children:t("tools.tab.statistics","Statistics")}),e.jsx("button",{className:a.dangerButton,onClick:()=>{o("dashboard_click_event",{click_target:"tools_clear_statistics",page:"tools",tab:"tools_statistics"}),E("statistics")},children:t("common.clear","Clear")})]}),L&&e.jsxs("div",{className:a.tierDistribution,children:[e.jsxs("div",{className:a.tierBarWrap,children:[e.jsx("div",{className:a.tierBarBasic,style:{width:`${L.basicPct}%`}}),e.jsx("div",{className:a.tierBarPro,style:{width:`${L.proPct}%`}})]}),e.jsxs("div",{className:a.tierLabels,children:[e.jsxs("span",{children:[R(t,"basic")," ",L.basicPct,"% (",L.basic,")"]}),e.jsxs("span",{children:[R(t,"pro")," ",L.proPct,"% (",L.pro,")"]})]})]}),e.jsx("div",{className:a.statsTableWrap,children:e.jsxs("table",{className:a.statsTable,children:[e.jsx("thead",{children:e.jsx("tr",{children:J.map(s=>e.jsxs("th",{style:s.width?{width:s.width}:void 0,className:s.sortable?a.sortableHeader:void 0,onClick:s.sortable?()=>V(s.key):void 0,children:[e.jsx("span",{children:s.label}),s.sortable&&B===s.key&&e.jsx("span",{className:a.sortArrow,children:x==="asc"?"▴":"▾"})]},s.key))})}),e.jsx("tbody",{children:z.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:J.length,className:a.emptyStats,children:t("tools.empty.stats","No tool statistics for this place")})}):z.map(s=>{const n=U===s.toolName;return e.jsxs(i.Fragment,{children:[e.jsxs("tr",{className:a.statsToolRow,onClick:()=>Q(s.toolName),children:[e.jsx("td",{children:e.jsxs("button",{type:"button",className:a.expandButton,"aria-expanded":n,"aria-label":`${s.toolName} ${n?t("common.collapse","Collapse"):t("common.expand","Expand")}`,onClick:r=>{r.stopPropagation(),Q(s.toolName)},children:[e.jsx("span",{className:a.expandIcon,"aria-hidden":"true",children:n?"▾":"▸"}),e.jsx("span",{children:s.toolName})]})}),e.jsx("td",{children:s.totalCalls}),e.jsx("td",{children:s.successCount}),e.jsx("td",{children:s.fallbackCount}),e.jsx("td",{children:s.unsupportedCount}),e.jsx("td",{children:s.warningCount}),e.jsx("td",{children:s.failureCount}),e.jsx("td",{children:W(s.avgExecutionTimeMs)}),e.jsx("td",{children:e.jsx(M,{text:s.tier==="mixed"?t("tools.tier.mixed.tooltip","This tool includes both Basic and Pro actions."):"",children:e.jsx("span",{className:s.tier==="pro"?a.tierPro:s.tier==="mixed"?a.tierMixed:a.tierBasic,children:R(t,s.tier)})})})]}),n&&s.commands.map(r=>e.jsxs("tr",{className:a.statsActionRow,children:[e.jsx("td",{children:e.jsx("span",{className:a.actionLabel,children:r.label})}),e.jsx("td",{children:r.totalCalls}),e.jsx("td",{children:r.successCount}),e.jsx("td",{children:r.fallbackCount}),e.jsx("td",{children:r.unsupportedCount}),e.jsx("td",{children:r.warningCount}),e.jsx("td",{children:r.failureCount}),e.jsx("td",{children:W(r.avgExecutionTimeMs)}),e.jsx("td",{children:e.jsx("span",{className:r.tier==="pro"?a.tierPro:a.tierBasic,children:R(t,r.tier)})})]},`${s.toolName}:${r.commandName}`))]},s.toolName)})})]})}),l.statistics&&e.jsxs("div",{className:a.summaryLine,children:[t("tools.summary.total","Total"),": ",l.statistics.totalCalls," ",t("tools.summary.calls","calls")," | ",t("tools.summary.sessions","Sessions"),": ",l.statistics.totalSessions]})]}),e.jsx(gt,{open:w!==null,ariaLabel:t("tools.detail.dialogLabel","Tool execution detail"),onClose:H,returnFocusTo:_.current,testId:"tools-history-detail-popup-layer",children:w&&e.jsx(Ie,{entry:w,onClose:H})}),e.jsx(_t,{open:m!==null,title:m==="history"?t("tools.clear.history.title","Clear history?"):t("tools.clear.statistics.title","Clear statistics?"),message:m==="history"?t("tools.clear.history.message","This permanently removes the current place tools history."):t("tools.clear.statistics.message","This permanently resets the current place tool statistics."),cancelLabel:t("common.cancel","Cancel"),confirmLabel:t("common.clear","Clear"),loading:g,onCancel:()=>!g&&E(null),onConfirm:it})]})}export{ze as Component};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as i,i as r}from"./index-
|
|
1
|
+
import{j as i,i as r}from"./index-CfT3smRY.js";function p({text:o,children:t}){return i.jsx(r,{text:o,children:t})}export{p as T};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
._page_12gq5_2{display:flex;flex-direction:column;gap:var(--content-gap);max-width:var(--content-max)}._grid_12gq5_9{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin-top:16px}._card_12gq5_16{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--bg-card);padding:0;text-align:left;position:relative;color:inherit}._card_12gq5_16:hover{border-color:var(--accent)}._cardBodyButton_12gq5_31{display:block;width:100%;padding:0;border:0;background:transparent;color:inherit;cursor:pointer;font:inherit;text-align:left}._cardBodyButton_12gq5_31:focus-visible{outline:none;box-shadow:inset var(--focus-ring)}._thumb_12gq5_48{width:100%;aspect-ratio:16 / 9;object-fit:contain;object-position:center;display:block;background:var(--bg-secondary)}._runtimeObservationPlaceholder_12gq5_57{display:flex;align-items:center;justify-content:center;padding:12px;color:var(--text-secondary);font-size:11px;font-weight:600;line-height:1.35;text-align:center}._badges_12gq5_69{position:absolute;top:8px;right:8px;display:flex;gap:4px}._priorityHighBadge_12gq5_77,._priorityMediumBadge_12gq5_78,._priorityLowBadge_12gq5_79{display:inline-flex;align-items:center;min-height:22px;padding:2px 6px;border:1px solid var(--border);border-radius:var(--radius-control);font-size:12px;font-weight:600;cursor:default}._priorityHighBadge_12gq5_77{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}._priorityMediumBadge_12gq5_78{background:var(--pro-bg-soft);border-color:var(--pro-border);color:var(--pro-text)}._priorityLowBadge_12gq5_79{background:var(--bg-secondary);border-color:var(--border);color:var(--text-secondary)}._cardMeta_12gq5_109{padding:8px 12px;font-size:12px;color:var(--text-primary)}._target_12gq5_115{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._time_12gq5_122{color:var(--text-muted);margin-top:4px}._drawer_12gq5_127{width:100%;flex:1 1 auto;min-height:0;max-height:none;display:flex;flex-direction:column;background:var(--bg-card);border:0;border-radius:0;overflow:hidden;padding:0;box-shadow:none;color:var(--text-primary);box-sizing:border-box}._drawerToolbar_12gq5_144{flex:0 0 auto;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;padding:14px 16px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg-card) 92%,var(--bg-secondary))}._drawerTitleBlock_12gq5_155{min-width:0;display:flex;flex-direction:column;gap:3px}._drawerEyebrow_12gq5_162{color:var(--text-muted);font-family:var(--font-label);font-size:11px;font-weight:600;letter-spacing:0;text-transform:uppercase}._drawerTarget_12gq5_171{overflow:hidden;color:var(--text-primary);font-family:var(--font-label);font-size:13px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}._drawerToolbarActions_12gq5_181{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0}._closeBtn_12gq5_189{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;cursor:pointer;border:1px solid var(--border);border-radius:7px;background:transparent;color:var(--text-secondary);transition:border-color var(--transition),background var(--transition),color var(--transition)}._closeBtn_12gq5_189:hover{border-color:var(--accent);background:var(--accent-dim);color:var(--text-primary)}._detailBody_12gq5_210{flex:1 1 auto;min-height:0;overflow-y:auto;padding:16px 24px 24px}._screenshotPreviewFrame_12gq5_217{display:flex;align-items:center;justify-content:center;width:100%;height:clamp(180px,32vh,320px);margin-top:12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-secondary);overflow:hidden}._fullImg_12gq5_230{display:block;width:100%;height:100%;object-fit:contain}._metaDl_12gq5_237{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;margin:16px 0;font-size:13px}._metaDl_12gq5_237 dt{color:var(--text-muted)}._platformGuidance_12gq5_249{margin-top:16px;color:var(--text-primary);font-size:13px;overflow-wrap:anywhere}._platformGuidance_12gq5_249>summary{cursor:pointer;padding:12px 0;font-weight:600}._platformGuidance_12gq5_249>summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}._platformGuidanceItem_12gq5_267{border-top:1px solid var(--border);padding:12px 0}._platformGuidanceItem_12gq5_267 h4,._platformGuidanceItem_12gq5_267 p{margin:0 0 8px}._platformGuidanceKind_12gq5_277,._platformGuidanceItem_12gq5_267 ._metaDl_12gq5_237 dt{color:var(--text-secondary)}._platformGuidanceItem_12gq5_267 ._metaDl_12gq5_237{grid-template-columns:minmax(0,120px) minmax(0,1fr)}._platformGuidanceItem_12gq5_267 dd{margin:0}._errorMsg_12gq5_290{color:var(--error-text);padding:12px}._suggestionsWrap_12gq5_295{margin-top:16px}._suggestionsWrap_12gq5_295 h3{margin:0 0 12px;font-size:16px}._prioritySection_12gq5_302{margin-bottom:16px}._sectionHighHeader_12gq5_306{margin:0 0 8px;font-size:13px;font-weight:600;color:var(--error)}._sectionLowHeader_12gq5_312{margin:0 0 8px;font-size:13px;font-weight:600;color:var(--warning-text)}._sectionMediumHeader_12gq5_318{margin:0 0 8px;font-size:13px;font-weight:600;color:var(--warning)}._groupCard_12gq5_324{border:1px solid var(--border);border-radius:8px;margin-bottom:8px;background:var(--bg-secondary);overflow:hidden}._groupHeader_12gq5_331{width:100%;display:flex;align-items:center;gap:8px;padding:10px 12px;background:transparent;border:none;cursor:pointer;text-align:left;color:var(--text-primary);font:inherit}._groupHeader_12gq5_331:hover{background:var(--bg-card)}._groupLabel_12gq5_347{font-weight:600;font-size:13px;flex:1}._groupCount_12gq5_352{font-size:12px;color:var(--text-muted);padding:2px 8px;background:var(--bg-card);border-radius:10px}._groupChevron_12gq5_359{color:var(--text-muted);font-size:12px}._groupBody_12gq5_363{padding:0 12px 12px}._groupDescription_12gq5_366{font-size:12px;color:var(--text-muted);margin:8px 0 4px}._groupFix_12gq5_371{font-size:12px;color:var(--text-primary);margin:4px 0 8px;padding:6px 10px;background:var(--bg-card);border-left:3px solid var(--accent);border-radius:4px}._falsePositive_12gq5_380{font-size:12px;color:var(--warning-text);margin:4px 0 8px;padding:6px 10px;background:var(--warning-bg);border-radius:4px}._itemList_12gq5_388{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}._suggestionItem_12gq5_396{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;background:var(--bg-card);border-radius:6px;font-size:12px}._suggestionInfo_12gq5_406{display:flex;flex-direction:column;gap:2px;min-width:0}._pathBreadcrumb_12gq5_412{font-family:monospace;font-size:11px;color:var(--text-primary);background:transparent;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._currentValue_12gq5_421{font-size:11px;color:var(--text-muted)}._copyFixBtn_12gq5_425{padding:4px 10px;background:var(--accent);color:var(--bg-card);border:none;border-radius:4px;cursor:pointer;font-size:11px;font-weight:600;flex-shrink:0}._copyFixBtn_12gq5_425:hover{opacity:.9}._emptySuggestions_12gq5_439{text-align:center;padding:24px;color:var(--text-muted);font-size:13px}._sampleBanner_12gq5_447{display:flex;flex-direction:column;gap:12px;padding:18px 20px;border:1px solid var(--pro-border);border-radius:var(--radius);background:linear-gradient(135deg,#f0bd5829,#f0bd5808 55%),var(--bg-card);margin-bottom:16px}._sampleBannerRow_12gq5_460{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}._sampleBannerMain_12gq5_468{display:flex;flex-direction:column;gap:8px;min-width:0;flex:1}._sampleBadge_12gq5_476{width:fit-content;color:var(--pro-text);font-family:var(--font-label);font-size:11px;font-weight:600;letter-spacing:.02em;opacity:.92}._sampleTitle_12gq5_486{font-family:var(--font-label);font-size:16px;font-weight:600;color:var(--text-primary)}._sampleMessage_12gq5_493{max-width:560px;color:var(--text-secondary);font-size:13px;line-height:1.5}._sampleActions_12gq5_500{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}._primaryAction_12gq5_508,._secondaryAction_12gq5_509{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:0 14px;border-radius:8px;font-family:var(--font-label);font-size:12px;text-decoration:none;transition:background var(--transition),border-color var(--transition),opacity var(--transition)}._secondaryAction_12gq5_509{border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);cursor:pointer}._secondaryAction_12gq5_509:hover{border-color:var(--accent);background:var(--accent-dim)}._primaryAction_12gq5_508{border:1px solid var(--pro-badge);background:var(--pro-badge);color:var(--pro-text-on-badge)}._primaryAction_12gq5_508:hover{opacity:.9}._emptyState_12gq5_544{text-align:center;padding:48px 20px;color:var(--text-muted);font-size:14px}._pluginGuideCard_12gq5_552{display:flex;align-items:flex-start;gap:14px;padding:18px 20px;border:1px solid var(--warning);border-radius:var(--radius);background:var(--bg-card);color:var(--text-primary)}._pluginGuideMarker_12gq5_563{display:flex;align-items:center;justify-content:center;width:28px;height:28px;flex:0 0 28px;border-radius:50%;border:1px solid var(--warning);color:var(--warning);font-family:var(--font-label);font-size:15px;font-weight:700}._pluginGuideBody_12gq5_578{min-width:0}._pluginGuideTitle_12gq5_582{margin:0 0 8px;color:var(--text-primary);font-family:var(--font-label);font-size:15px;font-weight:600}._pluginGuideMessage_12gq5_590{margin:0 0 12px;color:var(--text-secondary);font-size:13px;line-height:1.5}._pluginGuideChecklist_12gq5_597{display:flex;flex-direction:column;gap:7px;margin:0 0 14px;padding:0;list-style:none}._pluginGuideChecklist_12gq5_597 li{position:relative;padding-left:20px;color:var(--text-secondary);font-size:13px}._pluginGuideChecklist_12gq5_597 li:before{content:"○";position:absolute;left:2px;color:var(--text-muted)}._pluginGuideWaiting_12gq5_620{display:inline-flex;align-items:center;gap:8px;color:var(--text-muted);font-family:var(--font-label);font-size:12px}._pluginGuideDot_12gq5_629{width:7px;height:7px;border-radius:50%;background:var(--warning)}._analysisWorkspace_12gq5_637{width:100%;position:relative}._analysisMainColumn_12gq5_642{min-width:0}._analysisSummaryPanel_12gq5_647{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-top:16px;padding:16px 18px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card)}._analysisSummaryPanel_12gq5_647 h2,._recentCapturesHeader_12gq5_660 h2{margin:0;font-size:16px;font-family:var(--font-label);color:var(--text-primary)}._analysisSummaryText_12gq5_667,._recentCapturesMeta_12gq5_668{margin:6px 0 0;color:var(--text-secondary);font-size:13px}._analysisReportGrid_12gq5_674{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;margin-top:14px}._analysisReportGroup_12gq5_681{min-width:0}._analysisReportCard_12gq5_685{display:grid;grid-template-columns:112px minmax(0,1fr);gap:12px;width:100%;min-height:128px;padding:12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);color:var(--text-primary);cursor:pointer;text-align:left;font:inherit;transition:border-color var(--transition),background var(--transition)}._analysisReportCard_12gq5_685:hover{border-color:var(--accent);background:var(--bg-secondary)}._analysisReportThumb_12gq5_707{width:112px;aspect-ratio:16 / 10;object-fit:contain;object-position:center;border-radius:6px;background:var(--bg-secondary)}._analysisReportBody_12gq5_716{min-width:0;display:flex;flex-direction:column;gap:7px}._analysisReportTopline_12gq5_723{display:flex;align-items:center;gap:8px;flex-wrap:wrap}._analysisVerdict_12gq5_730{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:999px;font-family:var(--font-label);font-size:12px;font-weight:600}._analysisVerdict_needsFix_12gq5_741,._analysisVerdict_review_12gq5_742{color:var(--accent);background:var(--accent-dim)}._analysisVerdict_incomplete_12gq5_747{color:var(--warning-text);background:var(--warning-bg)}._analysisVerdict_passed_12gq5_752{color:var(--text-secondary);background:var(--bg-secondary)}._analysisReportCounts_12gq5_757{color:var(--text-secondary);font-size:12px}._readinessSummary_12gq5_762{display:flex;flex-wrap:wrap;gap:5px}._readinessChip_12gq5_768{display:inline-flex;align-items:center;min-height:22px;padding:2px 7px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-secondary);color:var(--text-secondary);font-family:var(--font-label);font-size:11px;font-weight:600;line-height:1.3}._readinessChipReady_12gq5_783{border-color:var(--success-border);background:var(--success-bg);color:var(--success-text)}._readinessChipPending_12gq5_789{border-color:var(--warning-border);background:var(--warning-bg);color:var(--warning-text)}._primaryReadinessBlock_12gq5_795{display:flex;flex-direction:column;gap:8px;width:100%}._criticSummary_12gq5_802{display:flex;flex-direction:column;gap:3px;margin:0;padding:8px 10px;border-left:2px solid var(--accent);background:var(--accent-dim);color:var(--text-secondary);font-size:12px;line-height:1.45}._criticSummary_12gq5_802>span{color:var(--text-primary);font-size:11px;font-weight:600}._analysisReportTarget_12gq5_821{overflow:hidden;color:var(--text-primary);font-size:13px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}._analysisReportIssue_12gq5_830{color:var(--text-secondary);font-size:12px;line-height:1.35}._analysisReportCoverage_12gq5_836{color:var(--text-muted);font-size:12px;line-height:1.4}._coverageChips_12gq5_842{display:flex;flex-wrap:wrap;gap:5px}._coverageChip_12gq5_842{display:inline-flex;align-items:center;min-height:20px;padding:1px 6px;border:1px solid var(--border);border-radius:5px;background:var(--bg-card);color:var(--text-muted);font-family:var(--font-label);font-size:11px;font-weight:500;cursor:default}._coverageChip_completed_12gq5_863{border-color:var(--success-border);color:var(--success-text)}._coverageChip_failed_12gq5_868{border-color:var(--error-border);color:var(--error-text)}._coverageChip_skipped_12gq5_873,._coverageChip_not_requested_12gq5_874{border-color:var(--warning-border);color:var(--warning-text)}._analysisReportMeta_12gq5_879{margin-top:auto;color:var(--text-muted);font-size:11px;line-height:1.35}._analysisChildList_12gq5_886{display:flex;flex-direction:column;gap:6px;margin-top:8px;padding:8px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-secondary)}._analysisChildRow_12gq5_897{display:grid;grid-template-columns:minmax(0,1fr);gap:4px;width:100%;padding:8px 10px;border:1px solid transparent;border-radius:6px;background:var(--bg-card);color:var(--text-primary);cursor:pointer;text-align:left;font:inherit;transition:border-color var(--transition),background var(--transition)}._analysisChildRow_12gq5_897:hover{border-color:var(--accent);background:var(--accent-dim)}._analysisChildPath_12gq5_918{overflow:hidden;color:var(--text-primary);font-family:var(--font-code);font-size:11px;text-overflow:ellipsis;white-space:nowrap}._analysisChildSummary_12gq5_927,._analysisChildDetailHint_12gq5_928{color:var(--text-secondary);font-size:11px}._analysisChildDetailHint_12gq5_928{color:var(--text-muted)}._drawerAnalysisSummary_12gq5_937{display:flex;flex-direction:column;gap:10px;margin-top:14px;padding:12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-secondary)}._drawerAnalysisSummaryItem_12gq5_948{display:flex;align-items:center;gap:8px;flex-wrap:wrap}._drawerAnalysisLabel_12gq5_955{min-width:64px;color:var(--text-muted);font-size:12px}._drawerAnalysisCounts_12gq5_961,._drawerAnalysisValue_12gq5_962{color:var(--text-secondary);font-size:12px}._recentCapturesSection_12gq5_967{margin-top:28px}._recentCapturesHeader_12gq5_660{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}._drawerPrimaryActions_12gq5_979{display:flex;align-items:center;gap:8px;min-width:0}._drawerActionBtn_12gq5_986{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:34px;padding:7px 14px;border-radius:7px;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);font-family:var(--font-label);font-size:12px;line-height:1;white-space:nowrap;cursor:pointer;transition:border-color var(--transition),background var(--transition),color var(--transition)}._drawerActionBtn_12gq5_986:hover:not(:disabled){border-color:var(--accent);background:var(--accent-dim)}._drawerActionBtn_12gq5_986:disabled{opacity:.45;cursor:not-allowed}._drawerMoreMenu_12gq5_1015{position:relative;flex:0 0 auto}._drawerMoreButton_12gq5_1020{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:7px;border:1px solid var(--border);background:transparent;color:var(--text-secondary);cursor:pointer;list-style:none;transition:border-color var(--transition),background var(--transition),color var(--transition)}._drawerMoreButton_12gq5_1020:hover{border-color:var(--accent);background:var(--accent-dim);color:var(--text-primary)}._drawerMoreButton_12gq5_1020::-webkit-details-marker{display:none}._drawerMoreMenuBody_12gq5_1045{position:absolute;top:calc(100% + 6px);right:0;z-index:2;min-width:180px;padding:6px;border:1px solid var(--border);border-radius:8px;background:var(--bg-card);box-shadow:0 8px 24px #0000002e}._drawerMenuItem_12gq5_1058{display:block;width:100%;padding:8px 10px;border:0;border-radius:5px;background:transparent;color:var(--text-primary);text-align:left;font-family:var(--font-label);font-size:12px;cursor:pointer}._drawerMenuItem_12gq5_1058:hover:not(:disabled){background:var(--bg-secondary)}._drawerMenuItem_12gq5_1058:disabled{opacity:.45;cursor:not-allowed}._drawerMenuItemDanger_12gq5_1081{color:var(--danger-text)}._drawerMenuItemDanger_12gq5_1081:hover:not(:disabled){background:var(--danger-hover-bg)}._actionErrMsg_12gq5_1090{font-size:12px;color:var(--error-text);padding:6px 10px;background:#e0555514;border-radius:4px;margin-top:10px}._actionStatusMsg_12gq5_1099{display:inline-flex;flex-direction:column;align-items:flex-start;max-width:100%;font-size:12px;padding:7px 10px;border:1px solid transparent;border-radius:7px;margin-top:0;margin-bottom:10px;line-height:1.45}._actionStatus_info_12gq5_1113{color:var(--text-secondary);background:var(--bg-secondary);border-color:var(--border)}._actionStatus_success_12gq5_1119{color:var(--success-text);background:var(--success-bg);border-color:var(--success-border)}._actionStatus_warning_12gq5_1125{color:var(--warning-text);background:var(--warning-bg);border-color:var(--warning-border)}._actionStatusDetail_12gq5_1131{margin-top:2px;color:var(--text-muted)}._galleryHeader_12gq5_1137{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}._galleryHeader_12gq5_1137 h2{margin:0;color:var(--text-primary);font-size:var(--type-surface-title-size);font-weight:600;line-height:var(--leading-title)}._cardChecked_12gq5_1154{border-color:var(--accent)!important;box-shadow:0 0 0 2px var(--accent);background:var(--accent-dim)}._cardCheckbox_12gq5_1161{position:absolute;top:8px;left:8px;opacity:0;z-index:2;transition:opacity var(--transition),background var(--transition),border-color var(--transition)}._card_12gq5_16:hover ._cardCheckbox_12gq5_1161,._card_12gq5_16:focus-within ._cardCheckbox_12gq5_1161,._cardChecked_12gq5_1154 ._cardCheckbox_12gq5_1161{opacity:1}._captureSelectionActions_12gq5_1176{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}._selectionToolbar_12gq5_1185,._selectionBar_12gq5_1186{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 0 12px;padding:12px 16px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius)}._selectionToolbar_12gq5_1185{position:sticky;top:0;z-index:8;justify-content:space-between}._selectionToolbarCount_12gq5_1205{color:var(--text-primary);font-family:var(--font-label);font-size:12px;font-weight:600}._selectionToolbarActions_12gq5_1212{display:flex;align-items:center;gap:8px;flex-wrap:wrap}._selectionBarBtn_12gq5_1219{padding:6px 14px;border-radius:var(--radius-control);border:1px solid var(--border);background:var(--bg-card);color:var(--text-primary);font-family:var(--font-label);font-size:12px;cursor:pointer;transition:border-color var(--transition),opacity var(--transition)}._selectionBarBtn_12gq5_1219:hover:not(:disabled){border-color:var(--accent)}._selectionBarBtn_12gq5_1219:focus-visible{outline:none;box-shadow:var(--focus-ring)}._selectionBarBtn_12gq5_1219:disabled{opacity:.45;cursor:not-allowed}._selectionBarBtnDanger_12gq5_1245{border-color:var(--danger-border);background:var(--danger-bg);color:var(--danger-text)}._selectionBarBtnDanger_12gq5_1245:hover:not(:disabled){border-color:var(--danger);background:var(--danger-hover-bg)}@media(max-width:768px){._drawer_12gq5_127{padding:0}._drawerToolbar_12gq5_144{grid-template-columns:minmax(0,1fr);align-items:stretch;gap:10px;padding:12px}._drawerToolbarActions_12gq5_181{justify-content:flex-start;overflow-x:auto;padding-bottom:2px}._drawerActionBtn_12gq5_986{padding:7px 10px}._detailBody_12gq5_210{padding:14px}}._emptyState_13gyl_1{display:flex;flex-direction:column;gap:var(--space-section);padding:20px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card)}._header_13gyl_11,._method_13gyl_12{display:flex;flex-direction:column;gap:var(--space-related)}._header_13gyl_11 h3,._header_13gyl_11 p,._method_13gyl_12 h4{margin:0}._header_13gyl_11 h3{color:var(--text-primary);font-family:var(--font-label);font-size:var(--type-section-title-size);font-weight:600}._header_13gyl_11 p{color:var(--text-secondary);font-size:var(--type-body-size);line-height:var(--leading-body)}._method_13gyl_12{padding:14px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-secondary)}._methodTitle_13gyl_44{display:flex;align-items:center;gap:var(--space-related);color:var(--text-primary)}._methodTitle_13gyl_44 h4{font-family:var(--font-label);font-size:var(--type-card-title-size);font-weight:600}._moreExamples_13gyl_57{color:var(--text-secondary);font-size:var(--type-body-size)}._moreExamples_13gyl_57 summary{width:fit-content;min-height:34px;color:var(--accent-hover);font-weight:600;line-height:34px;cursor:pointer}._moreExamples_13gyl_57[open] summary{margin-bottom:var(--space-related)}._moreExamples_13gyl_57 summary:focus-visible{outline:none;box-shadow:var(--focus-ring)}._filterBar_1203k_4{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:12px 0;margin-bottom:8px;border-bottom:1px solid var(--border)}._filterGroup_1203k_14{display:flex;align-items:center;gap:8px;flex-wrap:wrap}._filterLabel_1203k_21{font-size:12px;color:var(--text-muted);font-weight:500;white-space:nowrap}._filterCheckbox_1203k_28{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none}._filterCheckbox_1203k_28 input[type=checkbox]{width:14px;height:14px;cursor:pointer;accent-color:var(--accent)}._segmentGroup_1203k_45{display:inline-flex;align-items:center;gap:2px;padding:2px;border:1px solid var(--border);border-radius:7px;background:var(--bg-secondary)}._segmentBtn_1203k_55{min-height:26px;padding:0 10px;border:0;border-radius:5px;background:transparent;color:var(--text-secondary);font-family:var(--font-label);font-size:12px;cursor:pointer;white-space:nowrap;transition:background var(--transition),color var(--transition)}._segmentBtn_1203k_55:hover{color:var(--text-primary)}._segmentBtnActive_1203k_73{background:var(--bg-card);color:var(--text-primary);box-shadow:0 0 0 1px var(--border)}._filterInput_1203k_79{font-size:12px;padding:4px 8px;border:1px solid var(--border);border-radius:4px;background:var(--bg-secondary);color:var(--text-primary);font-family:inherit;width:130px}._filterInput_1203k_79:focus{outline:none;border-color:var(--accent)}._filterResetBtn_1203k_95{min-height:30px;padding:0 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg-card);color:var(--text-secondary);font-family:var(--font-label);font-size:12px;cursor:pointer;transition:border-color var(--transition),color var(--transition)}._filterResetBtn_1203k_95:hover{border-color:var(--accent);color:var(--text-primary)}._requestRow_1203k_114{border:1px solid var(--border);border-radius:var(--radius);margin-bottom:8px;background:var(--bg-card);overflow:hidden;transition:border-color var(--transition)}._requestRow_1203k_114:hover{border-color:var(--accent)}._requestRowMain_1203k_127{display:flex;align-items:flex-start;gap:12px;padding:12px 14px}._requestDetailToggle_1203k_134{flex:1;min-width:0;display:flex;align-items:flex-start;gap:12px;padding:0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}._requestDetailToggle_1203k_134:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}._thumbPair_1203k_156{display:flex;align-items:center;gap:4px;flex-shrink:0;position:relative}._thumbPairButton_1203k_164{padding:0;border:0;background:transparent;color:inherit;cursor:pointer;font:inherit;border-radius:6px}._thumbPairButton_1203k_164:focus-visible{outline:2px solid var(--accent);outline-offset:3px}._thumbPairButton_1203k_164:hover ._thumbSlot_1203k_179{border-color:var(--accent)}._thumbPairButton_1203k_164:disabled{cursor:not-allowed;opacity:.72}._thumbPairButton_1203k_164:disabled:hover ._thumbSlot_1203k_179{border-color:var(--border)}._thumbSlot_1203k_179{width:72px;height:48px;border:1px solid var(--border);border-radius:4px;overflow:hidden;background:var(--bg-secondary);display:flex;align-items:center;justify-content:center}._thumbImg_1203k_204{width:100%;height:100%;object-fit:cover;display:block}._thumbPlaceholder_1203k_211{font-size:10px;color:var(--text-muted);text-align:center;padding:4px;line-height:1.3}._thumbArrow_1203k_219{font-size:12px;color:var(--text-muted);flex-shrink:0}._extraPathsBadge_1203k_225{position:absolute;bottom:0;right:0;background:var(--accent);color:#fff;font-size:10px;font-weight:700;padding:1px 4px;border-radius:3px;line-height:1.4}._requestMeta_1203k_239{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}._requestLabel_1203k_247{font-size:13px;font-weight:500;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._requestTime_1203k_256{font-size:11px;color:var(--text-muted)}._requestStats_1203k_261{font-size:12px;color:var(--text-secondary);display:flex;gap:4px;flex-wrap:wrap}._statDot_1203k_269{color:var(--text-muted)}._summaryPill_1203k_273{color:var(--text-secondary)}._requestReadiness_1203k_277{display:flex;flex-wrap:wrap;gap:5px}._requestReadinessPill_1203k_283{display:inline-flex;align-items:center;min-height:20px;padding:1px 6px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-secondary);color:var(--text-secondary);font-size:11px;font-weight:600;line-height:1.35}._requestReadinessReady_1203k_297{border-color:var(--success-border);background:var(--success-bg);color:var(--success-text)}._requestReadinessPending_1203k_303{border-color:var(--warning-border);background:var(--warning-bg);color:var(--warning-text)}._requestActions_1203k_310{display:flex;flex-direction:column;gap:6px;flex-shrink:0}._expandHint_1203k_317{padding:5px 10px;border-radius:5px;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-secondary);font-family:var(--font-label);font-size:11px;white-space:nowrap;-webkit-user-select:none;user-select:none}._mutationsArea_1203k_330{border-top:1px solid var(--border);background:var(--bg-secondary);padding:8px 14px;display:flex;flex-direction:column;gap:4px}._mutLoading_1203k_339,._mutEmpty_1203k_340{font-size:12px;color:var(--text-muted);padding:4px 0}._mutError_1203k_346{font-size:12px;color:var(--error-text);padding:4px 0}._mutationRow_1203k_352{font-size:12px;padding:6px 0;border-bottom:1px solid var(--border)}._mutationRow_1203k_352:last-child{border-bottom:none}._mutationLine_1203k_362{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}._mutTs_1203k_369{color:var(--text-muted);flex-shrink:0;font-size:11px}._mutCommand_1203k_375{color:var(--accent);font-weight:500;flex-shrink:0}._mutPath_1203k_381{font-family:monospace;font-size:11px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:260px}._mutDiff_1203k_391{color:var(--text-muted);font-size:11px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._mutErr_1203k_346{color:var(--error-text);font-size:11px}._changeDetails_1203k_406{display:flex;flex-direction:column;gap:4px;margin-top:6px;padding-left:88px}._changeDetailRow_1203k_414{display:grid;grid-template-columns:72px minmax(96px,180px) minmax(0,1fr) 14px minmax(0,1fr);align-items:start;gap:8px;min-height:24px;font-size:11px}._changeDetailRowNoBefore_1203k_423{grid-template-columns:72px minmax(96px,180px) 14px minmax(0,1fr)}._changeDetailBadge_1203k_427{justify-self:start;padding:2px 6px;border-radius:4px;border:1px solid var(--border);background:var(--bg-card);color:var(--text-secondary);font-weight:600;line-height:1.4;white-space:nowrap}._changeDetail_text_1203k_444{color:#2563eb;border-color:#2563eb47}._changeDetail_color_1203k_449{color:#b45309;border-color:#b4530947}._changeDetail_size_1203k_454{color:#047857;border-color:#04785747}._changeDetail_layout_1203k_459{color:#7c3aed;border-color:#7c3aed47}._changeDetail_state_1203k_464{color:#be123c;border-color:#be123c47}._changeDetail_asset_1203k_469{color:#0369a1;border-color:#0369a147}._changeDetail_property_1203k_474{color:var(--text-secondary)}._changeDetailProperty_1203k_478{font-family:var(--font-code);color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._changeDetailArrow_1203k_486{color:var(--text-muted);text-align:center;line-height:1.6}._changeDetailOldValue_1203k_492,._changeDetailNewValue_1203k_493{font-family:var(--font-code);overflow-wrap:anywhere;word-break:break-word;line-height:1.6}._changeDetailOldValue_1203k_492{color:var(--error-text);text-decoration:line-through;text-decoration-thickness:1px}._changeDetailNewValue_1203k_493{color:var(--success-text)}._compareDialogLayer_1203k_511{position:fixed;top:calc(var(--header-height) + 16px);right:24px;bottom:24px;left:calc(var(--sidebar-width) + 24px);z-index:900;display:flex;align-items:stretch;justify-content:center;padding:clamp(12px,2vw,24px);background:#03071294;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-sizing:border-box;overflow:auto}._compareDialog_1203k_511{width:100%;height:100%;min-height:0;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;box-shadow:0 24px 60px #0000006b;outline:none;overflow:hidden}._beforeAfterDrawer_1203k_542{width:100%;height:100%;min-height:0;background:var(--bg-card);display:flex;flex-direction:column;overflow:hidden}._drawerHeader_1203k_552{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border);flex-shrink:0}._drawerTitle_1203k_561{margin:0;font-size:var(--type-section-title-size);font-weight:600;line-height:var(--leading-title);color:var(--text-primary)}._drawerCloseBtn_1203k_569{padding:5px 12px;border-radius:5px;border:1px solid var(--border);background:transparent;color:var(--text-secondary);font-size:12px;cursor:pointer;transition:border-color var(--transition)}._drawerCloseBtn_1203k_569:hover{border-color:var(--accent);color:var(--text-primary)}._drawerBody_1203k_585{padding:20px;color:var(--text-muted);font-size:13px}._pathTabs_1203k_592{display:flex;gap:2px;border-bottom:1px solid var(--border);padding:0 20px;flex-shrink:0;overflow-x:auto}._pathTab_1203k_592{font-family:var(--font-label);font-size:12px;padding:8px 14px;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-secondary);cursor:pointer;white-space:nowrap;max-width:160px;overflow:hidden;text-overflow:ellipsis;transition:color var(--transition),border-color var(--transition)}._pathTab_1203k_592:hover{color:var(--text-primary)}._pathTabActive_1203k_621{color:var(--accent);border-bottom-color:var(--accent)}._comparePanel_1203k_627{display:grid;grid-template-columns:1fr 1fr;gap:1px;flex:1;min-height:0;background:var(--border);overflow:auto}._compareHalf_1203k_637{background:var(--bg-card);display:flex;flex-direction:column;min-height:0}._compareLabel_1203k_644{font-size:11px;font-weight:600;color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;padding:8px 12px;border-bottom:1px solid var(--border);flex-shrink:0}._compareImg_1203k_655{width:100%;flex:1;object-fit:contain;background:var(--bg-secondary);display:block}._comparePlaceholder_1203k_663{flex:1;display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--text-muted);background:var(--bg-secondary);padding:24px;text-align:center}._compareDetailsPanel_1203k_675{flex-shrink:0;max-height:min(34%,260px);overflow:auto;padding:12px 20px 14px;border-top:1px solid var(--border);background:var(--bg-secondary)}._compareDetailsHeader_1203k_684{margin-bottom:8px;color:var(--text-primary);font-family:var(--font-label);font-size:12px;font-weight:600}._compareDetailsPanel_1203k_675 ._changeDetails_1203k_406{padding-left:0}._compareDetailsPanel_1203k_675 ._mutPath_1203k_381,._compareDetailsPanel_1203k_675 ._mutDiff_1203k_391{max-width:none}._drawerFooter_1203k_702{display:flex;justify-content:flex-end;padding:12px 20px;border-top:1px solid var(--border);flex-shrink:0}._drawerActionBtn_1203k_710{padding:7px 16px;border-radius:6px;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);font-family:var(--font-label);font-size:12px;cursor:pointer;transition:border-color var(--transition),background var(--transition)}._drawerActionBtn_1203k_710:hover{border-color:var(--accent);background:var(--accent-dim)}._historyTabWrap_1203k_728{display:flex;flex-direction:column;gap:0}._historyWorkspace_1203k_734{width:100%;position:relative}._historyMainColumn_1203k_739{min-width:0}._requestList_1203k_743{display:flex;flex-direction:column}._emptyHistory_1203k_748{display:flex;flex-direction:column;gap:var(--space-related);text-align:center;padding:48px 20px;color:var(--text-muted);font-size:14px}._historyError_1203k_758{padding:16px 0;color:var(--error-text);font-size:13px}._historyLoading_1203k_764{padding:48px 20px;text-align:center;color:var(--text-muted);font-size:13px}._listHeader_1203k_772{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px}._listHeaderTitle_1203k_781{font-size:14px;font-weight:600;color:var(--text-primary);margin:0}._clearBtn_1203k_788{padding:6px 12px;border:1px solid var(--danger-border);border-radius:var(--radius-control);background:var(--danger-bg);color:var(--danger-text);font-family:var(--font-label);font-size:12px;font-weight:500;cursor:pointer;transition:background var(--transition),border-color var(--transition)}._clearBtn_1203k_788:hover{background:var(--danger-hover-bg);border-color:var(--danger)}._clearBtn_1203k_788:focus-visible{outline:none;box-shadow:var(--focus-ring)}._deleteErrBanner_1203k_812{padding:8px 12px;margin-bottom:8px;border-radius:var(--radius);background:var(--error-bg, rgba(224, 85, 85, .12));border:1px solid var(--error-border, rgba(224, 85, 85, .4));color:var(--error-text);font-size:13px}@media(max-width:1120px){._compareDialogLayer_1203k_511{left:calc(var(--sidebar-width) + 16px);right:16px;bottom:16px;padding:12px}}@media(max-width:768px){._compareDialogLayer_1203k_511{top:calc(var(--header-height) + 10px);right:10px;bottom:10px;left:calc(var(--sidebar-collapsed) + 10px);padding:8px}}
|
|
1
|
+
._page_12gq5_2{display:flex;flex-direction:column;gap:var(--content-gap);max-width:var(--content-max)}._grid_12gq5_9{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin-top:16px}._card_12gq5_16{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--bg-card);padding:0;text-align:left;position:relative;color:inherit}._card_12gq5_16:hover{border-color:var(--accent)}._cardBodyButton_12gq5_31{display:block;width:100%;padding:0;border:0;background:transparent;color:inherit;cursor:pointer;font:inherit;text-align:left}._cardBodyButton_12gq5_31:focus-visible{outline:none;box-shadow:inset var(--focus-ring)}._thumb_12gq5_48{width:100%;aspect-ratio:16 / 9;object-fit:contain;object-position:center;display:block;background:var(--bg-secondary)}._runtimeObservationPlaceholder_12gq5_57{display:flex;align-items:center;justify-content:center;padding:12px;color:var(--text-secondary);font-size:11px;font-weight:600;line-height:1.35;text-align:center}._badges_12gq5_69{position:absolute;top:8px;right:8px;display:flex;gap:4px}._priorityHighBadge_12gq5_77,._priorityMediumBadge_12gq5_78,._priorityLowBadge_12gq5_79{display:inline-flex;align-items:center;min-height:22px;padding:2px 6px;border:1px solid var(--border);border-radius:var(--radius-control);font-size:12px;font-weight:600;cursor:default}._priorityHighBadge_12gq5_77{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}._priorityMediumBadge_12gq5_78{background:var(--pro-bg-soft);border-color:var(--pro-border);color:var(--pro-text)}._priorityLowBadge_12gq5_79{background:var(--bg-secondary);border-color:var(--border);color:var(--text-secondary)}._cardMeta_12gq5_109{padding:8px 12px;font-size:12px;color:var(--text-primary)}._target_12gq5_115{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._time_12gq5_122{color:var(--text-muted);margin-top:4px}._drawer_12gq5_127{width:100%;flex:1 1 auto;min-height:0;max-height:none;display:flex;flex-direction:column;background:var(--bg-card);border:0;border-radius:0;overflow:hidden;padding:0;box-shadow:none;color:var(--text-primary);box-sizing:border-box}._drawerToolbar_12gq5_144{flex:0 0 auto;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;padding:14px 16px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg-card) 92%,var(--bg-secondary))}._drawerTitleBlock_12gq5_155{min-width:0;display:flex;flex-direction:column;gap:3px}._drawerEyebrow_12gq5_162{color:var(--text-muted);font-family:var(--font-label);font-size:11px;font-weight:600;letter-spacing:0;text-transform:uppercase}._drawerTarget_12gq5_171{overflow:hidden;color:var(--text-primary);font-family:var(--font-label);font-size:13px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}._drawerToolbarActions_12gq5_181{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0}._closeBtn_12gq5_189{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;cursor:pointer;border:1px solid var(--border);border-radius:7px;background:transparent;color:var(--text-secondary);transition:border-color var(--transition),background var(--transition),color var(--transition)}._closeBtn_12gq5_189:hover{border-color:var(--accent);background:var(--accent-dim);color:var(--text-primary)}._detailBody_12gq5_210{flex:1 1 auto;min-height:0;overflow-y:auto;padding:16px 24px 24px}._screenshotPreviewFrame_12gq5_217{display:flex;align-items:center;justify-content:center;width:100%;height:clamp(180px,32vh,320px);margin-top:12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-secondary);overflow:hidden}._fullImg_12gq5_230{display:block;width:100%;height:100%;object-fit:contain}._metaDl_12gq5_237{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;margin:16px 0;font-size:13px}._metaDl_12gq5_237 dt{color:var(--text-muted)}._platformGuidance_12gq5_249{margin-top:16px;color:var(--text-primary);font-size:13px;overflow-wrap:anywhere}._platformGuidance_12gq5_249>summary{cursor:pointer;padding:12px 0;font-weight:600}._platformGuidance_12gq5_249>summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}._platformGuidanceItem_12gq5_267{border-top:1px solid var(--border);padding:12px 0}._platformGuidanceItem_12gq5_267 h4,._platformGuidanceItem_12gq5_267 p{margin:0 0 8px}._platformGuidanceKind_12gq5_277,._platformGuidanceItem_12gq5_267 ._metaDl_12gq5_237 dt{color:var(--text-secondary)}._platformGuidanceItem_12gq5_267 ._metaDl_12gq5_237{grid-template-columns:minmax(0,120px) minmax(0,1fr)}._platformGuidanceItem_12gq5_267 dd{margin:0}._errorMsg_12gq5_290{color:var(--error-text);padding:12px}._suggestionsWrap_12gq5_295{margin-top:16px}._suggestionsWrap_12gq5_295 h3{margin:0 0 12px;font-size:16px}._prioritySection_12gq5_302{margin-bottom:16px}._sectionHighHeader_12gq5_306{margin:0 0 8px;font-size:13px;font-weight:600;color:var(--error)}._sectionLowHeader_12gq5_312{margin:0 0 8px;font-size:13px;font-weight:600;color:var(--warning-text)}._sectionMediumHeader_12gq5_318{margin:0 0 8px;font-size:13px;font-weight:600;color:var(--warning)}._groupCard_12gq5_324{border:1px solid var(--border);border-radius:8px;margin-bottom:8px;background:var(--bg-secondary);overflow:hidden}._groupHeader_12gq5_331{width:100%;display:flex;align-items:center;gap:8px;padding:10px 12px;background:transparent;border:none;cursor:pointer;text-align:left;color:var(--text-primary);font:inherit}._groupHeader_12gq5_331:hover{background:var(--bg-card)}._groupLabel_12gq5_347{font-weight:600;font-size:13px;flex:1}._groupCount_12gq5_352{font-size:12px;color:var(--text-muted);padding:2px 8px;background:var(--bg-card);border-radius:10px}._groupChevron_12gq5_359{color:var(--text-muted);font-size:12px}._groupBody_12gq5_363{padding:0 12px 12px}._groupDescription_12gq5_366{font-size:12px;color:var(--text-muted);margin:8px 0 4px}._groupFix_12gq5_371{font-size:12px;color:var(--text-primary);margin:4px 0 8px;padding:6px 10px;background:var(--bg-card);border-left:3px solid var(--accent);border-radius:4px}._falsePositive_12gq5_380{font-size:12px;color:var(--warning-text);margin:4px 0 8px;padding:6px 10px;background:var(--warning-bg);border-radius:4px}._itemList_12gq5_388{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}._suggestionItem_12gq5_396{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;background:var(--bg-card);border-radius:6px;font-size:12px}._suggestionInfo_12gq5_406{display:flex;flex-direction:column;gap:2px;min-width:0}._pathBreadcrumb_12gq5_412{font-family:monospace;font-size:11px;color:var(--text-primary);background:transparent;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._currentValue_12gq5_421{font-size:11px;color:var(--text-muted)}._copyFixBtn_12gq5_425{padding:4px 10px;background:var(--accent);color:var(--bg-card);border:none;border-radius:4px;cursor:pointer;font-size:11px;font-weight:600;flex-shrink:0}._copyFixBtn_12gq5_425:hover{opacity:.9}._emptySuggestions_12gq5_439{text-align:center;padding:24px;color:var(--text-muted);font-size:13px}._sampleBanner_12gq5_447{display:flex;flex-direction:column;gap:12px;padding:18px 20px;border:1px solid var(--pro-border);border-radius:var(--radius);background:linear-gradient(135deg,#f0bd5829,#f0bd5808 55%),var(--bg-card);margin-bottom:16px}._sampleBannerRow_12gq5_460{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}._sampleBannerMain_12gq5_468{display:flex;flex-direction:column;gap:8px;min-width:0;flex:1}._sampleBadge_12gq5_476{width:fit-content;color:var(--pro-text);font-family:var(--font-label);font-size:11px;font-weight:600;letter-spacing:.02em;opacity:.92}._sampleTitle_12gq5_486{font-family:var(--font-label);font-size:16px;font-weight:600;color:var(--text-primary)}._sampleMessage_12gq5_493{max-width:560px;color:var(--text-secondary);font-size:13px;line-height:1.5}._sampleActions_12gq5_500{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}._primaryAction_12gq5_508,._secondaryAction_12gq5_509{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:0 14px;border-radius:8px;font-family:var(--font-label);font-size:12px;text-decoration:none;transition:background var(--transition),border-color var(--transition),opacity var(--transition)}._secondaryAction_12gq5_509{border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);cursor:pointer}._secondaryAction_12gq5_509:hover{border-color:var(--accent);background:var(--accent-dim)}._primaryAction_12gq5_508{border:1px solid var(--pro-badge);background:var(--pro-badge);color:var(--pro-text-on-badge)}._primaryAction_12gq5_508:hover{opacity:.9}._emptyState_12gq5_544{text-align:center;padding:48px 20px;color:var(--text-muted);font-size:14px}._pluginGuideCard_12gq5_552{display:flex;align-items:flex-start;gap:14px;padding:18px 20px;border:1px solid var(--warning);border-radius:var(--radius);background:var(--bg-card);color:var(--text-primary)}._pluginGuideMarker_12gq5_563{display:flex;align-items:center;justify-content:center;width:28px;height:28px;flex:0 0 28px;border-radius:50%;border:1px solid var(--warning);color:var(--warning);font-family:var(--font-label);font-size:15px;font-weight:700}._pluginGuideBody_12gq5_578{min-width:0}._pluginGuideTitle_12gq5_582{margin:0 0 8px;color:var(--text-primary);font-family:var(--font-label);font-size:15px;font-weight:600}._pluginGuideMessage_12gq5_590{margin:0 0 12px;color:var(--text-secondary);font-size:13px;line-height:1.5}._pluginGuideChecklist_12gq5_597{display:flex;flex-direction:column;gap:7px;margin:0 0 14px;padding:0;list-style:none}._pluginGuideChecklist_12gq5_597 li{position:relative;padding-left:20px;color:var(--text-secondary);font-size:13px}._pluginGuideChecklist_12gq5_597 li:before{content:"○";position:absolute;left:2px;color:var(--text-muted)}._pluginGuideWaiting_12gq5_620{display:inline-flex;align-items:center;gap:8px;color:var(--text-muted);font-family:var(--font-label);font-size:12px}._pluginGuideDot_12gq5_629{width:7px;height:7px;border-radius:50%;background:var(--warning)}._analysisWorkspace_12gq5_637{width:100%;position:relative}._analysisMainColumn_12gq5_642{min-width:0}._analysisSummaryPanel_12gq5_647{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-top:16px;padding:16px 18px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card)}._analysisSummaryPanel_12gq5_647 h2,._recentCapturesHeader_12gq5_660 h2{margin:0;font-size:16px;font-family:var(--font-label);color:var(--text-primary)}._analysisSummaryText_12gq5_667,._recentCapturesMeta_12gq5_668{margin:6px 0 0;color:var(--text-secondary);font-size:13px}._analysisReportGrid_12gq5_674{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;margin-top:14px}._analysisReportGroup_12gq5_681{min-width:0}._analysisReportCard_12gq5_685{display:grid;grid-template-columns:112px minmax(0,1fr);gap:12px;width:100%;min-height:128px;padding:12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);color:var(--text-primary);cursor:pointer;text-align:left;font:inherit;transition:border-color var(--transition),background var(--transition)}._analysisReportCard_12gq5_685:hover{border-color:var(--accent);background:var(--bg-secondary)}._analysisReportThumb_12gq5_707{width:112px;aspect-ratio:16 / 10;object-fit:contain;object-position:center;border-radius:6px;background:var(--bg-secondary)}._analysisReportBody_12gq5_716{min-width:0;display:flex;flex-direction:column;gap:7px}._analysisReportTopline_12gq5_723{display:flex;align-items:center;gap:8px;flex-wrap:wrap}._analysisVerdict_12gq5_730{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:999px;font-family:var(--font-label);font-size:12px;font-weight:600}._analysisVerdict_needsFix_12gq5_741,._analysisVerdict_review_12gq5_742{color:var(--accent);background:var(--accent-dim)}._analysisVerdict_incomplete_12gq5_747{color:var(--warning-text);background:var(--warning-bg)}._analysisVerdict_passed_12gq5_752{color:var(--text-secondary);background:var(--bg-secondary)}._analysisReportCounts_12gq5_757{color:var(--text-secondary);font-size:12px}._readinessSummary_12gq5_762{display:flex;flex-wrap:wrap;gap:5px}._readinessChip_12gq5_768{display:inline-flex;align-items:center;min-height:22px;padding:2px 7px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-secondary);color:var(--text-secondary);font-family:var(--font-label);font-size:11px;font-weight:600;line-height:1.3}._readinessChipReady_12gq5_783{border-color:var(--success-border);background:var(--success-bg);color:var(--success-text)}._readinessChipPending_12gq5_789{border-color:var(--warning-border);background:var(--warning-bg);color:var(--warning-text)}._primaryReadinessBlock_12gq5_795{display:flex;flex-direction:column;gap:8px;width:100%}._criticSummary_12gq5_802{display:flex;flex-direction:column;gap:3px;margin:0;padding:8px 10px;border-left:2px solid var(--accent);background:var(--accent-dim);color:var(--text-secondary);font-size:12px;line-height:1.45}._criticSummary_12gq5_802>span{color:var(--text-primary);font-size:11px;font-weight:600}._analysisReportTarget_12gq5_821{overflow:hidden;color:var(--text-primary);font-size:13px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}._analysisReportIssue_12gq5_830{color:var(--text-secondary);font-size:12px;line-height:1.35}._analysisReportCoverage_12gq5_836{color:var(--text-muted);font-size:12px;line-height:1.4}._coverageChips_12gq5_842{display:flex;flex-wrap:wrap;gap:5px}._coverageChip_12gq5_842{display:inline-flex;align-items:center;min-height:20px;padding:1px 6px;border:1px solid var(--border);border-radius:5px;background:var(--bg-card);color:var(--text-muted);font-family:var(--font-label);font-size:11px;font-weight:500;cursor:default}._coverageChip_completed_12gq5_863{border-color:var(--success-border);color:var(--success-text)}._coverageChip_failed_12gq5_868{border-color:var(--error-border);color:var(--error-text)}._coverageChip_skipped_12gq5_873,._coverageChip_not_requested_12gq5_874{border-color:var(--warning-border);color:var(--warning-text)}._analysisReportMeta_12gq5_879{margin-top:auto;color:var(--text-muted);font-size:11px;line-height:1.35}._analysisChildList_12gq5_886{display:flex;flex-direction:column;gap:6px;margin-top:8px;padding:8px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-secondary)}._analysisChildRow_12gq5_897{display:grid;grid-template-columns:minmax(0,1fr);gap:4px;width:100%;padding:8px 10px;border:1px solid transparent;border-radius:6px;background:var(--bg-card);color:var(--text-primary);cursor:pointer;text-align:left;font:inherit;transition:border-color var(--transition),background var(--transition)}._analysisChildRow_12gq5_897:hover{border-color:var(--accent);background:var(--accent-dim)}._analysisChildPath_12gq5_918{overflow:hidden;color:var(--text-primary);font-family:var(--font-code);font-size:11px;text-overflow:ellipsis;white-space:nowrap}._analysisChildSummary_12gq5_927,._analysisChildDetailHint_12gq5_928{color:var(--text-secondary);font-size:11px}._analysisChildDetailHint_12gq5_928{color:var(--text-muted)}._drawerAnalysisSummary_12gq5_937{display:flex;flex-direction:column;gap:10px;margin-top:14px;padding:12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-secondary)}._drawerAnalysisSummaryItem_12gq5_948{display:flex;align-items:center;gap:8px;flex-wrap:wrap}._drawerAnalysisLabel_12gq5_955{min-width:64px;color:var(--text-muted);font-size:12px}._drawerAnalysisCounts_12gq5_961,._drawerAnalysisValue_12gq5_962{color:var(--text-secondary);font-size:12px}._recentCapturesSection_12gq5_967{margin-top:28px}._recentCapturesHeader_12gq5_660{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}._drawerPrimaryActions_12gq5_979{display:flex;align-items:center;gap:8px;min-width:0}._drawerActionBtn_12gq5_986{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:34px;padding:7px 14px;border-radius:7px;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);font-family:var(--font-label);font-size:12px;line-height:1;white-space:nowrap;cursor:pointer;transition:border-color var(--transition),background var(--transition),color var(--transition)}._drawerActionBtn_12gq5_986:hover:not(:disabled){border-color:var(--accent);background:var(--accent-dim)}._drawerActionBtn_12gq5_986:disabled{opacity:.45;cursor:not-allowed}._drawerMoreMenu_12gq5_1015{position:relative;flex:0 0 auto}._drawerMoreButton_12gq5_1020{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:7px;border:1px solid var(--border);background:transparent;color:var(--text-secondary);cursor:pointer;list-style:none;transition:border-color var(--transition),background var(--transition),color var(--transition)}._drawerMoreButton_12gq5_1020:hover{border-color:var(--accent);background:var(--accent-dim);color:var(--text-primary)}._drawerMoreButton_12gq5_1020::-webkit-details-marker{display:none}._drawerMoreMenuBody_12gq5_1045{position:absolute;top:calc(100% + 6px);right:0;z-index:2;min-width:180px;padding:6px;border:1px solid var(--border);border-radius:8px;background:var(--bg-card);box-shadow:0 8px 24px #0000002e}._drawerMenuItem_12gq5_1058{display:block;width:100%;padding:8px 10px;border:0;border-radius:5px;background:transparent;color:var(--text-primary);text-align:left;font-family:var(--font-label);font-size:12px;cursor:pointer}._drawerMenuItem_12gq5_1058:hover:not(:disabled){background:var(--bg-secondary)}._drawerMenuItem_12gq5_1058:disabled{opacity:.45;cursor:not-allowed}._drawerMenuItemDanger_12gq5_1081{color:var(--danger-text)}._drawerMenuItemDanger_12gq5_1081:hover:not(:disabled){background:var(--danger-hover-bg)}._actionErrMsg_12gq5_1090{font-size:12px;color:var(--error-text);padding:6px 10px;background:#e0555514;border-radius:4px;margin-top:10px}._actionStatusMsg_12gq5_1099{display:inline-flex;flex-direction:column;align-items:flex-start;max-width:100%;font-size:12px;padding:7px 10px;border:1px solid transparent;border-radius:7px;margin-top:0;margin-bottom:10px;line-height:1.45}._actionStatus_info_12gq5_1113{color:var(--text-secondary);background:var(--bg-secondary);border-color:var(--border)}._actionStatus_success_12gq5_1119{color:var(--success-text);background:var(--success-bg);border-color:var(--success-border)}._actionStatus_warning_12gq5_1125{color:var(--warning-text);background:var(--warning-bg);border-color:var(--warning-border)}._actionStatusDetail_12gq5_1131{margin-top:2px;color:var(--text-muted)}._galleryHeader_12gq5_1137{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}._galleryHeader_12gq5_1137 h2{margin:0;color:var(--text-primary);font-size:var(--type-surface-title-size);font-weight:600;line-height:var(--leading-title)}._cardChecked_12gq5_1154{border-color:var(--accent)!important;box-shadow:0 0 0 2px var(--accent);background:var(--accent-dim)}._cardCheckbox_12gq5_1161{position:absolute;top:8px;left:8px;opacity:0;z-index:2;transition:opacity var(--transition),background var(--transition),border-color var(--transition)}._card_12gq5_16:hover ._cardCheckbox_12gq5_1161,._card_12gq5_16:focus-within ._cardCheckbox_12gq5_1161,._cardChecked_12gq5_1154 ._cardCheckbox_12gq5_1161{opacity:1}._captureSelectionActions_12gq5_1176{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}._selectionToolbar_12gq5_1185,._selectionBar_12gq5_1186{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 0 12px;padding:12px 16px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius)}._selectionToolbar_12gq5_1185{position:sticky;top:0;z-index:8;justify-content:space-between}._selectionToolbarCount_12gq5_1205{color:var(--text-primary);font-family:var(--font-label);font-size:12px;font-weight:600}._selectionToolbarActions_12gq5_1212{display:flex;align-items:center;gap:8px;flex-wrap:wrap}._selectionBarBtn_12gq5_1219{padding:6px 14px;border-radius:var(--radius-control);border:1px solid var(--border);background:var(--bg-card);color:var(--text-primary);font-family:var(--font-label);font-size:12px;cursor:pointer;transition:border-color var(--transition),opacity var(--transition)}._selectionBarBtn_12gq5_1219:hover:not(:disabled){border-color:var(--accent)}._selectionBarBtn_12gq5_1219:focus-visible{outline:none;box-shadow:var(--focus-ring)}._selectionBarBtn_12gq5_1219:disabled{opacity:.45;cursor:not-allowed}._selectionBarBtnDanger_12gq5_1245{border-color:var(--danger-border);background:var(--danger-bg);color:var(--danger-text)}._selectionBarBtnDanger_12gq5_1245:hover:not(:disabled){border-color:var(--danger);background:var(--danger-hover-bg)}@media(max-width:768px){._drawer_12gq5_127{padding:0}._drawerToolbar_12gq5_144{grid-template-columns:minmax(0,1fr);align-items:stretch;gap:10px;padding:12px}._drawerToolbarActions_12gq5_181{justify-content:flex-start;overflow-x:auto;padding-bottom:2px}._drawerActionBtn_12gq5_986{padding:7px 10px}._detailBody_12gq5_210{padding:14px}}._panel_1f5jr_1{margin-bottom:16px;border-bottom:1px solid var(--border);padding-bottom:12px;color:var(--text-primary)}._panel_1f5jr_1>summary{cursor:pointer;width:fit-content;min-height:34px;line-height:34px;font-size:var(--type-control-size);font-weight:600}._panel_1f5jr_1 summary:focus-visible,._panel_1f5jr_1 button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}._list_1f5jr_4{margin:8px 0 0;padding:0;list-style:none}._row_1f5jr_5{border-top:1px solid var(--border);padding:10px 0}._row_1f5jr_5>summary{cursor:pointer;overflow-wrap:anywhere}._description_1f5jr_7{color:var(--text-secondary);margin:8px 0;font-size:var(--type-body-size)}._error_1f5jr_8{color:var(--error-text)}._actions_1f5jr_9{display:flex;gap:8px;margin-top:10px;align-items:center}._button_1f5jr_10{min-height:34px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-secondary);color:var(--text-primary);padding:6px 12px;cursor:pointer}._danger_1f5jr_11{color:var(--danger-text, var(--error-text))}._reference_1f5jr_13{display:block;width:200px;max-width:100%;height:120px;object-fit:contain;object-position:left center;margin:8px 0}._emptyState_13gyl_1{display:flex;flex-direction:column;gap:var(--space-section);padding:20px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card)}._header_13gyl_11,._method_13gyl_12{display:flex;flex-direction:column;gap:var(--space-related)}._header_13gyl_11 h3,._header_13gyl_11 p,._method_13gyl_12 h4{margin:0}._header_13gyl_11 h3{color:var(--text-primary);font-family:var(--font-label);font-size:var(--type-section-title-size);font-weight:600}._header_13gyl_11 p{color:var(--text-secondary);font-size:var(--type-body-size);line-height:var(--leading-body)}._method_13gyl_12{padding:14px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-secondary)}._methodTitle_13gyl_44{display:flex;align-items:center;gap:var(--space-related);color:var(--text-primary)}._methodTitle_13gyl_44 h4{font-family:var(--font-label);font-size:var(--type-card-title-size);font-weight:600}._moreExamples_13gyl_57{color:var(--text-secondary);font-size:var(--type-body-size)}._moreExamples_13gyl_57 summary{width:fit-content;min-height:34px;color:var(--accent-hover);font-weight:600;line-height:34px;cursor:pointer}._moreExamples_13gyl_57[open] summary{margin-bottom:var(--space-related)}._moreExamples_13gyl_57 summary:focus-visible{outline:none;box-shadow:var(--focus-ring)}._filterBar_1203k_4{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:12px 0;margin-bottom:8px;border-bottom:1px solid var(--border)}._filterGroup_1203k_14{display:flex;align-items:center;gap:8px;flex-wrap:wrap}._filterLabel_1203k_21{font-size:12px;color:var(--text-muted);font-weight:500;white-space:nowrap}._filterCheckbox_1203k_28{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none}._filterCheckbox_1203k_28 input[type=checkbox]{width:14px;height:14px;cursor:pointer;accent-color:var(--accent)}._segmentGroup_1203k_45{display:inline-flex;align-items:center;gap:2px;padding:2px;border:1px solid var(--border);border-radius:7px;background:var(--bg-secondary)}._segmentBtn_1203k_55{min-height:26px;padding:0 10px;border:0;border-radius:5px;background:transparent;color:var(--text-secondary);font-family:var(--font-label);font-size:12px;cursor:pointer;white-space:nowrap;transition:background var(--transition),color var(--transition)}._segmentBtn_1203k_55:hover{color:var(--text-primary)}._segmentBtnActive_1203k_73{background:var(--bg-card);color:var(--text-primary);box-shadow:0 0 0 1px var(--border)}._filterInput_1203k_79{font-size:12px;padding:4px 8px;border:1px solid var(--border);border-radius:4px;background:var(--bg-secondary);color:var(--text-primary);font-family:inherit;width:130px}._filterInput_1203k_79:focus{outline:none;border-color:var(--accent)}._filterResetBtn_1203k_95{min-height:30px;padding:0 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg-card);color:var(--text-secondary);font-family:var(--font-label);font-size:12px;cursor:pointer;transition:border-color var(--transition),color var(--transition)}._filterResetBtn_1203k_95:hover{border-color:var(--accent);color:var(--text-primary)}._requestRow_1203k_114{border:1px solid var(--border);border-radius:var(--radius);margin-bottom:8px;background:var(--bg-card);overflow:hidden;transition:border-color var(--transition)}._requestRow_1203k_114:hover{border-color:var(--accent)}._requestRowMain_1203k_127{display:flex;align-items:flex-start;gap:12px;padding:12px 14px}._requestDetailToggle_1203k_134{flex:1;min-width:0;display:flex;align-items:flex-start;gap:12px;padding:0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}._requestDetailToggle_1203k_134:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}._thumbPair_1203k_156{display:flex;align-items:center;gap:4px;flex-shrink:0;position:relative}._thumbPairButton_1203k_164{padding:0;border:0;background:transparent;color:inherit;cursor:pointer;font:inherit;border-radius:6px}._thumbPairButton_1203k_164:focus-visible{outline:2px solid var(--accent);outline-offset:3px}._thumbPairButton_1203k_164:hover ._thumbSlot_1203k_179{border-color:var(--accent)}._thumbPairButton_1203k_164:disabled{cursor:not-allowed;opacity:.72}._thumbPairButton_1203k_164:disabled:hover ._thumbSlot_1203k_179{border-color:var(--border)}._thumbSlot_1203k_179{width:72px;height:48px;border:1px solid var(--border);border-radius:4px;overflow:hidden;background:var(--bg-secondary);display:flex;align-items:center;justify-content:center}._thumbImg_1203k_204{width:100%;height:100%;object-fit:cover;display:block}._thumbPlaceholder_1203k_211{font-size:10px;color:var(--text-muted);text-align:center;padding:4px;line-height:1.3}._thumbArrow_1203k_219{font-size:12px;color:var(--text-muted);flex-shrink:0}._extraPathsBadge_1203k_225{position:absolute;bottom:0;right:0;background:var(--accent);color:#fff;font-size:10px;font-weight:700;padding:1px 4px;border-radius:3px;line-height:1.4}._requestMeta_1203k_239{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}._requestLabel_1203k_247{font-size:13px;font-weight:500;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._requestTime_1203k_256{font-size:11px;color:var(--text-muted)}._requestStats_1203k_261{font-size:12px;color:var(--text-secondary);display:flex;gap:4px;flex-wrap:wrap}._statDot_1203k_269{color:var(--text-muted)}._summaryPill_1203k_273{color:var(--text-secondary)}._requestReadiness_1203k_277{display:flex;flex-wrap:wrap;gap:5px}._requestReadinessPill_1203k_283{display:inline-flex;align-items:center;min-height:20px;padding:1px 6px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-secondary);color:var(--text-secondary);font-size:11px;font-weight:600;line-height:1.35}._requestReadinessReady_1203k_297{border-color:var(--success-border);background:var(--success-bg);color:var(--success-text)}._requestReadinessPending_1203k_303{border-color:var(--warning-border);background:var(--warning-bg);color:var(--warning-text)}._requestActions_1203k_310{display:flex;flex-direction:column;gap:6px;flex-shrink:0}._expandHint_1203k_317{padding:5px 10px;border-radius:5px;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-secondary);font-family:var(--font-label);font-size:11px;white-space:nowrap;-webkit-user-select:none;user-select:none}._mutationsArea_1203k_330{border-top:1px solid var(--border);background:var(--bg-secondary);padding:8px 14px;display:flex;flex-direction:column;gap:4px}._mutLoading_1203k_339,._mutEmpty_1203k_340{font-size:12px;color:var(--text-muted);padding:4px 0}._mutError_1203k_346{font-size:12px;color:var(--error-text);padding:4px 0}._mutationRow_1203k_352{font-size:12px;padding:6px 0;border-bottom:1px solid var(--border)}._mutationRow_1203k_352:last-child{border-bottom:none}._mutationLine_1203k_362{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}._mutTs_1203k_369{color:var(--text-muted);flex-shrink:0;font-size:11px}._mutCommand_1203k_375{color:var(--accent);font-weight:500;flex-shrink:0}._mutPath_1203k_381{font-family:monospace;font-size:11px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:260px}._mutDiff_1203k_391{color:var(--text-muted);font-size:11px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._mutErr_1203k_346{color:var(--error-text);font-size:11px}._changeDetails_1203k_406{display:flex;flex-direction:column;gap:4px;margin-top:6px;padding-left:88px}._changeDetailRow_1203k_414{display:grid;grid-template-columns:72px minmax(96px,180px) minmax(0,1fr) 14px minmax(0,1fr);align-items:start;gap:8px;min-height:24px;font-size:11px}._changeDetailRowNoBefore_1203k_423{grid-template-columns:72px minmax(96px,180px) 14px minmax(0,1fr)}._changeDetailBadge_1203k_427{justify-self:start;padding:2px 6px;border-radius:4px;border:1px solid var(--border);background:var(--bg-card);color:var(--text-secondary);font-weight:600;line-height:1.4;white-space:nowrap}._changeDetail_text_1203k_444{color:#2563eb;border-color:#2563eb47}._changeDetail_color_1203k_449{color:#b45309;border-color:#b4530947}._changeDetail_size_1203k_454{color:#047857;border-color:#04785747}._changeDetail_layout_1203k_459{color:#7c3aed;border-color:#7c3aed47}._changeDetail_state_1203k_464{color:#be123c;border-color:#be123c47}._changeDetail_asset_1203k_469{color:#0369a1;border-color:#0369a147}._changeDetail_property_1203k_474{color:var(--text-secondary)}._changeDetailProperty_1203k_478{font-family:var(--font-code);color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._changeDetailArrow_1203k_486{color:var(--text-muted);text-align:center;line-height:1.6}._changeDetailOldValue_1203k_492,._changeDetailNewValue_1203k_493{font-family:var(--font-code);overflow-wrap:anywhere;word-break:break-word;line-height:1.6}._changeDetailOldValue_1203k_492{color:var(--error-text);text-decoration:line-through;text-decoration-thickness:1px}._changeDetailNewValue_1203k_493{color:var(--success-text)}._compareDialogLayer_1203k_511{position:fixed;top:calc(var(--header-height) + 16px);right:24px;bottom:24px;left:calc(var(--sidebar-width) + 24px);z-index:900;display:flex;align-items:stretch;justify-content:center;padding:clamp(12px,2vw,24px);background:#03071294;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-sizing:border-box;overflow:auto}._compareDialog_1203k_511{width:100%;height:100%;min-height:0;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;box-shadow:0 24px 60px #0000006b;outline:none;overflow:hidden}._beforeAfterDrawer_1203k_542{width:100%;height:100%;min-height:0;background:var(--bg-card);display:flex;flex-direction:column;overflow:hidden}._drawerHeader_1203k_552{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border);flex-shrink:0}._drawerTitle_1203k_561{margin:0;font-size:var(--type-section-title-size);font-weight:600;line-height:var(--leading-title);color:var(--text-primary)}._drawerCloseBtn_1203k_569{padding:5px 12px;border-radius:5px;border:1px solid var(--border);background:transparent;color:var(--text-secondary);font-size:12px;cursor:pointer;transition:border-color var(--transition)}._drawerCloseBtn_1203k_569:hover{border-color:var(--accent);color:var(--text-primary)}._drawerBody_1203k_585{padding:20px;color:var(--text-muted);font-size:13px}._pathTabs_1203k_592{display:flex;gap:2px;border-bottom:1px solid var(--border);padding:0 20px;flex-shrink:0;overflow-x:auto}._pathTab_1203k_592{font-family:var(--font-label);font-size:12px;padding:8px 14px;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-secondary);cursor:pointer;white-space:nowrap;max-width:160px;overflow:hidden;text-overflow:ellipsis;transition:color var(--transition),border-color var(--transition)}._pathTab_1203k_592:hover{color:var(--text-primary)}._pathTabActive_1203k_621{color:var(--accent);border-bottom-color:var(--accent)}._comparePanel_1203k_627{display:grid;grid-template-columns:1fr 1fr;gap:1px;flex:1;min-height:0;background:var(--border);overflow:auto}._compareHalf_1203k_637{background:var(--bg-card);display:flex;flex-direction:column;min-height:0}._compareLabel_1203k_644{font-size:11px;font-weight:600;color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;padding:8px 12px;border-bottom:1px solid var(--border);flex-shrink:0}._compareImg_1203k_655{width:100%;flex:1;object-fit:contain;background:var(--bg-secondary);display:block}._comparePlaceholder_1203k_663{flex:1;display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--text-muted);background:var(--bg-secondary);padding:24px;text-align:center}._compareDetailsPanel_1203k_675{flex-shrink:0;max-height:min(34%,260px);overflow:auto;padding:12px 20px 14px;border-top:1px solid var(--border);background:var(--bg-secondary)}._compareDetailsHeader_1203k_684{margin-bottom:8px;color:var(--text-primary);font-family:var(--font-label);font-size:12px;font-weight:600}._compareDetailsPanel_1203k_675 ._changeDetails_1203k_406{padding-left:0}._compareDetailsPanel_1203k_675 ._mutPath_1203k_381,._compareDetailsPanel_1203k_675 ._mutDiff_1203k_391{max-width:none}._drawerFooter_1203k_702{display:flex;justify-content:flex-end;padding:12px 20px;border-top:1px solid var(--border);flex-shrink:0}._drawerActionBtn_1203k_710{padding:7px 16px;border-radius:6px;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);font-family:var(--font-label);font-size:12px;cursor:pointer;transition:border-color var(--transition),background var(--transition)}._drawerActionBtn_1203k_710:hover{border-color:var(--accent);background:var(--accent-dim)}._historyTabWrap_1203k_728{display:flex;flex-direction:column;gap:0}._historyWorkspace_1203k_734{width:100%;position:relative}._historyMainColumn_1203k_739{min-width:0}._requestList_1203k_743{display:flex;flex-direction:column}._emptyHistory_1203k_748{display:flex;flex-direction:column;gap:var(--space-related);text-align:center;padding:48px 20px;color:var(--text-muted);font-size:14px}._historyError_1203k_758{padding:16px 0;color:var(--error-text);font-size:13px}._historyLoading_1203k_764{padding:48px 20px;text-align:center;color:var(--text-muted);font-size:13px}._listHeader_1203k_772{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px}._listHeaderTitle_1203k_781{font-size:14px;font-weight:600;color:var(--text-primary);margin:0}._clearBtn_1203k_788{padding:6px 12px;border:1px solid var(--danger-border);border-radius:var(--radius-control);background:var(--danger-bg);color:var(--danger-text);font-family:var(--font-label);font-size:12px;font-weight:500;cursor:pointer;transition:background var(--transition),border-color var(--transition)}._clearBtn_1203k_788:hover{background:var(--danger-hover-bg);border-color:var(--danger)}._clearBtn_1203k_788:focus-visible{outline:none;box-shadow:var(--focus-ring)}._deleteErrBanner_1203k_812{padding:8px 12px;margin-bottom:8px;border-radius:var(--radius);background:var(--error-bg, rgba(224, 85, 85, .12));border:1px solid var(--error-border, rgba(224, 85, 85, .4));color:var(--error-text);font-size:13px}@media(max-width:1120px){._compareDialogLayer_1203k_511{left:calc(var(--sidebar-width) + 16px);right:16px;bottom:16px;padding:12px}}@media(max-width:768px){._compareDialogLayer_1203k_511{top:calc(var(--header-height) + 10px);right:10px;bottom:10px;left:calc(var(--sidebar-collapsed) + 10px);padding:8px}}
|