pulls.review 0.3.0 → 0.3.1
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/README.md +1 -1
- package/dist/client/assets/{DisplayFileIcon-DIcJdZir.js → DisplayFileIcon-DWj5Zxib.js} +1 -1
- package/dist/client/assets/{LandingHero-CS9lP7Qs.js → LandingHero-DWdx6_8g.js} +1 -1
- package/dist/client/assets/LocalAgentSettings-COjAszEL.js +1 -0
- package/dist/client/assets/{_repo_-DtGh1V5_.js → _repo_-D3lApLQL.js} +1 -1
- package/dist/client/assets/{analyze-CTcNbJBk.js → analyze-BgWIIbl3.js} +1 -1
- package/dist/client/assets/{core-messages-CsAgH4H9.js → core-messages-ClW97ZVa.js} +1 -1
- package/dist/client/assets/{de-DQCc3irO.js → de-BoIOg_UW.js} +1 -1
- package/dist/client/assets/{diagnostics-CrG4-M7r.js → diagnostics-wATZy2jc.js} +1 -1
- package/dist/client/assets/{diff-BsZcYqbE.js → diff-CNRGXNmw.js} +1 -1
- package/dist/client/assets/{diff-Bq6jHPox.js → diff-Cx43r-a6.js} +1 -1
- package/dist/client/assets/{diffs-store-CzecLzBW.js → diffs-store-D3BzIMVi.js} +26 -26
- package/dist/client/assets/{en-CBwAorrh.js → en-CbWYrCM5.js} +1 -1
- package/dist/client/assets/{es-hetdr90_.js → es-CqEudTln.js} +1 -1
- package/dist/client/assets/{fr-Cayf6fbk.js → fr-qiQQ-4AO.js} +1 -1
- package/dist/client/assets/i18n-Cx8anq4V.js +2 -0
- package/dist/client/assets/{id-lw2zLhUO.js → id-BkDzu8gq.js} +1 -1
- package/dist/client/assets/index-De-UtOit.css +1 -0
- package/dist/client/assets/{index-DP4XBqUv.js → index-KDAJXf4E.js} +2 -2
- package/dist/client/assets/{install-DKy8VRs5.js → install-D-S32JY7.js} +3 -3
- package/dist/client/assets/{it-BfFzmCsC.js → it-tZZZbUKN.js} +1 -1
- package/dist/client/assets/{ja-DxaV4C1r.js → ja-kGPK4Fmt.js} +1 -1
- package/dist/client/assets/{ko-D93r2P2k.js → ko-CULiae40.js} +1 -1
- package/dist/client/assets/{llm-XBWohzAo.js → llm-Le5CPsNn.js} +5 -4
- package/dist/client/assets/{llm-store-7CdL0d74.js → llm-store-CzMnTJNa.js} +1 -1
- package/dist/client/assets/{pages-Tf2MYsp8.js → pages-ByEfDjFa.js} +1 -1
- package/dist/client/assets/{pages-local-iBHcLWBK.js → pages-local-CVPpEWZ_.js} +1 -1
- package/dist/client/assets/{pages-web-Bmq8l7JI.js → pages-web-BLxMupU5.js} +1 -1
- package/dist/client/assets/{pt-BR-Isafy_5V.js → pt-BR-BcwoZLSs.js} +1 -1
- package/dist/client/assets/{rpc-backends-CLzNPIWN.js → rpc-backends-DYtuJyeF.js} +1 -1
- package/dist/client/assets/{ru-Bx9Wj7Aa.js → ru-DOordgLF.js} +1 -1
- package/dist/client/assets/{source-Dk1PNoY7.js → source-CvnvCX42.js} +1 -1
- package/dist/client/assets/{upload-CFwsDMhO.js → upload-DRO7bkBV.js} +1 -1
- package/dist/client/assets/{useDocumentTitle-ByFCALbG.js → useDocumentTitle-BQJCa6Lm.js} +3 -3
- package/dist/client/assets/{zh-CN-CgGEKuLF.js → zh-CN-CmTqGY9s.js} +1 -1
- package/dist/client/assets/{zh-TW-DzNR26_1.js → zh-TW-DKGtbJQy.js} +1 -1
- package/dist/client/index.html +6 -6
- package/dist/{devframe-D66W-pHy.mjs → devframe-DH2vpasJ.mjs} +175 -53
- package/dist/devframe.mjs +1 -1
- package/dist/index.mjs +2 -2
- package/package.json +2 -2
- package/dist/client/assets/LocalAgentSettings-C4AeYCZ0.js +0 -1
- package/dist/client/assets/i18n-CgsK6PK3.js +0 -2
- package/dist/client/assets/index-DSHKSKKf.css +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./llm-
|
|
2
|
-
import{Bt as e,Dt as t,Gn as n,H as r,Hn as i,Ht as a,Jt as o,W as s,Wn as c,Xt as l,bt as u,er as d,ft as f,mn as p,qn as m,tt as h,yn as ee}from"./vue-i18n-CGHHpbTP.js";import{i as te}from"./runtime-dom.esm-bundler-Du_ZCcVN.js";import{n as ne,t as re}from"./diagnostics-CrG4-M7r.js";import{r as g,t as ie}from"./i18n-CgsK6PK3.js";import{S as _,T as v,b as y,d as ae,f as b,g as x,h as oe,i as se,o as ce,p as le,t as ue,u as S,v as C,w,y as T}from"./source-Dk1PNoY7.js";import{t as E}from"./preload-helper-BaNbYf_w.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function D(){let e=ne(g.value.llm);if(!e)throw re.llmNotConfigured();return e}async function de({diff:e,session:t,text:n,signal:r,onMessages:i,onGroupingUpdate:a}){let o=D(),{createChatSession:s}=await E(async()=>{let{createChatSession:e}=await import(`./llm-XBWohzAo.js`).then(e=>e.t);return{createChatSession:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]),import.meta.url);if(r.aborted)return t.messages;let c=s({diff:e,resolved:o,locale:g.value.locale,messages:t.messages,onGroupingUpdate:a}),l=()=>{let{streamingMessage:e}=c.state;i(e?[...c.state.messages,e]:[...c.state.messages])},u=c.subscribe(l),d=()=>c.abort();r.addEventListener(`abort`,d);try{l(),await(n===void 0?c.continue():c.prompt(n))}finally{u(),r.removeEventListener(`abort`,d)}return[...c.state.messages]}var O={isSetup:()=>ne(g.value.llm)!==void 0,async analyze(e,t){let n=D(),r=g.value.locale,{runLlmAnalysis:i}=await E(async()=>{let{runLlmAnalysis:e}=await import(`./llm-XBWohzAo.js`).then(e=>e.t);return{runLlmAnalysis:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]),import.meta.url);return i(e,n,r,t)},chat:de},fe=_([`added`,`removed`,`modified`,`renamed`,`copied`]),pe=T({header:v(),oldStart:C(),oldLines:C(),newStart:C(),newLines:C(),patch:v()}),k=T({path:v(),previousPath:y(v()),status:fe,additions:C(),deletions:C(),isBinary:le(),sha:v(),hunks:b(pe),truncated:y(oe(!0))}),A=_([`open`,`closed`,`merged`,`draft`]),j=T({state:y(A)}),M=T({sha:v(),message:v()}),me=T({sha:v(),ref:v()}),he=T({ref:ue,title:v(),label:y(v()),author:y(T({name:v(),avatarUrl:y(v())})),description:y(v()),url:y(v()),base:y(me),head:y(me),createdAt:y(v()),updatedAt:y(v()),pullRequest:y(j),commits:y(b(M)),files:b(k)}),ge=T({name:v(),color:v(),description:y(v())}),_e=_([`approved`,`changes_requested`,`review_required`]),ve=_([`success`,`failure`,`pending`]),ye=T({number:C(),title:v(),url:v(),state:_([`open`,`draft`]),author:y(S),labels:b(ge),assignees:b(S),milestone:y(v()),createdAt:v(),updatedAt:v(),comments:C(),reviewDecision:y(_e),checks:y(ve),linkedIssues:y(C()),additions:y(C()),deletions:y(C()),changedFiles:y(C())}),be=T({totalCount:C(),items:b(ye),next:y(v())}),xe=T({llm:y(ce),"web-llm":y(ce)}),Se=T({messages:b(x({role:v()})),chatStartIndex:C(),agent:y(se)}),Ce=T({key:v(),ref:ue,headSha:v(),title:v(),label:y(v()),url:y(v()),pullRequestState:y(A),additions:C(),deletions:C(),fileShas:b(v()),lastViewedAt:C(),sizeBytes:C(),sharedComment:y(T({id:C(),url:v()})),changedSinceReviewed:y(b(v()))}),we=T({diff:he,analyzedBy:xe,reviews:y(ae),llmSession:y(Se)}),Te=T({sha:v(),reviewedAt:C()}),Ee=T({owner:v(),repo:v(),page:be,lastViewedAt:C()}),N=`pr-meta:`,P=`pr-body:`,De=`pr:`;function Oe(e,t,n){return new TextEncoder().encode(JSON.stringify({diff:e,analyzedBy:t,llmSession:n})).length}function ke(e){let{diff:t,analyzedBy:n,reviews:r,llmSession:i,...a}=e;return{meta:{...a,ref:t.ref,title:t.title,label:t.label,url:t.url,pullRequestState:t.pullRequest?.state,additions:t.files.reduce((e,t)=>e+t.additions,0),deletions:t.files.reduce((e,t)=>e+t.deletions,0),fileShas:t.files.map(e=>e.sha)},body:{diff:t,analyzedBy:n,reviews:r,llmSession:i}}}function Ae(e,t){let{key:n,headSha:r,lastViewedAt:i,sizeBytes:a,sharedComment:o,changedSinceReviewed:s}=e;return{key:n,headSha:r,lastViewedAt:i,sizeBytes:a,sharedComment:o,changedSinceReviewed:s,...t}}function je(e,t,n={}){let r=n.maxBytes??52428800,i=n.maxEntries??50,a=new Map;function o(e,t){let n=(a.get(e)??Promise.resolve()).then(t,t),r=n.catch(()=>{});return a.set(e,r),r.then(()=>{a.get(e)===r&&a.delete(e)}),n}async function s(t){let n=w(Ce,await e.getItem(`${N}${t}`));return n.success?n.output:void 0}async function c(t){let n=w(we,await e.getItem(`${P}${t}`));return n.success?n.output:void 0}async function l(e){let[t,n]=await Promise.all([s(e),c(e)]);return t&&n?Ae(t,n):void 0}async function u(t){let{meta:n,body:r}=ke(t);await Promise.all([e.setItem(`${N}${t.key}`,n),e.setItem(`${P}${t.key}`,r)])}function d(t,n){return o(t,async()=>{let r=await s(t);r&&await e.setItem(`${N}${t}`,n(r))})}function f(t,n){return o(t,async()=>{let r=await c(t);r&&await e.setItem(`${P}${t}`,n(r))})}async function p(){let t=await e.getKeys(N),n=[];for(let{value:r}of await e.getItems(t)){let e=w(Ce,r);e.success&&n.push(e.output)}return n}async function m(){let n=await e.getKeys(De);await Promise.all(n.map(t=>e.removeItem(t)));let a=(await p()).sort((e,t)=>t.lastViewedAt-e.lastViewedAt),o=0,s=[],c=[];for(let[e,t]of a.entries())o+=t.sizeBytes,e<i&&o<=r?s.push(t):c.push(t);c.length!==0&&(await Promise.all(c.flatMap(t=>[e.removeItem(`${N}${t.key}`),e.removeItem(`${P}${t.key}`)])),await t.prune(new Set(s.flatMap(e=>e.fileShas))))}async function h(e,n){let r=new Map(e.diff.files.map(e=>[e.path,e.sha])),i=await t.get([...r.values()]),a=new Set(e.changedSinceReviewed);return n.files.filter(e=>{let t=r.get(e.path);return a.has(e.path)||t!==void 0&&t!==e.sha&&i.has(t)}).map(e=>e.path)}return{get:l,async put(e){await o(e.key,()=>u(e)),await m()},async putDiff(e,t,n){let r=await o(e,async()=>{let r=await l(e),i=r?.analyzedBy??{},a={...r,key:e,diff:t,headSha:n,analyzedBy:i,lastViewedAt:Date.now(),sizeBytes:Oe(t,i,r?.llmSession),changedSinceReviewed:r?await h(r,t):[]};return await u(a),a});return await m(),r},touch:e=>d(e,e=>({...e,lastViewedAt:Date.now()})),setChangedSinceReviewed:(e,t)=>d(e,e=>({...e,changedSinceReviewed:t})),setSharedComment:(e,t)=>d(e,e=>({...e,sharedComment:t})),setAnalyzedResult:(e,t,n)=>f(e,e=>({...e,analyzedBy:{...e.analyzedBy,[t]:n}})),setReviewData:(e,t)=>f(e,e=>({...e,reviews:t})),async setLlmSession(e,t){await o(e,async()=>{let n=await l(e);if(!n)return;let r=t;await u({...n,llmSession:r,sizeBytes:Oe(n.diff,n.analyzedBy,r)})}),await m()},async listRecent(e){return(await p()).sort((e,t)=>t.lastViewedAt-e.lastViewedAt).slice(0,e)},async listMatching(e){let t=(await p()).filter(e);return(await Promise.all(t.map(async e=>{let t=await c(e.key);return t&&Ae(e,t)}))).filter(e=>e!==void 0)}}}var Me=`file-content:`;function Ne(e,t,n){return`${Me}${e}:${t}:${n}`}function Pe(e){return{async get(t,n,r){let i=await e.getItem(Ne(t,n,r));return typeof i==`string`?i:void 0},async set(t,n,r,i){await e.setItem(Ne(t,n,r),i)}}}var Fe=`pulls:`;function Ie(e,t){return`${Fe}${e}/${t}`}function Le(e,t=30){async function n(t,n){let r=await e.getItem(Ie(t,n));if(r==null)return;let i=w(Ee,r);return i.success?i.output:void 0}async function r(t=1/0){let n=await e.getKeys(Fe),r=[];for(let{value:t}of await e.getItems(n)){let e=w(Ee,t);e.success&&r.push(e.output)}return r.sort((e,t)=>t.lastViewedAt-e.lastViewedAt).slice(0,t)}return{get:n,listRecent:r,async set(n,i,a){await e.setItem(Ie(n,i),{owner:n,repo:i,page:a,lastViewedAt:Date.now()});let o=(await r()).slice(t);await Promise.all(o.map(t=>e.removeItem(Ie(t.owner,t.repo))))},async touch(t,r){let i=await n(t,r);i&&await e.setItem(Ie(t,r),{...i,lastViewedAt:Date.now()})}}}var Re=`review:`;function ze(e){return`${Re}${e}`}function Be(e){return{async get(t){if(t.length===0)return new Set;let n=new Set;for(let{value:r}of await e.getItems(t.map(ze))){let e=w(Te,r);e.success&&n.add(e.output.sha)}return n},async set(t,n){let r=Date.now();await Promise.all(t.map(t=>n?e.setItem(ze(t),{sha:t,reviewedAt:r}):e.removeItem(ze(t))))},async prune(t){let n=(await e.getKeys(Re)).filter(e=>!t.has(e.slice(7)));await Promise.all(n.map(t=>e.removeItem(t)))}}}function Ve(e,t){let n=Be(e);return{diffs:je(e,n,t),reviewMarks:n,fileContents:Pe(e),pullRequestLists:Le(e)}}var He=/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,Ue=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,We=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/;function Ge(e,t){if(e===`__proto__`||e===`constructor`&&t&&typeof t==`object`&&`prototype`in t){Ke(e);return}return t}function Ke(e){console.warn(`[destr] Dropping "${e}" key to prevent prototype pollution.`)}function qe(e,t={}){if(typeof e!=`string`)return e;if(e[0]===`"`&&e[e.length-1]===`"`&&e.indexOf(`\\`)===-1)return e.slice(1,-1);let n=e.trim();if(n.length<=9)switch(n.toLowerCase()){case`true`:return!0;case`false`:return!1;case`undefined`:return;case`null`:return null;case`nan`:return NaN;case`infinity`:return 1/0;case`-infinity`:return-1/0}if(!We.test(e)){if(t.strict)throw SyntaxError(`[destr] Invalid JSON`);return e}try{if(He.test(e)||Ue.test(e)){if(t.strict)throw Error(`[destr] Possible prototype pollution`);return JSON.parse(e,Ge)}return JSON.parse(e)}catch(n){if(t.strict)throw n;return e}}function Je(e){return!e||typeof e.then!=`function`?Promise.resolve(e):e}function F(e,...t){try{return Je(e(...t))}catch(e){return Promise.reject(e)}}function Ye(e){let t=typeof e;return e===null||t!==`object`&&t!==`function`}function Xe(e){let t=Object.getPrototypeOf(e);return!t||t.isPrototypeOf(Object)}function Ze(e){if(Ye(e))return String(e);if(Xe(e)||Array.isArray(e))return JSON.stringify(e);if(typeof e.toJSON==`function`)return Ze(e.toJSON());throw Error(`[unstorage] Cannot stringify value!`)}var Qe=`base64:`;function $e(e){return typeof e==`string`?e:Qe+nt(e)}function et(e){return typeof e!=`string`||!e.startsWith(Qe)?e:tt(e.slice(7))}function tt(e){return globalThis.Buffer?Buffer.from(e,`base64`):Uint8Array.from(globalThis.atob(e),e=>e.codePointAt(0))}function nt(e){return globalThis.Buffer?Buffer.from(e).toString(`base64`):globalThis.btoa(String.fromCodePoint(...e))}function I(e){return e&&e.split(`?`)[0]?.replace(/[/\\]/g,`:`).replace(/:+/g,`:`).replace(/^:|:$/g,``)||``}function rt(...e){return I(e.join(`:`))}function it(e){return e=I(e),e?e+`:`:``}function at(e,t){if(t===void 0)return!0;let n=0,r=e.indexOf(`:`);for(;r>-1;)n++,r=e.indexOf(`:`,r+1);return n<=t}function ot(e,t){return t?e.startsWith(t)&&e[e.length-1]!==`$`:e[e.length-1]!==`$`}function st(e){return e}var ct=`memory`,lt=st(()=>{let e=new Map;return{name:ct,getInstance:()=>e,hasItem(t){return e.has(t)},getItem(t){return e.get(t)??null},getItemRaw(t){return e.get(t)??null},setItem(t,n){e.set(t,n)},setItemRaw(t,n){e.set(t,n)},removeItem(t){e.delete(t)},getKeys(){return[...e.keys()]},clear(){e.clear()},dispose(){e.clear()}}});function ut(e={}){let t={mounts:{"":e.driver||lt()},mountpoints:[``],watching:!1,watchListeners:[],unwatch:{}},n=e=>{for(let n of t.mountpoints)if(e.startsWith(n))return{base:n,relativeKey:e.slice(n.length),driver:t.mounts[n]};return{base:``,relativeKey:e,driver:t.mounts[``]}},r=(e,n)=>t.mountpoints.filter(t=>t.startsWith(e)||n&&e.startsWith(t)).map(n=>({relativeBase:e.length>n.length?e.slice(n.length):void 0,mountpoint:n,driver:t.mounts[n]})),i=(e,n)=>{if(t.watching){n=I(n);for(let r of t.watchListeners)r(e,n)}},a=async()=>{if(!t.watching){t.watching=!0;for(let e in t.mounts)t.unwatch[e]=await dt(t.mounts[e],i,e)}},o=async()=>{if(t.watching){for(let e in t.unwatch)await t.unwatch[e]();t.unwatch={},t.watching=!1}},s=(e,t,r)=>{let i=new Map,a=e=>{let t=i.get(e.base);return t||(t={driver:e.driver,base:e.base,items:[]},i.set(e.base,t)),t};for(let r of e){let e=typeof r==`string`,i=I(e?r:r.key),o=e?void 0:r.value,s=e||!r.options?t:{...t,...r.options},c=n(i);a(c).items.push({key:i,value:o,relativeKey:c.relativeKey,options:s})}return Promise.all([...i.values()].map(e=>r(e))).then(e=>e.flat())},c={hasItem(e,t={}){e=I(e);let{relativeKey:r,driver:i}=n(e);return F(i.hasItem,r,t)},getItem(e,t={}){e=I(e);let{relativeKey:r,driver:i}=n(e);return F(i.getItem,r,t).then(e=>qe(e))},getItems(e,t={}){return s(e,t,e=>e.driver.getItems?F(e.driver.getItems,e.items.map(e=>({key:e.relativeKey,options:e.options})),t).then(t=>t.map(t=>({key:rt(e.base,t.key),value:qe(t.value)}))):Promise.all(e.items.map(t=>F(e.driver.getItem,t.relativeKey,t.options).then(e=>({key:t.key,value:qe(e)})))))},getItemRaw(e,t={}){e=I(e);let{relativeKey:r,driver:i}=n(e);return i.getItemRaw?F(i.getItemRaw,r,t):F(i.getItem,r,t).then(e=>et(e))},async setItem(e,t,r={}){if(t===void 0)return c.removeItem(e);e=I(e);let{relativeKey:a,driver:o}=n(e);o.setItem&&(await F(o.setItem,a,Ze(t),r),o.watch||i(`update`,e))},async setItems(e,t){await s(e,t,async e=>{if(e.driver.setItems)return F(e.driver.setItems,e.items.map(e=>({key:e.relativeKey,value:Ze(e.value),options:e.options})),t);e.driver.setItem&&await Promise.all(e.items.map(t=>F(e.driver.setItem,t.relativeKey,Ze(t.value),t.options)))})},async setItemRaw(e,t,r={}){if(t===void 0)return c.removeItem(e,r);e=I(e);let{relativeKey:a,driver:o}=n(e);if(o.setItemRaw)await F(o.setItemRaw,a,t,r);else if(o.setItem)await F(o.setItem,a,$e(t),r);else return;o.watch||i(`update`,e)},async removeItem(e,t={}){typeof t==`boolean`&&(t={removeMeta:t}),e=I(e);let{relativeKey:r,driver:a}=n(e);a.removeItem&&(await F(a.removeItem,r,t),(t.removeMeta||t.removeMata)&&await F(a.removeItem,r+`$`,t),a.watch||i(`remove`,e))},async getMeta(e,t={}){typeof t==`boolean`&&(t={nativeOnly:t}),e=I(e);let{relativeKey:r,driver:i}=n(e),a=Object.create(null);if(i.getMeta&&Object.assign(a,await F(i.getMeta,r,t)),!t.nativeOnly){let e=await F(i.getItem,r+`$`,t).then(e=>qe(e));e&&typeof e==`object`&&(typeof e.atime==`string`&&(e.atime=new Date(e.atime)),typeof e.mtime==`string`&&(e.mtime=new Date(e.mtime)),Object.assign(a,e))}return a},setMeta(e,t,n={}){return this.setItem(e+`$`,t,n)},removeMeta(e,t={}){return this.removeItem(e+`$`,t)},async getKeys(e,t={}){e=it(e);let n=r(e,!0),i=[],a=[],o=!0;for(let e of n){e.driver.flags?.maxDepth||(o=!1);let n=await F(e.driver.getKeys,e.relativeBase,t);for(let t of n){let n=e.mountpoint+I(t);i.some(e=>n.startsWith(e))||a.push(n)}i=[e.mountpoint,...i.filter(t=>!t.startsWith(e.mountpoint))]}let s=t.maxDepth!==void 0&&!o;return a.filter(n=>(!s||at(n,t.maxDepth))&&ot(n,e))},async clear(e,t={}){e=it(e),await Promise.all(r(e,!1).map(async e=>{if(e.driver.clear)return F(e.driver.clear,e.relativeBase,t);if(e.driver.removeItem){let n=await e.driver.getKeys(e.relativeBase||``,t);return Promise.all(n.map(n=>e.driver.removeItem(n,t)))}}))},async dispose(){await Promise.all(Object.values(t.mounts).map(e=>ft(e)))},async watch(e){return await a(),t.watchListeners.push(e),async()=>{t.watchListeners=t.watchListeners.filter(t=>t!==e),t.watchListeners.length===0&&await o()}},async unwatch(){t.watchListeners=[],await o()},mount(e,n){if(e=it(e),e&&t.mounts[e])throw Error(`already mounted at ${e}`);return e&&(t.mountpoints.push(e),t.mountpoints.sort((e,t)=>t.length-e.length)),t.mounts[e]=n,t.watching&&Promise.resolve(dt(n,i,e)).then(n=>{t.unwatch[e]=n}).catch(console.error),c},async unmount(e,n=!0){e=it(e),e&&t.mounts[e]&&(t.watching&&e in t.unwatch&&(t.unwatch[e]?.(),delete t.unwatch[e]),n&&await ft(t.mounts[e]),t.mountpoints=t.mountpoints.filter(t=>t!==e),delete t.mounts[e])},getMount(e=``){e=I(e)+`:`;let t=n(e);return{driver:t.driver,base:t.base}},getMounts(e=``,t={}){return e=I(e),r(e,t.parents).map(e=>({driver:e.driver,base:e.mountpoint}))},keys:(e,t={})=>c.getKeys(e,t),get:(e,t={})=>c.getItem(e,t),set:(e,t,n={})=>c.setItem(e,t,n),has:(e,t={})=>c.hasItem(e,t),del:(e,t={})=>c.removeItem(e,t),remove:(e,t={})=>c.removeItem(e,t)};return c}function dt(e,t,n){return e.watch?e.watch((e,r)=>t(e,n+r)):()=>{}}async function ft(e){typeof e.dispose==`function`&&await F(e.dispose)}function pt(e){return e}function L(e){return new Promise((t,n)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>n(e.error)})}function mt(e,t){let n,r=()=>{if(n)return n;let r=indexedDB.open(e);return r.onupgradeneeded=()=>r.result.createObjectStore(t),n=L(r),n.then(e=>{e.onclose=()=>n=void 0},()=>{n=void 0}),n};return(e,n)=>r().then(r=>n(r.transaction(t,e).objectStore(t)))}var ht;function R(){return ht||=mt(`keyval-store`,`keyval`),ht}function gt(e,t=R()){return t(`readonly`,t=>L(t.get(e)))}function _t(e,t,n=R()){return n(`readwrite`,n=>(n.put(t,e),L(n.transaction)))}function vt(e,t=R()){return t(`readwrite`,t=>(t.delete(e),L(t.transaction)))}function yt(e=R()){return e(`readwrite`,e=>(e.clear(),L(e.transaction)))}function bt(e,t){return e.openCursor().onsuccess=function(){this.result&&(t(this.result),this.result.continue())},L(e.transaction)}function xt(e=R()){return e(`readonly`,e=>{if(e.getAllKeys)return L(e.getAllKeys());let t=[];return bt(e,e=>t.push(e.key)).then(()=>t)})}var St=`idb-keyval`,Ct=pt((e={})=>{let t=e.base&&e.base.length>0?`${e.base}:`:``,n=e=>t+e,r;return e.dbName&&e.storeName&&(r=mt(e.dbName,e.storeName)),{name:St,options:e,async hasItem(e){return await gt(n(e),r)!==void 0},async getItem(e){return await gt(n(e),r)??null},async getItemRaw(e){return await gt(n(e),r)??null},setItem(e,t){return _t(n(e),t,r)},setItemRaw(e,t){return _t(n(e),t,r)},removeItem(e){return vt(n(e),r)},getKeys(){return xt(r)},clear(){return yt(r)}}});function wt(){return Ve(ut({driver:Ct({dbName:`diffs-cache`,storeName:`cache`})}))}var Tt=Symbol(`app-context`),Et={githubToken:async()=>g.value.githubToken||void 0};function Dt(e,t={cache:wt(),credentials:Et,llm:O}){e.provide(Tt,t)}function Ot(){let e=u(Tt);if(!e)throw Error(`useAppContext() called outside an app with installAppContext()`);return e}var kt=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},At={};function jt(t,n){let r=o(`RouterView`);return e(),s(r,null,{default:ee(({Component:t,route:n})=>[(e(),s(l(t),{key:n.path}))]),_:1})}var Mt=kt(At,[[`render`,jt]]),z=typeof document<`u`;function Nt(e){return typeof e==`object`||`displayName`in e||`props`in e||`__vccOpts`in e}function Pt(e){return e.__esModule||e[Symbol.toStringTag]===`Module`||e.default&&Nt(e.default)}var B=Object.assign;function Ft(e,t){let n={};for(let r in t){let i=t[r];n[r]=H(i)?i.map(e):e(i)}return n}var V=()=>{},H=Array.isArray;function It(e,t){let n={};for(let r in e)n[r]=r in t?t[r]:e[r];return n}var Lt=/#/g,Rt=/&/g,zt=/\//g,Bt=/=/g,Vt=/\?/g,Ht=/\+/g,Ut=/%5B/g,Wt=/%5D/g,Gt=/%5E/g,Kt=/%60/g,qt=/%7B/g,Jt=/%7C/g,Yt=/%7D/g,Xt=/%20/g;function Zt(e){return e==null?``:encodeURI(``+e).replace(Jt,`|`).replace(Ut,`[`).replace(Wt,`]`)}function Qt(e){return Zt(e).replace(qt,`{`).replace(Yt,`}`).replace(Gt,`^`)}function $t(e){return Zt(e).replace(Ht,`%2B`).replace(Xt,`+`).replace(Lt,`%23`).replace(Rt,`%26`).replace(Kt,"`").replace(qt,`{`).replace(Yt,`}`).replace(Gt,`^`)}function en(e){return $t(e).replace(Bt,`%3D`)}function tn(e){return Zt(e).replace(Lt,`%23`).replace(Vt,`%3F`)}function nn(e){return tn(e).replace(zt,`%2F`)}function U(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var rn=/\/$/,an=e=>e.replace(rn,``);function on(e,t,n=`/`){let r,i={},a=``,o=``,s=t.indexOf(`#`),c=t.indexOf(`?`);return c=s>=0&&c>s?-1:c,c>=0&&(r=t.slice(0,c),a=t.slice(c,s>0?s:t.length),i=e(a.slice(1))),s>=0&&(r||=t.slice(0,s),o=t.slice(s,t.length)),r=pn(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:U(o)}}function sn(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function cn(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function ln(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&W(t.matched[r],n.matched[i])&&un(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function W(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function un(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!dn(e[n],t[n]))return!1;return!0}function dn(e,t){return H(e)?fn(e,t):H(t)?fn(t,e):e?.valueOf()===t?.valueOf()}function fn(e,t){return H(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function pn(e,t){if(e.startsWith(`/`))return e;if(!e)return t;let n=t.split(`/`),r=e.split(`/`),i=r[r.length-1];(i===`..`||i===`.`)&&r.push(``);let a=n.length-1,o,s;for(o=0;o<r.length;o++)if(s=r[o],s!==`.`){if(s===`..`)a>1&&a--;else break}return n.slice(0,a).join(`/`)+`/`+r.slice(o).join(`/`)}var G={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0},mn=function(e){return e.pop=`pop`,e.push=`push`,e}({}),hn=function(e){return e.back=`back`,e.forward=`forward`,e.unknown=``,e}({});function gn(e){if(!e){if(z){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^\/]+/,``)}else e=`/`}return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),an(e)}var _n=/^[^#]+#/;function vn(e,t){return e.replace(_n,`#`)+t}function yn(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var bn=()=>({left:window.scrollX,top:window.scrollY});function xn(e){let t;if(`el`in e){let n=e.el,r=typeof n==`string`&&n.startsWith(`#`),i=typeof n==`string`?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!i)return;t=yn(i,e)}else t=e;`scrollBehavior`in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left==null?window.scrollX:t.left,t.top==null?window.scrollY:t.top)}function Sn(e,t){return(history.state?history.state.position-t:-1)+e}var Cn=new Map;function wn(e,t){Cn.set(e,t)}function Tn(e){let t=Cn.get(e);return Cn.delete(e),t}function En(e){return typeof e==`string`||e&&typeof e==`object`}function Dn(e){return typeof e==`string`||typeof e==`symbol`}var K=function(e){return e[e.MATCHER_NOT_FOUND=1]=`MATCHER_NOT_FOUND`,e[e.NAVIGATION_GUARD_REDIRECT=2]=`NAVIGATION_GUARD_REDIRECT`,e[e.NAVIGATION_ABORTED=4]=`NAVIGATION_ABORTED`,e[e.NAVIGATION_CANCELLED=8]=`NAVIGATION_CANCELLED`,e[e.NAVIGATION_DUPLICATED=16]=`NAVIGATION_DUPLICATED`,e}({}),On=Symbol(``);K.MATCHER_NOT_FOUND,K.NAVIGATION_GUARD_REDIRECT,K.NAVIGATION_ABORTED,K.NAVIGATION_CANCELLED,K.NAVIGATION_DUPLICATED;function q(e,t){return B(Error(),{type:e,[On]:!0},t)}function J(e,t){return e instanceof Error&&On in e&&(t==null||!!(e.type&t))}function kn(e){let t={};if(e===``||e===`?`)return t;let n=(e[0]===`?`?e.slice(1):e).split(`&`);for(let e=0;e<n.length;++e){let r=n[e].replace(Ht,` `),i=r.indexOf(`=`),a=U(i<0?r:r.slice(0,i)),o=i<0?null:U(r.slice(i+1));if(a in t){let e=t[a];H(e)||(e=t[a]=[e]),e.push(o)}else t[a]=o}return t}function An(e){let t=``;for(let n in e){let r=e[n];if(n=en(n),r==null){r!==void 0&&(t+=(t.length?`&`:``)+n);continue}(H(r)?r.map(e=>e&&$t(e)):[r&&$t(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function jn(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=H(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}var Mn=Symbol(``),Nn=Symbol(``),Pn=Symbol(``),Fn=Symbol(``),In=Symbol(``);function Y(){let e=[];function t(t){return e.push(t),()=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function X(e,t,n,r,i,a=e=>e()){let o=r&&(r.enterCallbacks[i]=r.enterCallbacks[i]||[]);return()=>new Promise((s,c)=>{let l=e=>{e===!1?c(q(K.NAVIGATION_ABORTED,{from:n,to:t})):e instanceof Error?c(e):En(e)?c(q(K.NAVIGATION_GUARD_REDIRECT,{from:t,to:e})):(o&&r.enterCallbacks[i]===o&&typeof e==`function`&&o.push(e),s())},u=a(()=>e.call(r&&r.instances[i],t,n,l)),d=Promise.resolve(u);e.length<3&&(d=d.then(l)),d.catch(e=>c(e))})}function Ln(e,t,n,r,i=e=>e()){let a=[];for(let o of e)for(let e in o.components){let s=o.components[e];if(t===`beforeRouteEnter`||o.instances[e]){if(Nt(s)){let c=(s.__vccOpts||s)[t];c&&a.push(X(c,n,r,o,e,i))}else{let c=s();a.push(()=>c.then(a=>{if(!a)throw Error(`Couldn't resolve component "${e}" at "${o.path}"`);let s=Pt(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&X(c,n,r,o,e,i)()}))}}}return a}function Rn(e,t){let n=[],r=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;o<a;o++){let a=t.matched[o];a&&(e.matched.find(e=>W(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>W(e,s))||i.push(s))}return[n,r,i]}var zn=()=>location.protocol+`//`+location.host;function Bn(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),cn(n,``)}return cn(n,e)+r+i}function Vn(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=Bn(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:mn.pop,direction:u?u>0?hn.forward:hn.back:hn.unknown})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){if(document.visibilityState===`hidden`){let{history:e}=window;if(!e.state)return;e.replaceState(B({},e.state,{scroll:bn()}),``)}}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u),document.removeEventListener(`visibilitychange`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),document.addEventListener(`visibilitychange`,u),{pauseListeners:c,listen:l,destroy:d}}function Hn(e,t,n,r=!1,i=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:i?bn():null}}function Un(e){let{history:t,location:n}=window,r={value:Bn(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:zn()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){a(e,B({},t.state,Hn(i.value.back,e,i.value.forward,!0),n,{position:i.value.position}),!0),r.value=e}function s(e,n){let o=B({},i.value,t.state,{forward:e,scroll:bn()});a(o.current,o,!0),a(e,B({},Hn(r.value,e,null),{position:o.position+1},n),!1),r.value=e}return{location:r,state:i,push:s,replace:o}}function Wn(e){e=gn(e);let t=Un(e),n=Vn(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=B({location:``,base:e,go:r,createHref:vn.bind(null,e)},t,n);return Object.defineProperty(i,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,"state",{enumerable:!0,get:()=>t.state.value}),i}var Z=function(e){return e[e.Static=0]=`Static`,e[e.Param=1]=`Param`,e[e.Group=2]=`Group`,e}({}),Q=function(e){return e[e.Static=0]=`Static`,e[e.Param=1]=`Param`,e[e.ParamRegExp=2]=`ParamRegExp`,e[e.ParamRegExpEnd=3]=`ParamRegExpEnd`,e[e.EscapeNext=4]=`EscapeNext`,e}(Q||{}),Gn={type:Z.Static,value:``},Kn=/[a-zA-Z0-9_]/;function qn(e){if(!e)return[[]];if(e===`/`)return[[Gn]];if(!e.startsWith(`/`))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=Q.Static,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===Q.Static?a.push({type:Z.Static,value:l}):n===Q.Param||n===Q.ParamRegExp||n===Q.ParamRegExpEnd?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:Z.Param,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;s<e.length;){if(c=e[s++],c===`\\`&&n!==Q.ParamRegExp){r=n,n=Q.EscapeNext;continue}switch(n){case Q.Static:c===`/`?(l&&d(),o()):c===`:`?(d(),n=Q.Param):f();break;case Q.EscapeNext:f(),n=r;break;case Q.Param:c===`(`?n=Q.ParamRegExp:Kn.test(c)?f():(d(),n=Q.Static,c!==`*`&&c!==`?`&&c!==`+`&&s--);break;case Q.ParamRegExp:c===`)`?u[u.length-1]==`\\`?u=u.slice(0,-1)+c:n=Q.ParamRegExpEnd:u+=c;break;case Q.ParamRegExpEnd:d(),n=Q.Static,c!==`*`&&c!==`?`&&c!==`+`&&s--,u=``;break;default:t(`Unknown state`)}}return n===Q.ParamRegExp&&t(`Unfinished custom RegExp for param "${l}"`),d(),o(),i}var Jn=`[^/]+?`,Yn={sensitive:!1,strict:!1,start:!0,end:!0},$=function(e){return e[e._multiplier=10]=`_multiplier`,e[e.Root=90]=`Root`,e[e.Segment=40]=`Segment`,e[e.SubSegment=30]=`SubSegment`,e[e.Static=40]=`Static`,e[e.Dynamic=20]=`Dynamic`,e[e.BonusCustomRegExp=10]=`BonusCustomRegExp`,e[e.BonusWildcard=-50]=`BonusWildcard`,e[e.BonusRepeatable=-20]=`BonusRepeatable`,e[e.BonusOptional=-8]=`BonusOptional`,e[e.BonusStrict=.7000000000000001]=`BonusStrict`,e[e.BonusCaseSensitive=.25]=`BonusCaseSensitive`,e}($||{}),Xn=/[.+*?^${}()[\]/\\]/g;function Zn(e,t){let n=B({},Yn,t),r=[],i=n.start?`^`:``,a=[];for(let t of e){let e=t.length?[]:[$.Root];n.strict&&!t.length&&(i+=`/`);for(let r=0;r<t.length;r++){let o=t[r],s=$.Segment+(n.sensitive?$.BonusCaseSensitive:0);if(o.type===Z.Static)r||(i+=`/`),i+=o.value.replace(Xn,`\\$&`),s+=$.Static;else if(o.type===Z.Param){let{value:e,repeatable:n,optional:c,regexp:l}=o;a.push({name:e,repeatable:n,optional:c});let u=l||Jn;if(u!==Jn){s+=$.BonusCustomRegExp;try{`${u}`}catch(t){throw Error(`Invalid custom RegExp for param "${e}" (${u}): `+t.message)}}let d=n?`((?:${u})(?:/(?:${u}))*)`:`(${u})`;r||(d=c&&t.length<2?`(?:/${d})`:`/`+d),c&&(d+=`?`),i+=d,s+=$.Dynamic,c&&(s+=$.BonusOptional),n&&(s+=$.BonusRepeatable),u===`.*`&&(s+=$.BonusWildcard)}e.push(s)}r.push(e)}if(n.strict&&n.end){let e=r.length-1;r[e][r[e].length-1]+=$.BonusStrict}n.strict||(i+=`/?`),n.end?i+=`$`:n.strict&&!i.endsWith(`/`)&&(i+=`(?:/|$)`);let o=new RegExp(i,n.sensitive?``:`i`);function s(e){let t=e.match(o),n={};if(!t)return null;for(let e=1;e<t.length;e++){let r=t[e]||``,i=a[e-1];n[i.name]=r&&i.repeatable?r.split(`/`):r}return n}function c(t){let n=``,r=!1;for(let i of e){(!r||!n.endsWith(`/`))&&(n+=`/`),r=!1;for(let e of i)if(e.type===Z.Static)n+=e.value;else if(e.type===Z.Param){let{value:a,repeatable:o,optional:s}=e,c=a in t?t[a]:``;if(H(c)&&!o)throw Error(`Provided param "${a}" is an array but it is not repeatable (* or + modifiers)`);let l=H(c)?c.join(`/`):c;if(!l){if(s)i.length<2&&(n.endsWith(`/`)?n=n.slice(0,-1):r=!0);else throw Error(`Missing required param "${a}"`)}n+=l}}return n||`/`}return{re:o,score:r,keys:a,parse:s,stringify:c}}function Qn(e,t){let n=0;for(;n<e.length&&n<t.length;){let r=t[n]-e[n];if(r)return r;n++}return e.length<t.length?e.length===1&&e[0]===$.Static+$.Segment?-1:1:e.length>t.length?t.length===1&&t[0]===$.Static+$.Segment?1:-1:0}function $n(e,t){let n=0,r=e.score,i=t.score;for(;n<r.length&&n<i.length;){let e=Qn(r[n],i[n]);if(e)return e;n++}if(Math.abs(i.length-r.length)===1){if(er(r))return 1;if(er(i))return-1}return i.length-r.length}function er(e){let t=e[e.length-1];return e.length>0&&t[t.length-1]<0}var tr={strict:!1,end:!0,sensitive:!1};function nr(e,t,n){let r=B(Zn(qn(e.path),n),{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function rr(e,t){let n=[],r=new Map;t=It(tr,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=ar(e);s.aliasOf=r&&r.record;let l=It(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push(ar(B({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,f;for(let t of u){let{path:u}=t;if(n&&u[0]!==`/`){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=nr(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!sr(d)&&o(e.name)),dr(d)&&c(d),s.children){let e=s.children;for(let t=0;t<e.length;t++)a(e[t],d,r&&r.children[t])}r||=d}return f?()=>{o(f)}:V}function o(e){if(Dn(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=lr(e,n);n.splice(t,0,e),e.record.name&&!sr(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw q(K.MATCHER_NOT_FOUND,{location:e});s=i.record.name,a=B(ir(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&ir(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name);else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw q(K.MATCHER_NOT_FOUND,{location:e,currentLocation:t});s=i.record.name,a=B({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:cr(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function ir(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function ar(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:or(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function or(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function sr(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function cr(e){return e.reduce((e,t)=>B(e,t.meta),{})}function lr(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;$n(e,t[i])<0?r=i:n=i+1}let i=ur(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function ur(e){let t=e;for(;t=t.parent;)if(dr(t)&&$n(e,t)===0)return t}function dr({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function fr(e){let t=u(Pn),n=u(Fn),i=r(()=>{let n=d(e.to);return t.resolve(n)}),a=r(()=>{let{matched:e}=i.value,{length:t}=e,r=e[t-1],a=n.matched;if(!r||!a.length)return-1;let o=a.findIndex(W.bind(null,r));if(o>-1)return o;let s=_r(e[t-2]);return t>1&&_r(r)===s&&a[a.length-1].path!==s?a.findIndex(W.bind(null,e[t-2])):o}),o=r(()=>a.value>-1&&gr(n.params,i.value.params)),s=r(()=>a.value>-1&&a.value===n.matched.length-1&&un(n.params,i.value.params));function c(n={}){if(hr(n)){let n=t[d(e.replace)?`replace`:`push`](d(e.to)).catch(V);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>n),n}return Promise.resolve()}return{route:i,href:r(()=>i.value.href),isActive:o,isExactActive:s,navigate:c}}function pr(e){return e.length===1?e[0]:e}var mr=h({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:fr,setup(e,{slots:t}){let n=i(fr(e)),{options:a}=u(Pn),o=r(()=>({[vr(e.activeClass,a.linkActiveClass,`router-link-active`)]:n.isActive,[vr(e.exactActiveClass,a.linkExactActiveClass,`router-link-exact-active`)]:n.isExactActive}));return()=>{let r=t.default&&pr(t.default(n));return e.custom?r:f(`a`,{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},r)}}});function hr(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(e.button===void 0||e.button===0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function gr(e,t){for(let n in t){let r=t[n],i=e[n];if(typeof r==`string`){if(r!==i)return!1}else if(!H(i)||i.length!==r.length||r.some((e,t)=>e.valueOf()!==i[t].valueOf()))return!1}return!0}function _r(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var vr=(e,t,n)=>e??t??n,yr=h({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){let i=u(In),o=r(()=>e.route||i.value),s=u(Nn,0),l=r(()=>{let e=d(s),{matched:t}=o.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),m=r(()=>o.value.matched[l.value]);a(Nn,r(()=>l.value+1)),a(Mn,m),a(In,o);let h=c();return p(()=>[h.value,m.value,e.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!W(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let r=o.value,i=e.name,a=m.value,s=a&&a.components[i];if(!s)return br(n.default,{Component:s,route:r});let c=a.props[i],l=c?c===!0?r.params:typeof c==`function`?c(r):c:null,u=f(s,B({},l,t,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(a.instances[i]=null)},ref:h}));return br(n.default,{Component:u,route:r})||u}}});function br(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var xr=yr;function Sr(e){let r=rr(e.routes,e),i=e.parseQuery||kn,a=e.stringifyQuery||An,o=e.history,s=Y(),c=Y(),l=Y(),u=m(G),f=G;z&&e.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let p=Ft.bind(null,e=>``+e),h=Ft.bind(null,nn),ee=Ft.bind(null,U);function te(e,t){let n,i;return Dn(e)?(n=r.getRecordMatcher(e),i=t):i=e,r.addRoute(i,n)}function ne(e){let t=r.getRecordMatcher(e);t&&r.removeRoute(t)}function re(){return r.getRoutes().map(e=>e.record)}function g(e){return!!r.getRecordMatcher(e)}function ie(e,t){if(t=B({},t||u.value),typeof e==`string`){let n=on(i,e,t.path),a=r.resolve({path:n.path},t),s=o.createHref(n.fullPath);return B(n,a,{params:ee(a.params),hash:U(n.hash),redirectedFrom:void 0,href:s})}let n;if(e.path!=null)n=B({},e,{path:on(i,e.path,t.path).path});else{let r=B({},e.params);for(let e in r)r[e]??delete r[e];n=B({},e,{params:h(r)}),t.params=h(t.params)}let s=r.resolve(n,t),c=e.hash||``;s.params=p(ee(s.params));let l=sn(a,B({},e,{hash:Qt(c),path:s.path})),d=o.createHref(l);return B({fullPath:l,hash:c,query:a===An?jn(e.query):e.query||{}},s,{redirectedFrom:void 0,href:d})}function _(e){return typeof e==`string`?on(i,e,u.value.path):B({},e)}function v(e,t){if(f!==e)return q(K.NAVIGATION_CANCELLED,{from:t,to:e})}function y(e){return x(e)}function ae(e){return y(B(_(e),{replace:!0}))}function b(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=_(i):{path:i},i.params={}),B({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function x(e,t){let n=f=ie(e),r=u.value,i=e.state,o=e.force,s=e.replace===!0,c=b(n,r);if(c)return x(B(_(c),{state:typeof c==`object`?B({},i,c.state):i,force:o,replace:s}),t||n);let l=n;l.redirectedFrom=t;let d;return!o&&ln(a,r,n)&&(d=q(K.NAVIGATION_DUPLICATED,{to:l,from:r}),fe(r,r,!0,!1)),(d?Promise.resolve(d):ce(l,r)).catch(e=>J(e)?J(e,K.NAVIGATION_GUARD_REDIRECT)?e:O(e):D(e,l,r)).then(e=>{if(e){if(J(e,K.NAVIGATION_GUARD_REDIRECT))return x(B({replace:s},_(e.to),{state:typeof e.to==`object`?B({},i,e.to.state):i,force:o}),t||l)}else e=ue(l,r,!0,s,i);return le(l,r,e),e})}function oe(e,t){let n=v(e,t);return n?Promise.reject(n):Promise.resolve()}function se(e){let t=A.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function ce(e,t){let n,[r,i,a]=Rn(e,t);n=Ln(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push(X(r,e,t))});let o=oe.bind(null,e,t);return n.push(o),M(n).then(()=>{n=[];for(let r of s.list())n.push(X(r,e,t));return n.push(o),M(n)}).then(()=>{n=Ln(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push(X(r,e,t))});return n.push(o),M(n)}).then(()=>{n=[];for(let r of a)if(r.beforeEnter){if(H(r.beforeEnter))for(let i of r.beforeEnter)n.push(X(i,e,t));else n.push(X(r.beforeEnter,e,t))}return n.push(o),M(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=Ln(a,`beforeRouteEnter`,e,t,se),n.push(o),M(n))).then(()=>{n=[];for(let r of c.list())n.push(X(r,e,t));return n.push(o),M(n)}).catch(e=>J(e,K.NAVIGATION_CANCELLED)?e:Promise.reject(e))}function le(e,t,n){l.list().forEach(r=>se(()=>r(e,t,n)))}function ue(e,t,n,r,i){let a=v(e,t);if(a)return a;let s=t===G,c=z?history.state:{};n&&(r||s?o.replace(e.fullPath,B({scroll:s&&c&&c.scroll},i)):o.push(e.fullPath,i)),u.value=e,fe(e,t,n,s),O()}let S;function C(){S||=o.listen((e,t,n)=>{if(!j.listening)return;let r=ie(e),i=b(r,j.currentRoute.value);if(i){x(B(i,{replace:!0,force:!0}),r).catch(V);return}f=r;let a=u.value;z&&wn(Sn(a.fullPath,n.delta),bn()),ce(r,a).catch(e=>J(e,K.NAVIGATION_ABORTED|K.NAVIGATION_CANCELLED)?e:J(e,K.NAVIGATION_GUARD_REDIRECT)?(x(B(_(e.to),{force:!0}),r).then(e=>{J(e,K.NAVIGATION_ABORTED|K.NAVIGATION_DUPLICATED)&&!n.delta&&n.type===mn.pop&&o.go(-1,!1)}).catch(V),Promise.reject()):(n.delta&&o.go(-n.delta,!1),D(e,r,a))).then(e=>{e||=ue(r,a,!1),e&&(n.delta&&!J(e,K.NAVIGATION_CANCELLED)?o.go(-n.delta,!1):n.type===mn.pop&&J(e,K.NAVIGATION_ABORTED|K.NAVIGATION_DUPLICATED)&&o.go(-1,!1)),le(r,a,e)}).catch(V)})}let w=Y(),T=Y(),E;function D(e,t,n){O(e);let r=T.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function de(){return E&&u.value!==G?Promise.resolve():new Promise((e,t)=>{w.add([e,t])})}function O(e){return E||(E=!e,C(),w.list().forEach(([t,n])=>e?n(e):t()),w.reset()),e}function fe(n,r,i,a){let{scrollBehavior:o}=e;if(!z||!o)return Promise.resolve();let s=!i&&Tn(Sn(n.fullPath,0))||(a||!i)&&history.state&&history.state.scroll||null;return t().then(()=>o(n,r,s)).then(e=>e&&xn(e)).catch(e=>D(e,n,r))}let pe=e=>o.go(e),k,A=new Set,j={currentRoute:u,listening:!0,addRoute:te,removeRoute:ne,clearRoutes:r.clearRoutes,hasRoute:g,getRoutes:re,resolve:ie,options:e,push:y,replace:ae,go:pe,back:()=>pe(-1),forward:()=>pe(1),beforeEach:s.add,beforeResolve:c.add,afterEach:l.add,onError:T.add,isReady:de,install(e){e.component(`RouterLink`,mr),e.component(`RouterView`,xr),e.config.globalProperties.$router=j,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>d(u)}),z&&!k&&u.value===G&&(k=!0,y(o.location).catch(e=>{}));let t={};for(let e in G)Object.defineProperty(t,e,{get:()=>u.value[e],enumerable:!0});e.provide(Pn,j),e.provide(Fn,n(t)),e.provide(In,u);let r=e.unmount;A.add(e),e.unmount=function(){A.delete(e),A.size<1&&(f=G,S&&S(),S=null,u.value=G,k=!1,E=!1),r()}}};function M(e){return e.reduce((e,t)=>e.then(()=>se(t)),Promise.resolve())}return j}function Cr(){return u(Pn)}function wr(e){return u(Fn)}function Tr(e){let t=e.indexOf(`...`);return t>0&&t+3<e.length?{base:e.slice(0,t),head:e.slice(t+3)}:void 0}function Er(e){let t=e.trim().match(/^([^/\s#]+)\/([^/\s#]+)#(\d+)$/);if(t)return{kind:`github-pr`,owner:t[1],repo:t[2],number:t[3]};let n=e.trim().match(/github\.com\/([^/\s]+)\/([^/\s#?]+)(?:\/(pull|commit|compare)\/([^\s#?]+)|\/pulls\/?)?(?:[/?#]|$)/);if(!n)return;let[,r=``,i=``,a,o=``]=n;if(a===`pull`){let e=o.match(/^\d+/)?.[0];return e?{kind:`github-pr`,owner:r,repo:i,number:e}:void 0}if(a===`commit`)return{kind:`github-commit`,owner:r,repo:i,sha:o.replace(/\/.*$/,``)};if(a===`compare`){let e=Tr(o);return e&&{kind:`github-compare`,owner:r,repo:i,...e}}return{kind:`github-repo`,owner:r,repo:i}}function Dr(e){let t=e=>({sourceRef:kr(e)});return[{name:`github-pr`,path:`/gh/:owner/:repo/:number(\\d+)`,component:e,props:t},{name:`github-compare`,path:`/gh/:owner/:repo/compare/:range(.+\\.\\.\\..+)`,component:e,props:t},{name:`github-commit`,path:`/gh/:owner/:repo/commit/:sha`,component:e,props:t}]}function Or(e){switch(e.kind){case`github-pr`:return`/gh/${e.owner}/${e.repo}/${e.number}`;case`github-compare`:return`/gh/${e.owner}/${e.repo}/compare/${e.base}...${e.head}`;case`github-commit`:return`/gh/${e.owner}/${e.repo}/commit/${e.sha}`;case`paste`:return;case`local`:return}}function kr(e){let t=t=>String(e.params[t]),n=t(`owner`),r=t(`repo`);switch(e.name){case`github-pr`:return{kind:`github-pr`,owner:n,repo:r,number:t(`number`)};case`github-compare`:{let e=Tr(t(`range`));return e&&{kind:`github-compare`,owner:n,repo:r,...e}}case`github-commit`:return{kind:`github-commit`,owner:n,repo:r,sha:t(`sha`)}}}function Ar(e,t){return`/gh/${e}/${t}`}function jr(e){return e.kind===`paste`||e.kind===`local`?void 0:{route:Ar(e.owner,e.repo),label:`${e.owner}/${e.repo}`}}function Mr(e){let t=Er(e);if(t)return t.kind===`github-repo`?Ar(t.owner,t.repo):Or(t)}var Nr=Sr({history:Wn(new URL(document.baseURI).pathname),routes:[{name:`home`,path:`/`,component:()=>E(()=>import(`./pages-web-Bmq8l7JI.js`),__vite__mapDeps([18,6,7,8,1,9,5,10,11,3,4,12,2,13,14,15,16,19,20,21,22,23]),import.meta.url)},{path:`/upload`,component:()=>E(()=>import(`./upload-CFwsDMhO.js`),__vite__mapDeps([24,6,2,25,1,11,3,4,12,0,5,7,8,9,10,13,14,15,16,17,26,27,19,20,28,23]),import.meta.url)},{path:`/gh/:owner/:repo`,component:()=>E(()=>import(`./_repo_-DtGh1V5_.js`),__vite__mapDeps([29,1,6,8,7,9,25,11,3,4,12,2,0,5,10,13,14,15,16,17,30,31,20,32,22]),import.meta.url)},...Dr(()=>E(()=>import(`./diff-Bq6jHPox.js`),__vite__mapDeps([33,6,10,11,3,4,12,1,2,25,0,5,7,8,9,13,14,15,16,17,26,27,19,20,28]),import.meta.url))]});async function Pr(){let e=te(Mt).use(ie);await E(async()=>{let{installLocal:e}=await import(`./install-DKy8VRs5.js`);return{installLocal:e}},__vite__mapDeps([34,6,7,10,11,3,4,12,1,2,35,13,15,36,37]),import.meta.url).then(({installLocal:t})=>t(e,Nr)),e.use(Nr).mount(`#app`)}Pr();export{mr as a,kt as c,Ot as d,ut as f,O as h,Mr as i,Dt as l,he as m,Ar as n,wr as o,Ve as p,Or as r,Cr as s,jr as t,Et as u};
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./llm-Le5CPsNn.js","./rolldown-runtime-Dd_uD5pT.js","./source-CvnvCX42.js","./locales-SpkpwNqX.js","./preload-helper-BaNbYf_w.js","./useDocumentTitle-BQJCa6Lm.js","./vue-i18n-CGHHpbTP.js","./runtime-dom.esm-bundler-Du_ZCcVN.js","./ModelPicker-CDTiUMZ3.js","./floating-ui.dom-CfpSQvPs.js","./diagnostics-wATZy2jc.js","./i18n-Cx8anq4V.js","./en-CbWYrCM5.js","./ActionButton-V4dY2wPS.js","./ActionIconButton-4b5xelMn.js","./local-agents-BQLn-Ppw.js","./core-messages-ClW97ZVa.js","./models-D651LTTp.js","./pages-web-BLxMupU5.js","./DisplayFileIcon-DWj5Zxib.js","./GithubAvatar-DGJrpCsX.js","./LandingHero-DWdx6_8g.js","./time-ago-Bdao9Hh1.js","./uploadSession-BUj4FNau.js","./upload-DRO7bkBV.js","./analyze-BgWIIbl3.js","./diffs-store-D3BzIMVi.js","./ChatMessage-Ccffh_8Z.js","./patch-parser-k3Vbbmi0.js","./_repo_-D3lApLQL.js","./SelectViewport-DF4P4Akh.js","./useNonce-CwUrgryd.js","./portalTarget-DQg8GgWm.js","./diff-Cx43r-a6.js","./install-D-S32JY7.js","./nanoid-Cya-tyvy.js","./pages-ByEfDjFa.js","./rpc-backends-DYtuJyeF.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{Bt as e,Dt as t,Gn as n,H as r,Hn as i,Ht as a,Jt as o,W as s,Wn as c,Xt as l,bt as u,er as d,ft as f,mn as p,qn as m,tt as h,yn as ee}from"./vue-i18n-CGHHpbTP.js";import{i as te}from"./runtime-dom.esm-bundler-Du_ZCcVN.js";import{n as ne,t as re}from"./diagnostics-wATZy2jc.js";import{r as g,t as ie}from"./i18n-Cx8anq4V.js";import{S as _,T as v,b as y,d as ae,f as b,g as x,h as oe,i as se,o as ce,p as le,t as ue,u as S,v as C,w,y as T}from"./source-CvnvCX42.js";import{t as E}from"./preload-helper-BaNbYf_w.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function D(){let e=ne(g.value.llm);if(!e)throw re.llmNotConfigured();return e}async function de({diff:e,session:t,text:n,signal:r,onMessages:i,onGroupingUpdate:a}){let o=D(),{createChatSession:s}=await E(async()=>{let{createChatSession:e}=await import(`./llm-Le5CPsNn.js`).then(e=>e.t);return{createChatSession:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]),import.meta.url);if(r.aborted)return t.messages;let c=s({diff:e,resolved:o,locale:g.value.locale,messages:t.messages,onGroupingUpdate:a}),l=()=>{let{streamingMessage:e}=c.state;i(e?[...c.state.messages,e]:[...c.state.messages])},u=c.subscribe(l),d=()=>c.abort();r.addEventListener(`abort`,d);try{l(),await(n===void 0?c.continue():c.prompt(n))}finally{u(),r.removeEventListener(`abort`,d)}return[...c.state.messages]}var O={isSetup:()=>ne(g.value.llm)!==void 0,async analyze(e,t){let n=D(),r=g.value.locale,{runLlmAnalysis:i}=await E(async()=>{let{runLlmAnalysis:e}=await import(`./llm-Le5CPsNn.js`).then(e=>e.t);return{runLlmAnalysis:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]),import.meta.url);return i(e,n,r,t)},chat:de},fe=_([`added`,`removed`,`modified`,`renamed`,`copied`]),pe=T({header:v(),oldStart:C(),oldLines:C(),newStart:C(),newLines:C(),patch:v()}),k=T({path:v(),previousPath:y(v()),status:fe,additions:C(),deletions:C(),isBinary:le(),sha:v(),hunks:b(pe),truncated:y(oe(!0))}),A=_([`open`,`closed`,`merged`,`draft`]),j=T({state:y(A)}),M=T({sha:v(),message:v()}),me=T({sha:v(),ref:v()}),he=T({ref:ue,title:v(),label:y(v()),author:y(T({name:v(),avatarUrl:y(v())})),description:y(v()),url:y(v()),base:y(me),head:y(me),createdAt:y(v()),updatedAt:y(v()),pullRequest:y(j),commits:y(b(M)),files:b(k)}),ge=T({name:v(),color:v(),description:y(v())}),_e=_([`approved`,`changes_requested`,`review_required`]),ve=_([`success`,`failure`,`pending`]),ye=T({number:C(),title:v(),url:v(),state:_([`open`,`draft`]),author:y(S),labels:b(ge),assignees:b(S),milestone:y(v()),createdAt:v(),updatedAt:v(),comments:C(),reviewDecision:y(_e),checks:y(ve),linkedIssues:y(C()),additions:y(C()),deletions:y(C()),changedFiles:y(C())}),be=T({totalCount:C(),items:b(ye),next:y(v())}),xe=T({llm:y(ce),"web-llm":y(ce)}),Se=T({messages:b(x({role:v()})),chatStartIndex:C(),agent:y(se)}),Ce=T({key:v(),ref:ue,headSha:v(),title:v(),label:y(v()),url:y(v()),pullRequestState:y(A),additions:C(),deletions:C(),fileShas:b(v()),lastViewedAt:C(),sizeBytes:C(),sharedComment:y(T({id:C(),url:v()})),changedSinceReviewed:y(b(v()))}),we=T({diff:he,analyzedBy:xe,reviews:y(ae),llmSession:y(Se)}),Te=T({sha:v(),reviewedAt:C()}),Ee=T({owner:v(),repo:v(),page:be,lastViewedAt:C()}),N=`pr-meta:`,P=`pr-body:`,De=`pr:`;function Oe(e,t,n){return new TextEncoder().encode(JSON.stringify({diff:e,analyzedBy:t,llmSession:n})).length}function ke(e){let{diff:t,analyzedBy:n,reviews:r,llmSession:i,...a}=e;return{meta:{...a,ref:t.ref,title:t.title,label:t.label,url:t.url,pullRequestState:t.pullRequest?.state,additions:t.files.reduce((e,t)=>e+t.additions,0),deletions:t.files.reduce((e,t)=>e+t.deletions,0),fileShas:t.files.map(e=>e.sha)},body:{diff:t,analyzedBy:n,reviews:r,llmSession:i}}}function Ae(e,t){let{key:n,headSha:r,lastViewedAt:i,sizeBytes:a,sharedComment:o,changedSinceReviewed:s}=e;return{key:n,headSha:r,lastViewedAt:i,sizeBytes:a,sharedComment:o,changedSinceReviewed:s,...t}}function je(e,t,n={}){let r=n.maxBytes??52428800,i=n.maxEntries??50,a=new Map;function o(e,t){let n=(a.get(e)??Promise.resolve()).then(t,t),r=n.catch(()=>{});return a.set(e,r),r.then(()=>{a.get(e)===r&&a.delete(e)}),n}async function s(t){let n=w(Ce,await e.getItem(`${N}${t}`));return n.success?n.output:void 0}async function c(t){let n=w(we,await e.getItem(`${P}${t}`));return n.success?n.output:void 0}async function l(e){let[t,n]=await Promise.all([s(e),c(e)]);return t&&n?Ae(t,n):void 0}async function u(t){let{meta:n,body:r}=ke(t);await Promise.all([e.setItem(`${N}${t.key}`,n),e.setItem(`${P}${t.key}`,r)])}function d(t,n){return o(t,async()=>{let r=await s(t);r&&await e.setItem(`${N}${t}`,n(r))})}function f(t,n){return o(t,async()=>{let r=await c(t);r&&await e.setItem(`${P}${t}`,n(r))})}async function p(){let t=await e.getKeys(N),n=[];for(let{value:r}of await e.getItems(t)){let e=w(Ce,r);e.success&&n.push(e.output)}return n}async function m(){let n=await e.getKeys(De);await Promise.all(n.map(t=>e.removeItem(t)));let a=(await p()).sort((e,t)=>t.lastViewedAt-e.lastViewedAt),o=0,s=[],c=[];for(let[e,t]of a.entries())o+=t.sizeBytes,e<i&&o<=r?s.push(t):c.push(t);c.length!==0&&(await Promise.all(c.flatMap(t=>[e.removeItem(`${N}${t.key}`),e.removeItem(`${P}${t.key}`)])),await t.prune(new Set(s.flatMap(e=>e.fileShas))))}async function h(e,n){let r=new Map(e.diff.files.map(e=>[e.path,e.sha])),i=await t.get([...r.values()]),a=new Set(e.changedSinceReviewed);return n.files.filter(e=>{let t=r.get(e.path);return a.has(e.path)||t!==void 0&&t!==e.sha&&i.has(t)}).map(e=>e.path)}return{get:l,async put(e){await o(e.key,()=>u(e)),await m()},async putDiff(e,t,n){let r=await o(e,async()=>{let r=await l(e),i=r?.analyzedBy??{},a={...r,key:e,diff:t,headSha:n,analyzedBy:i,lastViewedAt:Date.now(),sizeBytes:Oe(t,i,r?.llmSession),changedSinceReviewed:r?await h(r,t):[]};return await u(a),a});return await m(),r},touch:e=>d(e,e=>({...e,lastViewedAt:Date.now()})),setChangedSinceReviewed:(e,t)=>d(e,e=>({...e,changedSinceReviewed:t})),setSharedComment:(e,t)=>d(e,e=>({...e,sharedComment:t})),setAnalyzedResult:(e,t,n)=>f(e,e=>({...e,analyzedBy:{...e.analyzedBy,[t]:n}})),setReviewData:(e,t)=>f(e,e=>({...e,reviews:t})),async setLlmSession(e,t){await o(e,async()=>{let n=await l(e);if(!n)return;let r=t;await u({...n,llmSession:r,sizeBytes:Oe(n.diff,n.analyzedBy,r)})}),await m()},async listRecent(e){return(await p()).sort((e,t)=>t.lastViewedAt-e.lastViewedAt).slice(0,e)},async listMatching(e){let t=(await p()).filter(e);return(await Promise.all(t.map(async e=>{let t=await c(e.key);return t&&Ae(e,t)}))).filter(e=>e!==void 0)}}}var Me=`file-content:`;function Ne(e,t,n){return`${Me}${e}:${t}:${n}`}function Pe(e){return{async get(t,n,r){let i=await e.getItem(Ne(t,n,r));return typeof i==`string`?i:void 0},async set(t,n,r,i){await e.setItem(Ne(t,n,r),i)}}}var Fe=`pulls:`;function Ie(e,t){return`${Fe}${e}/${t}`}function Le(e,t=30){async function n(t,n){let r=await e.getItem(Ie(t,n));if(r==null)return;let i=w(Ee,r);return i.success?i.output:void 0}async function r(t=1/0){let n=await e.getKeys(Fe),r=[];for(let{value:t}of await e.getItems(n)){let e=w(Ee,t);e.success&&r.push(e.output)}return r.sort((e,t)=>t.lastViewedAt-e.lastViewedAt).slice(0,t)}return{get:n,listRecent:r,async set(n,i,a){await e.setItem(Ie(n,i),{owner:n,repo:i,page:a,lastViewedAt:Date.now()});let o=(await r()).slice(t);await Promise.all(o.map(t=>e.removeItem(Ie(t.owner,t.repo))))},async touch(t,r){let i=await n(t,r);i&&await e.setItem(Ie(t,r),{...i,lastViewedAt:Date.now()})}}}var Re=`review:`;function ze(e){return`${Re}${e}`}function Be(e){return{async get(t){if(t.length===0)return new Set;let n=new Set;for(let{value:r}of await e.getItems(t.map(ze))){let e=w(Te,r);e.success&&n.add(e.output.sha)}return n},async set(t,n){let r=Date.now();await Promise.all(t.map(t=>n?e.setItem(ze(t),{sha:t,reviewedAt:r}):e.removeItem(ze(t))))},async prune(t){let n=(await e.getKeys(Re)).filter(e=>!t.has(e.slice(7)));await Promise.all(n.map(t=>e.removeItem(t)))}}}function Ve(e,t){let n=Be(e);return{diffs:je(e,n,t),reviewMarks:n,fileContents:Pe(e),pullRequestLists:Le(e)}}var He=/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,Ue=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,We=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/;function Ge(e,t){if(e===`__proto__`||e===`constructor`&&t&&typeof t==`object`&&`prototype`in t){Ke(e);return}return t}function Ke(e){console.warn(`[destr] Dropping "${e}" key to prevent prototype pollution.`)}function qe(e,t={}){if(typeof e!=`string`)return e;if(e[0]===`"`&&e[e.length-1]===`"`&&e.indexOf(`\\`)===-1)return e.slice(1,-1);let n=e.trim();if(n.length<=9)switch(n.toLowerCase()){case`true`:return!0;case`false`:return!1;case`undefined`:return;case`null`:return null;case`nan`:return NaN;case`infinity`:return 1/0;case`-infinity`:return-1/0}if(!We.test(e)){if(t.strict)throw SyntaxError(`[destr] Invalid JSON`);return e}try{if(He.test(e)||Ue.test(e)){if(t.strict)throw Error(`[destr] Possible prototype pollution`);return JSON.parse(e,Ge)}return JSON.parse(e)}catch(n){if(t.strict)throw n;return e}}function Je(e){return!e||typeof e.then!=`function`?Promise.resolve(e):e}function F(e,...t){try{return Je(e(...t))}catch(e){return Promise.reject(e)}}function Ye(e){let t=typeof e;return e===null||t!==`object`&&t!==`function`}function Xe(e){let t=Object.getPrototypeOf(e);return!t||t.isPrototypeOf(Object)}function Ze(e){if(Ye(e))return String(e);if(Xe(e)||Array.isArray(e))return JSON.stringify(e);if(typeof e.toJSON==`function`)return Ze(e.toJSON());throw Error(`[unstorage] Cannot stringify value!`)}var Qe=`base64:`;function $e(e){return typeof e==`string`?e:Qe+nt(e)}function et(e){return typeof e!=`string`||!e.startsWith(Qe)?e:tt(e.slice(7))}function tt(e){return globalThis.Buffer?Buffer.from(e,`base64`):Uint8Array.from(globalThis.atob(e),e=>e.codePointAt(0))}function nt(e){return globalThis.Buffer?Buffer.from(e).toString(`base64`):globalThis.btoa(String.fromCodePoint(...e))}function I(e){return e&&e.split(`?`)[0]?.replace(/[/\\]/g,`:`).replace(/:+/g,`:`).replace(/^:|:$/g,``)||``}function rt(...e){return I(e.join(`:`))}function it(e){return e=I(e),e?e+`:`:``}function at(e,t){if(t===void 0)return!0;let n=0,r=e.indexOf(`:`);for(;r>-1;)n++,r=e.indexOf(`:`,r+1);return n<=t}function ot(e,t){return t?e.startsWith(t)&&e[e.length-1]!==`$`:e[e.length-1]!==`$`}function st(e){return e}var ct=`memory`,lt=st(()=>{let e=new Map;return{name:ct,getInstance:()=>e,hasItem(t){return e.has(t)},getItem(t){return e.get(t)??null},getItemRaw(t){return e.get(t)??null},setItem(t,n){e.set(t,n)},setItemRaw(t,n){e.set(t,n)},removeItem(t){e.delete(t)},getKeys(){return[...e.keys()]},clear(){e.clear()},dispose(){e.clear()}}});function ut(e={}){let t={mounts:{"":e.driver||lt()},mountpoints:[``],watching:!1,watchListeners:[],unwatch:{}},n=e=>{for(let n of t.mountpoints)if(e.startsWith(n))return{base:n,relativeKey:e.slice(n.length),driver:t.mounts[n]};return{base:``,relativeKey:e,driver:t.mounts[``]}},r=(e,n)=>t.mountpoints.filter(t=>t.startsWith(e)||n&&e.startsWith(t)).map(n=>({relativeBase:e.length>n.length?e.slice(n.length):void 0,mountpoint:n,driver:t.mounts[n]})),i=(e,n)=>{if(t.watching){n=I(n);for(let r of t.watchListeners)r(e,n)}},a=async()=>{if(!t.watching){t.watching=!0;for(let e in t.mounts)t.unwatch[e]=await dt(t.mounts[e],i,e)}},o=async()=>{if(t.watching){for(let e in t.unwatch)await t.unwatch[e]();t.unwatch={},t.watching=!1}},s=(e,t,r)=>{let i=new Map,a=e=>{let t=i.get(e.base);return t||(t={driver:e.driver,base:e.base,items:[]},i.set(e.base,t)),t};for(let r of e){let e=typeof r==`string`,i=I(e?r:r.key),o=e?void 0:r.value,s=e||!r.options?t:{...t,...r.options},c=n(i);a(c).items.push({key:i,value:o,relativeKey:c.relativeKey,options:s})}return Promise.all([...i.values()].map(e=>r(e))).then(e=>e.flat())},c={hasItem(e,t={}){e=I(e);let{relativeKey:r,driver:i}=n(e);return F(i.hasItem,r,t)},getItem(e,t={}){e=I(e);let{relativeKey:r,driver:i}=n(e);return F(i.getItem,r,t).then(e=>qe(e))},getItems(e,t={}){return s(e,t,e=>e.driver.getItems?F(e.driver.getItems,e.items.map(e=>({key:e.relativeKey,options:e.options})),t).then(t=>t.map(t=>({key:rt(e.base,t.key),value:qe(t.value)}))):Promise.all(e.items.map(t=>F(e.driver.getItem,t.relativeKey,t.options).then(e=>({key:t.key,value:qe(e)})))))},getItemRaw(e,t={}){e=I(e);let{relativeKey:r,driver:i}=n(e);return i.getItemRaw?F(i.getItemRaw,r,t):F(i.getItem,r,t).then(e=>et(e))},async setItem(e,t,r={}){if(t===void 0)return c.removeItem(e);e=I(e);let{relativeKey:a,driver:o}=n(e);o.setItem&&(await F(o.setItem,a,Ze(t),r),o.watch||i(`update`,e))},async setItems(e,t){await s(e,t,async e=>{if(e.driver.setItems)return F(e.driver.setItems,e.items.map(e=>({key:e.relativeKey,value:Ze(e.value),options:e.options})),t);e.driver.setItem&&await Promise.all(e.items.map(t=>F(e.driver.setItem,t.relativeKey,Ze(t.value),t.options)))})},async setItemRaw(e,t,r={}){if(t===void 0)return c.removeItem(e,r);e=I(e);let{relativeKey:a,driver:o}=n(e);if(o.setItemRaw)await F(o.setItemRaw,a,t,r);else if(o.setItem)await F(o.setItem,a,$e(t),r);else return;o.watch||i(`update`,e)},async removeItem(e,t={}){typeof t==`boolean`&&(t={removeMeta:t}),e=I(e);let{relativeKey:r,driver:a}=n(e);a.removeItem&&(await F(a.removeItem,r,t),(t.removeMeta||t.removeMata)&&await F(a.removeItem,r+`$`,t),a.watch||i(`remove`,e))},async getMeta(e,t={}){typeof t==`boolean`&&(t={nativeOnly:t}),e=I(e);let{relativeKey:r,driver:i}=n(e),a=Object.create(null);if(i.getMeta&&Object.assign(a,await F(i.getMeta,r,t)),!t.nativeOnly){let e=await F(i.getItem,r+`$`,t).then(e=>qe(e));e&&typeof e==`object`&&(typeof e.atime==`string`&&(e.atime=new Date(e.atime)),typeof e.mtime==`string`&&(e.mtime=new Date(e.mtime)),Object.assign(a,e))}return a},setMeta(e,t,n={}){return this.setItem(e+`$`,t,n)},removeMeta(e,t={}){return this.removeItem(e+`$`,t)},async getKeys(e,t={}){e=it(e);let n=r(e,!0),i=[],a=[],o=!0;for(let e of n){e.driver.flags?.maxDepth||(o=!1);let n=await F(e.driver.getKeys,e.relativeBase,t);for(let t of n){let n=e.mountpoint+I(t);i.some(e=>n.startsWith(e))||a.push(n)}i=[e.mountpoint,...i.filter(t=>!t.startsWith(e.mountpoint))]}let s=t.maxDepth!==void 0&&!o;return a.filter(n=>(!s||at(n,t.maxDepth))&&ot(n,e))},async clear(e,t={}){e=it(e),await Promise.all(r(e,!1).map(async e=>{if(e.driver.clear)return F(e.driver.clear,e.relativeBase,t);if(e.driver.removeItem){let n=await e.driver.getKeys(e.relativeBase||``,t);return Promise.all(n.map(n=>e.driver.removeItem(n,t)))}}))},async dispose(){await Promise.all(Object.values(t.mounts).map(e=>ft(e)))},async watch(e){return await a(),t.watchListeners.push(e),async()=>{t.watchListeners=t.watchListeners.filter(t=>t!==e),t.watchListeners.length===0&&await o()}},async unwatch(){t.watchListeners=[],await o()},mount(e,n){if(e=it(e),e&&t.mounts[e])throw Error(`already mounted at ${e}`);return e&&(t.mountpoints.push(e),t.mountpoints.sort((e,t)=>t.length-e.length)),t.mounts[e]=n,t.watching&&Promise.resolve(dt(n,i,e)).then(n=>{t.unwatch[e]=n}).catch(console.error),c},async unmount(e,n=!0){e=it(e),e&&t.mounts[e]&&(t.watching&&e in t.unwatch&&(t.unwatch[e]?.(),delete t.unwatch[e]),n&&await ft(t.mounts[e]),t.mountpoints=t.mountpoints.filter(t=>t!==e),delete t.mounts[e])},getMount(e=``){e=I(e)+`:`;let t=n(e);return{driver:t.driver,base:t.base}},getMounts(e=``,t={}){return e=I(e),r(e,t.parents).map(e=>({driver:e.driver,base:e.mountpoint}))},keys:(e,t={})=>c.getKeys(e,t),get:(e,t={})=>c.getItem(e,t),set:(e,t,n={})=>c.setItem(e,t,n),has:(e,t={})=>c.hasItem(e,t),del:(e,t={})=>c.removeItem(e,t),remove:(e,t={})=>c.removeItem(e,t)};return c}function dt(e,t,n){return e.watch?e.watch((e,r)=>t(e,n+r)):()=>{}}async function ft(e){typeof e.dispose==`function`&&await F(e.dispose)}function pt(e){return e}function L(e){return new Promise((t,n)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>n(e.error)})}function mt(e,t){let n,r=()=>{if(n)return n;let r=indexedDB.open(e);return r.onupgradeneeded=()=>r.result.createObjectStore(t),n=L(r),n.then(e=>{e.onclose=()=>n=void 0},()=>{n=void 0}),n};return(e,n)=>r().then(r=>n(r.transaction(t,e).objectStore(t)))}var ht;function R(){return ht||=mt(`keyval-store`,`keyval`),ht}function gt(e,t=R()){return t(`readonly`,t=>L(t.get(e)))}function _t(e,t,n=R()){return n(`readwrite`,n=>(n.put(t,e),L(n.transaction)))}function vt(e,t=R()){return t(`readwrite`,t=>(t.delete(e),L(t.transaction)))}function yt(e=R()){return e(`readwrite`,e=>(e.clear(),L(e.transaction)))}function bt(e,t){return e.openCursor().onsuccess=function(){this.result&&(t(this.result),this.result.continue())},L(e.transaction)}function xt(e=R()){return e(`readonly`,e=>{if(e.getAllKeys)return L(e.getAllKeys());let t=[];return bt(e,e=>t.push(e.key)).then(()=>t)})}var St=`idb-keyval`,Ct=pt((e={})=>{let t=e.base&&e.base.length>0?`${e.base}:`:``,n=e=>t+e,r;return e.dbName&&e.storeName&&(r=mt(e.dbName,e.storeName)),{name:St,options:e,async hasItem(e){return await gt(n(e),r)!==void 0},async getItem(e){return await gt(n(e),r)??null},async getItemRaw(e){return await gt(n(e),r)??null},setItem(e,t){return _t(n(e),t,r)},setItemRaw(e,t){return _t(n(e),t,r)},removeItem(e){return vt(n(e),r)},getKeys(){return xt(r)},clear(){return yt(r)}}});function wt(){return Ve(ut({driver:Ct({dbName:`diffs-cache`,storeName:`cache`})}))}var Tt=Symbol(`app-context`),Et={githubToken:async()=>g.value.githubToken||void 0};function Dt(e,t={cache:wt(),credentials:Et,llm:O}){e.provide(Tt,t)}function Ot(){let e=u(Tt);if(!e)throw Error(`useAppContext() called outside an app with installAppContext()`);return e}var kt=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},At={};function jt(t,n){let r=o(`RouterView`);return e(),s(r,null,{default:ee(({Component:t,route:n})=>[(e(),s(l(t),{key:n.path}))]),_:1})}var Mt=kt(At,[[`render`,jt]]),z=typeof document<`u`;function Nt(e){return typeof e==`object`||`displayName`in e||`props`in e||`__vccOpts`in e}function Pt(e){return e.__esModule||e[Symbol.toStringTag]===`Module`||e.default&&Nt(e.default)}var B=Object.assign;function Ft(e,t){let n={};for(let r in t){let i=t[r];n[r]=H(i)?i.map(e):e(i)}return n}var V=()=>{},H=Array.isArray;function It(e,t){let n={};for(let r in e)n[r]=r in t?t[r]:e[r];return n}var Lt=/#/g,Rt=/&/g,zt=/\//g,Bt=/=/g,Vt=/\?/g,Ht=/\+/g,Ut=/%5B/g,Wt=/%5D/g,Gt=/%5E/g,Kt=/%60/g,qt=/%7B/g,Jt=/%7C/g,Yt=/%7D/g,Xt=/%20/g;function Zt(e){return e==null?``:encodeURI(``+e).replace(Jt,`|`).replace(Ut,`[`).replace(Wt,`]`)}function Qt(e){return Zt(e).replace(qt,`{`).replace(Yt,`}`).replace(Gt,`^`)}function $t(e){return Zt(e).replace(Ht,`%2B`).replace(Xt,`+`).replace(Lt,`%23`).replace(Rt,`%26`).replace(Kt,"`").replace(qt,`{`).replace(Yt,`}`).replace(Gt,`^`)}function en(e){return $t(e).replace(Bt,`%3D`)}function tn(e){return Zt(e).replace(Lt,`%23`).replace(Vt,`%3F`)}function nn(e){return tn(e).replace(zt,`%2F`)}function U(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var rn=/\/$/,an=e=>e.replace(rn,``);function on(e,t,n=`/`){let r,i={},a=``,o=``,s=t.indexOf(`#`),c=t.indexOf(`?`);return c=s>=0&&c>s?-1:c,c>=0&&(r=t.slice(0,c),a=t.slice(c,s>0?s:t.length),i=e(a.slice(1))),s>=0&&(r||=t.slice(0,s),o=t.slice(s,t.length)),r=pn(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:U(o)}}function sn(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function cn(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function ln(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&W(t.matched[r],n.matched[i])&&un(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function W(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function un(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!dn(e[n],t[n]))return!1;return!0}function dn(e,t){return H(e)?fn(e,t):H(t)?fn(t,e):e?.valueOf()===t?.valueOf()}function fn(e,t){return H(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function pn(e,t){if(e.startsWith(`/`))return e;if(!e)return t;let n=t.split(`/`),r=e.split(`/`),i=r[r.length-1];(i===`..`||i===`.`)&&r.push(``);let a=n.length-1,o,s;for(o=0;o<r.length;o++)if(s=r[o],s!==`.`){if(s===`..`)a>1&&a--;else break}return n.slice(0,a).join(`/`)+`/`+r.slice(o).join(`/`)}var G={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0},mn=function(e){return e.pop=`pop`,e.push=`push`,e}({}),hn=function(e){return e.back=`back`,e.forward=`forward`,e.unknown=``,e}({});function gn(e){if(!e){if(z){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^\/]+/,``)}else e=`/`}return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),an(e)}var _n=/^[^#]+#/;function vn(e,t){return e.replace(_n,`#`)+t}function yn(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var bn=()=>({left:window.scrollX,top:window.scrollY});function xn(e){let t;if(`el`in e){let n=e.el,r=typeof n==`string`&&n.startsWith(`#`),i=typeof n==`string`?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!i)return;t=yn(i,e)}else t=e;`scrollBehavior`in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left==null?window.scrollX:t.left,t.top==null?window.scrollY:t.top)}function Sn(e,t){return(history.state?history.state.position-t:-1)+e}var Cn=new Map;function wn(e,t){Cn.set(e,t)}function Tn(e){let t=Cn.get(e);return Cn.delete(e),t}function En(e){return typeof e==`string`||e&&typeof e==`object`}function Dn(e){return typeof e==`string`||typeof e==`symbol`}var K=function(e){return e[e.MATCHER_NOT_FOUND=1]=`MATCHER_NOT_FOUND`,e[e.NAVIGATION_GUARD_REDIRECT=2]=`NAVIGATION_GUARD_REDIRECT`,e[e.NAVIGATION_ABORTED=4]=`NAVIGATION_ABORTED`,e[e.NAVIGATION_CANCELLED=8]=`NAVIGATION_CANCELLED`,e[e.NAVIGATION_DUPLICATED=16]=`NAVIGATION_DUPLICATED`,e}({}),On=Symbol(``);K.MATCHER_NOT_FOUND,K.NAVIGATION_GUARD_REDIRECT,K.NAVIGATION_ABORTED,K.NAVIGATION_CANCELLED,K.NAVIGATION_DUPLICATED;function q(e,t){return B(Error(),{type:e,[On]:!0},t)}function J(e,t){return e instanceof Error&&On in e&&(t==null||!!(e.type&t))}function kn(e){let t={};if(e===``||e===`?`)return t;let n=(e[0]===`?`?e.slice(1):e).split(`&`);for(let e=0;e<n.length;++e){let r=n[e].replace(Ht,` `),i=r.indexOf(`=`),a=U(i<0?r:r.slice(0,i)),o=i<0?null:U(r.slice(i+1));if(a in t){let e=t[a];H(e)||(e=t[a]=[e]),e.push(o)}else t[a]=o}return t}function An(e){let t=``;for(let n in e){let r=e[n];if(n=en(n),r==null){r!==void 0&&(t+=(t.length?`&`:``)+n);continue}(H(r)?r.map(e=>e&&$t(e)):[r&&$t(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function jn(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=H(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}var Mn=Symbol(``),Nn=Symbol(``),Pn=Symbol(``),Fn=Symbol(``),In=Symbol(``);function Y(){let e=[];function t(t){return e.push(t),()=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function X(e,t,n,r,i,a=e=>e()){let o=r&&(r.enterCallbacks[i]=r.enterCallbacks[i]||[]);return()=>new Promise((s,c)=>{let l=e=>{e===!1?c(q(K.NAVIGATION_ABORTED,{from:n,to:t})):e instanceof Error?c(e):En(e)?c(q(K.NAVIGATION_GUARD_REDIRECT,{from:t,to:e})):(o&&r.enterCallbacks[i]===o&&typeof e==`function`&&o.push(e),s())},u=a(()=>e.call(r&&r.instances[i],t,n,l)),d=Promise.resolve(u);e.length<3&&(d=d.then(l)),d.catch(e=>c(e))})}function Ln(e,t,n,r,i=e=>e()){let a=[];for(let o of e)for(let e in o.components){let s=o.components[e];if(t===`beforeRouteEnter`||o.instances[e]){if(Nt(s)){let c=(s.__vccOpts||s)[t];c&&a.push(X(c,n,r,o,e,i))}else{let c=s();a.push(()=>c.then(a=>{if(!a)throw Error(`Couldn't resolve component "${e}" at "${o.path}"`);let s=Pt(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&X(c,n,r,o,e,i)()}))}}}return a}function Rn(e,t){let n=[],r=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;o<a;o++){let a=t.matched[o];a&&(e.matched.find(e=>W(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>W(e,s))||i.push(s))}return[n,r,i]}var zn=()=>location.protocol+`//`+location.host;function Bn(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),cn(n,``)}return cn(n,e)+r+i}function Vn(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=Bn(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:mn.pop,direction:u?u>0?hn.forward:hn.back:hn.unknown})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){if(document.visibilityState===`hidden`){let{history:e}=window;if(!e.state)return;e.replaceState(B({},e.state,{scroll:bn()}),``)}}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u),document.removeEventListener(`visibilitychange`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),document.addEventListener(`visibilitychange`,u),{pauseListeners:c,listen:l,destroy:d}}function Hn(e,t,n,r=!1,i=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:i?bn():null}}function Un(e){let{history:t,location:n}=window,r={value:Bn(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:zn()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){a(e,B({},t.state,Hn(i.value.back,e,i.value.forward,!0),n,{position:i.value.position}),!0),r.value=e}function s(e,n){let o=B({},i.value,t.state,{forward:e,scroll:bn()});a(o.current,o,!0),a(e,B({},Hn(r.value,e,null),{position:o.position+1},n),!1),r.value=e}return{location:r,state:i,push:s,replace:o}}function Wn(e){e=gn(e);let t=Un(e),n=Vn(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=B({location:``,base:e,go:r,createHref:vn.bind(null,e)},t,n);return Object.defineProperty(i,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,"state",{enumerable:!0,get:()=>t.state.value}),i}var Z=function(e){return e[e.Static=0]=`Static`,e[e.Param=1]=`Param`,e[e.Group=2]=`Group`,e}({}),Q=function(e){return e[e.Static=0]=`Static`,e[e.Param=1]=`Param`,e[e.ParamRegExp=2]=`ParamRegExp`,e[e.ParamRegExpEnd=3]=`ParamRegExpEnd`,e[e.EscapeNext=4]=`EscapeNext`,e}(Q||{}),Gn={type:Z.Static,value:``},Kn=/[a-zA-Z0-9_]/;function qn(e){if(!e)return[[]];if(e===`/`)return[[Gn]];if(!e.startsWith(`/`))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=Q.Static,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===Q.Static?a.push({type:Z.Static,value:l}):n===Q.Param||n===Q.ParamRegExp||n===Q.ParamRegExpEnd?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:Z.Param,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;s<e.length;){if(c=e[s++],c===`\\`&&n!==Q.ParamRegExp){r=n,n=Q.EscapeNext;continue}switch(n){case Q.Static:c===`/`?(l&&d(),o()):c===`:`?(d(),n=Q.Param):f();break;case Q.EscapeNext:f(),n=r;break;case Q.Param:c===`(`?n=Q.ParamRegExp:Kn.test(c)?f():(d(),n=Q.Static,c!==`*`&&c!==`?`&&c!==`+`&&s--);break;case Q.ParamRegExp:c===`)`?u[u.length-1]==`\\`?u=u.slice(0,-1)+c:n=Q.ParamRegExpEnd:u+=c;break;case Q.ParamRegExpEnd:d(),n=Q.Static,c!==`*`&&c!==`?`&&c!==`+`&&s--,u=``;break;default:t(`Unknown state`)}}return n===Q.ParamRegExp&&t(`Unfinished custom RegExp for param "${l}"`),d(),o(),i}var Jn=`[^/]+?`,Yn={sensitive:!1,strict:!1,start:!0,end:!0},$=function(e){return e[e._multiplier=10]=`_multiplier`,e[e.Root=90]=`Root`,e[e.Segment=40]=`Segment`,e[e.SubSegment=30]=`SubSegment`,e[e.Static=40]=`Static`,e[e.Dynamic=20]=`Dynamic`,e[e.BonusCustomRegExp=10]=`BonusCustomRegExp`,e[e.BonusWildcard=-50]=`BonusWildcard`,e[e.BonusRepeatable=-20]=`BonusRepeatable`,e[e.BonusOptional=-8]=`BonusOptional`,e[e.BonusStrict=.7000000000000001]=`BonusStrict`,e[e.BonusCaseSensitive=.25]=`BonusCaseSensitive`,e}($||{}),Xn=/[.+*?^${}()[\]/\\]/g;function Zn(e,t){let n=B({},Yn,t),r=[],i=n.start?`^`:``,a=[];for(let t of e){let e=t.length?[]:[$.Root];n.strict&&!t.length&&(i+=`/`);for(let r=0;r<t.length;r++){let o=t[r],s=$.Segment+(n.sensitive?$.BonusCaseSensitive:0);if(o.type===Z.Static)r||(i+=`/`),i+=o.value.replace(Xn,`\\$&`),s+=$.Static;else if(o.type===Z.Param){let{value:e,repeatable:n,optional:c,regexp:l}=o;a.push({name:e,repeatable:n,optional:c});let u=l||Jn;if(u!==Jn){s+=$.BonusCustomRegExp;try{`${u}`}catch(t){throw Error(`Invalid custom RegExp for param "${e}" (${u}): `+t.message)}}let d=n?`((?:${u})(?:/(?:${u}))*)`:`(${u})`;r||(d=c&&t.length<2?`(?:/${d})`:`/`+d),c&&(d+=`?`),i+=d,s+=$.Dynamic,c&&(s+=$.BonusOptional),n&&(s+=$.BonusRepeatable),u===`.*`&&(s+=$.BonusWildcard)}e.push(s)}r.push(e)}if(n.strict&&n.end){let e=r.length-1;r[e][r[e].length-1]+=$.BonusStrict}n.strict||(i+=`/?`),n.end?i+=`$`:n.strict&&!i.endsWith(`/`)&&(i+=`(?:/|$)`);let o=new RegExp(i,n.sensitive?``:`i`);function s(e){let t=e.match(o),n={};if(!t)return null;for(let e=1;e<t.length;e++){let r=t[e]||``,i=a[e-1];n[i.name]=r&&i.repeatable?r.split(`/`):r}return n}function c(t){let n=``,r=!1;for(let i of e){(!r||!n.endsWith(`/`))&&(n+=`/`),r=!1;for(let e of i)if(e.type===Z.Static)n+=e.value;else if(e.type===Z.Param){let{value:a,repeatable:o,optional:s}=e,c=a in t?t[a]:``;if(H(c)&&!o)throw Error(`Provided param "${a}" is an array but it is not repeatable (* or + modifiers)`);let l=H(c)?c.join(`/`):c;if(!l){if(s)i.length<2&&(n.endsWith(`/`)?n=n.slice(0,-1):r=!0);else throw Error(`Missing required param "${a}"`)}n+=l}}return n||`/`}return{re:o,score:r,keys:a,parse:s,stringify:c}}function Qn(e,t){let n=0;for(;n<e.length&&n<t.length;){let r=t[n]-e[n];if(r)return r;n++}return e.length<t.length?e.length===1&&e[0]===$.Static+$.Segment?-1:1:e.length>t.length?t.length===1&&t[0]===$.Static+$.Segment?1:-1:0}function $n(e,t){let n=0,r=e.score,i=t.score;for(;n<r.length&&n<i.length;){let e=Qn(r[n],i[n]);if(e)return e;n++}if(Math.abs(i.length-r.length)===1){if(er(r))return 1;if(er(i))return-1}return i.length-r.length}function er(e){let t=e[e.length-1];return e.length>0&&t[t.length-1]<0}var tr={strict:!1,end:!0,sensitive:!1};function nr(e,t,n){let r=B(Zn(qn(e.path),n),{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function rr(e,t){let n=[],r=new Map;t=It(tr,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=ar(e);s.aliasOf=r&&r.record;let l=It(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push(ar(B({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,f;for(let t of u){let{path:u}=t;if(n&&u[0]!==`/`){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=nr(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!sr(d)&&o(e.name)),dr(d)&&c(d),s.children){let e=s.children;for(let t=0;t<e.length;t++)a(e[t],d,r&&r.children[t])}r||=d}return f?()=>{o(f)}:V}function o(e){if(Dn(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=lr(e,n);n.splice(t,0,e),e.record.name&&!sr(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw q(K.MATCHER_NOT_FOUND,{location:e});s=i.record.name,a=B(ir(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&ir(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name);else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw q(K.MATCHER_NOT_FOUND,{location:e,currentLocation:t});s=i.record.name,a=B({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:cr(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function ir(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function ar(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:or(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function or(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function sr(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function cr(e){return e.reduce((e,t)=>B(e,t.meta),{})}function lr(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;$n(e,t[i])<0?r=i:n=i+1}let i=ur(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function ur(e){let t=e;for(;t=t.parent;)if(dr(t)&&$n(e,t)===0)return t}function dr({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function fr(e){let t=u(Pn),n=u(Fn),i=r(()=>{let n=d(e.to);return t.resolve(n)}),a=r(()=>{let{matched:e}=i.value,{length:t}=e,r=e[t-1],a=n.matched;if(!r||!a.length)return-1;let o=a.findIndex(W.bind(null,r));if(o>-1)return o;let s=_r(e[t-2]);return t>1&&_r(r)===s&&a[a.length-1].path!==s?a.findIndex(W.bind(null,e[t-2])):o}),o=r(()=>a.value>-1&&gr(n.params,i.value.params)),s=r(()=>a.value>-1&&a.value===n.matched.length-1&&un(n.params,i.value.params));function c(n={}){if(hr(n)){let n=t[d(e.replace)?`replace`:`push`](d(e.to)).catch(V);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>n),n}return Promise.resolve()}return{route:i,href:r(()=>i.value.href),isActive:o,isExactActive:s,navigate:c}}function pr(e){return e.length===1?e[0]:e}var mr=h({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:fr,setup(e,{slots:t}){let n=i(fr(e)),{options:a}=u(Pn),o=r(()=>({[vr(e.activeClass,a.linkActiveClass,`router-link-active`)]:n.isActive,[vr(e.exactActiveClass,a.linkExactActiveClass,`router-link-exact-active`)]:n.isExactActive}));return()=>{let r=t.default&&pr(t.default(n));return e.custom?r:f(`a`,{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},r)}}});function hr(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(e.button===void 0||e.button===0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function gr(e,t){for(let n in t){let r=t[n],i=e[n];if(typeof r==`string`){if(r!==i)return!1}else if(!H(i)||i.length!==r.length||r.some((e,t)=>e.valueOf()!==i[t].valueOf()))return!1}return!0}function _r(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var vr=(e,t,n)=>e??t??n,yr=h({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){let i=u(In),o=r(()=>e.route||i.value),s=u(Nn,0),l=r(()=>{let e=d(s),{matched:t}=o.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),m=r(()=>o.value.matched[l.value]);a(Nn,r(()=>l.value+1)),a(Mn,m),a(In,o);let h=c();return p(()=>[h.value,m.value,e.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!W(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let r=o.value,i=e.name,a=m.value,s=a&&a.components[i];if(!s)return br(n.default,{Component:s,route:r});let c=a.props[i],l=c?c===!0?r.params:typeof c==`function`?c(r):c:null,u=f(s,B({},l,t,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(a.instances[i]=null)},ref:h}));return br(n.default,{Component:u,route:r})||u}}});function br(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var xr=yr;function Sr(e){let r=rr(e.routes,e),i=e.parseQuery||kn,a=e.stringifyQuery||An,o=e.history,s=Y(),c=Y(),l=Y(),u=m(G),f=G;z&&e.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let p=Ft.bind(null,e=>``+e),h=Ft.bind(null,nn),ee=Ft.bind(null,U);function te(e,t){let n,i;return Dn(e)?(n=r.getRecordMatcher(e),i=t):i=e,r.addRoute(i,n)}function ne(e){let t=r.getRecordMatcher(e);t&&r.removeRoute(t)}function re(){return r.getRoutes().map(e=>e.record)}function g(e){return!!r.getRecordMatcher(e)}function ie(e,t){if(t=B({},t||u.value),typeof e==`string`){let n=on(i,e,t.path),a=r.resolve({path:n.path},t),s=o.createHref(n.fullPath);return B(n,a,{params:ee(a.params),hash:U(n.hash),redirectedFrom:void 0,href:s})}let n;if(e.path!=null)n=B({},e,{path:on(i,e.path,t.path).path});else{let r=B({},e.params);for(let e in r)r[e]??delete r[e];n=B({},e,{params:h(r)}),t.params=h(t.params)}let s=r.resolve(n,t),c=e.hash||``;s.params=p(ee(s.params));let l=sn(a,B({},e,{hash:Qt(c),path:s.path})),d=o.createHref(l);return B({fullPath:l,hash:c,query:a===An?jn(e.query):e.query||{}},s,{redirectedFrom:void 0,href:d})}function _(e){return typeof e==`string`?on(i,e,u.value.path):B({},e)}function v(e,t){if(f!==e)return q(K.NAVIGATION_CANCELLED,{from:t,to:e})}function y(e){return x(e)}function ae(e){return y(B(_(e),{replace:!0}))}function b(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=_(i):{path:i},i.params={}),B({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function x(e,t){let n=f=ie(e),r=u.value,i=e.state,o=e.force,s=e.replace===!0,c=b(n,r);if(c)return x(B(_(c),{state:typeof c==`object`?B({},i,c.state):i,force:o,replace:s}),t||n);let l=n;l.redirectedFrom=t;let d;return!o&&ln(a,r,n)&&(d=q(K.NAVIGATION_DUPLICATED,{to:l,from:r}),fe(r,r,!0,!1)),(d?Promise.resolve(d):ce(l,r)).catch(e=>J(e)?J(e,K.NAVIGATION_GUARD_REDIRECT)?e:O(e):D(e,l,r)).then(e=>{if(e){if(J(e,K.NAVIGATION_GUARD_REDIRECT))return x(B({replace:s},_(e.to),{state:typeof e.to==`object`?B({},i,e.to.state):i,force:o}),t||l)}else e=ue(l,r,!0,s,i);return le(l,r,e),e})}function oe(e,t){let n=v(e,t);return n?Promise.reject(n):Promise.resolve()}function se(e){let t=A.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function ce(e,t){let n,[r,i,a]=Rn(e,t);n=Ln(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push(X(r,e,t))});let o=oe.bind(null,e,t);return n.push(o),M(n).then(()=>{n=[];for(let r of s.list())n.push(X(r,e,t));return n.push(o),M(n)}).then(()=>{n=Ln(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push(X(r,e,t))});return n.push(o),M(n)}).then(()=>{n=[];for(let r of a)if(r.beforeEnter){if(H(r.beforeEnter))for(let i of r.beforeEnter)n.push(X(i,e,t));else n.push(X(r.beforeEnter,e,t))}return n.push(o),M(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=Ln(a,`beforeRouteEnter`,e,t,se),n.push(o),M(n))).then(()=>{n=[];for(let r of c.list())n.push(X(r,e,t));return n.push(o),M(n)}).catch(e=>J(e,K.NAVIGATION_CANCELLED)?e:Promise.reject(e))}function le(e,t,n){l.list().forEach(r=>se(()=>r(e,t,n)))}function ue(e,t,n,r,i){let a=v(e,t);if(a)return a;let s=t===G,c=z?history.state:{};n&&(r||s?o.replace(e.fullPath,B({scroll:s&&c&&c.scroll},i)):o.push(e.fullPath,i)),u.value=e,fe(e,t,n,s),O()}let S;function C(){S||=o.listen((e,t,n)=>{if(!j.listening)return;let r=ie(e),i=b(r,j.currentRoute.value);if(i){x(B(i,{replace:!0,force:!0}),r).catch(V);return}f=r;let a=u.value;z&&wn(Sn(a.fullPath,n.delta),bn()),ce(r,a).catch(e=>J(e,K.NAVIGATION_ABORTED|K.NAVIGATION_CANCELLED)?e:J(e,K.NAVIGATION_GUARD_REDIRECT)?(x(B(_(e.to),{force:!0}),r).then(e=>{J(e,K.NAVIGATION_ABORTED|K.NAVIGATION_DUPLICATED)&&!n.delta&&n.type===mn.pop&&o.go(-1,!1)}).catch(V),Promise.reject()):(n.delta&&o.go(-n.delta,!1),D(e,r,a))).then(e=>{e||=ue(r,a,!1),e&&(n.delta&&!J(e,K.NAVIGATION_CANCELLED)?o.go(-n.delta,!1):n.type===mn.pop&&J(e,K.NAVIGATION_ABORTED|K.NAVIGATION_DUPLICATED)&&o.go(-1,!1)),le(r,a,e)}).catch(V)})}let w=Y(),T=Y(),E;function D(e,t,n){O(e);let r=T.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function de(){return E&&u.value!==G?Promise.resolve():new Promise((e,t)=>{w.add([e,t])})}function O(e){return E||(E=!e,C(),w.list().forEach(([t,n])=>e?n(e):t()),w.reset()),e}function fe(n,r,i,a){let{scrollBehavior:o}=e;if(!z||!o)return Promise.resolve();let s=!i&&Tn(Sn(n.fullPath,0))||(a||!i)&&history.state&&history.state.scroll||null;return t().then(()=>o(n,r,s)).then(e=>e&&xn(e)).catch(e=>D(e,n,r))}let pe=e=>o.go(e),k,A=new Set,j={currentRoute:u,listening:!0,addRoute:te,removeRoute:ne,clearRoutes:r.clearRoutes,hasRoute:g,getRoutes:re,resolve:ie,options:e,push:y,replace:ae,go:pe,back:()=>pe(-1),forward:()=>pe(1),beforeEach:s.add,beforeResolve:c.add,afterEach:l.add,onError:T.add,isReady:de,install(e){e.component(`RouterLink`,mr),e.component(`RouterView`,xr),e.config.globalProperties.$router=j,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>d(u)}),z&&!k&&u.value===G&&(k=!0,y(o.location).catch(e=>{}));let t={};for(let e in G)Object.defineProperty(t,e,{get:()=>u.value[e],enumerable:!0});e.provide(Pn,j),e.provide(Fn,n(t)),e.provide(In,u);let r=e.unmount;A.add(e),e.unmount=function(){A.delete(e),A.size<1&&(f=G,S&&S(),S=null,u.value=G,k=!1,E=!1),r()}}};function M(e){return e.reduce((e,t)=>e.then(()=>se(t)),Promise.resolve())}return j}function Cr(){return u(Pn)}function wr(e){return u(Fn)}function Tr(e){let t=e.indexOf(`...`);return t>0&&t+3<e.length?{base:e.slice(0,t),head:e.slice(t+3)}:void 0}function Er(e){let t=e.trim().match(/^([^/\s#]+)\/([^/\s#]+)#(\d+)$/);if(t)return{kind:`github-pr`,owner:t[1],repo:t[2],number:t[3]};let n=e.trim().match(/github\.com\/([^/\s]+)\/([^/\s#?]+)(?:\/(pull|commit|compare)\/([^\s#?]+)|\/pulls\/?)?(?:[/?#]|$)/);if(!n)return;let[,r=``,i=``,a,o=``]=n;if(a===`pull`){let e=o.match(/^\d+/)?.[0];return e?{kind:`github-pr`,owner:r,repo:i,number:e}:void 0}if(a===`commit`)return{kind:`github-commit`,owner:r,repo:i,sha:o.replace(/\/.*$/,``)};if(a===`compare`){let e=Tr(o);return e&&{kind:`github-compare`,owner:r,repo:i,...e}}return{kind:`github-repo`,owner:r,repo:i}}function Dr(e){let t=e=>({sourceRef:kr(e)});return[{name:`github-pr`,path:`/gh/:owner/:repo/:number(\\d+)`,component:e,props:t},{name:`github-compare`,path:`/gh/:owner/:repo/compare/:range(.+\\.\\.\\..+)`,component:e,props:t},{name:`github-commit`,path:`/gh/:owner/:repo/commit/:sha`,component:e,props:t}]}function Or(e){switch(e.kind){case`github-pr`:return`/gh/${e.owner}/${e.repo}/${e.number}`;case`github-compare`:return`/gh/${e.owner}/${e.repo}/compare/${e.base}...${e.head}`;case`github-commit`:return`/gh/${e.owner}/${e.repo}/commit/${e.sha}`;case`paste`:return;case`local`:return}}function kr(e){let t=t=>String(e.params[t]),n=t(`owner`),r=t(`repo`);switch(e.name){case`github-pr`:return{kind:`github-pr`,owner:n,repo:r,number:t(`number`)};case`github-compare`:{let e=Tr(t(`range`));return e&&{kind:`github-compare`,owner:n,repo:r,...e}}case`github-commit`:return{kind:`github-commit`,owner:n,repo:r,sha:t(`sha`)}}}function Ar(e,t){return`/gh/${e}/${t}`}function jr(e){return e.kind===`paste`||e.kind===`local`?void 0:{route:Ar(e.owner,e.repo),label:`${e.owner}/${e.repo}`}}function Mr(e){let t=Er(e);if(t)return t.kind===`github-repo`?Ar(t.owner,t.repo):Or(t)}var Nr=Sr({history:Wn(new URL(document.baseURI).pathname),routes:[{name:`home`,path:`/`,component:()=>E(()=>import(`./pages-web-BLxMupU5.js`),__vite__mapDeps([18,6,7,8,1,9,5,10,11,3,4,12,2,13,14,15,16,19,20,21,22,23]),import.meta.url)},{path:`/upload`,component:()=>E(()=>import(`./upload-DRO7bkBV.js`),__vite__mapDeps([24,6,2,25,1,11,3,4,12,0,5,7,8,9,10,13,14,15,16,17,26,27,19,20,28,23]),import.meta.url)},{path:`/gh/:owner/:repo`,component:()=>E(()=>import(`./_repo_-D3lApLQL.js`),__vite__mapDeps([29,1,6,8,7,9,25,11,3,4,12,2,0,5,10,13,14,15,16,17,30,31,20,32,22]),import.meta.url)},...Dr(()=>E(()=>import(`./diff-Cx43r-a6.js`),__vite__mapDeps([33,6,10,11,3,4,12,1,2,25,0,5,7,8,9,13,14,15,16,17,26,27,19,20,28]),import.meta.url))]});async function Pr(){let e=te(Mt).use(ie);await E(async()=>{let{installLocal:e}=await import(`./install-D-S32JY7.js`);return{installLocal:e}},__vite__mapDeps([34,6,7,10,11,3,4,12,1,2,35,13,15,36,37]),import.meta.url).then(({installLocal:t})=>t(e,Nr)),e.use(Nr).mount(`#app`)}Pr();export{mr as a,kt as c,Ot as d,ut as f,O as h,Mr as i,Dt as l,he as m,Ar as n,wr as o,Ve as p,Or as r,Cr as s,jr as t,Et as u};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./browser-agent-rpc-BXhoSh1z-DrvKG05N.js","./nanoid-Cya-tyvy.js","./diff-
|
|
2
|
-
import{$ as e,Bt as t,Dr as n,G as r,K as i,Pt as a,Q as o,U as s,Wn as c,tt as l,xn as u,yn as d}from"./vue-i18n-CGHHpbTP.js";import{i as f,w as p,x as m}from"./runtime-dom.esm-bundler-Du_ZCcVN.js";import{t as h}from"./diagnostics-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./browser-agent-rpc-BXhoSh1z-DrvKG05N.js","./nanoid-Cya-tyvy.js","./diff-CNRGXNmw.js","./vue-i18n-CGHHpbTP.js","./analyze-BgWIIbl3.js","./rolldown-runtime-Dd_uD5pT.js","./i18n-Cx8anq4V.js","./locales-SpkpwNqX.js","./preload-helper-BaNbYf_w.js","./en-CbWYrCM5.js","./source-CvnvCX42.js","./llm-Le5CPsNn.js","./useDocumentTitle-BQJCa6Lm.js","./runtime-dom.esm-bundler-Du_ZCcVN.js","./ModelPicker-CDTiUMZ3.js","./floating-ui.dom-CfpSQvPs.js","./diagnostics-wATZy2jc.js","./ActionButton-V4dY2wPS.js","./ActionIconButton-4b5xelMn.js","./local-agents-BQLn-Ppw.js","./core-messages-ClW97ZVa.js","./models-D651LTTp.js","./index-KDAJXf4E.js","./index-De-UtOit.css","./diffs-store-D3BzIMVi.js","./ChatMessage-Ccffh_8Z.js","./DisplayFileIcon-DWj5Zxib.js","./GithubAvatar-DGJrpCsX.js","./pages-ByEfDjFa.js","./rpc-backends-DYtuJyeF.js","./pages-local-CVPpEWZ_.js","./useNonce-CwUrgryd.js","./LandingHero-DWdx6_8g.js","./portalTarget-DQg8GgWm.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{$ as e,Bt as t,Dr as n,G as r,K as i,Pt as a,Q as o,U as s,Wn as c,tt as l,xn as u,yn as d}from"./vue-i18n-CGHHpbTP.js";import{i as f,w as p,x as m}from"./runtime-dom.esm-bundler-Du_ZCcVN.js";import{t as h}from"./diagnostics-wATZy2jc.js";import{a as g,r as _,t as v}from"./i18n-Cx8anq4V.js";import{T as y,f as b,x,y as S}from"./source-CvnvCX42.js";import{t as ee}from"./preload-helper-BaNbYf_w.js";import{f as C,h as te,l as ne,p as w,u as re}from"./index-KDAJXf4E.js";import{t as T}from"./nanoid-Cya-tyvy.js";import{t as ie}from"./ActionButton-V4dY2wPS.js";import{t as ae}from"./local-agents-BQLn-Ppw.js";import{a as oe,c as se,d as ce,l as le,s as ue,t as de,u as fe}from"./pages-ByEfDjFa.js";import{n as pe,t as me}from"./rpc-backends-DYtuJyeF.js";function he(e,t){if(e.stopReason===`aborted`)throw new DOMException(`Aborted`,`AbortError`);if(e.stopReason===`error`)throw e.code===`agent-session-lost`?h.agentSessionLost():Error(e.error);return{...t,agent:e.agent}}function ge(e){let t=c();return e.call(fe.agentList).then(e=>t.value=x(b(ce),e)),t}function _e(e,t){let n=()=>{let{provider:e,agent:t,agentModel:n}=_.value.llm;return e===`local-agent`&&t?{agent:t,model:n||void 0}:void 0};async function r(t,n,r){let i=e.streaming.subscribe(se,t),a={messages:[]},o=()=>{e.call(fe.agentAbort,{streamId:t}),i.cancel()};n.addEventListener(`abort`,o);try{for await(let e of i){let t=x(ue,e);if(t.kind===`messages`?a.messages=t.messages:t.kind===`result`&&(a.result=t.result),await r(t),t.kind===`end`)return he(t,a)}}finally{n.removeEventListener(`abort`,o)}throw n.aborted?new DOMException(`Aborted`,`AbortError`):Error(`The agent run ended without a result.`)}return{isSetup:()=>n()!==void 0||t.isSetup(),async analyze(i,a){let o=n();if(!o)return t.analyze(i,a);let s=a.signal??new AbortController().signal,{streamId:c}=x(S({streamId:y()}),await e.call(fe.agentAnalyze,{...o,diff:i,locale:_.value.locale})),l=await r(c,s,e=>{e.kind===`progress`?a.onProgress?.(e.progress):e.kind===`messages`&&a.onTranscript?.(e.messages)});if(!l.result)throw Error(`The agent run ended without a result.`);return{result:l.result,transcript:l.messages,agent:l.agent}},async chat(i){let a=n();if(!a)return t.chat(i);let{diff:o,session:s,text:c,signal:l,onMessages:u,onGroupingUpdate:d}=i,{streamId:f}=x(S({streamId:y()}),await e.call(fe.agentChat,{...a,diff:o,locale:_.value.locale,session:s,text:c}));return(await r(f,l,async e=>{e.kind===`messages`?u(e.messages):e.kind===`result`&&await d(e.result)})).messages}}}function E(e,t){let n=`\x1B[${e}m`,r=`\x1B[${t}m`;return((e,...t)=>{if(Array.isArray(e)&&`raw`in e){let i=e,a=``;for(let e=0;e<i.length;e++)a+=i[e],e<t.length&&(a+=String(t[e]));return`${n}${a}${r}`}return`${n}${String(e)}${r}`})}var ve={blue:E(34,39),cyan:E(36,39),gray:E(90,39),green:E(32,39),red:E(31,39),yellow:E(33,39),bold:E(1,22),dim:E(2,22),reset:E(0,0),underline:E(4,24)};function ye(e){return t=>{let n=`${e.bold(e.red(`[${t.name}]`))} ${t.message}`,r=[];return t.fix&&r.push(`${e.dim(`fix:`)} ${t.fix}`),t.sources?.length&&r.push(`${e.dim(`sources:`)} ${t.sources.join(`, `)}`),t.docs&&r.push(`${e.dim(`see:`)} ${e.cyan(t.docs)}`),r.length===0?n:[n,...r.map((t,n)=>`${e.dim(n<r.length-1?`├▶`:`╰▶`)} ${t}`)].join(`
|
|
3
3
|
`)}}var D={bus:{agentManifestChanged:`agent:manifest:changed`,agentToolRegistered:`agent:tool:registered`,agentToolUnregistered:`agent:tool:unregistered`,agentResourceRegistered:`agent:resource:registered`,agentResourceUnregistered:`agent:resource:unregistered`},client:{isTrustedUpdated:`rpc:is-trusted:updated`,error:`rpc:error`,connectionStatus:`connection:status`,connectionError:`connection:error`},broadcast:{authRevoked:`devframe:auth:revoked`,clientStateUpdated:`devframe:rpc:client-state:updated`,clientStatePatch:`devframe:rpc:client-state:patch`,streamingChunk:`devframe:streaming:chunk`,streamingEnd:`devframe:streaming:end`,streamingUploadCancel:`devframe:streaming:upload-cancel`},inPageChannel:{panelStateUpdated:`devframe:in-page:panel-state:updated`,panelStatePatch:`devframe:in-page:panel-state:patch`},postMessage:{remoteAssetsError:`devframe:remote-assets-error`,inPageChannel:`devframe:in-page-channel`}},be=ye(ve);function xe(e,{method:t=`warn`}={}){console[t](be(e))}function Se(e){return g({...e,reporters:[xe,...e.reporters??[]]})}function Ce(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var we=Math.random.bind(Math),Te=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function Ee(e=21){let t=``,n=e;for(;n--;)t+=Te[we()*64|0];return t}var De=6e4,Oe=e=>e,ke=Oe,{clearTimeout:Ae,setTimeout:je}=globalThis;function Me(e,t){let{post:n,on:r,off:i=()=>{},eventNames:a=[],serialize:o=Oe,deserialize:s=ke,resolver:c,bind:l=`rpc`,timeout:u=De,proxify:d=!0}=t,f=!1,p=new Map,m,h;async function g(e,r,i,a){if(f)throw Error(`[birpc] rpc is closed, cannot call "${e}"`);let s={m:e,a:r,t:`q`};a&&(s.o=!0);let c=async e=>n(o(e));if(i){await c(s);return}if(m)try{await m}finally{m=void 0}let{promise:l,resolve:d,reject:g}=Ce(),_=Ee();s.i=_;let v;async function y(n=s){return u>=0&&(v=je(()=>{try{if(t.onTimeoutError?.call(h,e,r)!==!0)throw Error(`[birpc] timeout on calling "${e}"`)}catch(e){g(e)}p.delete(_)},u),typeof v==`object`&&(v=v.unref?.())),p.set(_,{resolve:d,reject:g,timeoutId:v,method:e}),await c(n),l}try{t.onRequest?await t.onRequest.call(h,s,y,d):await y()}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}finally{Ae(v),p.delete(_)}return l}let _={$call:(e,...t)=>g(e,t,!1),$callOptional:(e,...t)=>g(e,t,!1,!0),$callEvent:(e,...t)=>g(e,t,!0),$callRaw:e=>g(e.method,e.args,e.event,e.optional),$rejectPendingCalls:y,get $closed(){return f},get $meta(){return t.meta},$close:v,$functions:e};h=d?new Proxy({},{get(t,n){if(Object.hasOwn(_,n))return _[n];if(n===`then`&&!a.includes(`then`)&&!(`then`in e))return;let r=(...e)=>g(n,e,!0);if(a.includes(n))return r.asEvent=r,r;let i=(...e)=>g(n,e,!1);return i.asEvent=r,i}}):_;function v(e){f=!0,p.forEach(({reject:t,method:n})=>{let r=Error(`[birpc] rpc is closed, cannot call "${n}"`);if(e)return e.cause??=r,t(e);t(r)}),p.clear(),i(b)}function y(e){let t=Array.from(p.values()).map(({method:t,reject:n})=>e?e({method:t,reject:n}):n(Error(`[birpc]: rejected pending call "${t}".`)));return p.clear(),t}async function b(r,...i){let a;try{a=s(r)}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}if(a.t===`q`){let{m:r,a:s,o:u}=a,d,f,p=await(c?c.call(h,r,e[r]):e[r]);if(u&&(p||=()=>void 0),!p)f=Error(`[birpc] function "${r}" not found`);else try{d=await p.apply(l===`rpc`?h:e,s)}catch(e){f=e}if(a.i){if(f&&t.onFunctionError&&t.onFunctionError.call(h,f,r,s)===!0)return;if(!f)try{await n(o({t:`s`,i:a.i,r:d}),...i);return}catch(e){if(f=e,t.onGeneralError?.call(h,e,r,s)!==!0)throw e}try{await n(o({t:`s`,i:a.i,e:f}),...i)}catch(e){if(t.onGeneralError?.call(h,e,r,s)!==!0)throw e}}}else{let{i:e,r:t,e:n}=a,r=p.get(e);r&&(Ae(r.timeoutId),n?r.reject(n):r.resolve(t)),p.delete(e)}}return m=r(b),h}function Ne(e,t){return t.safety?t.safety:e===`static`||e===`query`||e==null?`read`:`action`}var Pe=Object.freeze({type:`object`,additionalProperties:!0});function Fe(e){let t=e[`~standard`];if(t.jsonSchema)try{return t.jsonSchema.input({target:`draft-2020-12`})}catch{return Pe}return Pe}function Ie(e){if(!e||e.length===0)return{type:`object`,properties:{}};let t={},n=[];for(let r=0;r<e.length;r++){let i=`arg${r}`;t[i]=Fe(e[r]),n.push(i)}return{type:`object`,properties:t,required:n,additionalProperties:!1}}function Le(e,t){if(Array.isArray(e))return e;if(e==null)return[];if(typeof e!=`object`)return;let n=e;if(t!=null)return Array.from({length:t},(e,t)=>n[`arg${t}`]);if(`arg0`in n){let e=[];for(;`arg${e.length}`in n;)e.push(n[`arg${e.length}`]);return e}return Object.keys(n).length===0?[]:void 0}function Re(e,t){return Le(e,t)??[e]}function ze(e){return typeof e==`string`?`'${e}'`:new Ue().serialize(e)}var Be=` _-,;:!?.'"()[]{}@*/\\&#%\`^+<=>|~$0123456789abcdefghijklmnopqrstuvwxyz`,Ve=(function(){let e=new Uint8Array(128);for(let t=0;t<69;t++)e[Be.charCodeAt(t)]=t+1;for(let t=65;t<=90;t++)e[t]=e[t+32];return e})();function He(e,t){if(e===t)return 0;let n=Math.min(e.length,t.length),r=0;for(let i=0;i<n;i++){let n=e.charCodeAt(i),a=t.charCodeAt(i);if(n===a)continue;let o=n<128&&Ve[n]?Ve[n]:n+128,s=a<128&&Ve[a]?Ve[a]:a+128;if(o!==s)return o<s?-1:1;r===0&&(r=n>a?-1:1)}return e.length===t.length?r:e.length<t.length?-1:1}var Ue=(function(){class e{#e=new Map;compare(e,t){let n=typeof e,r=typeof t;return n===`string`&&r===`string`?He(e,t):n===`number`&&r===`number`?e-t:He(this.serialize(e,!0),this.serialize(t,!0))}serialize(e,t){if(e===null)return`null`;switch(typeof e){case`string`:return t?e:`'${e}'`;case`bigint`:return`${e}n`;case`object`:return this.$object(e);case`function`:return this.$function(e)}return String(e)}serializeObject(e){let t=Object.prototype.toString.call(e);if(t!==`[object Object]`)return this.serializeBuiltInType(t.length<10?`unknown:${t}`:t.slice(8,-1),e);let n=e.constructor,r=n===Object||n===void 0?``:n.name;if(r!==``&&globalThis[r]===n)return this.serializeBuiltInType(r,e);if(`toJSON`in e&&typeof e.toJSON==`function`){let t=e.toJSON();return r+(typeof t==`object`&&t?this.$object(t):`(${this.serialize(t)})`)}let i=Object.keys(e).sort(He),a=`${r}{`;for(let t=0;t<i.length;t++){let n=i[t];a+=`${n}:${this.serialize(e[n])}`,t<i.length-1&&(a+=`,`)}return a+`}`}serializeBuiltInType(e,t){let n=this[`$`+e];if(n)return n.call(this,t);if(typeof t.entries==`function`)return this.serializeObjectEntries(e,t.entries());throw Error(`Cannot serialize ${e}`)}serializeObjectEntries(e,t){let n=Array.from(t).sort((e,t)=>this.compare(e[0],t[0])),r=`${e}{`;for(let e=0;e<n.length;e++){let[t,i]=n[e];r+=`${this.serialize(t,!0)}:${this.serialize(i)}`,e<n.length-1&&(r+=`,`)}return r+`}`}$object(e){let t=this.#e.get(e);return t===void 0&&(this.#e.set(e,`#${this.#e.size}`),t=this.serializeObject(e),this.#e.set(e,t)),t}$function(e){let t=Function.prototype.toString.call(e);return t.slice(-15)===`[native code] }`?`${e.name||``}()[native]`:`${e.name}(${e.length})${t.replace(/\s*\n\s*/g,``)}`}$Array(e){let t=`[`;for(let n=0;n<e.length;n++)t+=this.serialize(e[n]),n<e.length-1&&(t+=`,`);return t+`]`}$Date(e){try{return`Date(${e.toISOString()})`}catch{return`Date(null)`}}$ArrayBuffer(e){return`ArrayBuffer[${new Uint8Array(e).join(`,`)}]`}$Set(e){return`Set${this.$Array(Array.from(e).sort((e,t)=>this.compare(e,t)))}`}$Map(e){return this.serializeObjectEntries(`Map`,e.entries())}}for(let t of[`Error`,`RegExp`,`URL`])e.prototype[`$`+t]=function(e){return`${t}(${e})`};for(let t of[`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`,`)}]`};for(let t of[`BigInt64Array`,`BigUint64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`n,`)}${e.length>0?`n`:``}]`};return e})(),We=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],Ge=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998],Ke=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`,O=[],qe=class{_data=new Je;_hash=new Je([...We]);_nDataBytes=0;_minBufferSize=0;finalize(e){e&&this._append(e);let t=this._nDataBytes*8,n=this._data.sigBytes*8;return this._data.words[n>>>5]|=128<<24-n%32,this._data.words[(n+64>>>9<<4)+14]=Math.floor(t/4294967296),this._data.words[(n+64>>>9<<4)+15]=t,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}_doProcessBlock(e,t){let n=this._hash.words,r=n[0],i=n[1],a=n[2],o=n[3],s=n[4],c=n[5],l=n[6],u=n[7];for(let n=0;n<64;n++){if(n<16)O[n]=e[t+n]|0;else{let e=O[n-15],t=(e<<25|e>>>7)^(e<<14|e>>>18)^e>>>3,r=O[n-2],i=(r<<15|r>>>17)^(r<<13|r>>>19)^r>>>10;O[n]=t+O[n-7]+i+O[n-16]}let d=s&c^~s&l,f=r&i^r&a^i&a,p=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),m=(s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25),h=u+m+d+Ge[n]+O[n],g=p+f;u=l,l=c,c=s,s=o+h|0,o=a,a=i,i=r,r=h+g|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+a|0,n[3]=n[3]+o|0,n[4]=n[4]+s|0,n[5]=n[5]+c|0,n[6]=n[6]+l|0,n[7]=n[7]+u|0}_append(e){typeof e==`string`&&(e=Je.fromUtf8(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes}_process(e){let t,n=this._data.sigBytes/64;n=e?Math.ceil(n):Math.max((n|0)-this._minBufferSize,0);let r=n*16,i=Math.min(r*4,this._data.sigBytes);if(r){for(let e=0;e<r;e+=16)this._doProcessBlock(this._data.words,e);t=this._data.words.splice(0,r),this._data.sigBytes-=i}return new Je(t,i)}},Je=class e{words;sigBytes;constructor(e,t){e=this.words=e||[],this.sigBytes=t===void 0?e.length*4:t}static fromUtf8(t){let n=unescape(encodeURIComponent(t)),r=n.length,i=[];for(let e=0;e<r;e++)i[e>>>2]|=(n.charCodeAt(e)&255)<<24-e%4*8;return new e(i,r)}toBase64(){let e=[];for(let t=0;t<this.sigBytes;t+=3){let n=this.words[t>>>2]>>>24-t%4*8&255,r=this.words[t+1>>>2]>>>24-(t+1)%4*8&255,i=this.words[t+2>>>2]>>>24-(t+2)%4*8&255,a=n<<16|r<<8|i;for(let n=0;n<4&&t*8+n*6<this.sigBytes*8;n++)e.push(Ke.charAt(a>>>6*(3-n)&63))}return e.join(``)}concat(e){if(this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4),this.sigBytes%4)for(let t=0;t<e.sigBytes;t++){let n=e.words[t>>>2]>>>24-t%4*8&255;this.words[this.sigBytes+t>>>2]|=n<<24-(this.sigBytes+t)%4*8}else for(let t=0;t<e.sigBytes;t+=4)this.words[this.sigBytes+t>>>2]=e.words[t>>>2];this.sigBytes+=e.sigBytes}};function Ye(e){return new qe().finalize(e).toBase64()}function Xe(e){return Ye(ze(e))}function Ze(e){return Xe(e)}function Qe(){let e={};function t(t,...n){let r=e[t]||[];for(let e=0,t=r.length;e<t;e++){let t=r[e];t&&t(...n)}}function n(n,...r){t(n,...r),delete e[n]}function r(t,n){return(e[t]||=[]).push(n),()=>{e[t]=e[t]?.filter(e=>n!==e)}}function i(e,t){let n=r(e,((...e)=>(n(),t(...e))));return n}return{_listeners:e,emit:t,emitOnce:n,on:r,once:i}}var $e=/^[\w+.-]{2,}:\/\//;function et(e){return e.endsWith(`/`)?e:`${e}/`}function tt(e){return(e.endsWith(`/`)?e.slice(0,-1):e)||`/`}function nt(e,...t){let n=e;for(let e of t)e&&e!==`/`&&(n=n?et(n)+e.replace(/^\.?\//,``):e);return n}function rt(e,t){if(!t||t===`/`||$e.test(e))return e;let n=tt(t);return e.startsWith(n)?e:nt(n,e)}function it(e,t){let n=e.match($e);return t+(n?e.slice(n[0].length):e)}var at=Symbol.for(`immer-nothing`),ot=Symbol.for(`immer-draftable`),k=Symbol.for(`immer-state`),st=[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},`This object has been frozen and should not be mutated`,function(e){return`Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? `+e},`An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.`,`Immer forbids circular references`,"The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},`Object.defineProperty() cannot be used on an Immer draft`,`Object.setPrototypeOf() cannot be used on an Immer draft`,`Immer only supports deleting array indices`,`Immer only supports setting array indices and the 'length' property`,function(e){return`'original' expects a draft, got: ${e}`}];function A(e,...t){{let n=st[e],r=G(n)?n.apply(null,t):n;throw Error(`[Immer] ${r}`)}}var j=Object,M=j.getPrototypeOf,N=`constructor`,P=`prototype`,ct=`configurable`,lt=`enumerable`,ut=`writable`,F=`value`,I=e=>!!e&&!!e[k];function L(e){return e?pt(e)||H(e)||!!e[ot]||!!e[N]?.[ot]||U(e)||gt(e):!1}var dt=j[P][N].toString(),ft=new WeakMap;function pt(e){if(!e||!W(e))return!1;let t=M(e);if(t===null||t===j[P])return!0;let n=j.hasOwnProperty.call(t,N)&&t[N];if(n===Object)return!0;if(!G(n))return!1;let r=ft.get(n);return r===void 0&&(r=Function.toString.call(n),ft.set(n,r)),r===dt}function R(e,t,n=!0){z(e)===0?(n?Reflect.ownKeys(e):j.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function z(e){let t=e[k];return t?t.type_:H(e)?1:U(e)?2:gt(e)?3:0}var B=(e,t,n=z(e))=>n===2?e.has(t):j[P].hasOwnProperty.call(e,t),V=(e,t,n=z(e))=>n===2?e.get(t):e[t],mt=(e,t,n,r=z(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function ht(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var H=Array.isArray,U=e=>e instanceof Map,gt=e=>e instanceof Set,W=e=>typeof e==`object`,G=e=>typeof e==`function`,_t=e=>typeof e==`boolean`;function vt(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var yt=e=>W(e)?e?.[k]:null,K=e=>e.copy_||e.base_,bt=e=>e.modified_?e.copy_:e.base_;function xt(e,t){if(U(e))return new Map(e);if(gt(e))return new Set(e);if(H(e))return Array[P].slice.call(e);let n=pt(e);if(t===!0||t===`class_only`&&!n){let t=j.getOwnPropertyDescriptors(e);delete t[k];let n=Reflect.ownKeys(t);for(let r=0;r<n.length;r++){let i=n[r],a=t[i];a[ut]===!1&&(a[ut]=!0,a[ct]=!0),(a.get||a.set)&&(t[i]={[ct]:!0,[ut]:!0,[lt]:a[lt],[F]:e[i]})}return j.create(M(e),t)}{let t=M(e);if(t!==null&&n)return{...e};let r=j.create(t);return j.assign(r,e)}}function St(e,t=!1){return Tt(e)||I(e)||!L(e)?e:(z(e)>1&&j.defineProperties(e,{set:wt,add:wt,clear:wt,delete:wt}),j.freeze(e),t&&R(e,(e,t)=>{St(t,!0)},!1),e)}function Ct(){A(2)}var wt={[F]:Ct};function Tt(e){return e===null||!W(e)||j.isFrozen(e)}var Et=`MapSet`,Dt=`Patches`,Ot=`ArrayMethods`,kt={};function q(e){let t=kt[e];return t||A(0,e),t}var At=e=>!!kt[e];function jt(e,t){kt[e]||(kt[e]=t)}var Mt,Nt=()=>Mt,Pt=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:At(Et)?q(Et):void 0,arrayMethodsPlugin_:At(Ot)?q(Ot):void 0});function Ft(e,t){t&&(e.patchPlugin_=q(Dt),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function It(e){Lt(e),e.drafts_.forEach(zt),e.drafts_=null}function Lt(e){e===Mt&&(Mt=e.parent_)}var Rt=e=>Mt=Pt(Mt,e);function zt(e){let t=e[k];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function Bt(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[k].modified_&&(It(t),A(4)),L(e)&&(e=Vt(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[k].base_,e,t)}else e=Vt(t,n);return Ht(t,e,!0),It(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===at?void 0:e}function Vt(e,t){if(Tt(t))return t;let n=t[k];if(!n)return Xt(t,e.handledSet_,e);if(!Wt(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);Jt(n,e)}return n.copy_}function Ht(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&St(t,n)}function Ut(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var Wt=(e,t)=>e.scope_===t,Gt=[];function Kt(e,t,n,r){let i=K(e),a=e.type_;if(r!==void 0&&V(i,r,a)===t){mt(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;R(i,(e,n)=>{if(I(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??Gt;for(let e of o)mt(i,e,n,a)}function qt(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!Wt(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=bt(i);Kt(e,i.draft_??i,a,n),Jt(i,r)})}function Jt(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}Ut(e)}}function Yt(e,t,n){let{scope_:r}=e;if(I(n)){let i=n[k];Wt(i,r)&&i.callbacks_.push(function(){on(e),Kt(e,n,bt(i),t)})}else L(n)&&e.callbacks_.push(function(){let i=K(e);e.type_===3?i.has(n)&&Xt(n,r.handledSet_,r):V(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&Xt(V(e.copy_,t,e.type_),r.handledSet_,r)})}function Xt(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||I(e)||t.has(e)||!L(e)||Tt(e)?e:(t.add(e),R(e,(r,i)=>{if(I(i)){let t=i[k];Wt(t,n)&&(mt(e,r,bt(t),e.type_),Ut(t))}else L(i)&&Xt(i,t,n)}),e)}function Zt(e,t){let n=H(e),r={type_:+!!n,scope_:t?t.scope_:Nt(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=Qt;n&&(i=[r],a=$t);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var Qt={get(e,t){if(t===k)return e;let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=K(e);if(!B(i,t,e.type_))return nn(e,i,t);let a=i[t];if(e.finalized_||!L(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&vt(t))return a;if(a===en(e.base_,t)||tn(e,t,a)){on(e);let n=e.type_===1?+t:t,r=cn(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t in K(e)},ownKeys(e){return Reflect.ownKeys(K(e))},set(e,t,n){let r=rn(K(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=en(K(e),t),i=r?.[k];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(ht(n,r)&&(n!==void 0||B(e.base_,t,e.type_)))return!0;on(e),an(e)}return e.copy_[t]===n&&(n!==void 0||B(e.copy_,t,e.type_))||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),Yt(e,t,n),!0)},deleteProperty(e,t){return on(e),en(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),an(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=K(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[ut]:!0,[ct]:e.type_!==1||t!==`length`,[lt]:r[lt],[F]:n[t]}},defineProperty(){A(11)},getPrototypeOf(e){return M(e.base_)},setPrototypeOf(){A(12)}},$t={};for(let e in Qt){let t=Qt[e];$t[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}$t.deleteProperty=function(e,t){return isNaN(parseInt(t))&&A(13),$t.set.call(this,e,t,void 0)},$t.set=function(e,t,n){return t!==`length`&&isNaN(parseInt(t))&&A(14),Qt.set.call(this,e[0],t,n,e[0])};function en(e,t){let n=e[k];return(n?K(n):e)[t]}function tn(e,t,n){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!L(n)||n[k]?!1:e.baseRefs_.has(n)}function nn(e,t,n){let r=rn(t,n);return r?F in r?r[F]:r.get?.call(e.draft_):void 0}function rn(e,t){if(!(t in e))return;let n=M(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=M(n)}}function an(e){e.modified_||(e.modified_=!0,e.parent_&&an(e.parent_))}function on(e){e.copy_||=(e.assigned_=new Map,xt(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var sn=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(G(e)&&!G(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}G(t)||A(6),n!==void 0&&!G(n)&&A(7);let r;if(L(e)){let i=Rt(this),a=cn(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?It(i):Lt(i)}return Ft(i,n),Bt(r,i)}if(!e||!W(e)){if(r=t(e),r===void 0&&(r=e),r===at&&(r=void 0),this.autoFreeze_&&St(r,!0),n){let t=[],i=[];q(Dt).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}A(1,e)},this.produceWithPatches=(e,t)=>{if(G(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},_t(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),_t(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),_t(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){L(e)||A(8),I(e)&&(e=ln(e));let t=Rt(this),n=cn(t,e,void 0);return n[k].isManual_=!0,Lt(t),n}finishDraft(e,t){let n=e&&e[k];(!n||!n.isManual_)&&A(9);let{scope_:r}=n;return Ft(r,t),Bt(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=q(Dt).applyPatches_;return I(e)?r(e,t):this.produce(e,e=>r(e,t))}};function cn(e,t,n,r){let[i,a]=U(t)?q(Et).proxyMap_(t,n):gt(t)?q(Et).proxySet_(t,n):Zt(t,n);return(n?.scope_??Nt()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?qt(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function ln(e){return I(e)||A(10,e),un(e)}function un(e){if(!L(e)||Tt(e))return e;let t=e[k],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=xt(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=xt(e,!0);return R(n,(e,t)=>{mt(n,e,un(t))},r),t&&(t.finalized_=!1),n}function dn(){st.push(`Sets cannot have "replace" patches.`,function(e){return`Unsupported patch operation: `+e},function(e){return`Cannot apply patch, path doesn't resolve: `+e},`Patching reserved attributes like __proto__, prototype and constructor is not allowed`);function e(n,r=[]){if(n.key_!==void 0){let e=n.parent_.copy_??n.parent_.base_,t=yt(V(e,n.key_)),i=V(e,n.key_);if(i===void 0||i!==n.draft_&&i!==n.base_&&i!==n.copy_||t!=null&&t.base_!==n.base_)return null;let a=n.parent_.type_===3,o;if(a){let e=n.parent_;o=Array.from(e.drafts_.keys()).indexOf(n.key_)}else o=n.key_;if(!(a&&e.size>o||B(e,o)))return null;r.push(o)}if(n.parent_)return e(n.parent_,r);r.reverse();try{t(n.copy_,r)}catch{return null}return r}function t(e,t){let n=e;for(let e=0;e<t.length-1;e++){let r=t[e];if(n=V(n,r),!W(n)||n===null)throw Error(`Cannot resolve path at '${t.join(`/`)}'`)}return n}let n=`replace`,r=`remove`;function i(e,t,n){if(e.scope_.processedForPatches_.has(e))return;e.scope_.processedForPatches_.add(e);let{patches_:r,inversePatches_:i}=n;switch(e.type_){case 0:case 2:return o(e,t,r,i);case 1:return a(e,t,r,i);case 3:return s(e,t,r,i)}}function a(e,t,i,a){let{base_:o,assigned_:s}=e,c=e.copy_;c.length<o.length&&([o,c]=[c,o],[i,a]=[a,i]);let l=e.allIndicesReassigned_===!0;for(let e=0;e<o.length;e++){let r=c[e],u=o[e];if((l||s?.get(e.toString()))&&r!==u){let o=r?.[k];if(o&&o.modified_)continue;let s=t.concat([e]);i.push({op:n,path:s,value:d(r)}),a.push({op:n,path:s,value:d(u)})}}for(let e=o.length;e<c.length;e++){let n=t.concat([e]);i.push({op:`add`,path:n,value:d(c[e])})}for(let e=c.length-1;o.length<=e;--e){let n=t.concat([e]);a.push({op:r,path:n})}}function o(e,t,i,a){let{base_:o,copy_:s,type_:c}=e;R(e.assigned_,(e,l)=>{let u=V(o,e,c),f=V(s,e,c),p=l?B(o,e)?n:`add`:r;if(u===f&&p===n)return;let m=t.concat(e);i.push(p===r?{op:p,path:m}:{op:p,path:m,value:d(f)}),a.push(p===`add`?{op:r,path:m}:p===r?{op:`add`,path:m,value:d(u)}:{op:n,path:m,value:d(u)})})}function s(e,t,n,i){let{base_:a,copy_:o}=e,s=0;a.forEach(e=>{if(!o.has(e)){let a=t.concat([s]);n.push({op:r,path:a,value:e}),i.unshift({op:`add`,path:a,value:e})}s++}),s=0,o.forEach(e=>{if(!a.has(e)){let a=t.concat([s]);n.push({op:`add`,path:a,value:e}),i.unshift({op:r,path:a,value:e})}s++})}function c(e,t,r){let{patches_:i,inversePatches_:a}=r;i.push({op:n,path:[],value:t===at?void 0:t}),a.push({op:n,path:[],value:e})}function l(e,t){return t.forEach(t=>{let{path:i,op:a}=t,o=e;for(let e=0;e<i.length-1;e++){let t=z(o),n=i[e];typeof n!=`string`&&typeof n!=`number`&&(n=``+n),(t===0||t===1)&&(n===`__proto__`||n===N)&&A(19),G(o)&&n===P&&A(19),o=V(o,n),(o===null||!W(o))&&A(18,i.join(`/`))}let s=z(o),c=u(t.value),l=i[i.length-1];switch(a){case n:switch(s){case 2:return o.set(l,c);case 3:A(16);default:return o[l]=c}case`add`:switch(s){case 1:return l===`-`?o.push(c):o.splice(l,0,c);case 2:return o.set(l,c);case 3:return o.add(c);default:return o[l]=c}case r:switch(s){case 1:return o.splice(l,1);case 2:return o.delete(l);case 3:return o.delete(t.value);default:return delete o[l]}default:A(17,a)}}),e}function u(e){if(!L(e))return e;if(H(e))return e.map(u);if(U(e))return new Map(Array.from(e.entries()).map(([e,t])=>[e,u(t)]));if(gt(e))return new Set(Array.from(e).map(u));let t=Object.create(M(e));for(let n in e)t[n]=u(e[n]);return B(e,ot)&&(t[ot]=e[ot]),t}function d(e){return I(e)?u(e):e}jt(Dt,{applyPatches_:l,generatePatches_:i,generateReplacementPatches_:c,getPath:e})}globalThis.Iterator?.from;var fn=new sn,pn=fn.produce,mn=fn.produceWithPatches.bind(fn),hn=fn.applyPatches.bind(fn),gn=1e3;function _n(e,t){if(e.add(t),e.size>gn){let t=e.values().next().value;t!==void 0&&e.delete(t)}}function vn(e){let{enablePatches:t=!1}=e;t&&dn();let n=Qe(),r=e.initialValue,i=new Set;return{on:n.on,value:()=>r,patch:(e,t=T())=>{i.has(t)||(dn(),r=hn(r,e),_n(i,t),n.emit(`updated`,r,void 0,t))},mutate:(e,a=T())=>{if(!i.has(a)){if(_n(i,a),t){let[t,i]=mn(r,e);if(t===r)return;r=t,n.emit(`updated`,r,i,a)}else{let t=pn(r,e);if(t===r)return;r=t,n.emit(`updated`,r,void 0,a)}}},syncIds:i}}var yn=typeof self==`object`?self:globalThis,bn=new Set([`Error`,`EvalError`,`RangeError`,`ReferenceError`,`SyntaxError`,`TypeError`,`URIError`,`AggregateError`]),xn=new Set([`Boolean`,`Number`,`String`,`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float16Array`,`Float32Array`,`Float64Array`,`BigInt64Array`,`BigUint64Array`]);function Sn(e,t){let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o)e[r(t)]=r(n);return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o,r=bn.has(e)?yn[e]:void 0;return n(new(r??yn.Error)(t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}}if(typeof a==`string`&&xn.has(a))return n(new yn[a](o),i);throw TypeError(`unable to deserialize unsafe or unknown type: ${String(a)}`)};return r}function Cn(e){return Sn(new Map,e)(0)}var J=``,{toString:wn}={},{keys:Tn}=Object;function En(e){let t=typeof e;if(t!==`object`||!e)return[0,t];let n=wn.call(e).slice(8,-1);switch(n){case`Array`:return[1,J];case`Object`:return[2,J];case`Date`:return[3,J];case`RegExp`:return[4,J];case`Map`:return[5,J];case`Set`:return[6,J];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:n.includes(`Error`)?[7,n]:[2,n]}function Dn([e,t]){return e===0&&(t===`function`||t===`symbol`)}function On(e,t,n,r){let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=r=>{if(n.has(r))return n.get(r);let[o,s]=En(r);switch(o){case 0:{let t=r;switch(s){case`bigint`:o=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize ${s}`);t=null;break;case`undefined`:return i([-1],r)}return i([o,t],r)}case 1:{if(s){let e=r;return s===`DataView`?e=new Uint8Array(r.buffer):s===`ArrayBuffer`&&(e=new Uint8Array(r)),i([s,[...e]],r)}let e=[],t=i([o,e],r);for(let t of r)e.push(a(t));return t}case 2:{if(s)switch(s){case`BigInt`:return i([s,r.toString()],r);case`Boolean`:case`Number`:case`String`:return i([s,r.valueOf()],r)}if(t&&`toJSON`in r)return a(r.toJSON());let n=[],c=i([o,n],r);for(let t of Tn(r))(e||!Dn(En(r[t])))&&n.push([a(t),a(r[t])]);return c}case 3:return i([o,r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return i([o,{source:e,flags:t}],r)}case 5:{let t=[],n=i([o,t],r);for(let[n,i]of r)(e||!(Dn(En(n))||Dn(En(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!Dn(En(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a}function kn(e,t={}){let n=[];return On(!(t.json||t.lossy),!!t.json,new Map,n)(e),n}var{parse:An,stringify:jn}=JSON,Mn={json:!0,lossy:!0};function Nn(e){return Cn(An(e))}function Pn(e){return jn(kn(e,Mn))}function Fn(e){return Cn(e)}function In(e){return Pn(e)}function Ln(e){return Nn(e)}var Rn=256,zn=class extends Error{name=`StreamClosedError`};function Bn(e={}){let t=e.id??T(),n=Math.max(0,e.replayWindow??0),r=Qe(),i=new AbortController,a=[],o=!1,s=0;function c(e){if(o)throw new zn(`Cannot write to a closed stream "${t}"`);s+=1,n>0&&(a.push({seq:s,chunk:e}),a.length>n&&(a.length-n===1?a.shift():a.splice(0,a.length-n))),r.emit(`chunk`,s,e)}function l(e){if(o)return;o=!0;let t=Hn(e);i.abort(e),r.emit(`end`,t)}function u(){o||(o=!0,i.signal.aborted||i.abort(`stream closed`),r.emit(`end`,void 0))}function d(e){o||i.signal.aborted||i.abort(e??`aborted`)}let f=new WritableStream({write(e){c(e)},close(){u()},abort(e){l(e)}});return{id:t,signal:i.signal,get closed(){return o},get lastSeq(){return s},write:c,error:l,close:u,abort:d,writable:f,events:r,buffer:a}}function Vn(e={}){let t=e.id??T(),n=Math.max(1,e.highWaterMark??Rn),r=[],i=0,a=!1,o=!1,s,c,l,u;function d(){if(c){if(r.length>0){let e=r.shift(),t=c;c=void 0,t.resolve({value:e,done:!1});return}if(a){let e=c;if(c=void 0,s){let t=Error(s.message);t.name=s.name,e.reject(t)}else e.resolve({value:void 0,done:!0})}}}function f(){if(l){for(;r.length>0;){let e=r.shift();try{l.enqueue(e)}catch{break}}if(a&&l){try{if(s){let e=Error(s.message);e.name=s.name,l.error(e)}else l.close()}catch{}l=void 0}}}function p(t,s){if(!(a||o)&&!(t<=i)){if(i=t,r.push(s),r.length>n){let t=r.length-n;r.splice(0,t),e.onOverflow?.(t)}d(),u&&f()}}function m(e){a||(a=!0,s=e,d(),u&&f())}function h(){o||a||(o=!0,e.onCancel?.(),m(void 0))}function g(){return u||(u=new ReadableStream({start(e){l=e,f()},cancel(){h()}}),u)}return{id:t,get cancelled(){return o},get done(){return a},get lastSeenSeq(){return i},get readable(){return g()},cancel:h,_push:p,_end:m,[Symbol.asyncIterator](){return{next(){if(r.length>0)return Promise.resolve({value:r.shift(),done:!1});if(a){if(s){let e=Error(s.message);return e.name=s.name,Promise.reject(e)}return Promise.resolve({value:void 0,done:!0})}return new Promise((e,t)=>{c={resolve:e,reject:t}})},return(){return h(),Promise.resolve({value:void 0,done:!0})}}}}}function Hn(e){if(e instanceof Error)return{name:e.name||`Error`,message:e.message};if(typeof e==`string`)return{name:`Error`,message:e};try{return{name:`Error`,message:JSON.stringify(e)}}catch{return{name:`Error`,message:String(e)}}}var Un=128;function Wn(e){return e.replace(/[^\w-]+/g,`_`).slice(0,Un)}var Gn=`__connection.json`,Kn=`__DEVFRAME_CONNECTION__`,qn=`x-birpc-session`,Jn=`__rpc-dump/index.json`,Yn=`devframe:services`,Xn=`devframe_otp`,Zn=`devframe_auth_token`;D.postMessage.remoteAssetsError;var Qn=class{cacheMap=new Map;options;keySerializer;constructor(e){this.options=e,this.keySerializer=e.keySerializer||(e=>Ze(e))}updateOptions(e){this.options={...this.options,...e}}cached(e,t){let n=this.cacheMap.get(e);if(n)return n.get(this.keySerializer(t))}has(e,t){return this.cacheMap.get(e)?.has(this.keySerializer(t))??!1}apply(e,t){let n=this.cacheMap.get(e.m)||new Map;n.set(this.keySerializer(e.a),t),this.cacheMap.set(e.m,n)}validate(e){return this.options.functions.includes(e)}clear(e){e?this.cacheMap.delete(e):this.cacheMap.clear()}},Y=Se({docsBase:`https://devfra.me/errors`,codes:{DF0019:{why:e=>`RPC function "${e.name}" has \`agent\` set but \`jsonSerializable\` is \`false\`; MCP requires JSON-serializable data.`,fix:"Remove `jsonSerializable: false`, or remove `agent` to keep it RPC-only."},DF0020:{why:e=>`RPC function "${e.name}" declares \`jsonSerializable: true\` but the value at "${e.path}" is a ${e.type}.`,fix:"Either drop `jsonSerializable: true` (falls back to structured-clone) or change the value to a JSON-safe shape."},DF0021:{why:e=>`RPC function "${e.name}" is already registered`,fix:"Use the `force` parameter to overwrite an existing registration."},DF0022:{why:e=>`RPC function "${e.name}" is not registered. Use register() to add new functions.`},DF0023:{why:e=>`RPC function "${e.name}" is not registered`},DF0024:{why:e=>`Either handler or setup function must be provided for RPC function "${e.name}"`},DF0025:{why:e=>`Function "${e.name}" not found in dump store`},DF0026:{why:e=>`No dump match for "${e.name}" with args: ${e.args}`},DF0027:{why:e=>`Function "${e.name}" with type "${e.type}" cannot have dump configuration. Only "static" and "query" types support dumps.`},DF0028:{why:e=>`Function "${e.name}" with type "${e.type}" cannot use \`snapshot: true\`. Only "query" functions support this sugar; "static" functions have equivalent default behavior already.`,fix:"Remove `snapshot: true`, or change the function type to `query`."},DF0043:{why:e=>`RPC function "${e.name}" received an invalid argument at position ${e.index}: ${e.issues}`,fix:"Pass a value that satisfies the `args` schema declared for this function."},DF0044:{why:e=>`RPC function "${e.name}" returned a value that failed its \`returns\` schema: ${e.issues}`,fix:"Make the handler return a value that satisfies the `returns` schema, or relax the schema."}}});function $n(e){if(e.agent&&e.jsonSerializable===!1)throw Y.DF0019({name:e.name});e.agent&&!e.jsonSerializable&&(e.jsonSerializable=!0)}async function er(e,t){let n=e[`~standard`].validate(t);return n instanceof Promise?await n:n}function tr(e){return e.map(e=>{let t=e.path?.map(e=>typeof e==`object`?e.key:e).join(`.`);return t?`${t}: ${e.message}`:e.message}).join(`; `)}async function nr(e,t,n){let r=n.slice();if(!t||t.length===0)return r;for(let r=0;r<t.length;r++){let i=t[r];if(!i)continue;let a=await er(i,n[r]);if(a.issues)throw Y.DF0043({name:e,index:r,issues:tr(a.issues)})}return r}async function rr(e,t,n){if(!t)return n;let r=await er(t,n);if(r.issues)throw Y.DF0044({name:e,issues:tr(r.issues)});return n}async function ir(e,t){if(!e.setup)return{};if(typeof t==`object`&&t){e.__cache??=new WeakMap;let n=e.__cache,r=n.get(t);return r||(r=Promise.resolve(e.setup(t)),r.catch(()=>{n.get(t)===r&&n.delete(t)}),n.set(t,r)),await r}if(!e.__promise){let n=Promise.resolve(e.setup(t));n.catch(()=>{e.__promise===n&&(e.__promise=void 0)}),e.__promise=n}return await e.__promise}async function ar(e,t){let n=e.handler;if(!n){let r=await ir(e,t);if(!r.handler)throw Y.DF0024({name:e.name});n=r.handler}let r=e.args,i=e.returns;if(!r&&!i)return n;let a=n;return async(...t)=>{let n=await nr(e.name,r,t),o=await a(...n);return await rr(e.name,i,o)}}var or=class{context;definitions=new Map;functions;_onChanged=[];constructor(e){this.context=e;let t=this.definitions,n=this;this.functions=new Proxy({},{get(e,r){let i=t.get(r);if(i)return ar(i,n.context)},has(e,n){return t.has(n)},getOwnPropertyDescriptor(e,n){return{value:t.get(n)?.handler,configurable:!0,enumerable:!0}},ownKeys(){return Array.from(t.keys())}})}register(e,t=!1){if(this.definitions.has(e.name)&&!t)throw Y.DF0021({name:e.name});$n(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}update(e,t=!1){if(!this.definitions.has(e.name)&&!t)throw Y.DF0022({name:e.name});$n(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}onChanged(e){return this._onChanged.push(e),()=>{let t=this._onChanged.indexOf(e);t!==-1&&this._onChanged.splice(t,1)}}async getHandler(e){return await ar(this.definitions.get(e),this.context)}getSchema(e){let t=this.definitions.get(e);if(!t)throw Y.DF0023({name:String(e)});return{args:t.args,returns:t.returns}}has(e){return this.definitions.has(e)}get(e){return this.definitions.get(e)}list(){return Array.from(this.definitions.keys())}};function sr(e,t=``){return JSON.stringify(e,function(e,n){let r=this,i=r==null?n:r[e];if(i===void 0){if(Array.isArray(r))throw X(t,`undefined`,r,e);return n}return i!==null&&cr(i,r,e,t),n})}function cr(e,t,n,r){if(typeof e==`bigint`)throw X(r,`BigInt`,t,n);if(typeof e!=`object`)return;if(e instanceof Map)throw X(r,`Map`,t,n);if(e instanceof Set)throw X(r,`Set`,t,n);if(e instanceof Date)throw X(r,`Date`,t,n);if(Array.isArray(e))return;let i=Object.getPrototypeOf(e);if(i!==null&&i!==Object.prototype)throw X(r,e.constructor?.name??`class instance`,t,n)}function X(e,t,n,r){let i=lr(n,r);return Y.DF0020({name:e||`<anonymous>`,type:t,path:i})}function lr(e,t){return Array.isArray(e)?`[${t}]`:t===``?`<root>`:t}var ur=`__DEVFRAME_CONNECTION_META__`,dr=`__DEVFRAME_CONNECTION_AUTH_TOKEN__`;function fr(e){let t=[()=>window?.[e],()=>globalThis?.[e],()=>parent.window?.[e]];for(let e of t)try{let t=e();if(t)return t}catch{}}function pr(){return fr(Kn)}function mr(){return fr(ur)}function Z(e){if(e)return e;try{let e=localStorage.getItem(dr);if(e)return e}catch{}return fr(dr)}function hr(e){globalThis[Kn]=e,globalThis[ur]={...e.connectionMeta,baseUrl:e.metaBaseUrl},e.authToken&&gr(e.authToken)}function gr(e){try{localStorage.setItem(dr,e)}catch{}globalThis[dr]=e;let t=pr();t&&(globalThis[Kn]={...t,authToken:e})}function _r(e){let t=rt(Gn,e);try{return new URL(t,globalThis.location?.href).href}catch{return t}}function vr(e,t){return t&&t!==e.authToken?{...e,authToken:t}:e}function yr(){let e=pr();if(e)return vr(e,Z()??e.authToken??e.connectionMeta.authToken);let t=mr();if(t)return{connectionMeta:t,metaBaseUrl:t.baseUrl??_r(`./`),authToken:Z(t.authToken)}}async function br(e={}){if(e.connection){let t=vr(e.connection,Z(e.authToken??e.connection.authToken??e.connection.connectionMeta.authToken));return hr(t),t}let t=Array.isArray(e.baseURL)?e.baseURL:[e.baseURL??`./`];if(e.connectionMeta){let n={connectionMeta:e.connectionMeta,metaBaseUrl:_r(t[0]??`./`),authToken:Z(e.authToken??e.connectionMeta.authToken)};return hr(n),n}let n=yr();if(n){let t=vr(n,Z(e.authToken??n.authToken??n.connectionMeta.authToken));return hr(t),t}let r=[];for(let n of t){let t=rt(Gn,n),i=_r(n);try{let n=await fetch(t);if(!n.ok)throw Error(`Failed to fetch connection meta from ${i}: ${n.status}`);let r=await n.json(),a=n.url||i,o={connectionMeta:r,metaBaseUrl:r.baseUrl?new URL(r.baseUrl,a).href:a,authToken:Z(e.authToken??r.authToken)};return hr(o),o}catch(e){r.push(e)}}throw Error(`Failed to get connection meta from ${t.join(`, `)}`,{cause:r})}var Q=class extends Error{name=`DevframeConnectionError`;kind;constructor(e,t,n){super(t,n),this.kind=e}};function xr(e=Xn){try{let t=globalThis.location?.hash?.replace(/^#/,``)??``;return new URLSearchParams(t).get(e)||void 0}catch{return}}function Sr(e){try{let t=new URL(globalThis.location.href),n=new URLSearchParams(t.hash.replace(/^#/,``));if(!n.has(e))return;n.delete(e),t.hash=n.toString(),globalThis.history?.replaceState(globalThis.history.state,``,t.href)}catch{}}function Cr(e=Xn){let t=xr(e);return t&&Sr(e),t}async function wr(e,t={}){let n=Cr(t.param??`devframe_otp`);return n?e.isTrusted?!0:e.requestTrustWithCode(n):!1}function Tr(e){let t={},n=new WeakMap,r,i=()=>(r??=e.sharedState.get(Yn,{initialValue:{}}).then(e=>(t=e.value(),e.on(`updated`,e=>{t=e}),e)),r);return i(),{state:i,has:e=>e in t,keys:()=>Object.keys(t),get:r=>{let i=t[r];if(!i)return;let a=n.get(i);return a||(a={...i,rpc:e.scope(i.scope).rpc},n.set(i,a)),a}}}function Er(e){let t=new Map,n=new Map,r=new Map,i=new Set,a=e.connectionMeta.backend===`static`;function o(e,t){let n=r.get(e);return n&&typeof n==`object`&&!Array.isArray(n)&&typeof t==`object`&&!Array.isArray(t)?{...n,...t}:t}e.client.register({name:D.broadcast.clientStateUpdated,type:`event`,handler:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.mutate(()=>o(e,n),r)}}),e.client.register({name:D.broadcast.clientStatePatch,type:`event`,handler:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.patch(n,r)}});function s(t,n){let r=[];return r.push(n.on(`updated`,(n,r,i)=>{a||(r?e.callEvent(`devframe:rpc:server-state:patch`,t,r,i):e.callEvent(`devframe:rpc:server-state:set`,t,n,i))})),()=>{for(let e of r)e()}}return{keys:()=>Array.from(t.keys()),onKeyAdded(e){return i.add(e),()=>{i.delete(e)}},delete(e){let i=n.get(e);n.delete(e);let a=t.delete(e);return r.delete(e),i?.(),a},get:async(c,l)=>{if(l?.initialValue!==void 0&&r.set(c,l.initialValue),t.has(c))return t.get(c);let u=vn({initialValue:l?.initialValue,enablePatches:!1});async function d(){if(a||e.callEvent(`devframe:rpc:server-state:subscribe`,c),l?.initialValue!==void 0){t.set(c,u);for(let e of i)e(c);return e.call(`devframe:rpc:server-state:get`,c).then(e=>{e!==void 0&&u.mutate(()=>o(c,e))}).catch(e=>{console.error(`Error getting server state`,e)}),n.set(c,s(c,u)),u}{let r=await e.call(`devframe:rpc:server-state:get`,c);u.mutate(()=>o(c,r)),t.set(c,u);for(let e of i)e(c);return n.set(c,s(c,u)),u}}return new Promise(t=>{if(e.isTrusted)d().then(t);else{t(u);let n=!1;e.events.on(D.client.isTrustedUpdated,e=>{e&&!n&&(n=!0,d())})}})}}}var Dr=new Map;function Or(e=Dr){let t=new Map;return{serialize:n=>{let r;return n.t===`q`?r=n.m:(r=t.get(n.i),t.delete(n.i)),!(n.t===`s`&&`e`in n)&&r&&e.get(r)?.jsonSerializable===!0?sr(n,r??``):`s:${In(n)}`},deserialize:e=>{let n=e.startsWith(`s:`)?Ln(e.slice(2)):JSON.parse(e);return n.t===`q`&&n.i&&n.m&&t.set(n.i,n.m),n}}}function kr(){}function Ar(e){let t=e.search(/\n\n|\r\n\r\n/);if(!(t<0))return{frame:e.slice(0,t),rest:e.slice(t+(e[t]===`\r`?4:2))}}function jr(e){let t=`message`,n=[];for(let r of e.split(/\r?\n/))r.startsWith(`:`)||(r.startsWith(`event:`)?t=r.slice(6).trimStart():r.startsWith(`data:`)&&n.push(r.slice(5).replace(/^ /,``)));return{event:t,data:n}}function Mr(e){let{onConnected:t=kr,onError:n=kr,onDisconnected:r=kr,definitions:i,fetch:a=globalThis.fetch.bind(globalThis)}=e,o=e.url;e.authToken&&(o=`${o}${o.includes(`?`)?`&`:`?`}${Zn}=${encodeURIComponent(e.authToken)}`);let s=Or(i),c=new AbortController,l=!1,u,d,f,p,m=new Promise((e,t)=>{f=e,p=t});m.catch(()=>{});function h(e){l||(l=!0,p(e),n(e),r())}function g(){l||(l=!0,p(Error(`Devframe SSE stream closed`)),r())}function _(e,n){if(e===`session`){f(n),t();return}u?.(n)}async function v(e){let t=e.getReader();d=t;let n=new TextDecoder,r=``;for(;;){let{done:e,value:i}=await t.read();if(e)break;for(r+=n.decode(i,{stream:!0});;){let e=Ar(r);if(!e)break;r=e.rest;let{event:t,data:n}=jr(e.frame);n.length>0&&_(t,n.join(`
|
|
4
|
-
`))}}g()}return(async()=>{try{let e=await a(o,{headers:{accept:`text/event-stream`},signal:c.signal});if(!e.ok||!e.body)throw Error(`Devframe SSE stream request failed: ${e.status}`);await v(e.body)}catch(e){if(c.signal.aborted){g();return}h(e instanceof Error?e:Error(String(e)))}})(),{close:()=>{l=!0,c.abort(),d?.cancel().catch(()=>{})},on:e=>{u=e},post:async e=>{let t;try{t=await m}catch{return}if(l){n(Error(`Devframe SSE channel is closed; message dropped`));return}try{let n=await a(o,{method:`POST`,headers:{"content-type":`text/plain; charset=utf-8`,[qn]:t},body:e});if(n.status===200){let e=await n.text();e&&u?.(e);return}if(!n.ok)throw Error(`Devframe SSE POST failed: ${n.status}`)}catch(e){n(e instanceof Error?e:Error(String(e)))}},serialize:s.serialize,deserialize:s.deserialize}}function Nr(e,t){let{channel:n,rpcOptions:r={}}=t;return Me(e,{...n,timeout:-1,...r,proxify:!1})}function Pr(e){let{transport:t,authToken:n,connectionMeta:r,events:i,clientRpc:a,rpcOptions:o={},callTimeout:s=0}=e,c=!1,l=`connecting`,u=null,d=Promise.withResolvers();function f(e,t=null){if(t?u=t:e===`connected`&&(u=null),e===l)return;let n=l;l=e,i.emit(D.client.connectionStatus,e,n)}let p=new Set;function m(e){for(let t of[...p])t.reject(e)}function h(){return l===`disconnected`||l===`error`?new Q(`connection`,`[devframe] Not connected to the devframe server`,{cause:u??void 0}):l===`unauthorized`?new Q(`auth`,`[devframe] Not authorized by the devframe server`,{cause:u??void 0}):null}function g(e,t){return new Promise((n,r)=>{let a=!1,o,c={reject(e){a||(l(),i.emit(D.client.error,e,t),r(e))}};function l(){a=!0,p.delete(c),o&&clearTimeout(o)}p.add(c),s>0&&(o=setTimeout(()=>{c.reject(new Q(`timeout`,`[devframe] RPC call "${t}" timed out after ${s}ms`))},s)),e.then(e=>{a||(l(),n(e))},e=>{if(a)return;l();let n=e instanceof Error?e:Error(String(e));i.emit(D.client.error,n,t),r(n)})})}let _=new Map;for(let e of r.jsonSerializableMethods??[])_.set(e,{jsonSerializable:!0});let v=e.createChannel({definitions:_,onError(e){f(`error`,e),i.emit(D.client.connectionError,e),m(new Q(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){l!==`error`&&f(`disconnected`),m(new Q(`connection`,`[devframe] Disconnected from the devframe server`,{cause:u??void 0}))}}),y=Nr(a.functions,{channel:v,rpcOptions:o});a.register({name:D.broadcast.authRevoked,type:`event`,handler:()=>{c=!1;let e=new Q(`auth`,`[devframe] The devframe server revoked this client's trust`);f(`unauthorized`,e),i.emit(D.client.connectionError,e),m(e),i.emit(D.client.isTrustedUpdated,!1)}});let b=n;async function x(e){b=e;let t=await y.$call(`anonymous:devframe:auth`,{authToken:e,ua:navigator.userAgent,origin:location.origin});if(c=t.isTrusted,c)d.resolve(!0),f(`connected`);else{let e=new Q(`auth`,`[devframe] The devframe server refused this client's credentials`);f(`unauthorized`,e),i.emit(D.client.connectionError,e)}return i.emit(D.client.isTrustedUpdated,c),t.isTrusted}async function S(e){let t=(await y.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:navigator.userAgent,origin:location.origin}))?.authToken??null;return t&&(b=t,c=!0,d.resolve(!0),f(`connected`),i.emit(D.client.isTrustedUpdated,!0)),t}async function ee(e={}){await y.$call(`anonymous:devframe:auth:request-code`,{ua:navigator.userAgent,origin:location.origin,...e.reissue?{reissue:!0}:{}})}async function C(){return c?!0:x(b??``)}async function te(e=6e4){if(c&&d.resolve(!0),e<=0)return d.promise;let t;try{return await Promise.race([d.promise,new Promise((n,r)=>{t=setTimeout(()=>{r(Error(`[devframe] Timeout waiting for rpc to be trusted`))},e)})]),c}finally{clearTimeout(t)}}return{transport:t,get isTrusted(){return c},get status(){return l},get connectionError(){return u},requestTrust:C,requestTrustWithToken:x,requestTrustWithCode:S,requestAuthCode:ee,ensureTrusted:te,call:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(D.client.error,n,t),Promise.reject(n)):g(y.$call(...e),t)},callEvent:(...e)=>{let t=h();if(t){i.emit(D.client.error,t,String(e[0]));return}return y.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(D.client.error,n,t),Promise.reject(n)):g(y.$callOptional(...e),t)},close:()=>{v.close()}}}function Fr(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})();if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`;return new URL(e.path??`/`,`${r.protocol}//${t}`).href}return new URL(e.path??``,r).href}let i=e??``;return/^https?:\/\//i.test(i)?i:new URL(i,r).href}function Ir(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=Fr(n.sse,r??`./`,location);return Pr({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>Mr({url:l,authToken:t,definitions:e.definitions,...s,onConnected(){s.onConnected?.()},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(){e.onDisconnected(),s.onDisconnected?.()}})})}function Lr(e){let{name:t,message:n,cause:r,...i}=e,a=r instanceof Error?r:Rr(r)?Lr(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function Rr(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function zr(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function Br(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function Vr(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function Hr(e){if(e.error)throw Lr(e.error);return e.output}function Ur(e){return e.some(e=>e!=null)}function Wr(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function Gr(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?Fn(e):e}function a(e,t){return i(Wr(e),t)}async function o(e){n.has(e.path)||n.set(e.path,t(e.path).then(t=>a(t,e.serialization)));let r=await n.get(e.path);return Vr(r)?Hr(r):r}async function s(e,n){return r.has(e)||r.set(e,t(e).then(e=>a(e,n))),await r.get(e)}async function c(t,n){if(!(t in e))throw Error(`[devframe-rpc] Function "${t}" not found in dump store`);let r=e[t];if(zr(r)){if(Ur(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(Br(r)){let e=Ze(n),i=r.records[e];if(i)return Hr(await s(i,r.serialization));if(r.fallback)return Hr(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!Ur(n))return r;throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}return{call:async(e,t)=>await c(e,t),callOptional:async(t,n)=>{if(t in e)return await c(t,n)},callEvent:async(e,t)=>{}}}async function Kr(e){let t=Gr(await e.fetchJsonFromBases(Jn),e.fetchJsonFromBases);return{transport:`static`,isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,requestAuthCode:async()=>{},ensureTrusted:async()=>!0,call:(...e)=>t.call(e[0],e.slice(1)),callEvent:(...e)=>t.callEvent(e[0],e.slice(1)),callOptional:(...e)=>t.callOptional(e[0],e.slice(1)),close:()=>{}}}var qr=``;function Jr(e,t){return`${e}${qr}${t}`}function Yr(e){let t=new Map,n=new Map;e.client.register({name:D.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(Jr(e,n))?._push(r,i)}}),e.client.register({name:D.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=Jr(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:D.broadcast.streamingUploadCancel,type:`event`,handler(e,t){let r=Jr(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on(D.client.isTrustedUpdated,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(qr);if(t<0)continue;let i=n.slice(0,t),a=n.slice(t+1);e.callEvent(`devframe:streaming:subscribe`,i,a,{afterSeq:r.lastSeenSeq})}});function r(n,r,i={}){let a=Jr(n,r),o=t.get(a);if(o)return o;let s=Vn({id:r,highWaterMark:i.highWaterMark,onOverflow(e){console.warn(`[devframe] DF0029: Stream "${n}#${r}" dropped ${e} chunk(s) after exceeding the client high-water mark.`)},onCancel(){e.callEvent(`devframe:streaming:cancel`,n,r),t.delete(a)}});if(t.set(a,s),e.isTrusted)e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:0});else{let i=e.events.on(D.client.isTrustedUpdated,o=>{o&&(i(),t.has(a)&&!s.cancelled&&!s.done&&e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:s.lastSeenSeq}))})}return s}function i(t,r){let i=Jr(t,r),a=n.get(i);if(a)return a;let o=Bn({id:r});return o.events.on(`chunk`,(n,i)=>{e.callEvent(`devframe:streaming:upload-chunk`,t,r,n,i)}),o.events.on(`end`,a=>{e.callEvent(`devframe:streaming:upload-end`,t,r,a),n.delete(i)}),n.set(i,o),o}return{subscribe:r,upload:i}}function Xr(){}var Zr=new Map;function Qr(e){let t=e.url;e.authToken&&(t=`${t}?${Zn}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=Xr,onError:i=Xr,onDisconnected:a=Xr,definitions:o=Zr}=e;n.addEventListener(`open`,e=>{r(e)}),n.addEventListener(`error`,e=>{let t=e instanceof Error?e:Error(e.type);i(t)}),n.addEventListener(`close`,e=>{a(e)});let s=Or(o);return{close:()=>{n.close()},on:e=>{n.addEventListener(`message`,t=>{e(t.data)})},post:e=>{if(n.readyState===WebSocket.OPEN){n.send(e);return}if(n.readyState===WebSocket.CONNECTING){let t=()=>{i(),n.readyState===WebSocket.OPEN&&n.send(e)},r=()=>i();function i(){n.removeEventListener(`open`,t),n.removeEventListener(`close`,r)}n.addEventListener(`open`,t),n.addEventListener(`close`,r);return}i(Error(`Devframe WebSocket is not open; message dropped`))},serialize:s.serialize,deserialize:s.deserialize}}function $r(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})(),i=r.protocol===`https:`?`wss:`:`ws:`;if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`,n=new URL(e.path??`/`,`${i}//${t}`);return n.protocol=i,n.href}let t=new URL(e.path??``,r);return t.protocol=i,t.href}if(typeof e==`number`)return`${i}//${r.hostname}:${e}`;let a=e??``;if(/^wss?:\/\//i.test(a))return a;if(/^https?:\/\//i.test(a))return it(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function ei(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=$r(n.websocket,r??`./`,location);return Pr({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>Qr({url:l,authToken:t,definitions:e.definitions,...s,onConnected(e){s.onConnected?.(e)},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(t){e.onDisconnected(),s.onDisconnected?.(t)}})})}function ti(e){return e.includes(`:`)}function $(e,t){return ti(t)?t:`${e}:${t}`}function ni(e){return{async get(t){return(await e()).value()[t]},async set(t,n){(await e()).mutate(e=>{e[t]=n})},async delete(t){(await e()).mutate(e=>{delete e[t]})},async all(){return(await e()).value()},async onChange(t){return(await e()).on(`updated`,e=>t(e))}}}function ri(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=e.sharedState.get(r,{initialValue:{}}),i}return ni(a)}function ii(e,t){return{global:ri(e,t,`global`),project:ri(e,t,`project`)}}function ai(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(ti(n.name))throw Error(`[devframe] Scoped client RPC registration for namespace "${t}" received an already-namespaced function name "${n.name}". Pass a bare name without a ":" separator.`);e.client.register({...n,name:`${t}:${n.name}`})},call:((n,...r)=>e.call($(t,n),...r)),callEvent:((n,...r)=>e.callEvent($(t,n),...r)),callOptional:((n,...r)=>e.callOptional($(t,n),...r)),sharedState:((n,r)=>e.sharedState.get($(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe($(t,n),r,i),upload:(n,r)=>e.streaming.upload($(t,n),r)}},settings:ii(e,t),scope:e.scope}}function oi(){if(typeof document<`u`){let e=document.modelContext;if(e)return e}if(typeof navigator<`u`){let e=navigator.modelContext;if(e)return e}}function si(e,t={}){let n=t.modelContext??oi();if(!n)return()=>{};let r=n,i=new Map,a=new Map;function o(t,n){let o=Wn(t.name),s=a.get(o);if(s&&s!==t.name){console.warn(`[devframe] WebMCP tool name "${o}" (from "${t.name}") collides with "${s}"; keeping the first registration.`);return}let c=new AbortController,l=Ne(t.type,n),u=r.registerTool({name:o,description:n.description,inputSchema:Ie(t.args),annotations:{title:n.title??t.name,readOnlyHint:l===`read`,destructiveHint:l===`destructive`},execute:n=>ci(t,e.context,n)},{signal:c.signal});u&&`then`in u&&u.then(()=>{},()=>{}),a.set(o,t.name),i.set(t.name,()=>{c.abort(),u&&`unregister`in u&&typeof u.unregister==`function`&&u.unregister(),a.delete(o)})}function s(t){let n=t?[t]:[...e.definitions.keys()];for(let t of n){i.get(t)?.(),i.delete(t);let n=e.definitions.get(t),r=n?.agent;n&&r&&o(n,r)}}s();let c=e.onChanged(e=>s(e));return()=>{c();for(let e of i.values())e();i.clear()}}async function ci(e,t,n){try{let r=Re(n,e.args?.length);return{content:[{type:`text`,text:li(await(await ar(e,t))(...r))}]}}catch(e){return{isError:!0,content:[{type:`text`,text:ui(e)}]}}}function li(e){return e===void 0?`undefined`:typeof e==`string`?e:JSON.stringify(e,null,2)}function ui(e){if(!(e instanceof Error))return String(e);let t=e.cause instanceof Error?` (cause: ${e.cause.message})`:``;return`${e.name}: ${e.message}${t}`}function di(e,t){if(t.backend===`static`)return`static`;let n=t.websocket!==void 0,r=t.sse!==void 0;if(e===`websocket`){if(!n)throw Error(`[devframe] transport: 'websocket' was requested, but this server does not advertise a WebSocket endpoint`);return`websocket`}if(e===`sse`){if(!r)throw Error(`[devframe] transport: 'sse' was requested, but this server does not advertise an SSE endpoint`);return`sse`}if(t.backend===`sse`&&r)return`sse`;if(n)return`websocket`;if(r)return`sse`;throw Error(`[devframe] This server advertises no RPC transport (backend "none"), so there is nothing to connect to. Enable the WebSocket or SSE endpoint on the server, or use its static/MCP surfaces instead.`)}async function fi(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=Qe(),a=Array.isArray(t)?t:[t],o=await br(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new Qn({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new or(f),m=e.webmcp===!1?void 0:si(p),h,g=!1;async function _(e){let t=[u,...a.filter(e=>e!==u)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(rt(e,r)).then(t=>{if(!t.ok)throw Error(`Failed to fetch ${e} from ${r}: ${t.status}`);return t.json()})}catch(e){n.push(e)}throw Error(`Failed to load ${e} from ${t.join(`, `)}`,{cause:n})}let v={authToken:l,connectionMeta:s,metaBaseUrl:c,events:i,clientRpc:p,callTimeout:e.callTimeout,rpcOptions:{...n,async onRequest(e,t,i){if(await n.onRequest?.call(this,e,t,i),r&&d?.validate(e.m)){if(d.has(e.m,e.a))return i(d.cached(e.m,e.a));let n=await t(e);d.apply(e,n)}else await t(e)}}},y=di(e.transport??`auto`,s),b=y===`static`?await Kr({fetchJsonFromBases:_}):y===`sse`?Ir({...v,sseOptions:e.sseOptions}):ei({...v,wsOptions:e.wsOptions}),x;try{x=new BroadcastChannel(`devframe-auth`)}catch{}let S,C=!1;function te(e){return((...t)=>C||!S?e(...t):S.then(()=>e(...t)))}function ne(){g=!0;try{h?.(),m?.()}finally{try{x?.close()}finally{b.close?.()}}}let w={events:i,get isTrusted(){return b.isTrusted},get status(){return b.status},get connectionError(){return b.connectionError},get transport(){return b.transport??y},get connection(){return o},connectionMeta:s,ensureTrusted:b.ensureTrusted,requestTrust:b.requestTrust,requestTrustWithToken:async e=>(gr(e),o={...o,authToken:e},b.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await b.requestTrustWithCode(e);if(!t)return!1;gr(t),o={...o,authToken:t};try{x?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},requestAuthCode:e=>b.requestAuthCode(e),call:te(b.call),callEvent:te(b.callEvent),callOptional:te(b.callOptional),client:p,sharedState:void 0,services:void 0,streaming:void 0,cacheManager:d,scope:void 0,close:ne};w.sharedState=Er(w),w.streaming=Yr(w),w.services=Tr(w);let re=new Map;w.scope=(e=>{if(!e)return w;let t=re.get(e);return t||(t=ai(w,e),re.set(e,t)),t}),f.rpc=w;function T(){try{return typeof window<`u`&&window.self===window.top}catch{return!1}}async function ie(){if(e.simpleAuth!==!1&&T()&&typeof globalThis.prompt==`function`)for(await w.requestAuthCode().catch(()=>{});!w.isTrusted;){let e=globalThis.prompt(`devframe: enter the authentication code shown in your terminal`);if(e==null)return;let t=e.trim();if(t&&await w.requestTrustWithCode(t))return}}async function ae(){let t=await b.requestTrust(),n=e.otpParam??`devframe_otp`,r=n?await wr(w,{param:n}):!1;t||r||w.isTrusted||await ie()}return S=ae().then(()=>{C=!0},()=>{C=!0}),s.mcp&&ee(async()=>{let{setupBrowserAgentRpcBridge:e}=await import(`./browser-agent-rpc-BXhoSh1z-DrvKG05N.js`);return{setupBrowserAgentRpcBridge:e}},__vite__mapDeps([0,1]),import.meta.url).then(({setupBrowserAgentRpcBridge:e})=>{g||(h=e(w))}).catch(()=>{}),x&&(x.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&w.requestTrustWithToken(e.data.authToken)}),w}var pi=fi;async function mi(){let e=await pi();return{client:e,rpc:e.scope(le).rpc}}var hi={class:`min-h-screen flex items-center justify-center p-6`},gi={class:`text-lg font-semibold`},_i={class:`text-sm op-fade`},vi=[`aria-label`],yi={key:0,class:`text-sm text-red-500`},bi=l({__name:`LocalAuthGate`,props:{client:{},onTrusted:{type:Function}},setup(l){let f=l,h=c(``),g=c(!1),_=c(!1);a(()=>f.client.requestAuthCode());async function v(){_.value=!0,g.value=!1;try{await f.client.requestTrustWithCode(h.value.trim())?f.onTrusted():g.value=!0}finally{_.value=!1}}return(a,c)=>(t(),i(`main`,hi,[s(`form`,{class:`max-w-90 w-full flex flex-col gap-3`,onSubmit:p(v,[`prevent`])},[s(`h1`,gi,n(a.$t(`local.auth.title`)),1),s(`p`,_i,n(a.$t(`local.auth.hint`)),1),u(s(`input`,{"onUpdate:modelValue":c[0]||=e=>h.value=e,inputmode:`numeric`,autocomplete:`one-time-code`,maxlength:`6`,class:`border border-base rounded bg-base px-3 py-2 text-center text-xl tracking-widest font-mono`,"aria-label":a.$t(`local.auth.title`)},null,8,vi),[[m,h.value]]),g.value?(t(),i(`p`,yi,n(a.$t(`local.auth.invalid`)),1)):r(``,!0),e(ie,{variant:`primary`,type:`submit`,disabled:_.value||h.value.trim().length!==6},{default:d(()=>[o(n(a.$t(`local.auth.submit`)),1)]),_:1},8,[`disabled`])],32)]))}});async function xi(e){if(await e.ensureTrusted(2e3).catch(()=>!1))return;let t=document.createElement(`div`);document.body.append(t),await new Promise(n=>{f(bi,{client:e,onTrusted:n}).use(v).mount(t)}),t.remove()}async function Si(e,t){let{client:n,rpc:r}=await mi();await xi(n),ne(e,{cache:w(C({driver:pe(r)})),credentials:me(r,re),llm:_e(r,te)}),e.provide(oe,r),e.provide(ae,ge(r));for(let e of de(()=>ee(()=>import(`./diff-BsZcYqbE.js`),__vite__mapDeps([2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29]),import.meta.url)))t.addRoute(e);t.removeRoute(`home`),t.addRoute({path:`/`,component:()=>ee(()=>import(`./pages-local-iBHcLWBK.js`),__vite__mapDeps([30,3,13,14,5,15,12,16,6,7,8,9,10,17,18,19,20,22,23,31,28,32,33]),import.meta.url)})}export{Si as installLocal};
|
|
4
|
+
`))}}g()}return(async()=>{try{let e=await a(o,{headers:{accept:`text/event-stream`},signal:c.signal});if(!e.ok||!e.body)throw Error(`Devframe SSE stream request failed: ${e.status}`);await v(e.body)}catch(e){if(c.signal.aborted){g();return}h(e instanceof Error?e:Error(String(e)))}})(),{close:()=>{l=!0,c.abort(),d?.cancel().catch(()=>{})},on:e=>{u=e},post:async e=>{let t;try{t=await m}catch{return}if(l){n(Error(`Devframe SSE channel is closed; message dropped`));return}try{let n=await a(o,{method:`POST`,headers:{"content-type":`text/plain; charset=utf-8`,[qn]:t},body:e});if(n.status===200){let e=await n.text();e&&u?.(e);return}if(!n.ok)throw Error(`Devframe SSE POST failed: ${n.status}`)}catch(e){n(e instanceof Error?e:Error(String(e)))}},serialize:s.serialize,deserialize:s.deserialize}}function Nr(e,t){let{channel:n,rpcOptions:r={}}=t;return Me(e,{...n,timeout:-1,...r,proxify:!1})}function Pr(e){let{transport:t,authToken:n,connectionMeta:r,events:i,clientRpc:a,rpcOptions:o={},callTimeout:s=0}=e,c=!1,l=`connecting`,u=null,d=Promise.withResolvers();function f(e,t=null){if(t?u=t:e===`connected`&&(u=null),e===l)return;let n=l;l=e,i.emit(D.client.connectionStatus,e,n)}let p=new Set;function m(e){for(let t of[...p])t.reject(e)}function h(){return l===`disconnected`||l===`error`?new Q(`connection`,`[devframe] Not connected to the devframe server`,{cause:u??void 0}):l===`unauthorized`?new Q(`auth`,`[devframe] Not authorized by the devframe server`,{cause:u??void 0}):null}function g(e,t){return new Promise((n,r)=>{let a=!1,o,c={reject(e){a||(l(),i.emit(D.client.error,e,t),r(e))}};function l(){a=!0,p.delete(c),o&&clearTimeout(o)}p.add(c),s>0&&(o=setTimeout(()=>{c.reject(new Q(`timeout`,`[devframe] RPC call "${t}" timed out after ${s}ms`))},s)),e.then(e=>{a||(l(),n(e))},e=>{if(a)return;l();let n=e instanceof Error?e:Error(String(e));i.emit(D.client.error,n,t),r(n)})})}let _=new Map;for(let e of r.jsonSerializableMethods??[])_.set(e,{jsonSerializable:!0});let v=e.createChannel({definitions:_,onError(e){f(`error`,e),i.emit(D.client.connectionError,e),m(new Q(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){l!==`error`&&f(`disconnected`),m(new Q(`connection`,`[devframe] Disconnected from the devframe server`,{cause:u??void 0}))}}),y=Nr(a.functions,{channel:v,rpcOptions:o});a.register({name:D.broadcast.authRevoked,type:`event`,handler:()=>{c=!1;let e=new Q(`auth`,`[devframe] The devframe server revoked this client's trust`);f(`unauthorized`,e),i.emit(D.client.connectionError,e),m(e),i.emit(D.client.isTrustedUpdated,!1)}});let b=n;async function x(e){b=e;let t=await y.$call(`anonymous:devframe:auth`,{authToken:e,ua:navigator.userAgent,origin:location.origin});if(c=t.isTrusted,c)d.resolve(!0),f(`connected`);else{let e=new Q(`auth`,`[devframe] The devframe server refused this client's credentials`);f(`unauthorized`,e),i.emit(D.client.connectionError,e)}return i.emit(D.client.isTrustedUpdated,c),t.isTrusted}async function S(e){let t=(await y.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:navigator.userAgent,origin:location.origin}))?.authToken??null;return t&&(b=t,c=!0,d.resolve(!0),f(`connected`),i.emit(D.client.isTrustedUpdated,!0)),t}async function ee(e={}){await y.$call(`anonymous:devframe:auth:request-code`,{ua:navigator.userAgent,origin:location.origin,...e.reissue?{reissue:!0}:{}})}async function C(){return c?!0:x(b??``)}async function te(e=6e4){if(c&&d.resolve(!0),e<=0)return d.promise;let t;try{return await Promise.race([d.promise,new Promise((n,r)=>{t=setTimeout(()=>{r(Error(`[devframe] Timeout waiting for rpc to be trusted`))},e)})]),c}finally{clearTimeout(t)}}return{transport:t,get isTrusted(){return c},get status(){return l},get connectionError(){return u},requestTrust:C,requestTrustWithToken:x,requestTrustWithCode:S,requestAuthCode:ee,ensureTrusted:te,call:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(D.client.error,n,t),Promise.reject(n)):g(y.$call(...e),t)},callEvent:(...e)=>{let t=h();if(t){i.emit(D.client.error,t,String(e[0]));return}return y.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit(D.client.error,n,t),Promise.reject(n)):g(y.$callOptional(...e),t)},close:()=>{v.close()}}}function Fr(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})();if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`;return new URL(e.path??`/`,`${r.protocol}//${t}`).href}return new URL(e.path??``,r).href}let i=e??``;return/^https?:\/\//i.test(i)?i:new URL(i,r).href}function Ir(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=Fr(n.sse,r??`./`,location);return Pr({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>Mr({url:l,authToken:t,definitions:e.definitions,...s,onConnected(){s.onConnected?.()},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(){e.onDisconnected(),s.onDisconnected?.()}})})}function Lr(e){let{name:t,message:n,cause:r,...i}=e,a=r instanceof Error?r:Rr(r)?Lr(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function Rr(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function zr(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function Br(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function Vr(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function Hr(e){if(e.error)throw Lr(e.error);return e.output}function Ur(e){return e.some(e=>e!=null)}function Wr(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function Gr(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?Fn(e):e}function a(e,t){return i(Wr(e),t)}async function o(e){n.has(e.path)||n.set(e.path,t(e.path).then(t=>a(t,e.serialization)));let r=await n.get(e.path);return Vr(r)?Hr(r):r}async function s(e,n){return r.has(e)||r.set(e,t(e).then(e=>a(e,n))),await r.get(e)}async function c(t,n){if(!(t in e))throw Error(`[devframe-rpc] Function "${t}" not found in dump store`);let r=e[t];if(zr(r)){if(Ur(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(Br(r)){let e=Ze(n),i=r.records[e];if(i)return Hr(await s(i,r.serialization));if(r.fallback)return Hr(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!Ur(n))return r;throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}return{call:async(e,t)=>await c(e,t),callOptional:async(t,n)=>{if(t in e)return await c(t,n)},callEvent:async(e,t)=>{}}}async function Kr(e){let t=Gr(await e.fetchJsonFromBases(Jn),e.fetchJsonFromBases);return{transport:`static`,isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,requestAuthCode:async()=>{},ensureTrusted:async()=>!0,call:(...e)=>t.call(e[0],e.slice(1)),callEvent:(...e)=>t.callEvent(e[0],e.slice(1)),callOptional:(...e)=>t.callOptional(e[0],e.slice(1)),close:()=>{}}}var qr=``;function Jr(e,t){return`${e}${qr}${t}`}function Yr(e){let t=new Map,n=new Map;e.client.register({name:D.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(Jr(e,n))?._push(r,i)}}),e.client.register({name:D.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=Jr(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:D.broadcast.streamingUploadCancel,type:`event`,handler(e,t){let r=Jr(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on(D.client.isTrustedUpdated,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(qr);if(t<0)continue;let i=n.slice(0,t),a=n.slice(t+1);e.callEvent(`devframe:streaming:subscribe`,i,a,{afterSeq:r.lastSeenSeq})}});function r(n,r,i={}){let a=Jr(n,r),o=t.get(a);if(o)return o;let s=Vn({id:r,highWaterMark:i.highWaterMark,onOverflow(e){console.warn(`[devframe] DF0029: Stream "${n}#${r}" dropped ${e} chunk(s) after exceeding the client high-water mark.`)},onCancel(){e.callEvent(`devframe:streaming:cancel`,n,r),t.delete(a)}});if(t.set(a,s),e.isTrusted)e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:0});else{let i=e.events.on(D.client.isTrustedUpdated,o=>{o&&(i(),t.has(a)&&!s.cancelled&&!s.done&&e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:s.lastSeenSeq}))})}return s}function i(t,r){let i=Jr(t,r),a=n.get(i);if(a)return a;let o=Bn({id:r});return o.events.on(`chunk`,(n,i)=>{e.callEvent(`devframe:streaming:upload-chunk`,t,r,n,i)}),o.events.on(`end`,a=>{e.callEvent(`devframe:streaming:upload-end`,t,r,a),n.delete(i)}),n.set(i,o),o}return{subscribe:r,upload:i}}function Xr(){}var Zr=new Map;function Qr(e){let t=e.url;e.authToken&&(t=`${t}?${Zn}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=Xr,onError:i=Xr,onDisconnected:a=Xr,definitions:o=Zr}=e;n.addEventListener(`open`,e=>{r(e)}),n.addEventListener(`error`,e=>{let t=e instanceof Error?e:Error(e.type);i(t)}),n.addEventListener(`close`,e=>{a(e)});let s=Or(o);return{close:()=>{n.close()},on:e=>{n.addEventListener(`message`,t=>{e(t.data)})},post:e=>{if(n.readyState===WebSocket.OPEN){n.send(e);return}if(n.readyState===WebSocket.CONNECTING){let t=()=>{i(),n.readyState===WebSocket.OPEN&&n.send(e)},r=()=>i();function i(){n.removeEventListener(`open`,t),n.removeEventListener(`close`,r)}n.addEventListener(`open`,t),n.addEventListener(`close`,r);return}i(Error(`Devframe WebSocket is not open; message dropped`))},serialize:s.serialize,deserialize:s.deserialize}}function $r(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})(),i=r.protocol===`https:`?`wss:`:`ws:`;if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`,n=new URL(e.path??`/`,`${i}//${t}`);return n.protocol=i,n.href}let t=new URL(e.path??``,r);return t.protocol=i,t.href}if(typeof e==`number`)return`${i}//${r.hostname}:${e}`;let a=e??``;if(/^wss?:\/\//i.test(a))return a;if(/^https?:\/\//i.test(a))return it(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function ei(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=$r(n.websocket,r??`./`,location);return Pr({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>Qr({url:l,authToken:t,definitions:e.definitions,...s,onConnected(e){s.onConnected?.(e)},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(t){e.onDisconnected(),s.onDisconnected?.(t)}})})}function ti(e){return e.includes(`:`)}function $(e,t){return ti(t)?t:`${e}:${t}`}function ni(e){return{async get(t){return(await e()).value()[t]},async set(t,n){(await e()).mutate(e=>{e[t]=n})},async delete(t){(await e()).mutate(e=>{delete e[t]})},async all(){return(await e()).value()},async onChange(t){return(await e()).on(`updated`,e=>t(e))}}}function ri(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=e.sharedState.get(r,{initialValue:{}}),i}return ni(a)}function ii(e,t){return{global:ri(e,t,`global`),project:ri(e,t,`project`)}}function ai(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(ti(n.name))throw Error(`[devframe] Scoped client RPC registration for namespace "${t}" received an already-namespaced function name "${n.name}". Pass a bare name without a ":" separator.`);e.client.register({...n,name:`${t}:${n.name}`})},call:((n,...r)=>e.call($(t,n),...r)),callEvent:((n,...r)=>e.callEvent($(t,n),...r)),callOptional:((n,...r)=>e.callOptional($(t,n),...r)),sharedState:((n,r)=>e.sharedState.get($(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe($(t,n),r,i),upload:(n,r)=>e.streaming.upload($(t,n),r)}},settings:ii(e,t),scope:e.scope}}function oi(){if(typeof document<`u`){let e=document.modelContext;if(e)return e}if(typeof navigator<`u`){let e=navigator.modelContext;if(e)return e}}function si(e,t={}){let n=t.modelContext??oi();if(!n)return()=>{};let r=n,i=new Map,a=new Map;function o(t,n){let o=Wn(t.name),s=a.get(o);if(s&&s!==t.name){console.warn(`[devframe] WebMCP tool name "${o}" (from "${t.name}") collides with "${s}"; keeping the first registration.`);return}let c=new AbortController,l=Ne(t.type,n),u=r.registerTool({name:o,description:n.description,inputSchema:Ie(t.args),annotations:{title:n.title??t.name,readOnlyHint:l===`read`,destructiveHint:l===`destructive`},execute:n=>ci(t,e.context,n)},{signal:c.signal});u&&`then`in u&&u.then(()=>{},()=>{}),a.set(o,t.name),i.set(t.name,()=>{c.abort(),u&&`unregister`in u&&typeof u.unregister==`function`&&u.unregister(),a.delete(o)})}function s(t){let n=t?[t]:[...e.definitions.keys()];for(let t of n){i.get(t)?.(),i.delete(t);let n=e.definitions.get(t),r=n?.agent;n&&r&&o(n,r)}}s();let c=e.onChanged(e=>s(e));return()=>{c();for(let e of i.values())e();i.clear()}}async function ci(e,t,n){try{let r=Re(n,e.args?.length);return{content:[{type:`text`,text:li(await(await ar(e,t))(...r))}]}}catch(e){return{isError:!0,content:[{type:`text`,text:ui(e)}]}}}function li(e){return e===void 0?`undefined`:typeof e==`string`?e:JSON.stringify(e,null,2)}function ui(e){if(!(e instanceof Error))return String(e);let t=e.cause instanceof Error?` (cause: ${e.cause.message})`:``;return`${e.name}: ${e.message}${t}`}function di(e,t){if(t.backend===`static`)return`static`;let n=t.websocket!==void 0,r=t.sse!==void 0;if(e===`websocket`){if(!n)throw Error(`[devframe] transport: 'websocket' was requested, but this server does not advertise a WebSocket endpoint`);return`websocket`}if(e===`sse`){if(!r)throw Error(`[devframe] transport: 'sse' was requested, but this server does not advertise an SSE endpoint`);return`sse`}if(t.backend===`sse`&&r)return`sse`;if(n)return`websocket`;if(r)return`sse`;throw Error(`[devframe] This server advertises no RPC transport (backend "none"), so there is nothing to connect to. Enable the WebSocket or SSE endpoint on the server, or use its static/MCP surfaces instead.`)}async function fi(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=Qe(),a=Array.isArray(t)?t:[t],o=await br(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new Qn({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new or(f),m=e.webmcp===!1?void 0:si(p),h,g=!1;async function _(e){let t=[u,...a.filter(e=>e!==u)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(rt(e,r)).then(t=>{if(!t.ok)throw Error(`Failed to fetch ${e} from ${r}: ${t.status}`);return t.json()})}catch(e){n.push(e)}throw Error(`Failed to load ${e} from ${t.join(`, `)}`,{cause:n})}let v={authToken:l,connectionMeta:s,metaBaseUrl:c,events:i,clientRpc:p,callTimeout:e.callTimeout,rpcOptions:{...n,async onRequest(e,t,i){if(await n.onRequest?.call(this,e,t,i),r&&d?.validate(e.m)){if(d.has(e.m,e.a))return i(d.cached(e.m,e.a));let n=await t(e);d.apply(e,n)}else await t(e)}}},y=di(e.transport??`auto`,s),b=y===`static`?await Kr({fetchJsonFromBases:_}):y===`sse`?Ir({...v,sseOptions:e.sseOptions}):ei({...v,wsOptions:e.wsOptions}),x;try{x=new BroadcastChannel(`devframe-auth`)}catch{}let S,C=!1;function te(e){return((...t)=>C||!S?e(...t):S.then(()=>e(...t)))}function ne(){g=!0;try{h?.(),m?.()}finally{try{x?.close()}finally{b.close?.()}}}let w={events:i,get isTrusted(){return b.isTrusted},get status(){return b.status},get connectionError(){return b.connectionError},get transport(){return b.transport??y},get connection(){return o},connectionMeta:s,ensureTrusted:b.ensureTrusted,requestTrust:b.requestTrust,requestTrustWithToken:async e=>(gr(e),o={...o,authToken:e},b.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await b.requestTrustWithCode(e);if(!t)return!1;gr(t),o={...o,authToken:t};try{x?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},requestAuthCode:e=>b.requestAuthCode(e),call:te(b.call),callEvent:te(b.callEvent),callOptional:te(b.callOptional),client:p,sharedState:void 0,services:void 0,streaming:void 0,cacheManager:d,scope:void 0,close:ne};w.sharedState=Er(w),w.streaming=Yr(w),w.services=Tr(w);let re=new Map;w.scope=(e=>{if(!e)return w;let t=re.get(e);return t||(t=ai(w,e),re.set(e,t)),t}),f.rpc=w;function T(){try{return typeof window<`u`&&window.self===window.top}catch{return!1}}async function ie(){if(e.simpleAuth!==!1&&T()&&typeof globalThis.prompt==`function`)for(await w.requestAuthCode().catch(()=>{});!w.isTrusted;){let e=globalThis.prompt(`devframe: enter the authentication code shown in your terminal`);if(e==null)return;let t=e.trim();if(t&&await w.requestTrustWithCode(t))return}}async function ae(){let t=await b.requestTrust(),n=e.otpParam??`devframe_otp`,r=n?await wr(w,{param:n}):!1;t||r||w.isTrusted||await ie()}return S=ae().then(()=>{C=!0},()=>{C=!0}),s.mcp&&ee(async()=>{let{setupBrowserAgentRpcBridge:e}=await import(`./browser-agent-rpc-BXhoSh1z-DrvKG05N.js`);return{setupBrowserAgentRpcBridge:e}},__vite__mapDeps([0,1]),import.meta.url).then(({setupBrowserAgentRpcBridge:e})=>{g||(h=e(w))}).catch(()=>{}),x&&(x.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&w.requestTrustWithToken(e.data.authToken)}),w}var pi=fi;async function mi(){let e=await pi();return{client:e,rpc:e.scope(le).rpc}}var hi={class:`min-h-screen flex items-center justify-center p-6`},gi={class:`text-lg font-semibold`},_i={class:`text-sm op-fade`},vi=[`aria-label`],yi={key:0,class:`text-sm text-red-500`},bi=l({__name:`LocalAuthGate`,props:{client:{},onTrusted:{type:Function}},setup(l){let f=l,h=c(``),g=c(!1),_=c(!1);a(()=>f.client.requestAuthCode());async function v(){_.value=!0,g.value=!1;try{await f.client.requestTrustWithCode(h.value.trim())?f.onTrusted():g.value=!0}finally{_.value=!1}}return(a,c)=>(t(),i(`main`,hi,[s(`form`,{class:`max-w-90 w-full flex flex-col gap-3`,onSubmit:p(v,[`prevent`])},[s(`h1`,gi,n(a.$t(`local.auth.title`)),1),s(`p`,_i,n(a.$t(`local.auth.hint`)),1),u(s(`input`,{"onUpdate:modelValue":c[0]||=e=>h.value=e,inputmode:`numeric`,autocomplete:`one-time-code`,maxlength:`6`,class:`border border-base rounded bg-base px-3 py-2 text-center text-xl tracking-widest font-mono`,"aria-label":a.$t(`local.auth.title`)},null,8,vi),[[m,h.value]]),g.value?(t(),i(`p`,yi,n(a.$t(`local.auth.invalid`)),1)):r(``,!0),e(ie,{variant:`primary`,type:`submit`,disabled:_.value||h.value.trim().length!==6},{default:d(()=>[o(n(a.$t(`local.auth.submit`)),1)]),_:1},8,[`disabled`])],32)]))}});async function xi(e){if(await e.ensureTrusted(2e3).catch(()=>!1))return;let t=document.createElement(`div`);document.body.append(t),await new Promise(n=>{f(bi,{client:e,onTrusted:n}).use(v).mount(t)}),t.remove()}async function Si(e,t){let{client:n,rpc:r}=await mi();await xi(n),ne(e,{cache:w(C({driver:pe(r)})),credentials:me(r,re),llm:_e(r,te)}),e.provide(oe,r),e.provide(ae,ge(r));for(let e of de(()=>ee(()=>import(`./diff-CNRGXNmw.js`),__vite__mapDeps([2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29]),import.meta.url)))t.addRoute(e);t.removeRoute(`home`),t.addRoute({path:`/`,component:()=>ee(()=>import(`./pages-local-CVPpEWZ_.js`),__vite__mapDeps([30,3,13,14,5,15,12,16,6,7,8,9,10,17,18,19,20,22,23,31,28,32,33]),import.meta.url)})}export{Si as installLocal};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={cancel:`Annulla`,save:`Salva`,remove:`Rimuovi`,retry:`Riprova`,close:`Chiudi`,dismiss:`Ignora`,refresh:`Aggiorna`,settings:`Impostazioni`,you:`tu`,loading:`Caricamento…`,send:`Invia`,stop:`Ferma`,clear:`Svuota`,reply:`Rispondi`,submit:`Invia`,abort:`Interrompi`,rerun:`Riesegui`,files:`{n} file | {n} file`,subgroups:`{n} sottogruppo | {n} sottogruppi`,githubRepository:`Repository GitHub`,avatar:`Avatar di {login}`},t={dropHint:`Rilascia per caricare il tuo file diff / .patch`,tagline:`Raggruppa i file modificati, riassume ciò che conta e ti fa revisionare un ambito alla volta. Tutto funziona in locale nel tuo browser.`,documentTitle:`Revisioni delle pull request chiare e organizzate`,open:`Apri`,pasteHint:`Incolla l'URL di una pull request GitHub o scegli una demo qui sotto.`,recentlyViewed:`// visti di recente`,recentRepositories:`// repository visti di recente`,tryDemos:`// prova alcune demo`,demoBefore:`// prima`,demoAfter:`// dopo`,moreFiles:`... altri {n} file`,demoTitle:`feat: condividere un'analisi IA come commento della PR e caricare i risultati condivisi`,demoSummary:`Un revisore con API key pubblica la sua analisi nella PR; tutti gli altri la caricano senza token.`,demoGroups:{store:`Store delle analisi condivise e contratto del commento`,ui:`UI di condivisione del risultato`,refactor:`Refactor dello store: risultato alla radice`,tests:`Test`,docs:`Docs e dipendenze`},uploadTitle:`Revisiona un diff senza PR`,uploadDescription:`Carica o incolla un unified diff, oppure trascina un file {diff} / {patch} ovunque in questa pagina.`,uploadButton:`Carica un diff`,embedTitle:`Usalo integrato su github.com`,embedDescription:`Con {tampermonkey} o {violentmonkey} installato, un pannello pulls.review appare in ogni pagina di pull request.`,installUserscript:`Installa lo userscript`,bookmarkletTitle:`Passa da github.com a pulls.review`,bookmarkletDescription:`Non puoi installare estensioni? Trascina questo bookmarklet nella barra dei preferiti per aprire la pull request corrente su pulls.review, e tornare indietro.`,bookmarkletDrag:`Trascinami nella barra dei preferiti`,actionsTitle:`Configura l'analisi automatica con GitHub Actions`,actionsDescription:`Analizza ogni pull request una volta in CI e pubblica il risultato come commento, così ogni revisore non ha bisogno della propria chiave del modello.`,cliTitle:`Eseguilo sulle modifiche git locali con la CLI`,cliDescription:`Rivedi il working tree, un commit o un branch prima del push, raggruppati e riassunti come una PR.`,viewGuide:`Vedi la guida`},n={userscript:{title:`Usa pulls.review integrato su github.com`,intro:`Lo userscript aggiunge un pannello pulls.review direttamente alle pagine delle pull request su github.com, con file raggruppati e riassunti, così non devi cambiare scheda.`,manager:`Installa un gestore di userscript: {tampermonkey} o {violentmonkey}.`,install:`Installa lo userscript di pulls.review. Il gestore ti chiederà di confermare.`,open:`Apri una qualsiasi pull request su github.com e fai clic sulla scheda {tab} accanto a "Files changed".`,ai:`github.com blocca le richieste necessarie all'analisi IA, quindi il pannello mostra le analisi condivise come commenti della PR. Apri la PR su pulls.review per avviarne una nuova.`},bookmarklet:{title:`Passa da github.com a pulls.review`,intro:`Un bookmarklet è un preferito che esegue un piccolo script. Funziona in qualsiasi browser, senza estensioni da installare, e apre la pagina corrente sull'altro sito.`,bar:`Mostra la barra dei preferiti, ad esempio con {shortcut}.`,drag:`Trascina questo pulsante nella barra dei preferiti:`,use:`Su una pagina di pull request, commit o confronto su github.com, fai clic sul preferito per aprirla su pulls.review. Fai di nuovo clic per tornare indietro.`},actions:{title:`Analisi automatica con GitHub Actions`,intro:`Lascia che la CI analizzi ogni pull request una volta, appena viene aperta o aggiornata. Chiunque apra la PR, qui o nel pannello su github.com, vede subito lo stesso riassunto raggruppato. Nessuno ha bisogno della propria chiave del modello, e anche le pull request dai fork lo ricevono.`,secret:`Aggiungi la chiave del modello come secret del repository, ad esempio {name}.`,workflow:`Aggiungi questo workflow al repository:`,result:`Apri o aggiorna una pull request per provarlo. L'analisi arriva come commento, e le riesecuzioni su una PR invariata saltano la chiamata al modello.`,options:`Il {provider} viene dedotto dalla chiave. Imposta {provider}, {model} o {locale} per cambiarlo. Tutte le opzioni sono nel {readme}.`},cli:{title:`Rivedi le modifiche git locali con la CLI`,intro:`Rivedi la tua modifica prima di chiunque altro. La CLI apre in pulls.review il tuo branch, un commit o il lavoro non ancora committato, così vedi come si legge la modifica, raggruppata e riassunta, prima del push o di aprire una PR.`,branch:`In un repository git, esegui questo per rivedere il branch corrente rispetto al branch predefinito:`,target:`Oppure scegli cosa rivedere:`,browser:`Apre {url} nel browser per visualizzare le tue modifiche locali. Conferma la scheda con il codice monouso stampato nel terminale. Da lì puoi anche scegliere altri branch o commit da confrontare.`}},r={title:`Carica un diff`,description:`Incolla o trascina un file unified diff / .patch per revisionarlo.`,pasteLabel:`Incolla un unified diff / .patch`,chooseFile:`Oppure scegli un file .diff/.patch`,loadButton:`Carica diff`,parsing:`Analisi del diff…`,parseFailed:`Impossibile analizzare questo diff`,noDiff:`Nessun diff caricato`,noDiffHint:`Torna alla home e usa il pulsante di caricamento per incollare o trascinare un diff.`,goHome:`Vai alla home`},i={loading:`Caricamento della pull request…`,loadFailed:`Impossibile caricare questa pull request`,somethingWrong:`Qualcosa è andato storto`,newCommits:`Questa pull request ha nuovi commit da quando è stata memorizzata in cache.`,autoRefreshNextTime:`Aggiorna automaticamente la prossima volta`,endOfDiff:`Hai raggiunto la fine del diff.`,analyzeBy:`Analizza con`,rules:`Regole`,ai:`IA`,by:`di`,sharedBy:`Analisi IA condivisa da`,sharedAnalysis:`Analisi condivisa`,reviewedOf:`/ {total} revisionati`,openInSite:`Apri in pulls.review`},a={reviewChanges:`Revisiona le modifiche`,updateUserscript:`Aggiorna lo userscript`},o={loading:`Caricamento delle pull request…`,loadFailed:`Impossibile caricare le pull request`,open:`{n} aperte`,search:`Filtra le pull request`,empty:`Non ci sono pull request aperte`,noMatches:`Nessuna pull request corrisponde alla ricerca`,searchingAll:`Ricerca tra tutte le {n} pull request aperte…`,loadingMore:`Caricamento…`,openedBy:`aperta {time} da {author}`,milestone:`Milestone`,comments:`{n} commento | {n} commenti`,linkedIssues:`{n} issue collegata | {n} issue collegate`,assignedTo:`Assegnata a {login}`,groups:`{n} gruppo | {n} gruppi`,viewedHint:`Vista in questo browser`,aiAvailable:`Analisi IA disponibile`,sort:{label:`Ordina`,"recently-updated":`Aggiornate di recente`,"least-recently-updated":`Aggiornate meno di recente`,newest:`Più recenti`,oldest:`Più vecchie`,"most-commented":`Più commentate`,"least-commented":`Meno commentate`},review:{approved:`Approvata`,changes_requested:`Modifiche richieste`,review_required:`Revisione richiesta`},checks:{success:`Tutti i controlli superati`,failure:`Alcuni controlli non sono riusciti`,pending:`Alcuni controlli non sono ancora completati`}},s={setupKeys:`Configura le chiavi API`,analyzing:`Analisi in corso…`,failed:`Analisi fallita`,failedTitle:`Analisi IA fallita: {message}`,reanalyze:`Analizza di nuovo`,withAi:`Analizza con l'IA`,statusTitle:`Analisi IA`,starting:`Avvio…`,thinking:`Sto pensando… (passo {step})`,reading:`Lettura di {n} file: {first} | Lettura di {n} file: {first}`,organizing:`Organizzazione dei gruppi…`,notConfigured:`L'analisi IA non è configurata: aggiungi un token gateway o un'API key del fornitore nelle Impostazioni`,chatFailed:`Richiesta della chat fallita`,agentSessionLost:`L’agente non ha più questa conversazione. Rianalizza per chattare.`},c={button:`Condividi risultato`,updateButton:`Aggiorna il commento condiviso`,sharing:`Condivisione…`,tooltip:`Pubblica questa analisi come commento nella pull request così che altri possano caricarla`,needsToken:`Per condividere serve un token GitHub con accesso in scrittura`,failed:`Condivisione fallita: {message}`,titleUpdate:`Aggiorna la tua analisi condivisa`,titleShare:`Condividi questa analisi su GitHub`,willUpdate:`Il tuo {comment} esistente in questa pull request sarà aggiornato come {user} con il tuo token GitHub.`,willPost:`Un commento pubblico sarà pubblicato in questa pull request come {user} con il tuo token GitHub.`,commentLink:`commento`,contains:`Il commento contiene:`,containsLink:`un link per aprire questa revisione su {site}`,containsJson:`il raggruppamento e i riassunti di questa analisi IA come JSON in un blocco ripiegato`,excludes:`I tuoi messaggi di chat, le chiavi API o qualsiasi altro dato delle impostazioni non saranno inclusi.`,anyoneCanLoad:`Chiunque veda la pull request può caricare l'analisi condivisa.`,englishRecommended:`Se lavori a un progetto pubblico, ti consigliamo di condividere il risultato in inglese per renderlo utile alla community.`,share:`Condividi`,update:`Aggiorna`,shareAnyway:`Condividi comunque`,updateAnyway:`Aggiorna comunque`,loadReplaces:`Caricare un'analisi IA condivisa? Sostituirà la tua:`,available:`Analisi IA condivise disponibili per questa pull request:`,staleTitle:`Analizzata prima degli ultimi commit`,outdated:`(obsoleta)`,inLanguage:`Analizzata in {language}`,notShared:`{login} non ha condiviso un'analisi di questa pull request.`},l={toggle:`Espandi o comprimi il gruppo`,filesReviewed:`{reviewed} / {total} file revisionati`,subgroupsOf:`sottogruppi di`,hideSubgroups:`Nascondi sottogruppi`,showSubgroups:`Mostra sottogruppi`,navTabs:`Mostra i gruppi come schede`,navSidebar:`Mostra i gruppi come barra laterale`,uncategorized:`Non categorizzati`,uncategorizedSummary:`File non coperti dall'analisi attuale.`},u={critical:`Rivedere con attenzione`},d={markReviewed:`Segna come revisionato`,markFolderReviewed:`Segna tutti i file in {name} come revisionati`,changedSinceReviewed:`Questo file era già stato revisionato, ma è cambiato in commit successivi`,resolved:`{n} risolti`,binary:`File binario`,binaryNotShown:`File binario non mostrato.`,tooLarge:`Diff troppo grande per essere mostrato.`,loadFailed:`Caricamento fallito`,loadFull:`Carica il contenuto completo del file`,expand:`Espandi file`,collapse:`Comprimi file`,noLongerInDiff:`Non è più in questo diff`,removed:`rimosso`},f={title:`Avanzamento della revisione`,markAll:`Segna tutti come revisionati`,reset:`Reimposta lo stato di revisione`,invert:`Inverti lo stato di revisione`,status:{reviewed:`Revisionato`,changed:`Cambiato dopo la revisione`,unreviewed:`Non revisionato`}},p={added:`aggiunto`,removed:`rimosso`,modified:`modificato`,renamed:`rinominato`,copied:`copiato`},m={open:`aperta`,draft:`bozza`,closed:`chiusa`,merged:`unita`},h={ui:`UI`,api:`API`,core:`core`,data:`dati`,cli:`CLI`,security:`sicurezza`,tests:`test`,docs:`documentazione`,examples:`esempi`,deps:`dipendenze`,build:`build`,scripts:`script`,config:`configurazione`,i18n:`i18n`,assets:`risorse`,other:`altro`},g={addReview:`Aggiungi revisione`,hideComments:`Nascondi i commenti di revisione`,showComments:`Mostra i commenti di revisione`,reviews:`Revisioni`,approved:`ha approvato`,changesRequested:`ha richiesto modifiche`,commented:`ha commentato`,dismissed:`revisione respinta`,reviewChanges:`Revisiona le modifiche`,includesPending:`L'invio include il tuo {n} commento in sospeso. | L'invio include i tuoi {n} commenti in sospeso.`,summaryPlaceholder:`Lascia un riepilogo (facoltativo per approvare)`,comment:`Commenta`,approve:`Approva`,requestChanges:`Richiedi modifiche`,discard:`Scarta revisione`,leaveComment:`Lascia un commento`,addSingle:`Aggiungi commento singolo`,addToReview:`Aggiungi commento di revisione`,startReview:`Inizia una revisione`,pending:`In sospeso`,editComment:`Modifica commento`,deleteComment:`Elimina commento`,replyPlaceholder:`Rispondi…`,resolve:`Risolvi`},_={title:`Chiedi su questa PR`,collapse:`Riduci`,reanalyzeToEnable:`Analizza di nuovo per abilitare la chat`,thinking:`Sto pensando…`,placeholder:`Chiedi su questa PR…`,updatedGrouping:`Raggruppamento aggiornato: {n} gruppi`,readFiles:`Letto {n} file | Letti {n} file`,updatingGrouping:`Aggiornamento del raggruppamento…`,submittingGrouping:`Invio del raggruppamento…`,requestFailed:`Richiesta fallita`,stopped:`fermato`},v={layout:`Layout del diff`,wrapLines:`Vai a capo automaticamente`,unified:`Unificato`,split:`Affiancato`,syntaxTheme:{label:`Tema della sintassi`,light:`Modalità chiara`,dark:`Modalità scura`},cached:`Pull request in cache`,autoRefresh:`Aggiorna automaticamente quando vengono trovati nuovi commit`,language:`Lingua`,token:{label:`Token di accesso personale GitHub`,optional:`Facoltativo per i repository pubblici; necessario per i repository privati o per lasciare revisioni.`,scopes:`Le revisioni richiedono lo scope {repo} (token classico) o {fineGrained} (token granulare)`,storedLocally:`Salvato solo in questo browser.`,generate:`Generane uno su GitHub →`,fineGrained:`Token granulare (senza scope classici)`,updated:`Aggiornato`,expires:`Scade`,neverExpires:`Non scade mai`,change:`Cambia token`,checking:`Verifica del token…`,couldNotVerify:`Impossibile verificare questo token.`},tabs:{appearance:`Aspetto`,behavior:`Comportamento`,github:`GitHub`,ai:`Analisi IA`,notSetUp:`Non ancora configurato`},llm:{title:`Analisi IA`,description:`Configura un fornitore di modelli per abilitare i riassunti generati dall'IA. Salvato solo in questo browser e inviato solo al fornitore che scegli.`,provider:`Fornitore`,baseUrl:`URL base`,baseUrlDescription:`Qualsiasi endpoint chat completions compatibile con OpenAI (OpenAI stessa, un server locale, ecc.).`,apiKey:`API key`,gatewayHint:`Un token {link}, che raggiunge tutti i vendor supportati con un solo token.`,anthropicHint:`Una {link}, chiamata direttamente da questo browser (senza gateway).`,anthropicLink:`API key Anthropic`,openaiHint:`L'API key per l'endpoint indicato sopra.`,createKey:`Creane una su {provider} →`,configured:`Configurata`,changeKey:`Cambia chiave`,model:`Modello`,modelListFailed:`Impossibile caricare l'elenco dei modelli ({error}). Inserisci un id di modello manualmente.`,embedUnavailable:`Le funzioni IA non sono disponibili in modalità incorporata`,embedReason:`La rigida CSP di github.com blocca le richieste necessarie alle funzioni IA. {link} per usarle.`,goToWebsite:`Vai al sito`,agent:`Agente`,agentNeedsCli:"Gli agenti locali girano nella CLI di pulls.review: avviala in un repository con `npx pulls.review` e scegline uno lì.",agentDetecting:`Ricerca delle CLI degli agenti…`,agentNone:`Nessuna CLI di agente trovata su questa macchina.`,agentHint:`Un agente di codice installato su questa macchina, con il proprio account: {claude} o {opencode}. Legge la patch e il repository, non scrive mai.`,agentPick:`Scegli un agente…`},models:{placeholder:`id del modello`,loading:`Caricamento dei modelli…`,search:`Cerca modelli…`,noMatch:`Nessun modello corrispondente`,useCustom:`Usa “{id}”`,free:`Gratis`,priceTitle:`Input {input}/M · Output {output}/M token`,agentDefault:`Predefinito dell’agente`}},y={allFiles:`Tutti i file`,code:{label:`Codice`,summary:`Modifiche al codice sorgente.`},other:{label:`Altro`,summary:`Altre modifiche che non rientrano in una categoria esistente.`},docs:{label:`Documentazione`,summary:`Aggiornamenti della documentazione.`},tests:{label:`Test`,summary:`Copertura dei test per la modifica.`},config:{label:`Configurazione`,summary:`Modifiche di configurazione.`},deps:{label:`Dipendenze`,summary:`Modifiche di versione delle dipendenze.`},generated:{label:`Generati`,summary:`Modifiche a file generati o di build.`}},b={tokenRequired:`Serve un token GitHub per scrivere in questa pull request.`,diffNotLoaded:`Il diff non ha ancora finito di caricarsi.`,noViewer:`Impossibile determinare l'utente GitHub di questo token.`,tokenRejected:`GitHub ha rifiutato questo token (401). Controlla che sia stato incollato per intero e che non sia stato revocato.`,tooLarge:`L'analisi è troppo grande per essere condivisa come commento ({n} caratteri).`},x={loading:`Caricamento delle modifiche locali…`,loadFailed:`Impossibile caricare queste modifiche`,auth:{title:`Inserisci il codice dal terminale`,hint:`pulls.review ha stampato un codice di 6 cifre nel terminale in cui è in esecuzione.`,invalid:`Quel codice non ha funzionato. Controlla il terminale e riprova.`,submit:`Continua`},picker:{tagline:`Revisiona branch locali, intervalli e modifiche non committate come una pull request: raggruppati, riassunti, un ambito alla volta.`,title:`Revisiona le modifiche locali`,base:`Base`,head:`Head`,compare:`Confronta`,shortcuts:`Scorciatoie`,worktree:`Modifiche non committate`,recentCommits:`Commit recenti`,branches:`Branch`,against:`rispetto a {base}`,current:`Branch attuale`,github:`Oppure una pull request, un confronto o un commit GitHub`}},S={common:e,landing:t,guide:n,load:r,pr:i,embed:a,pulls:o,analyze:s,share:c,group:l,note:u,file:d,reviewProgress:f,fileStatus:p,prState:m,category:h,review:g,chat:_,settings:v,rules:y,errors:b,local:x};export{s as analyze,h as category,_ as chat,e as common,S as default,a as embed,b as errors,d as file,p as fileStatus,l as group,n as guide,t as landing,r as load,x as local,u as note,i as pr,m as prState,o as pulls,g as review,f as reviewProgress,y as rules,v as settings,c as share};
|
|
1
|
+
var e={cancel:`Annulla`,save:`Salva`,remove:`Rimuovi`,retry:`Riprova`,close:`Chiudi`,dismiss:`Ignora`,refresh:`Aggiorna`,settings:`Impostazioni`,you:`tu`,loading:`Caricamento…`,send:`Invia`,stop:`Ferma`,clear:`Svuota`,reply:`Rispondi`,submit:`Invia`,abort:`Interrompi`,rerun:`Riesegui`,files:`{n} file | {n} file`,subgroups:`{n} sottogruppo | {n} sottogruppi`,githubRepository:`Repository GitHub`,avatar:`Avatar di {login}`},t={dropHint:`Rilascia per caricare il tuo file diff / .patch`,tagline:`Raggruppa i file modificati, riassume ciò che conta e ti fa revisionare un ambito alla volta. Tutto funziona in locale nel tuo browser.`,documentTitle:`Revisioni delle pull request chiare e organizzate`,open:`Apri`,pasteHint:`Incolla l'URL di una pull request GitHub o scegli una demo qui sotto.`,recentlyViewed:`// visti di recente`,recentRepositories:`// repository visti di recente`,tryDemos:`// prova alcune demo`,demoBefore:`// prima`,demoAfter:`// dopo`,moreFiles:`... altri {n} file`,demoTitle:`feat: condividere un'analisi IA come commento della PR e caricare i risultati condivisi`,demoSummary:`Un revisore con API key pubblica la sua analisi nella PR; tutti gli altri la caricano senza token.`,demoGroups:{store:`Store delle analisi condivise e contratto del commento`,ui:`UI di condivisione del risultato`,refactor:`Refactor dello store: risultato alla radice`,tests:`Test`,docs:`Docs e dipendenze`},uploadTitle:`Revisiona un diff senza PR`,uploadDescription:`Carica o incolla un unified diff, oppure trascina un file {diff} / {patch} ovunque in questa pagina.`,uploadButton:`Carica un diff`,embedTitle:`Usalo integrato su github.com`,embedDescription:`Con {tampermonkey} o {violentmonkey} installato, un pannello pulls.review appare in ogni pagina di pull request.`,installUserscript:`Installa lo userscript`,bookmarkletTitle:`Passa da github.com a pulls.review`,bookmarkletDescription:`Non puoi installare estensioni? Trascina questo bookmarklet nella barra dei preferiti per aprire la pull request corrente su pulls.review, e tornare indietro.`,bookmarkletDrag:`Trascinami nella barra dei preferiti`,actionsTitle:`Configura l'analisi automatica con GitHub Actions`,actionsDescription:`Analizza ogni pull request una volta in CI e pubblica il risultato come commento, così ogni revisore non ha bisogno della propria chiave del modello.`,cliTitle:`Eseguilo sulle modifiche git locali con la CLI`,cliDescription:`Rivedi il working tree, un commit o un branch prima del push, raggruppati e riassunti come una PR.`,viewGuide:`Vedi la guida`},n={userscript:{title:`Usa pulls.review integrato su github.com`,intro:`Lo userscript aggiunge un pannello pulls.review direttamente alle pagine delle pull request su github.com, con file raggruppati e riassunti, così non devi cambiare scheda.`,manager:`Installa un gestore di userscript: {tampermonkey} o {violentmonkey}.`,install:`Installa lo userscript di pulls.review. Il gestore ti chiederà di confermare.`,open:`Apri una qualsiasi pull request su github.com e fai clic sulla scheda {tab} accanto a "Files changed".`,ai:`github.com blocca le richieste necessarie all'analisi IA, quindi il pannello mostra le analisi condivise come commenti della PR. Apri la PR su pulls.review per avviarne una nuova.`},bookmarklet:{title:`Passa da github.com a pulls.review`,intro:`Un bookmarklet è un preferito che esegue un piccolo script. Funziona in qualsiasi browser, senza estensioni da installare, e apre la pagina corrente sull'altro sito.`,bar:`Mostra la barra dei preferiti, ad esempio con {shortcut}.`,drag:`Trascina questo pulsante nella barra dei preferiti:`,use:`Su una pagina di pull request, commit o confronto su github.com, fai clic sul preferito per aprirla su pulls.review. Fai di nuovo clic per tornare indietro.`},actions:{title:`Analisi automatica con GitHub Actions`,intro:`Lascia che la CI analizzi ogni pull request una volta, appena viene aperta o aggiornata. Chiunque apra la PR, qui o nel pannello su github.com, vede subito lo stesso riassunto raggruppato. Nessuno ha bisogno della propria chiave del modello, e anche le pull request dai fork lo ricevono.`,secret:`Aggiungi la chiave del modello come secret del repository, ad esempio {name}.`,workflow:`Aggiungi questo workflow al repository:`,result:`Apri o aggiorna una pull request per provarlo. L'analisi arriva come commento, e le riesecuzioni su una PR invariata saltano la chiamata al modello.`,options:`Il {provider} viene dedotto dalla chiave. Imposta {provider}, {model} o {locale} per cambiarlo. Tutte le opzioni sono nel {readme}.`},cli:{title:`Rivedi le modifiche git locali con la CLI`,intro:`Rivedi la tua modifica prima di chiunque altro. La CLI apre in pulls.review il tuo branch, un commit o il lavoro non ancora committato, così vedi come si legge la modifica, raggruppata e riassunta, prima del push o di aprire una PR.`,branch:`In un repository git, esegui questo per rivedere il branch corrente rispetto al branch predefinito:`,target:`Oppure scegli cosa rivedere:`,browser:`Apre {url} nel browser per visualizzare le tue modifiche locali. Conferma la scheda con il codice monouso stampato nel terminale. Da lì puoi anche scegliere altri branch o commit da confrontare.`}},r={title:`Carica un diff`,description:`Incolla o trascina un file unified diff / .patch per revisionarlo.`,pasteLabel:`Incolla un unified diff / .patch`,chooseFile:`Oppure scegli un file .diff/.patch`,loadButton:`Carica diff`,parsing:`Analisi del diff…`,parseFailed:`Impossibile analizzare questo diff`,noDiff:`Nessun diff caricato`,noDiffHint:`Torna alla home e usa il pulsante di caricamento per incollare o trascinare un diff.`,goHome:`Vai alla home`},i={loading:`Caricamento della pull request…`,loadFailed:`Impossibile caricare questa pull request`,somethingWrong:`Qualcosa è andato storto`,newCommits:`Questa pull request ha nuovi commit da quando è stata memorizzata in cache.`,autoRefreshNextTime:`Aggiorna automaticamente la prossima volta`,endOfDiff:`Hai raggiunto la fine del diff.`,analyzeBy:`Analizza con`,rules:`Regole`,ai:`IA`,by:`di`,sharedBy:`Analisi IA condivisa da`,sharedAnalysis:`Analisi condivisa`,reviewedOf:`/ {total} revisionati`,openInSite:`Apri in pulls.review`},a={reviewChanges:`Revisiona le modifiche`,updateUserscript:`Aggiorna lo userscript`},o={loading:`Caricamento delle pull request…`,loadFailed:`Impossibile caricare le pull request`,open:`{n} aperte`,search:`Filtra le pull request`,empty:`Non ci sono pull request aperte`,noMatches:`Nessuna pull request corrisponde alla ricerca`,searchingAll:`Ricerca tra tutte le {n} pull request aperte…`,loadingMore:`Caricamento…`,openedBy:`aperta {time} da {author}`,milestone:`Milestone`,comments:`{n} commento | {n} commenti`,linkedIssues:`{n} issue collegata | {n} issue collegate`,assignedTo:`Assegnata a {login}`,groups:`{n} gruppo | {n} gruppi`,viewedHint:`Vista in questo browser`,aiAvailable:`Analisi IA disponibile`,sort:{label:`Ordina`,"recently-updated":`Aggiornate di recente`,"least-recently-updated":`Aggiornate meno di recente`,newest:`Più recenti`,oldest:`Più vecchie`,"most-commented":`Più commentate`,"least-commented":`Meno commentate`},review:{approved:`Approvata`,changes_requested:`Modifiche richieste`,review_required:`Revisione richiesta`},checks:{success:`Tutti i controlli superati`,failure:`Alcuni controlli non sono riusciti`,pending:`Alcuni controlli non sono ancora completati`}},s={setupKeys:`Configura le chiavi API`,analyzing:`Analisi in corso…`,failed:`Analisi fallita`,failedTitle:`Analisi IA fallita: {message}`,reanalyze:`Analizza di nuovo`,withAi:`Analizza con l'IA`,statusTitle:`Analisi IA`,starting:`Avvio…`,thinking:`Sto pensando… (passo {step})`,reading:`Lettura di {n} file: {first} | Lettura di {n} file: {first}`,organizing:`Organizzazione dei gruppi…`,notConfigured:`L'analisi IA non è configurata: aggiungi un token gateway o un'API key del fornitore nelle Impostazioni`,chatFailed:`Richiesta della chat fallita`,agentSessionLost:`L’agente non ha più questa conversazione. Rianalizza per chattare.`},c={button:`Condividi risultato`,updateButton:`Aggiorna il commento condiviso`,sharing:`Condivisione…`,tooltip:`Pubblica questa analisi come commento nella pull request così che altri possano caricarla`,needsToken:`Per condividere serve un token GitHub con accesso in scrittura`,failed:`Condivisione fallita: {message}`,titleUpdate:`Aggiorna la tua analisi condivisa`,titleShare:`Condividi questa analisi su GitHub`,willUpdate:`Il tuo {comment} esistente in questa pull request sarà aggiornato come {user} con il tuo token GitHub.`,willPost:`Un commento pubblico sarà pubblicato in questa pull request come {user} con il tuo token GitHub.`,commentLink:`commento`,contains:`Il commento contiene:`,containsLink:`un link per aprire questa revisione su {site}`,containsJson:`il raggruppamento e i riassunti di questa analisi IA come JSON in un blocco ripiegato`,excludes:`I tuoi messaggi di chat, le chiavi API o qualsiasi altro dato delle impostazioni non saranno inclusi.`,anyoneCanLoad:`Chiunque veda la pull request può caricare l'analisi condivisa.`,englishRecommended:`Se lavori a un progetto pubblico, ti consigliamo di condividere il risultato in inglese per renderlo utile alla community.`,share:`Condividi`,update:`Aggiorna`,shareAnyway:`Condividi comunque`,updateAnyway:`Aggiorna comunque`,loadReplaces:`Caricare un'analisi IA condivisa? Sostituirà la tua:`,available:`Analisi IA condivise disponibili per questa pull request:`,staleTitle:`Analizzata prima degli ultimi commit`,outdated:`(obsoleta)`,inLanguage:`Analizzata in {language}`,notShared:`{login} non ha condiviso un'analisi di questa pull request.`},l={toggle:`Espandi o comprimi il gruppo`,filesReviewed:`{reviewed} / {total} file revisionati`,subgroupsOf:`sottogruppi di`,hideSubgroups:`Nascondi sottogruppi`,showSubgroups:`Mostra sottogruppi`,navTabs:`Mostra i gruppi come schede`,navSidebar:`Mostra i gruppi come barra laterale`,uncategorized:`Non categorizzati`,uncategorizedSummary:`File non coperti dall'analisi attuale.`},u={critical:`Rivedere con attenzione`},d={layoutTree:`Mostra i file come albero`,layoutList:`Mostra i file come elenco`,markReviewed:`Segna come revisionato`,markFolderReviewed:`Segna tutti i file in {name} come revisionati`,changedSinceReviewed:`Questo file era già stato revisionato, ma è cambiato in commit successivi`,resolved:`{n} risolti`,binary:`File binario`,binaryNotShown:`File binario non mostrato.`,tooLarge:`Diff troppo grande per essere mostrato.`,loadFailed:`Caricamento fallito`,loadFull:`Carica il contenuto completo del file`,expand:`Espandi file`,collapse:`Comprimi file`,collapseMenu:`Espandi o comprimi file`,expandAll:`Espandi tutti i file`,collapseAll:`Comprimi tutti i file`,collapseReviewed:`Comprimi i file revisionati`,noLongerInDiff:`Non è più in questo diff`,removed:`rimosso`},f={title:`Avanzamento della revisione`,markAll:`Segna tutti come revisionati`,reset:`Reimposta lo stato di revisione`,invert:`Inverti lo stato di revisione`,status:{reviewed:`Revisionato`,changed:`Cambiato dopo la revisione`,unreviewed:`Non revisionato`}},p={added:`aggiunto`,removed:`rimosso`,modified:`modificato`,renamed:`rinominato`,copied:`copiato`},m={open:`aperta`,draft:`bozza`,closed:`chiusa`,merged:`unita`},h={ui:`UI`,api:`API`,core:`core`,data:`dati`,cli:`CLI`,security:`sicurezza`,tests:`test`,docs:`documentazione`,examples:`esempi`,deps:`dipendenze`,build:`build`,scripts:`script`,config:`configurazione`,i18n:`i18n`,assets:`risorse`,other:`altro`},g={addReview:`Aggiungi revisione`,hideComments:`Nascondi i commenti di revisione`,showComments:`Mostra i commenti di revisione`,reviews:`Revisioni`,approved:`ha approvato`,changesRequested:`ha richiesto modifiche`,commented:`ha commentato`,dismissed:`revisione respinta`,reviewChanges:`Revisiona le modifiche`,includesPending:`L'invio include il tuo {n} commento in sospeso. | L'invio include i tuoi {n} commenti in sospeso.`,summaryPlaceholder:`Lascia un riepilogo (facoltativo per approvare)`,comment:`Commenta`,approve:`Approva`,requestChanges:`Richiedi modifiche`,discard:`Scarta revisione`,leaveComment:`Lascia un commento`,addSingle:`Aggiungi commento singolo`,addToReview:`Aggiungi commento di revisione`,startReview:`Inizia una revisione`,pending:`In sospeso`,editComment:`Modifica commento`,deleteComment:`Elimina commento`,replyPlaceholder:`Rispondi…`,resolve:`Risolvi`},_={title:`Chiedi su questa PR`,collapse:`Riduci`,reanalyzeToEnable:`Analizza di nuovo per abilitare la chat`,thinking:`Sto pensando…`,placeholder:`Chiedi su questa PR…`,updatedGrouping:`Raggruppamento aggiornato: {n} gruppi`,readFiles:`Letto {n} file | Letti {n} file`,updatingGrouping:`Aggiornamento del raggruppamento…`,submittingGrouping:`Invio del raggruppamento…`,requestFailed:`Richiesta fallita`,stopped:`fermato`},v={layout:`Layout del diff`,wrapLines:`Vai a capo automaticamente`,unified:`Unificato`,split:`Affiancato`,syntaxTheme:{label:`Tema della sintassi`,light:`Modalità chiara`,dark:`Modalità scura`},cached:`Pull request in cache`,autoRefresh:`Aggiorna automaticamente quando vengono trovati nuovi commit`,language:`Lingua`,token:{label:`Token di accesso personale GitHub`,optional:`Facoltativo per i repository pubblici; necessario per i repository privati o per lasciare revisioni.`,scopes:`Le revisioni richiedono lo scope {repo} (token classico) o {fineGrained} (token granulare)`,storedLocally:`Salvato solo in questo browser.`,generate:`Generane uno su GitHub →`,fineGrained:`Token granulare (senza scope classici)`,updated:`Aggiornato`,expires:`Scade`,neverExpires:`Non scade mai`,change:`Cambia token`,checking:`Verifica del token…`,couldNotVerify:`Impossibile verificare questo token.`},tabs:{appearance:`Aspetto`,behavior:`Comportamento`,github:`GitHub`,ai:`Analisi IA`,notSetUp:`Non ancora configurato`},llm:{title:`Analisi IA`,description:`Configura un fornitore di modelli per abilitare i riassunti generati dall'IA. Salvato solo in questo browser e inviato solo al fornitore che scegli.`,provider:`Fornitore`,baseUrl:`URL base`,baseUrlDescription:`Qualsiasi endpoint chat completions compatibile con OpenAI (OpenAI stessa, un server locale, ecc.).`,apiKey:`API key`,gatewayHint:`Un token {link}, che raggiunge tutti i vendor supportati con un solo token.`,anthropicHint:`Una {link}, chiamata direttamente da questo browser (senza gateway).`,anthropicLink:`API key Anthropic`,openaiHint:`L'API key per l'endpoint indicato sopra.`,createKey:`Creane una su {provider} →`,configured:`Configurata`,changeKey:`Cambia chiave`,model:`Modello`,modelListFailed:`Impossibile caricare l'elenco dei modelli ({error}). Inserisci un id di modello manualmente.`,embedUnavailable:`Le funzioni IA non sono disponibili in modalità incorporata`,embedReason:`La rigida CSP di github.com blocca le richieste necessarie alle funzioni IA. {link} per usarle.`,goToWebsite:`Vai al sito`,agent:`Agente`,agentNeedsCli:"Gli agenti locali girano nella CLI di pulls.review: avviala in un repository con `npx pulls.review` e scegline uno lì.",agentDetecting:`Ricerca delle CLI degli agenti…`,agentNone:`Nessuna CLI di agente trovata su questa macchina.`,agentHint:`Un agente di codice installato su questa macchina, con il proprio account: {claude} o {opencode}. Legge la patch e il repository, non scrive mai.`,agentPick:`Scegli un agente…`},models:{placeholder:`id del modello`,loading:`Caricamento dei modelli…`,search:`Cerca modelli…`,noMatch:`Nessun modello corrispondente`,useCustom:`Usa “{id}”`,free:`Gratis`,priceTitle:`Input {input}/M · Output {output}/M token`,agentDefault:`Predefinito dell’agente`}},y={allFiles:`Tutti i file`,code:{label:`Codice`,summary:`Modifiche al codice sorgente.`},other:{label:`Altro`,summary:`Altre modifiche che non rientrano in una categoria esistente.`},docs:{label:`Documentazione`,summary:`Aggiornamenti della documentazione.`},tests:{label:`Test`,summary:`Copertura dei test per la modifica.`},config:{label:`Configurazione`,summary:`Modifiche di configurazione.`},deps:{label:`Dipendenze`,summary:`Modifiche di versione delle dipendenze.`},generated:{label:`Generati`,summary:`Modifiche a file generati o di build.`}},b={tokenRequired:`Serve un token GitHub per scrivere in questa pull request.`,diffNotLoaded:`Il diff non ha ancora finito di caricarsi.`,noViewer:`Impossibile determinare l'utente GitHub di questo token.`,tokenRejected:`GitHub ha rifiutato questo token (401). Controlla che sia stato incollato per intero e che non sia stato revocato.`,tooLarge:`L'analisi è troppo grande per essere condivisa come commento ({n} caratteri).`},x={loading:`Caricamento delle modifiche locali…`,loadFailed:`Impossibile caricare queste modifiche`,auth:{title:`Inserisci il codice dal terminale`,hint:`pulls.review ha stampato un codice di 6 cifre nel terminale in cui è in esecuzione.`,invalid:`Quel codice non ha funzionato. Controlla il terminale e riprova.`,submit:`Continua`},picker:{tagline:`Revisiona branch locali, intervalli e modifiche non committate come una pull request: raggruppati, riassunti, un ambito alla volta.`,title:`Revisiona le modifiche locali`,base:`Base`,head:`Head`,compare:`Confronta`,shortcuts:`Scorciatoie`,worktree:`Modifiche non committate`,recentCommits:`Commit recenti`,branches:`Branch`,against:`rispetto a {base}`,current:`Branch attuale`,github:`Oppure una pull request, un confronto o un commit GitHub`}},S={common:e,landing:t,guide:n,load:r,pr:i,embed:a,pulls:o,analyze:s,share:c,group:l,note:u,file:d,reviewProgress:f,fileStatus:p,prState:m,category:h,review:g,chat:_,settings:v,rules:y,errors:b,local:x};export{s as analyze,h as category,_ as chat,e as common,S as default,a as embed,b as errors,d as file,p as fileStatus,l as group,n as guide,t as landing,r as load,x as local,u as note,i as pr,m as prState,o as pulls,g as review,f as reviewProgress,y as rules,v as settings,c as share};
|