@dmrlzz/davecode 0.3.0 → 0.5.0
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 +5 -4
- package/bin/davecode.js +0 -0
- package/dist/{ChatApp-FO5SABXB.js → ChatApp-CJBICQGA.js} +289 -137
- package/dist/ChatApp-CJBICQGA.js.map +1 -0
- package/dist/{RunnerView-DLVR7C22.js → RunnerView-A7JSPUW5.js} +5 -5
- package/dist/account-QWDPJWAA.js +23 -0
- package/dist/accounts-IQMR72FC.js +37 -0
- package/dist/{budget-RBHCEDPP.js → budget-XANOUVWO.js} +6 -6
- package/dist/chat-KDDRNC5V.js +359 -0
- package/dist/chat-KDDRNC5V.js.map +1 -0
- package/dist/{accounts-MTMGYKEP.js → chunk-44AFJL2X.js} +24 -17
- package/dist/chunk-44AFJL2X.js.map +1 -0
- package/dist/{chunk-BOLFK3BH.js → chunk-5LKOJBUL.js} +2 -2
- package/dist/{chunk-23KTE7IK.js → chunk-AZKACMME.js} +2 -2
- package/dist/{chunk-PIIJ3RSI.js → chunk-FYPMA55O.js} +1269 -1265
- package/dist/chunk-FYPMA55O.js.map +1 -0
- package/dist/{chunk-OYEYNDOO.js → chunk-GE22VBCY.js} +3 -3
- package/dist/{chunk-C7FDRA3U.js → chunk-HSBJDV3O.js} +660 -139
- package/dist/chunk-HSBJDV3O.js.map +1 -0
- package/dist/chunk-JLATEHS7.js +20 -0
- package/dist/chunk-JLATEHS7.js.map +1 -0
- package/dist/{chunk-VVCXGQMY.js → chunk-MC7RIPL7.js} +17 -8
- package/dist/chunk-MC7RIPL7.js.map +1 -0
- package/dist/{chunk-MSLLH5XP.js → chunk-PGAJIGUF.js} +4 -4
- package/dist/{chunk-OXRMGR72.js → chunk-PGPXE6LF.js} +2 -2
- package/dist/chunk-QA3O6RA2.js +81 -0
- package/dist/chunk-QA3O6RA2.js.map +1 -0
- package/dist/chunk-W7GPBEBZ.js +144 -0
- package/dist/chunk-W7GPBEBZ.js.map +1 -0
- package/dist/{chunk-IVZHKUCD.js → chunk-WQ7MEWDF.js} +3 -3
- package/dist/{config-FRMY5OHG.js → config-YTUPIYZT.js} +5 -5
- package/dist/dashboard/assets/Accounts-cq8RLMoI.js +1 -0
- package/dist/dashboard/assets/Badge-Z4RBdO9j.js +55 -0
- package/dist/dashboard/assets/Callout-w8BTYh4k.js +1 -0
- package/dist/dashboard/assets/Field-Cmpgg_1z.js +1 -0
- package/dist/dashboard/assets/Goals-Bw02to72.js +1 -0
- package/dist/dashboard/assets/Library-DK7mlpRb.js +1 -0
- package/dist/dashboard/assets/{Markdown-ClRsddnB.js → Markdown-DCZ4Awcc.js} +8 -8
- package/dist/dashboard/assets/Panes-_KTf8pbZ.js +8 -0
- package/dist/dashboard/assets/Panes-kHJ-D0s7.css +1 -0
- package/dist/dashboard/assets/RoutesPage-QV0oPRW9.js +4 -0
- package/dist/dashboard/assets/Runner-CkHBLQl0.js +1 -0
- package/dist/dashboard/assets/Settings-BLz2gTBR.js +1 -0
- package/dist/dashboard/assets/Switch-DPYlLseH.js +1 -0
- package/dist/dashboard/assets/Tasks-BiUQSTpt.js +2 -0
- package/dist/dashboard/assets/Traffic-BVfBuC70.js +1 -0
- package/dist/dashboard/assets/Workspace-CJTgiiU5.js +1 -0
- package/dist/dashboard/assets/arrow-up-DjhzZprp.js +1 -0
- package/dist/dashboard/assets/cn-BwE4cei0.js +1 -0
- package/dist/dashboard/assets/forms-DVIUAxAc.js +1 -0
- package/dist/dashboard/assets/index-BDBa5cb0.js +104 -0
- package/dist/dashboard/assets/index-BEmBgsbP.css +2 -0
- package/dist/dashboard/assets/task-errors-Daqwi0ue.js +1 -0
- package/dist/dashboard/assets/trash-BTuDcSaQ.js +1 -0
- package/dist/dashboard/favicon.svg +1 -7
- package/dist/dashboard/index.html +4 -4
- package/dist/{dist-ZPXEVBEC.js → dist-37VQSHHA.js} +24 -2
- package/dist/dist-37VQSHHA.js.map +1 -0
- package/dist/{doctor-7RUD4D3A.js → doctor-PYUQRRCB.js} +5 -5
- package/dist/{goal-JFRNPBSD.js → goal-SXZUDUCL.js} +5 -5
- package/dist/index.js +48 -30
- package/dist/index.js.map +1 -1
- package/dist/{init-NFYNO3A3.js → init-Z2AFQEEP.js} +6 -6
- package/dist/{prompts-L37J72YW.js → prompts-TZ7UC42M.js} +9 -5
- package/dist/prompts-TZ7UC42M.js.map +1 -0
- package/dist/{run-ARUPXFFB.js → run-AOS7L3RT.js} +10 -10
- package/dist/runtime.js +18 -0
- package/dist/runtime.js.map +1 -0
- package/dist/{start-CFPOVIAR.js → start-CEPXKZUE.js} +5 -5
- package/dist/{status-E4EACVE2.js → status-WNJ3GGKU.js} +6 -6
- package/dist/status-WNJ3GGKU.js.map +1 -0
- package/dist/{tasks-ZIK6BVEX.js → tasks-TFUTUMWB.js} +6 -6
- package/package.json +21 -15
- package/dist/ChatApp-FO5SABXB.js.map +0 -1
- package/dist/accounts-MTMGYKEP.js.map +0 -1
- package/dist/chat-ZDXX3N6X.js +0 -95
- package/dist/chat-ZDXX3N6X.js.map +0 -1
- package/dist/chunk-C7FDRA3U.js.map +0 -1
- package/dist/chunk-DYQ56FBT.js +0 -47
- package/dist/chunk-DYQ56FBT.js.map +0 -1
- package/dist/chunk-PIIJ3RSI.js.map +0 -1
- package/dist/chunk-VVCXGQMY.js.map +0 -1
- package/dist/dashboard/assets/Accounts-BR3ZfVk4.js +0 -1
- package/dist/dashboard/assets/Badge-B-qzNRrZ.js +0 -55
- package/dist/dashboard/assets/Callout-B9g_wPDi.js +0 -1
- package/dist/dashboard/assets/Field-BfabPEcY.js +0 -1
- package/dist/dashboard/assets/Goals-BsV-6m94.js +0 -1
- package/dist/dashboard/assets/Library-CEA9P1m-.js +0 -1
- package/dist/dashboard/assets/Panel-B9tSgX6l.js +0 -1
- package/dist/dashboard/assets/RoutesPage-Dh-BJ3ir.js +0 -4
- package/dist/dashboard/assets/Runner-C_e9l5l2.js +0 -1
- package/dist/dashboard/assets/Settings-C6Yc1Gjg.js +0 -1
- package/dist/dashboard/assets/Switch-CUpOJjUT.js +0 -1
- package/dist/dashboard/assets/Tasks-CTku0rR3.js +0 -2
- package/dist/dashboard/assets/Traffic-CE6wZSMr.js +0 -1
- package/dist/dashboard/assets/Workspace-CxFxvkA6.js +0 -1
- package/dist/dashboard/assets/arrow-up-DL3CuFOO.js +0 -1
- package/dist/dashboard/assets/forms-D6UIYgC5.js +0 -1
- package/dist/dashboard/assets/index-1iH716Xy.css +0 -2
- package/dist/dashboard/assets/index-BMWr9EKo.js +0 -104
- package/dist/dashboard/assets/task-errors-CE4oEr8H.js +0 -1
- package/dist/dashboard/assets/trash-CWqeZ7eg.js +0 -1
- package/dist/prompts-L37J72YW.js.map +0 -1
- /package/dist/{RunnerView-DLVR7C22.js.map → RunnerView-A7JSPUW5.js.map} +0 -0
- /package/dist/{dist-ZPXEVBEC.js.map → account-QWDPJWAA.js.map} +0 -0
- /package/dist/{status-E4EACVE2.js.map → accounts-IQMR72FC.js.map} +0 -0
- /package/dist/{budget-RBHCEDPP.js.map → budget-XANOUVWO.js.map} +0 -0
- /package/dist/{chunk-BOLFK3BH.js.map → chunk-5LKOJBUL.js.map} +0 -0
- /package/dist/{chunk-23KTE7IK.js.map → chunk-AZKACMME.js.map} +0 -0
- /package/dist/{chunk-OYEYNDOO.js.map → chunk-GE22VBCY.js.map} +0 -0
- /package/dist/{chunk-MSLLH5XP.js.map → chunk-PGAJIGUF.js.map} +0 -0
- /package/dist/{chunk-OXRMGR72.js.map → chunk-PGPXE6LF.js.map} +0 -0
- /package/dist/{chunk-IVZHKUCD.js.map → chunk-WQ7MEWDF.js.map} +0 -0
- /package/dist/{config-FRMY5OHG.js.map → config-YTUPIYZT.js.map} +0 -0
- /package/dist/{doctor-7RUD4D3A.js.map → doctor-PYUQRRCB.js.map} +0 -0
- /package/dist/{goal-JFRNPBSD.js.map → goal-SXZUDUCL.js.map} +0 -0
- /package/dist/{init-NFYNO3A3.js.map → init-Z2AFQEEP.js.map} +0 -0
- /package/dist/{run-ARUPXFFB.js.map → run-AOS7L3RT.js.map} +0 -0
- /package/dist/{start-CFPOVIAR.js.map → start-CEPXKZUE.js.map} +0 -0
- /package/dist/{tasks-ZIK6BVEX.js.map → tasks-TFUTUMWB.js.map} +0 -0
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import{a as e,c as t,o as n,s as r,u as i}from"./Panel-B9tSgX6l.js";var a=i(t(),1),o=r(),s=a.createContext(void 0),c=e=>{let t=a.useContext(s);if(e)return e;if(!t)throw Error(`No QueryClient set, use QueryClientProvider to set one`);return t},l=({client:e,children:t})=>(a.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,o.jsx)(s.Provider,{value:e,children:t})),u={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},d=new class{#e=u;setTimeoutProvider(e){this.#e=e}setTimeout(e,t){return this.#e.setTimeout(e,t)}clearTimeout(e){this.#e.clearTimeout(e)}setInterval(e,t){return this.#e.setInterval(e,t)}clearInterval(e){this.#e.clearInterval(e)}};function f(e){setTimeout(e,0)}var p=typeof window>`u`||`Deno`in globalThis;function m(){}function h(e,t){return typeof e==`function`?e(t):e}function g(e){return typeof e==`number`&&e>=0&&e!==1/0}function _(e,t){return Math.max(e+(t||0)-Date.now(),0)}function v(e,t){return typeof e==`function`?e(t):e}function y(e,t){let{type:n=`all`,exact:r,fetchStatus:i,predicate:a,queryKey:o,stale:s}=e;if(o){if(r){if(t.queryHash!==x(o,t.options))return!1}else if(!C(t.queryKey,o))return!1}if(n!==`all`){let e=t.isActive();if(n===`active`&&!e||n===`inactive`&&e)return!1}return!(typeof s==`boolean`&&t.isStale()!==s||i&&i!==t.state.fetchStatus||a&&!a(t))}function b(e,t){let{exact:n,status:r,predicate:i,mutationKey:a}=e;if(a){if(!t.options.mutationKey)return!1;if(n){if(S(t.options.mutationKey)!==S(a))return!1}else if(!C(t.options.mutationKey,a))return!1}return!(r&&t.state.status!==r||i&&!i(t))}function x(e,t){return(t?.queryKeyHashFn||S)(e)}function S(e){return JSON.stringify(e,(e,t)=>re(t)?Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}):t)}function C(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(Array.isArray(e)&&Array.isArray(t)){if(t.length>e.length)return!1;for(let n=0;n<t.length;n++)if(!C(e[n],t[n]))return!1;return!0}let n=Object.keys(t);for(let r of n)if(!C(e[r],t[r]))return!1;return!0}return!1}var ee=Object.prototype.hasOwnProperty;function te(e,t,n=0){if(e===t)return e;if(n>500)return t;let r=ne(e)&&ne(t);if(!r&&!(re(e)&&re(t)))return t;let i=(r?e:Object.keys(e)).length,a=r?t:Object.keys(t),o=a.length,s=r?Array(o):{},c=0;for(let l=0;l<o;l++){let o=r?l:a[l],u=e[o],d=t[o];if(u===d){s[o]=u,(r?l<i:ee.call(e,o))&&c++;continue}if(u===null||d===null||typeof u!=`object`||typeof d!=`object`){s[o]=d;continue}let f=te(u,d,n+1);s[o]=f,f===u&&c++}return i===o&&c===i?e:s}function w(e,t){if(!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(e[n]!==t[n])return!1;return!0}function ne(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function re(e){if(!ie(e))return!1;let t=Object.getPrototypeOf(e),n=t?.constructor;if(n===void 0)return!0;if(typeof n!=`function`)return!1;let r=n.prototype;return!(!ie(r)||!r.hasOwnProperty(`isPrototypeOf`)||t!==Object.prototype)}function ie(e){return Object.prototype.toString.call(e)===`[object Object]`}function ae(e){return new Promise(t=>{d.setTimeout(t,e)})}function T(e,t,n){return typeof n.structuralSharing==`function`?n.structuralSharing(e,t):n.structuralSharing===!1?t:te(e,t)}function oe(e,t,n=0){let r=[...e,t];return n&&r.length>n?r.slice(1):r}function se(e,t,n=0){let r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var ce=Symbol();function le(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:!e.queryFn||e.queryFn===ce?()=>Promise.reject(Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}function ue(e,t){return typeof e==`function`?e(...t):!!e}function de(e,t,n){let r=!1,i;return Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(i??=t(),r?i:(r=!0,i.aborted?n():i.addEventListener(`abort`,n,{once:!0}),i))}),e}var fe=()=>p,pe=()=>fe(),E=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},me=new class extends E{#e;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e();return window.addEventListener(`visibilitychange`,t,!1),()=>{window.removeEventListener(`visibilitychange`,t)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(e=>{typeof e==`boolean`?this.setFocused(e):this.onFocus()})}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return typeof this.#e==`boolean`?this.#e:globalThis.document?.visibilityState!==`hidden`}},he=f;function ge(){let e=[],t=0,n=e=>{e()},r=e=>{e()},i=he,a=r=>{t?e.push(r):i(()=>{n(r)})},o=()=>{let t=e;e=[],t.length&&i(()=>{r(()=>{t.forEach(e=>{n(e)})})})};return{batch:e=>{let n;t++;try{n=e()}finally{t--,t||o()}return n},batchCalls:e=>(...t)=>{a(()=>{e(...t)})},schedule:a,setNotifyFunction:e=>{n=e},setBatchNotifyFunction:e=>{r=e},setScheduler:e=>{i=e}}}var D=ge(),O=new class extends E{#e=!0;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e(!0),n=()=>e(!1);return window.addEventListener(`online`,t,!1),window.addEventListener(`offline`,n,!1),()=>{window.removeEventListener(`online`,t),window.removeEventListener(`offline`,n)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#e!==e&&(this.#e=e,this.listeners.forEach(t=>{t(e)}))}isOnline(){return this.#e}};function _e(e){return Math.min(1e3*2**e,3e4)}function ve(e){return(e??`online`)!==`online`||O.isOnline()}var k=class extends Error{constructor(e){super(`CancelledError`),this.revert=e?.revert,this.silent=e?.silent}};function ye(e){let t=!1,n=0,r,i=`pending`,a,o,s=new Promise((e,t)=>{a=e,o=t});s.catch(m);let c=()=>i!==`pending`,l=t=>{if(!c()){let n=new k(t);g(n),e.onCancel?.(n)}},u=()=>{t=!0},d=()=>{t=!1},f=()=>me.isFocused()&&(e.networkMode===`always`||O.isOnline())&&e.canRun(),p=()=>ve(e.networkMode)&&e.canRun(),h=e=>{c()||(r?.(),i=`resolved`,a(e))},g=e=>{c()||(r?.(),i=`rejected`,o(e))},_=()=>new Promise(t=>{r=e=>{(c()||f())&&t(e)},e.onPause?.()}).then(()=>{r=void 0,c()||e.onContinue?.()}),v=()=>{if(c())return;let r,i=n===0?e.initialPromise:void 0;try{r=i??e.fn()}catch(e){r=Promise.reject(e)}Promise.resolve(r).then(h).catch(r=>{if(c())return;let i=e.retry??(pe()?0:3),a=e.retryDelay??_e,o=typeof a==`function`?a(n,r):a,s=i===!0||typeof i==`number`&&n<i||typeof i==`function`&&i(n,r);if(t||!s){g(r);return}n++,e.onFail?.(n,r),ae(o).then(()=>f()?void 0:_()).then(()=>{t?g(r):v()})})};return{promise:s,status:()=>i,cancel:l,continue:()=>(r?.(),s),cancelRetry:u,continueRetry:d,canStart:p,start:()=>(p()?v():_().then(v),s)}}var be=class{#e;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),g(this.gcTime)&&(this.#e=d.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(pe()?1/0:3e5))}clearGcTimeout(){this.#e!==void 0&&(d.clearTimeout(this.#e),this.#e=void 0)}};function xe(e){return{onFetch:(t,n)=>{let r=t.options,i=t.fetchOptions?.meta?.fetchMore?.direction,a=t.state.data?.pages||[],o=t.state.data?.pageParams||[],s={pages:[],pageParams:[]},c=0,l=async()=>{let n=!1,l=e=>{de(e,()=>t.signal,()=>n=!0)},u=le(t.options,t.fetchOptions),d=async(e,r,i)=>{if(n)return Promise.reject(t.signal.reason);if(r==null&&e.pages.length)return Promise.resolve(e);let a=(()=>{let e={client:t.client,queryKey:t.queryKey,pageParam:r,direction:i?`backward`:`forward`,meta:t.options.meta};return l(e),e})(),o=await u(a),{maxPages:s}=t.options,c=i?se:oe;return{pages:c(e.pages,o,s),pageParams:c(e.pageParams,r,s)}};if(i&&a.length){let e=i===`backward`,t=e?Ce:Se,n={pages:a,pageParams:o};s=await d(n,t(r,n),e)}else{let t=e??a.length;do{let e=c===0?o[0]??r.initialPageParam:Se(r,s);if(c>0&&e==null)break;s=await d(s,e),c++}while(c<t)}return s};t.fetchFn=t.options.persister?()=>t.options.persister?.(l,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n):l}}}function Se(e,{pages:t,pageParams:n}){let r=t.length-1;return t.length>0?e.getNextPageParam(t[r],t,n[r],n):void 0}function Ce(e,{pages:t,pageParams:n}){return t.length>0?e.getPreviousPageParam?.(t[0],t,n[0],n):void 0}var we=class extends be{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e){super(),this.#s=!1,this.#o=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#i=e.client,this.#r=this.#i.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#t=De(this.options),this.state=e.state??this.#t,this.scheduleGc()}get meta(){return this.options.meta}get queryType(){return this.#e}get promise(){return this.#a?.promise}setOptions(e){if(this.options={...this.#o,...e},e?._type&&(this.#e=e._type),this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){let e=De(this.options);e.data!==void 0&&(this.setState(Ee(e.data,e.dataUpdatedAt)),this.#t=e)}}optionalRemove(){!this.observers.length&&this.state.fetchStatus===`idle`&&this.#r.remove(this)}setData(e,t){let n=T(this.state.data,e,this.options);return this.#c({data:n,type:`success`,dataUpdatedAt:t?.updatedAt,manual:t?.manual}),n}setState(e){this.#c({type:`setState`,state:e})}cancel(e){let t=this.#a?.promise;return this.#a?.cancel(e),t?t.then(m).catch(m):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}get resetState(){return this.#t}reset(){this.destroy(),this.setState(this.resetState)}isActive(){return this.observers.some(e=>v(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===ce||!this.isFetched()}isFetched(){return this.state.dataUpdateCount+this.state.errorUpdateCount>0}isStatic(){return this.getObserversCount()>0&&this.observers.some(e=>v(e.options.staleTime,this)===`static`)}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(e=0){return this.state.data===void 0?!0:e===`static`?!1:this.state.isInvalidated?!0:!_(this.state.dataUpdatedAt,e)}onFocus(){this.observers.find(e=>e.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#a?.continue()}onOnline(){this.observers.find(e=>e.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#a?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#r.notify({type:`observerAdded`,query:this,observer:e}))}removeObserver(e){let t=this.observers.indexOf(e);t!==-1&&(this.observers.splice(t,1),this.observers.length||(this.#a&&(this.#s||this.state.fetchStatus===`paused`&&this.state.status===`pending`?this.#a.cancel({revert:!0}):this.#a.cancelRetry()),this.scheduleGc()),this.#r.notify({type:`observerRemoved`,query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#c({type:`invalidate`})}async fetch(e,t){if(this.state.fetchStatus!==`idle`&&this.#a?.status()!==`rejected`){if(this.state.data!==void 0&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#a)return this.#a.continueRetry(),this.#a.promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.observers.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let n=new AbortController,r=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(this.#s=!0,n.signal)})},i=()=>{let e=le(this.options,t),n=(()=>{let e={client:this.#i,queryKey:this.queryKey,meta:this.meta};return r(e),e})();return this.#s=!1,this.options.persister?this.options.persister(e,n,this):e(n)},a=(()=>{let e={fetchOptions:t,options:this.options,queryKey:this.queryKey,client:this.#i,state:this.state,fetchFn:i};return r(e),e})();(this.#e===`infinite`?xe(this.options.pages):this.options.behavior)?.onFetch(a,this),this.#n=this.state,(this.state.fetchStatus===`idle`||this.state.fetchMeta!==a.fetchOptions?.meta)&&this.#c({type:`fetch`,meta:a.fetchOptions?.meta});let o=this.#a=ye({initialPromise:t?.initialPromise,fn:a.fetchFn,onCancel:e=>{e instanceof k&&e.revert&&this.setState({...this.#n,fetchStatus:`idle`}),n.abort()},onFail:(e,t)=>{this.#c({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#c({type:`pause`})},onContinue:()=>{this.#c({type:`continue`})},retry:a.options.retry,retryDelay:a.options.retryDelay,networkMode:a.options.networkMode,canRun:()=>!0});try{let e=await o.start();if(e===void 0)throw Error(`${this.queryHash} data is undefined`);return this.setData(e),this.#r.config.onSuccess?.(e,this),this.#r.config.onSettled?.(e,this.state.error,this),e}catch(e){if(e instanceof k){if(e.silent)return this.#a.promise;if(e.revert){if(this.state.data===void 0)throw e;return this.state.data}}throw this.#c({type:`error`,error:e}),this.#r.config.onError?.(e,this),this.#r.config.onSettled?.(this.state.data,e,this),e}finally{this.#a===o&&(this.#a=void 0),this.scheduleGc()}}#c(e){let t=t=>{switch(e.type){case`failed`:return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case`pause`:return{...t,fetchStatus:`paused`};case`continue`:return{...t,fetchStatus:`fetching`};case`fetch`:return{...t,...Te(t.data,this.options),fetchMeta:e.meta??null};case`success`:let n={...t,...Ee(e.data,e.dataUpdatedAt),dataUpdateCount:t.dataUpdateCount+1,...!e.manual&&{fetchStatus:`idle`,fetchFailureCount:0,fetchFailureReason:null}};return this.#n=e.manual?n:void 0,n;case`error`:let r=e.error;return{...t,error:r,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:r,fetchStatus:`idle`,status:`error`,isInvalidated:!0};case`invalidate`:return{...t,isInvalidated:!0};case`setState`:return{...t,...e.state}}};this.state=t(this.state),D.batch(()=>{this.observers.slice().forEach(e=>{e.onQueryUpdate()}),this.#r.notify({query:this,type:`updated`,action:e})})}};function Te(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:ve(t.networkMode)?`fetching`:`paused`,...e===void 0&&{error:null,status:`pending`}}}function Ee(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:`success`}}function De(e){let t=typeof e.initialData==`function`?e.initialData():e.initialData,n=t!==void 0,r=n?typeof e.initialDataUpdatedAt==`function`?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?`success`:`pending`,fetchStatus:`idle`}}var Oe=class extends E{#e;#t=void 0;#n=void 0;#r=void 0;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p=new Set;constructor(e,t){super(),this.options=t,this.#e=e,this.#o=null,this.bindMethods(),this.setOptions(t)}bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),Ae(this.#t,this.options)?this.#m():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return A(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return A(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#b(),this.#x(),this.#t.removeObserver(this)}setOptions(e){let t=this.options,n=this.#t;if(this.options=this.#e.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!=`boolean`&&typeof this.options.enabled!=`function`&&typeof v(this.options.enabled,this.#t)!=`boolean`)throw Error(`Expected enabled to be a boolean or a callback that returns a boolean`);this.#S(),this.#t.setOptions(this.options),t._defaulted&&!w(this.options,t)&&this.#e.getQueryCache().notify({type:`observerOptionsUpdated`,query:this.#t,observer:this});let r=this.hasListeners();r&&je(this.#t,n,this.options,t)&&this.#m(),this.updateResult(),r&&(this.#t!==n||v(this.options.enabled,this.#t)!==v(t.enabled,this.#t)||v(this.options.staleTime,this.#t)!==v(t.staleTime,this.#t))&&this.#g();let i=this.#_();r&&(this.#t!==n||v(this.options.enabled,this.#t)!==v(t.enabled,this.#t)||i!==this.#f)&&this.#v(i)}getOptimisticResult(e){let t=this.#e.getQueryCache().build(this.#e,e),n=this.createResult(t,e);return w(this.getCurrentResult(),n)||(this.#r=n,this.#a=this.options,this.#i=this.#t.state),n}getCurrentResult(){return this.#r}trackResult(e,t){return new Proxy(e,{get:(e,n)=>(this.trackProp(n),t?.(n),Reflect.get(e,n))})}trackProp(e){this.#p.add(e)}getCurrentQuery(){return this.#t}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#e.defaultQueryOptions(e),n=this.#e.getQueryCache().build(this.#e,t),r=()=>{},i,a=new Promise(e=>{i=e,r=this.#e.getQueryCache().subscribe(i=>{i.type===`updated`&&i.query.queryHash===n.queryHash&&n.state.data!==void 0&&(r(),e(this.createResult(n,t)))})});return Promise.race([n.fetch().then(()=>{let e=this.createResult(n,t);return i?.(e),e}).finally(()=>{r()}),a])}fetch(e){return this.#m({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#r))}#m(e){this.#S();let t=this.#t.fetch(this.options,e);return e?.throwOnError||(t=t.catch(m)),t}#h(e){return!pe()&&v(this.options.enabled,this.#t)!==!1&&g(e)}#g(){this.#b();let e=v(this.options.staleTime,this.#t);if(this.#r.isStale||!this.#h(e))return;let t=_(this.#r.dataUpdatedAt,e)+1;this.#u=d.setTimeout(()=>{this.#r.isStale||this.updateResult()},t)}#_(){return v(this.options.refetchInterval,this.#t)??!1}#v(e){this.#x(),this.#f=e,this.#f!==0&&this.#h(this.#f)&&(this.#d=d.setInterval(()=>{(this.options.refetchIntervalInBackground||me.isFocused())&&this.#m()},this.#f))}#y(){this.#g(),this.#v(this.#_())}#b(){this.#u!==void 0&&(d.clearTimeout(this.#u),this.#u=void 0)}#x(){this.#d!==void 0&&(d.clearInterval(this.#d),this.#d=void 0)}createResult(e,t){let n=this.#t,r=this.options,i=this.#r,a=this.#i,o=this.#a,s=e===n?this.#n:e.state,{state:c}=e,l={...c},u=!1,d;if(t._optimisticResults){let i=this.hasListeners(),a=!i&&Ae(e,t),o=i&&je(e,n,t,r);(a||o)&&(l={...l,...Te(c.data,e.options)}),t._optimisticResults===`isRestoring`&&(l.fetchStatus=`idle`)}let{error:f,errorUpdatedAt:p,status:m}=l;d=l.data;let h=!1;if(t.placeholderData!==void 0&&d===void 0&&m===`pending`){let e;i?.isPlaceholderData&&t.placeholderData===o?.placeholderData?(e=i.data,h=!0):e=typeof t.placeholderData==`function`?t.placeholderData(this.#l?.state.data,this.#l):t.placeholderData,e!==void 0&&(m=`success`,d=T(i?.data,e,t),u=!0)}if(t.select&&d!==void 0&&!h){if(i&&d===a?.data&&t.select===this.#s)d=this.#c;else try{this.#s=t.select,d=t.select(d),d=T(i?.data,d,t),this.#c=d,this.#o=null}catch(e){this.#o=e}}else d===void 0&&(this.#o=null);this.#o&&(f=this.#o,d=this.#c,p=Date.now(),m=`error`,u=!1);let g=l.fetchStatus===`fetching`,_=m===`pending`,y=m===`error`,b=_&&g,x=d!==void 0;return{status:m,fetchStatus:l.fetchStatus,isPending:_,isSuccess:m===`success`,isError:y,isInitialLoading:b,isLoading:b,data:d,dataUpdatedAt:l.dataUpdatedAt,error:f,errorUpdatedAt:p,failureCount:l.fetchFailureCount,failureReason:l.fetchFailureReason,errorUpdateCount:l.errorUpdateCount,isFetched:e.isFetched(),isFetchedAfterMount:l.dataUpdateCount>s.dataUpdateCount||l.errorUpdateCount>s.errorUpdateCount,isFetching:g,isRefetching:g&&!_,isLoadingError:y&&!x,isPaused:l.fetchStatus===`paused`,isPlaceholderData:u,isRefetchError:y&&x,isStale:Me(e,t),refetch:this.refetch,isEnabled:v(t.enabled,e)!==!1}}updateResult(){let e=this.#r,t=this.createResult(this.#t,this.options);if(this.#i=this.#t.state,this.#a=this.options,this.#i.data!==void 0&&(this.#l=this.#t),w(t,e))return;this.#r=t;let n=(()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,n=typeof t==`function`?t():t;if(n===`all`||!n&&!this.#p.size)return!0;let r=new Set(n??this.#p);return this.options.throwOnError&&r.add(`error`),Object.keys(this.#r).some(t=>{let n=t;return this.#r[n]!==e[n]&&r.has(n)})})();D.batch(()=>{n&&this.listeners.forEach(e=>{e(this.#r)}),this.#e.getQueryCache().notify({query:this.#t,type:`observerResultsUpdated`})})}#S(){let e=this.#e.getQueryCache().build(this.#e,this.options);if(e===this.#t)return;let t=this.#t;this.#t=e,this.#n=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}};function ke(e,t){return v(t.enabled,e)!==!1&&e.state.data===void 0&&(e.state.status!==`error`||v(t.retryOnMount,e)!==!1)}function Ae(e,t){return ke(e,t)||e.state.data!==void 0&&A(e,t,t.refetchOnMount)}function A(e,t,n){if(v(t.enabled,e)!==!1&&v(t.staleTime,e)!==`static`){let r=v(n,e);return r===`always`||r!==!1&&Me(e,t)}return!1}function je(e,t,n,r){return(e!==t||v(r.enabled,e)===!1)&&(!n.suspense||e.state.status!==`error`)&&Me(e,n)}function Me(e,t){return v(t.enabled,e)!==!1&&e.isStaleByTime(v(t.staleTime,e))}var Ne=class extends be{#e;#t;#n;#r;constructor(e){super(),this.#e=e.client,this.mutationId=e.mutationId,this.#n=e.mutationCache,this.#t=[],this.state=e.state||Pe(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#t.includes(e)||(this.#t.push(e),this.clearGcTimeout(),this.#n.notify({type:`observerAdded`,mutation:this,observer:e}))}removeObserver(e){this.#t=this.#t.filter(t=>t!==e),this.scheduleGc(),this.#n.notify({type:`observerRemoved`,mutation:this,observer:e})}optionalRemove(){this.#t.length||(this.state.status===`pending`?this.scheduleGc():this.#n.remove(this))}continue(){return this.#r?.continue()??(this.state.status===`pending`?this.execute(this.state.variables):Promise.resolve())}async execute(e){let t=()=>{this.#i({type:`continue`})},n={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey},r=this.#r=ye({fn:()=>this.options.mutationFn?this.options.mutationFn(e,n):Promise.reject(Error(`No mutationFn found`)),onFail:(e,t)=>{this.#i({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#i({type:`pause`})},onContinue:t,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#n.canRun(this)}),i=this.state.status===`pending`,a=!r.canStart();try{if(i)t();else{this.#i({type:`pending`,variables:e,isPaused:a}),this.#n.config.onMutate&&await this.#n.config.onMutate(e,this,n);let t=await this.options.onMutate?.(e,n);t!==this.state.context&&this.#i({type:`pending`,context:t,variables:e,isPaused:a})}let o=await r.start();return await this.#n.config.onSuccess?.(o,e,this.state.context,this,n),await this.options.onSuccess?.(o,e,this.state.context,n),await this.#n.config.onSettled?.(o,null,this.state.variables,this.state.context,this,n),await this.options.onSettled?.(o,null,e,this.state.context,n),this.#i({type:`success`,data:o}),o}catch(t){try{await this.#n.config.onError?.(t,e,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onError?.(t,e,this.state.context,n)}catch(e){Promise.reject(e)}try{await this.#n.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onSettled?.(void 0,t,e,this.state.context,n)}catch(e){Promise.reject(e)}throw this.#i({type:`error`,error:t}),t}finally{this.#r===r&&(this.#r=void 0),this.#n.runNext(this)}}#i(e){let t=t=>{switch(e.type){case`failed`:return{...t,failureCount:e.failureCount,failureReason:e.error};case`pause`:return{...t,isPaused:!0};case`continue`:return{...t,isPaused:!1};case`pending`:return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:`pending`,variables:e.variables,submittedAt:Date.now()};case`success`:return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:`success`,isPaused:!1};case`error`:return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:`error`}}};this.state=t(this.state),D.batch(()=>{this.#t.forEach(t=>{t.onMutationUpdate(e)}),this.#n.notify({mutation:this,type:`updated`,action:e})})}};function Pe(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:`idle`,variables:void 0,submittedAt:0}}var Fe=class extends E{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),w(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&S(t.mutationKey)!==S(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onSubscribe(){this.listeners.size===1&&this.#n&&(this.#n.addObserver(this),this.#i())}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??Pe();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){D.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}},Ie=a.createContext(!1),Le=()=>a.useContext(Ie);Ie.Provider;function Re(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var ze=a.createContext(Re()),Be=()=>a.useContext(ze),Ve=(e,t,n)=>{let r=n?.state.error&&typeof e.throwOnError==`function`?ue(e.throwOnError,[n.state.error,n]):e.throwOnError;(e.suspense||r)&&(t.isReset()||(e.retryOnMount=!1))},He=e=>{a.useEffect(()=>{e.clearReset()},[e])},Ue=({result:e,errorResetBoundary:t,throwOnError:n,query:r,suspense:i})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&(i&&e.data===void 0||ue(n,[e.error,r])),We=e=>{if(e.suspense){let t=1e3,n=e=>e===`static`?e:Math.max(e??t,t),r=e.staleTime;e.staleTime=typeof r==`function`?(...e)=>n(r(...e)):n(r),typeof e.gcTime==`number`&&(e.gcTime=Math.max(e.gcTime,t))}},Ge=(e,t)=>e?.suspense&&t.isPending,Ke=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function qe(e,t,n){let r=Le(),i=Be(),o=c(n),s=o.defaultQueryOptions(e),l=o.getQueryCache().get(s.queryHash),u=e.subscribed!==!1;s._optimisticResults=r?`isRestoring`:u?`optimistic`:void 0,We(s),Ve(s,i,l),He(i);let[d]=a.useState(()=>new t(o,s)),f=d.getOptimisticResult(s),p=!r&&u;if(a.useSyncExternalStore(a.useCallback(e=>{let t=p?d.subscribe(D.batchCalls(e)):m;return d.updateResult(),t},[d,p]),()=>d.getCurrentResult(),()=>d.getCurrentResult()),a.useEffect(()=>{d.setOptions(s)},[s,d]),Ge(s,f))throw Ke(s,d,i);if(Ue({result:f,errorResetBoundary:i,throwOnError:s.throwOnError,query:l,suspense:s.suspense}))throw f.error;return s.notifyOnChangeProps?f:d.trackResult(f)}function j(e,t){return qe(e,Oe,t)}function M(e,t){let n=c(t),[r]=a.useState(()=>new Fe(n,e));a.useEffect(()=>{r.setOptions(e)},[r,e]);let i=a.useSyncExternalStore(a.useCallback(e=>r.subscribe(D.batchCalls(e)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),o=a.useCallback((...e)=>{r.mutate(e[0],e[1]).catch(m)},[r]);if(i.error&&ue(r.options.throwOnError,[i.error]))throw i.error;return{...i,mutate:o,mutateAsync:i.mutate}}var Je={name:`asterisk`,size:24,node:[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m18.065 8.496-12.125 7`,key:`1h26g9`}],[`path`,{d:`m5.94 8.504 12.125 7`,key:`k77sdm`}]]};Je.node;var Ye=n(Je),Xe={name:`globe`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]};Xe.node;var Ze=n(Xe),Qe={name:`hexagon`,size:24,node:[[`path`,{d:`M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z`,key:`yt0hxn`}]]};Qe.node;var $e=n(Qe),et={name:`server`,size:24,node:[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`,key:`ngkwjq`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`,key:`iecqi9`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`,key:`16zg32`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`,key:`nzw8ys`}]]};et.node;var tt=n(et),nt={name:`sparkle`,size:24,node:[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}]]};nt.node;var rt=n(nt),it={name:`sparkles`,size:24,node:[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}],[`path`,{d:`M20 2v4`,key:`1rf3ol`}],[`path`,{d:`M22 4h-4`,key:`gwowj6`}],[`circle`,{cx:`4`,cy:`20`,r:`2`,key:`6kqj1y`}]],aliases:[`stars`]};it.node;var at=n(it),ot={name:`square-terminal`,size:24,node:[[`path`,{d:`m7 11 2-2-2-2`,key:`1lz0vl`}],[`path`,{d:`M11 13h4`,key:`1p7l4v`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}]],aliases:[`terminal-square`]};ot.node;var st=n(ot),N={gatewayUrl:`davecode.gatewayUrl`,token:`davecode.token`,theme:`davecode.theme`,dataMode:`davecode.dataMode`,sidebarCollapsed:`davecode.sidebarCollapsed`};function P(e){try{return window.localStorage.getItem(e)}catch{return null}}function ct(e,t){try{t===``?window.localStorage.removeItem(e):window.localStorage.setItem(e,t)}catch{}}function lt(){let e=P(N.theme),t=P(N.dataMode);return{gatewayUrl:P(N.gatewayUrl)??``,token:P(N.token)??``,theme:e===`light`||e===`system`?e:`dark`,dataMode:t===`live`||t===`mock`?t:`auto`,sidebarCollapsed:P(N.sidebarCollapsed)===`1`}}var ut=typeof window>`u`?ft():lt(),dt=new Set;function ft(){return{gatewayUrl:``,token:``,theme:`dark`,dataMode:`auto`,sidebarCollapsed:!1}}function pt(){return ut}function mt(e){ut={...ut,...e};for(let[t,n]of Object.entries(e)){let e=N[t];t===`sidebarCollapsed`?ct(e,n?`1`:``):t===`theme`?ct(e,String(n)):ct(e,String(n??``))}for(let e of dt)e()}function ht(e){return dt.add(e),()=>dt.delete(e)}function gt(){return(0,a.useSyncExternalStore)(ht,pt,pt)}function _t(){if(typeof window>`u`)return!1;let e=new URLSearchParams(window.location.search).get(`mock`),t=window.location.hash.split(`?`)[1]??``,n=new URLSearchParams(t).get(`mock`);return e===`1`||n===`1`}function vt(e){return e===`system`?window.matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`:e}function yt(e){let t=()=>{document.documentElement.dataset.theme=vt(e)};if(t(),e!==`system`)return()=>{};let n=window.matchMedia(`(prefers-color-scheme: light)`);return n.addEventListener(`change`,t),()=>n.removeEventListener(`change`,t)}var bt=[`request.started`,`request.completed`,`request.failed`,`router.failover`,`account.updated`,`account.removed`,`quota.updated`,`task.updated`,`task.removed`,`runner.status`,`runner.log`,`goal.updated`,`goal.log`,`log`];function xt(e,t=Math.random){let n=Math.min(3e4,1e3*2**Math.max(0,e-1)),r=n*.2*(t()*2-1);return Math.round(n+r)}function St(e){try{let t=JSON.parse(e);if(t&&typeof t==`object`&&typeof t.type==`string`)return t}catch{}return null}function Ct(e,t){let n=null,r,i=0,a=!1,o,s=e=>t.onStatus?.({...e,attempt:i,lastEventAt:o}),c=e=>{let n=St(e.data);n&&(o=Date.now(),t.onEvent(n))},l=()=>{if(!a){s({state:i===0?`connecting`:`reconnecting`}),n=new EventSource(e),n.onopen=()=>{i=0,o=Date.now(),s({state:`open`})},n.onmessage=c;for(let e of bt)n.addEventListener(e,c);n.onerror=()=>{if(n?.close(),n=null,a)return;i+=1;let e=xt(i);s({state:`reconnecting`,retryAt:Date.now()+e}),r=window.setTimeout(l,e)}}};return l(),()=>{a=!0,window.clearTimeout(r),n?.close(),n=null}}var F=class extends Error{status;code;cycle;dependents;constructor(e,t,n,r={}){super(n),this.name=`ApiError`,this.status=e,this.code=t,r.cycle&&(this.cycle=r.cycle),r.dependents&&(this.dependents=r.dependents)}get reachable(){return this.status>0&&!wt.has(this.code)}},wt=new Set([`network`,`bad_response`,`gateway_unreachable`]);function I(e){return e instanceof F}function Tt(e,t){return`${e.replace(/\/+$/,``)}${t}`}function Et({baseUrl:e,token:t}){async function n(n,r,i){let a={Accept:`application/json`};t&&(a.Authorization=`Bearer ${t}`),i!==void 0&&(a[`Content-Type`]=`application/json`);let o;try{o=await fetch(Tt(e,r),{method:n,headers:a,body:i===void 0?void 0:JSON.stringify(i)})}catch(e){throw new F(0,`network`,`Gateway unreachable: ${e.message}`)}if(o.status===204)return;let s=await o.text(),c;try{c=s?JSON.parse(s):void 0}catch{throw new F(o.ok?0:o.status,`bad_response`,`Unexpected non-JSON response from ${r}`)}if(!o.ok){let e=c?.error;throw!e&&o.status>=502&&o.status<=504?new F(o.status,`gateway_unreachable`,`Gateway unreachable (proxy answered ${o.status})`):new F(o.status,e?.code??`http_${o.status}`,e?.message??`${n} ${r} failed with ${o.status}`,{...e?.cycle&&{cycle:e.cycle},...e?.dependents&&{dependents:e.dependents}})}return c}let r=e=>n(`GET`,e);return{mode:`live`,health:()=>r(`/api/health`),listAccounts:async()=>(await r(`/api/accounts`)).accounts,createAccount:async e=>(await n(`POST`,`/api/accounts`,e)).account,updateAccount:async(e,t)=>(await n(`PATCH`,`/api/accounts/${encodeURIComponent(e)}`,t)).account,deleteAccount:e=>n(`DELETE`,`/api/accounts/${encodeURIComponent(e)}`),usage:async()=>(await r(`/api/usage`)).usage,budget:async()=>(await r(`/api/budget`)).budget,connection:async e=>(await r(`/api/accounts/${encodeURIComponent(e)}/connection`)).connection,connect:async e=>(await n(`POST`,`/api/accounts/${encodeURIComponent(e)}/connect`,{})).connect,timeseries:async(e=60,t=60)=>(await r(`/api/usage/timeseries?minutes=${e}&bucketSec=${t}`)).buckets,requests:async(e=100)=>(await r(`/api/requests?limit=${e}`)).requests,routes:()=>r(`/api/routes`),updateRoutes:e=>n(`PUT`,`/api/routes`,e),tasks:()=>r(`/api/tasks`),createTask:async e=>(await n(`POST`,`/api/tasks`,e)).task,updateTask:async(e,t)=>(await n(`PATCH`,`/api/tasks/${encodeURIComponent(e)}`,t)).task,deleteTask:e=>n(`DELETE`,`/api/tasks/${encodeURIComponent(e)}`),brain:()=>r(`/api/brain`),runner:async()=>(await r(`/api/runner`)).status,runnerAction:async(e,t)=>(await n(`POST`,`/api/runner/${e}`,e===`start`&&t?.taskId?{taskId:t.taskId}:void 0)).status,logs:async(e=200)=>(await r(`/api/logs?limit=${e}`)).events,goals:async()=>(await r(`/api/goals`)).goals,startGoal:async e=>(await n(`POST`,`/api/goals`,e)).goal,executeGoal:async e=>(await n(`POST`,`/api/goals/${encodeURIComponent(e)}/execute`)).goal,goalArtifact:async(e,t)=>(await r(`/api/goals/${encodeURIComponent(e)}/artifacts/${encodeURIComponent(t)}`)).artifact,cancelGoal:async e=>(await n(`POST`,`/api/goals/${encodeURIComponent(e)}/cancel`)).goal,models:async()=>(await r(`/v1/models`)).data,subscribe:n=>Ct(Tt(e,`/api/events${t?`?token=${encodeURIComponent(t)}`:``}`),n)}}function Dt(e){return I(e)?e.status===401?`Unauthorized: set the gateway token in Settings.`:e.message:e instanceof Error?e.message:String(e)}function Ot(e){return e.type===`request.started`||e.type===`request.completed`||e.type===`request.failed`||e.type===`router.failover`}function kt(e,t,n=``){return{requestId:e,model:n,startedTs:t,updatedTs:t,attempts:[],outcome:`pending`,failovers:0,exhausted:!1}}function L(e,t){for(let n=e.length-1;n>=0;n--){let r=e[n];if(r&&r.accountId===t&&r.outcome===`pending`)return n}return-1}var At=2e3;function R(e,t,n,r,i){for(let a=e.length-1;a>=0;a--){let o=e[a];if(!o||o.accountId!==t||i&&o.outcome!==i)continue;let s=o[r];if(s!==void 0&&Math.abs(s-n)<=At)return a}return-1}function jt(e){let t=e.attempts[e.attempts.length-1];return t?t.outcome===`success`?`success`:t.outcome===`pending`?`pending`:e.exhausted?`failed`:e.failovers>=e.attempts.length?`pending`:`failed`:`pending`}function Mt(e,t){let n=e??kt(t.requestId,t.ts),r={...n,attempts:n.attempts.map(e=>({...e})),startedTs:Math.min(n.startedTs,t.ts),updatedTs:Math.max(n.updatedTs,t.ts)};switch(t.type){case`request.started`:r.model||=t.model,L(r.attempts,t.accountId)===-1&&R(r.attempts,t.accountId,t.ts,`startedTs`)===-1&&r.attempts.push({accountId:t.accountId,provider:t.provider,startedTs:t.ts,outcome:`pending`});break;case`request.completed`:{r.model||=t.model;let e=L(r.attempts,t.accountId);e===-1&&(e=R(r.attempts,t.accountId,t.ts,`endedTs`,`success`)),e===-1&&(r.attempts.push({accountId:t.accountId,provider:t.provider,startedTs:t.ts-t.latencyMs,outcome:`pending`}),e=r.attempts.length-1);let n=r.attempts[e];n&&(n.outcome=`success`,n.endedTs=t.ts,n.latencyMs=t.latencyMs,n.promptTokens=t.promptTokens,n.completionTokens=t.completionTokens),r.startedTs=Math.min(r.startedTs,t.ts-t.latencyMs);break}case`request.failed`:{let e=L(r.attempts,t.accountId);e===-1&&(e=R(r.attempts,t.accountId,t.ts,`endedTs`,`failed`)),e===-1&&(r.attempts.push({accountId:t.accountId,provider:t.provider,startedTs:t.ts,outcome:`pending`}),e=r.attempts.length-1);let n=r.attempts[e];if(n){let e=n.outcome===`pending`;n.outcome=`failed`,n.endedTs=e?t.ts:n.endedTs??t.ts,n.latencyMs=n.latencyMs??t.ts-n.startedTs,n.errorKind=t.error.kind,n.errorStatus=t.error.status,n.errorMessage=t.error.message}break}case`router.failover`:{t.toAccountId===null&&(r.exhausted=!0);let e=!1;for(let n=r.attempts.length-1;n>=0;n--){let i=r.attempts[n];if(i&&i.accountId===t.fromAccountId){e=!0,i.failedOver||(i.failedOver=!0,r.failovers+=1),i.errorKind??=t.reason,i.outcome===`pending`&&(i.outcome=`failed`,i.endedTs=t.ts);break}}e||(r.failovers+=1);break}}return r.outcome=jt(r),r}function Nt(e){let t=new Map;for(let n of e){let e=t.get(n.requestId);e?e.push(n):t.set(n.requestId,[n])}let n=[];for(let[e,r]of t){r.sort((e,t)=>e.ts-t.ts);let t=r[0];if(!t)continue;let i=r.map((e,t)=>({accountId:e.accountId,provider:e.provider,startedTs:e.ts-e.latencyMs,endedTs:e.ts,outcome:e.status===`success`?`success`:`failed`,latencyMs:e.latencyMs,promptTokens:e.promptTokens,completionTokens:e.completionTokens,errorKind:e.errorKind??(e.status===`rate_limited`?`rate_limit`:void 0),errorStatus:e.status===`rate_limited`?429:void 0,failedOver:t<r.length-1})),a=i[i.length-1];n.push({requestId:e,model:t.model,startedTs:i[0]?.startedTs??t.ts,updatedTs:a?.endedTs??t.ts,attempts:i,outcome:a?.outcome===`success`?`success`:`failed`,failovers:Math.max(0,i.length-1),exhausted:a?.outcome!==`success`})}return n.sort((e,t)=>t.startedTs-e.startedTs)}function Pt(e){let t=0,n=0;for(let r of e.attempts)t+=r.promptTokens??0,n+=r.completionTokens??0;return{prompt:t,completion:n}}function Ft(e){let t=e.attempts[e.attempts.length-1];if(t?.endedTs)return t.endedTs-e.startedTs}function It(e){if(e.errorStatus)return String(e.errorStatus);switch(e.errorKind){case`rate_limit`:return`429`;case`quota_exhausted`:return`quota`;case`unavailable`:return`503`;case`timeout`:return`timeout`;case`network`:return`network`;case`auth`:return`401`;case`context_length`:return`ctx`;case`bad_request`:return`400`;default:return`error`}}var Lt=600,z=400,Rt=3e3,zt=4e3;function Bt(e){return Math.floor(e/6e4)*6e4}function Vt(e){return JSON.stringify(e)}var Ht=class{flushMs;state={events:[],chains:[],logs:[],minutes:[],failoverTs:[]};chainIndex=new Map;seen=new Set;seenOrder=[];listeners=new Set;dirty=!1;flushTimer;pending=[];failovers=new Map;logSeq=0;constructor(e=200){this.flushMs=e}getState=()=>this.state;subscribe=e=>(this.listeners.add(e),()=>this.listeners.delete(e));ingest(e){let t=Vt(e);if(this.seen.has(t))return!1;if(this.seen.add(t),this.seenOrder.push(t),this.seenOrder.length>zt){let e=this.seenOrder.shift();e&&this.seen.delete(e)}return this.pending.push(e),this.schedule(),!0}seedRecords(e){for(let t of Nt(e))this.chainIndex.has(t.requestId)||this.chainIndex.set(t.requestId,t),t.attempts.slice(0,-1).forEach(e=>{this.failovers.set(`${t.requestId}:${e.accountId}`,e.endedTs??t.startedTs)});this.dirty=!0,this.schedule()}flush(){if(this.flushTimer!==void 0&&(clearTimeout(this.flushTimer),this.flushTimer=void 0),this.pending.length===0&&!this.dirty)return;let e=this.pending;this.pending=[],this.dirty=!1;let t=this.state.events.concat(e),n=this.state.logs.slice(),r=new Map(this.state.minutes.map(e=>[e.ts,{...e}]));for(let t of e)if(Ot(t)&&this.chainIndex.set(t.requestId,Mt(this.chainIndex.get(t.requestId),t)),t.type===`request.completed`){let e=Bt(t.ts),n=r.get(e)??{ts:e,tokens:0,requests:0};n.tokens+=t.promptTokens+t.completionTokens,n.requests+=1,r.set(e,n)}else t.type===`router.failover`?this.failovers.set(`${t.requestId}:${t.fromAccountId}`,t.ts):t.type===`runner.log`?n.push({key:`l${this.logSeq++}`,ts:t.ts,level:t.level,message:t.message,source:`runner`,taskId:t.taskId}):t.type===`log`&&n.push({key:`l${this.logSeq++}`,ts:t.ts,level:t.level,message:t.message,source:`gateway`,scope:t.scope});let i=[...this.chainIndex.values()].sort((e,t)=>t.startedTs-e.startedTs);if(i.length>z){for(let e of i.slice(z))this.chainIndex.delete(e.requestId);i=i.slice(0,z)}n.sort((e,t)=>e.ts-t.ts);let a=Date.now()-36e5;for(let[e,t]of this.failovers)t<a&&this.failovers.delete(e);this.state={events:t.length>Lt?t.slice(-600):t,chains:i,logs:n.length>Rt?n.slice(-3e3):n,minutes:[...r.values()].sort((e,t)=>e.ts-t.ts).slice(-90),failoverTs:[...this.failovers.values()].sort((e,t)=>e-t)};for(let e of this.listeners)e()}clearLogs(){this.state={...this.state,logs:[]};for(let e of this.listeners)e()}dispose(){this.flushTimer!==void 0&&clearTimeout(this.flushTimer),this.flushTimer=void 0}schedule(){this.flushTimer===void 0&&(this.flushTimer=setTimeout(()=>{this.flushTimer=void 0,this.flush()},this.flushMs))}},B=864e5,Ut=[`1m`,`5h`,`24h`],Wt={acc_claude_pro:{info:{plan:`Claude Pro`,price:{amount:20,currency:`USD`,period:`month`}},paidDaysAgo:21,renewsInDays:9},acc_anthropic_work:{info:{plan:`API — Build tier 2`,price:{amount:250,currency:`USD`,period:`month`},notes:`Prepaid credits, topped up monthly`},paidDaysAgo:12,renewsInDays:18},acc_openai_team:{info:{plan:`ChatGPT Team`,price:{amount:300,currency:`USD`,period:`year`}},paidDaysAgo:340,renewsInDays:2}},Gt=e=>new Date(e).toISOString().slice(0,10);function Kt(e,t){let n=Wt[e];if(n)return{...n.info,paidAt:Gt(t-n.paidDaysAgo*B),renewsAt:Gt(t+n.renewsInDays*B)}}function qt(e,t,n){let r=null,i;for(let e of Ut){let n=t.windows[e];if(n.tokenLimit===void 0&&n.requestLimit===void 0)continue;let a=Math.max(0,1-n.utilization);(r===null||a<r)&&(r=a,i=e)}let a={accountId:e.id,label:e.label,provider:e.provider,enabled:e.enabled,remaining:r,usage:t,available:e.enabled&&e.status===`active`&&(r??1)>0};if(i&&(a.tightestWindow=i),e.subscription){a.subscription=e.subscription;let t=e.subscription.renewsAt?Date.parse(e.subscription.renewsAt):NaN;Number.isNaN(t)||(a.renewsInDays=Math.ceil((t-n)/B))}return a.available||(a.unavailableReason=e.enabled?e.status===`cooldown`?`cooling down`:e.status===`error`?`credentials rejected (fix the account)`:`local quota limit reached`:`disabled`),a}function Jt(e,t){let n=e.filter(e=>e.enabled);if(n.length===0)return``;let r=[`ACCOUNT BUDGET (${`${new Date(t).toISOString().slice(0,16).replace(`T`,` `)} UTC`}; ${n.filter(e=>e.available).length} of ${n.length} accounts available).`,`The router already avoids exhausted accounts. When budget is scarce, keep prompts and outputs short and prefer fewer, larger steps.`];for(let e of n){let t=[];e.subscription?.plan&&t.push(e.subscription.plan);let n=e.subscription?.price;n&&t.push(`${n.amount} ${n.currency}/${n.period}`),e.renewsInDays!==void 0&&t.push(`renews in ${e.renewsInDays}d`);let i=`- ${e.label} [${e.provider}]${t.length?` (${t.join(`, `)})`:``}`,a=e.available?e.remaining===null?`no known limit`:`${Math.round(e.remaining*100)}% left (${e.tightestWindow} window)`:`unavailable: ${e.unavailableReason}`;r.push(`${i}: ${a}`)}return r.join(`
|
|
2
|
-
`)}function Yt(e,t,n){let r=e.map(e=>qt(e,t(e),n));return{generatedAt:new Date(n).toISOString(),accounts:r,context:Jt(r,n)}}var Xt={anthropic:{kind:`anthropic`,label:`Anthropic API`,icon:Ye,auth:`api-key`,blurb:`Claude models through the Messages API with an API key.`,secretLabel:`API key`,secretPlaceholder:`sk-ant-…`},openai:{kind:`openai`,label:`OpenAI API`,icon:$e,auth:`api-key`,blurb:`GPT models with an OpenAI API key.`,secretLabel:`API key`,secretPlaceholder:`sk-…`},gemini:{kind:`gemini`,label:`Gemini API`,icon:rt,auth:`api-key`,blurb:`Google Gemini through AI Studio or Vertex with an API key.`,secretLabel:`API key`,secretPlaceholder:`AIza…`},"openai-compatible":{kind:`openai-compatible`,label:`OpenAI-compatible`,icon:tt,auth:`optional-key`,blurb:`OpenRouter and other providers using the OpenAI-compatible API.`,secretLabel:`API key (optional)`,secretPlaceholder:`Leave empty for local servers`},"claude-cli":{kind:`claude-cli`,label:`Claude Code CLI`,icon:st,auth:`cli`,blurb:`Your Claude login, isolated in its own CLAUDE_CONFIG_DIR sandbox.`,subscription:!0},"codex-cli":{kind:`codex-cli`,label:`Codex CLI`,icon:st,auth:`cli`,blurb:`Your ChatGPT/OpenAI login, isolated in its own CODEX_HOME sandbox.`,subscription:!0},"gemini-cli":{kind:`gemini-cli`,label:`Gemini CLI`,icon:at,auth:`cli`,blurb:`Your Google login (Login with Google), isolated in its own GEMINI_CLI_HOME sandbox.`,subscription:!0},"gemini-web":{kind:`gemini-web`,label:`Gemini web`,icon:Ze,auth:`browser`,blurb:`Drives a Gemini web session through a dedicated Chromium profile.`,experimental:!0,subscription:!0}},Zt=[`anthropic`,`openai`,`gemini`,`openai-compatible`,`claude-cli`,`codex-cli`,`gemini-cli`,`gemini-web`];function Qt(e){return Xt[e]??{...Xt[`openai-compatible`],kind:e,label:e}}var $t=new Set([`acc_claude_pro`]),en=6e3;function tn(e){let{auth:t}=Qt(e.provider);return t===`cli`?`cli-login`:t===`browser`?`browser`:`api-key`}function nn(e,t,n){let r=tn(e),i={accountId:e.id,provider:e.provider,method:r,checkedAt:new Date(n).toISOString()};return r===`browser`?{...i,status:`unknown`,detail:`Signed in through its own Chromium profile; checking would mean opening the browser.`}:r===`api-key`?e.hasSecret===!1&&e.provider!==`openai-compatible`?{...i,status:`not_connected`,detail:`No API key stored. Add one to connect this account.`}:{...i,status:`connected`,detail:`API key stored in the encrypted keyring.`}:{...i,loginCommand:`davecode accounts login ${e.id}`,...t?{status:`connected`,detail:`The vendor CLI reports a login for this account.`}:{status:`not_connected`,detail:`No login in this account’s sandbox yet.`}}}var V=e=>e,rn=[{account:{id:`acc_claude_pro`,provider:`claude-cli`,label:`Claude Pro — personal`,enabled:!0,priority:10,weight:3,limits:V({tpm:6e4,tokens5h:3e6,requests5h:900,tokensDaily:9e6}),config:{binary:`claude`,sandbox:`~/.davecode/sandboxes/acc_claude_pro`}},curve5h:{from:.79,to:.935},curve24h:{from:.54,to:.63},latency:[900,11],failRate:.02},{account:{id:`acc_anthropic_work`,provider:`anthropic`,label:`Anthropic API — work`,enabled:!0,priority:20,weight:2,limits:V({tpm:12e4,rpm:50,tokens5h:6e6,tokensDaily:2e7}),config:{models:[`claude-sonnet-5-5`,`claude-opus-5-5`,`claude-haiku-5`]}},curve5h:{from:.48,to:.64},curve24h:{from:.36,to:.44},latency:[650,9],failRate:.015},{account:{id:`acc_openai_team`,provider:`openai`,label:`OpenAI — team`,enabled:!0,priority:30,weight:1,limits:V({tpm:9e4,rpm:60,tokens5h:5e6,tokensDaily:15e6}),config:{models:[`gpt-5.5`,`gpt-5.5-mini`,`gpt-5.5-pro`]}},curve5h:{from:.27,to:.36},curve24h:{from:.2,to:.26},latency:[520,8],failRate:.012},{account:{id:`acc_ollama_local`,provider:`openai-compatible`,label:`OpenRouter`,enabled:!0,priority:50,weight:1,limits:{},config:{baseUrl:`https://openrouter.ai/api/v1`,models:[`openrouter/auto`]}},curve5h:{from:0,to:0},curve24h:{from:0,to:0},latency:[380,22],failRate:.01},{account:{id:`acc_gemini_web`,provider:`gemini-web`,label:`Gemini web — experimental`,enabled:!1,status:`disabled`,priority:90,weight:1,limits:V({requestsDaily:100}),config:{profile:`~/.davecode/profiles/acc_gemini_web`}},curve5h:{from:0,to:0},curve24h:{from:0,to:0},latency:[2400,14],failRate:.05}],an=[{name:`auto`,description:`Subscription first, then API keys, then the local model.`,targets:[{provider:`claude-cli`,model:`claude-sonnet-5-5`,accountId:`acc_claude_pro`},{provider:`anthropic`,model:`claude-sonnet-5-5`},{provider:`openai`,model:`gpt-5.5`},{provider:`openai-compatible`,model:`openrouter/auto`}]},{name:`fast`,description:`Low-latency completions for autocomplete and quick edits.`,targets:[{provider:`openai`,model:`gpt-5.5-mini`},{provider:`anthropic`,model:`claude-haiku-5`},{provider:`openai-compatible`,model:`llama4:scout`}]},{name:`reasoning`,description:`Planning and hard debugging. Expensive; used by the runner for repairs.`,targets:[{provider:`anthropic`,model:`claude-opus-5-5`},{provider:`openai`,model:`gpt-5.5-pro`}]},{name:`local`,description:`Never leaves the machine.`,targets:[{provider:`openai-compatible`,model:`openrouter/auto`,accountId:`acc_ollama_local`}]}],on=[[`auto`,.62],[`fast`,.24],[`reasoning`,.06],[`local`,.08]],H=(e,t)=>new Date(t-e*6e4).toISOString();function sn(e){return[{id:`foundation`,title:`Monorepo foundation, shared contracts and OSS docs`,status:`SUCCESS`,dependsOn:[],priority:100,attempts:1,branch:`davecode/task-foundation`,acceptance:[`pnpm lint, typecheck, test and build pass`,`Contracts documented in docs/API.md`],updatedAt:H(1560,e)},{id:`p1-storage`,title:`SQLite storage (WAL), migrations and repositories`,description:`accounts, secrets, sessions, token_usage and audit_logs tables with typed repositories.`,status:`SUCCESS`,dependsOn:[`foundation`],priority:90,attempts:1,branch:`davecode/task-p1-storage`,acceptance:[`Migrations are idempotent`,`WAL mode enabled`,`Repositories covered by tests`],updatedAt:H(1200,e)},{id:`p1-config`,title:`Layered config loader (defaults, global, project, env)`,status:`SUCCESS`,dependsOn:[`foundation`],priority:90,attempts:2,branch:`davecode/task-p1-config`,acceptance:[`Later layers win`,`Invalid config reports the zod path`],notes:`First attempt merged env vars before the project file; fixed in repair cycle 1.`,updatedAt:H(1140,e)},{id:`p1-identity`,title:`Encrypted keyring, sandbox manager and Chromium profile manager`,status:`SUCCESS`,dependsOn:[`p1-storage`],priority:90,attempts:1,branch:`davecode/task-p1-identity`,acceptance:[`Secrets are AES-256-GCM encrypted at rest`,`master.key created with 0600 permissions`,`Each CLI account gets its own CLAUDE_CONFIG_DIR / CODEX_HOME`],updatedAt:H(840,e)},{id:`p2-quota`,title:`Sliding-window quota engine (1m, 5h, 24h) and SQLite-backed tracker`,status:`SUCCESS`,dependsOn:[`p1-storage`],priority:80,attempts:1,branch:`davecode/task-p2-quota`,acceptance:[`Windows slide, never reset on the hour`,`Utilization = max(tokens, requests) ratio`],updatedAt:H(540,e)},{id:`p2-providers`,title:`Provider adapters: anthropic, openai, gemini, openai-compatible, claude-cli`,status:`SUCCESS`,dependsOn:[`p1-identity`],priority:80,attempts:2,branch:`davecode/task-p2-providers`,acceptance:[`Upstream errors mapped to ProviderError kinds`,`Streaming and non-streaming paths`],updatedAt:H(360,e)},{id:`p2-codex-cli`,title:`Codex CLI adapter isolated via CODEX_HOME`,status:`FAILED`,dependsOn:[`p2-providers`],priority:70,attempts:3,branch:`davecode/task-p2-codex-cli`,acceptance:[`codex exec runs inside the account sandbox`,`Usage parsed from the JSON event stream`],notes:"Failed after 3 repair cycles: `codex exec --json` exits 2 under a fresh CODEX_HOME on Windows (no login prompt in non-TTY mode). Needs a human decision on the auth flow.",updatedAt:H(240,e)},{id:`p3-brain`,title:`Global and project brain managers, task graph DAG resolver with cycle detection`,status:`SUCCESS`,dependsOn:[`foundation`],priority:70,attempts:1,branch:`davecode/task-p3-brain`,acceptance:[`Unknown dependencies rejected`,`Cycles rejected with the offending path`],updatedAt:H(480,e)},{id:`p2-router`,title:`Router with balancing, backpressure, cooldowns and hot failover`,description:`Score candidates by priority, then weight × headroom. Smooth backpressure above 85 %, shift above 90 % of the 5 h quota, fail over before the first byte.`,status:`IN_PROGRESS`,dependsOn:[`p2-quota`,`p2-providers`,`p1-config`],priority:80,attempts:2,branch:`davecode/task-p2-router`,acceptance:[`Never routes to an account in cooldown`,`Weight is smoothly reduced above backpressureThreshold`,`Failover honours Retry-After and routing.maxFailovers`,`Emits router.failover for every hop`],notes:`Repair cycle 1: two vitest assertions failed on Retry-After parsing (HTTP-date form).`,updatedAt:H(3,e)},{id:`p1-gateway`,title:`Fastify gateway: /v1 OpenAI-compatible proxy, /api REST, SSE events`,status:`PENDING`,dependsOn:[`p2-router`],priority:75,acceptance:[`Implements docs/API.md exactly`,`SSE heartbeat every 15 s`,`Serves packages/ui/dist`]},{id:`p4-runner`,title:`Autonomous runner: state machine, validator, repair cycles, git flow`,status:`PENDING`,dependsOn:[`p2-router`,`p3-brain`],priority:60,acceptance:[`At most 3 repair cycles`,`Only merges after lint, typecheck and tests pass`]},{id:`p5-cli`,title:`CLI commands and Ink TUI`,status:`PENDING`,dependsOn:[`p1-gateway`,`p4-runner`],priority:40,acceptance:[`davecode start | status | add-account | run`,`TUI mirrors the dashboard overview`]},{id:`release-0.1.0`,title:`Integration tests, docs polish and v0.1.0 release`,status:`PENDING`,dependsOn:[`p5-cli`,`p2-codex-cli`],priority:10,acceptance:[`End-to-end failover test against two fake upstreams`,`npm publish dry-run passes`]}]}function cn(e,t){let n=e.filter(e=>e.status===`SUCCESS`),r=e.find(e=>e.status===`IN_PROGRESS`),i=e.filter(e=>e.status===`FAILED`);return`# DaveCode: project state
|
|
3
|
-
|
|
4
|
-
_Last updated: ${new Date(t).toISOString().slice(0,10)} by the autonomous runner_
|
|
5
|
-
|
|
6
|
-
## Current focus
|
|
7
|
-
|
|
8
|
-
${r?`**${r.id}**: ${r.title}. Branch \`${r.branch??`davecode/task-${r.id}`}\`.`:`Idle: no unblocked tasks.`}
|
|
9
|
-
|
|
10
|
-
## Done
|
|
11
|
-
|
|
12
|
-
${n.map(e=>`- [x] \`${e.id}\` ${e.title}`).join(`
|
|
13
|
-
`)}
|
|
14
|
-
|
|
15
|
-
## Blockers
|
|
16
|
-
|
|
17
|
-
${i.length?i.map(e=>`- \`${e.id}\` failed after ${e.attempts??3} attempts. ${e.notes??``}`).join(`
|
|
18
|
-
`):`None.`}
|
|
19
|
-
|
|
20
|
-
## Next up
|
|
21
|
-
|
|
22
|
-
1. \`p1-gateway\` once the router merges.
|
|
23
|
-
2. \`p4-runner\` (needs \`p2-router\` and \`p3-brain\`).
|
|
24
|
-
3. Decide the Codex CLI auth flow so \`release-0.1.0\` is unblocked.
|
|
25
|
-
|
|
26
|
-
## Decisions log
|
|
27
|
-
|
|
28
|
-
| Date | Decision |
|
|
29
|
-
| :--- | :------- |
|
|
30
|
-
| 2026-10-06 | Node ≥ 22.12 + pnpm monorepo; \`better-sqlite3\`; Fastify; Ink TUI + Vite/React dashboard |
|
|
31
|
-
| 2026-10-06 | ToS-sensitive features ship behind \`experimental.*\` flags, off by default |
|
|
32
|
-
| 2026-10-06 | Judge defaults to deterministic checks (free) |
|
|
33
|
-
`}var ln=`# DaveCode: architecture
|
|
34
|
-
|
|
35
|
-
DaveCode is a **local-first** engine with two jobs: an OpenAI-compatible **gateway** with
|
|
36
|
-
quota-aware routing and hot failover, and an **autonomous runner** that walks a task DAG.
|
|
37
|
-
|
|
38
|
-
## Packages
|
|
39
|
-
|
|
40
|
-
| Package | Responsibility |
|
|
41
|
-
| :------ | :------------- |
|
|
42
|
-
| \`@davecode/core\` | Contracts, storage, identity, quotas, providers, router, brain, runner |
|
|
43
|
-
| \`@davecode/server\` | Fastify gateway: \`/v1\`, \`/api\`, SSE, serves the dashboard |
|
|
44
|
-
| \`davecode\` | CLI and Ink TUI |
|
|
45
|
-
| \`@davecode/ui\` | This dashboard |
|
|
46
|
-
|
|
47
|
-
## Routing
|
|
48
|
-
|
|
49
|
-
1. Resolve candidates from the route, provider prefix or bare model.
|
|
50
|
-
2. Drop disabled, cooling-down or saturated accounts.
|
|
51
|
-
3. Score: priority, then weight × headroom. Backpressure above **85 %**, shift above **90 %**.
|
|
52
|
-
4. On \`rate_limit\`, \`unavailable\`, \`timeout\`… cool down and fail over before the first byte.
|
|
53
|
-
`,U=new Set([`planned`,`succeeded`,`failed`,`cancelled`,`budget_exhausted`]),un=[{id:`planner`,description:`Breaks the objective into a plan and success criteria.`},{id:`researcher`,description:`Analyses markets, users, competitors and options.`},{id:`implementer`,description:`Writes and changes code (through the autonomous runner).`},{id:`reviewer`,description:`Critically reviews other outputs for gaps and risks.`},{id:`writer`,description:`Positioning, marketing copy, docs and drafts of messages.`}],W={maxRounds:4,maxTasks:12,maxTokens:1e6},G=1800;function dn(e){let t=/\b(page|site|app|api|endpoint|feature|build|implement|code)\b/i.test(e),n=[{id:`research`,title:`Map the audience and alternatives`,role:`researcher`,kind:`artifact`,dependsOn:[]},{id:`positioning`,title:`Write the positioning and key messages`,role:`writer`,kind:`artifact`,dependsOn:[`research`]}];return t&&n.push({id:`implement`,title:`Implement the change behind the objective`,role:`implementer`,kind:`code`,dependsOn:[`positioning`]}),n.push({id:`launch-copy`,title:`Write the launch copy`,role:`writer`,kind:`artifact`,dependsOn:[`positioning`]},{id:`outreach`,title:`Draft: Email the first 20 prospects`,role:`writer`,kind:`artifact`,dependsOn:[`launch-copy`]}),n}var fn=class{host;list=[];constructor(e){this.host=e}seed(e){let t=t=>new Date(e-t*6e4).toISOString(),n=`goal_5e1d0c2a9b77`,r=dn(`Prepare the v0.2 launch messaging`).map(e=>({...e,status:`SUCCESS`,round:1,attempts:1,artifact:`.davecode/goals/${n}/${e.id}.md`,notes:`Wrote .davecode/goals/${n}/${e.id}.md`,...e.id===`outreach`?{description:`DaveCode never performs outbound actions.`}:{}}));this.list.push({id:n,objective:`Prepare the v0.2 launch messaging`,status:`succeeded`,round:1,limits:{...W,tokensUsed:38420},roles:un,tasks:r,summary:"Positioning, launch copy and a prospect email draft are ready in `.davecode/goals/`. A human still has to review and send the email.",createdAt:t(140),updatedAt:t(118),finishedAt:t(118)})}all(){return[...this.list].sort((e,t)=>t.createdAt.localeCompare(e.createdAt))}start(e){let t=e.objective?.trim()??``;if(!t)throw new F(400,`invalid_body`,`objective: must not be empty`);let n=this.list.find(e=>!U.has(e.status));if(n)throw new F(409,`busy`,`goal ${n.id} is still running; cancel it first`);let r=new Date(this.host.now()).toISOString(),i={id:this.host.nextId(`goal`),objective:t,status:`planning`,round:1,limits:{maxRounds:Math.min(e.maxRounds??W.maxRounds,W.maxRounds),maxTasks:Math.min(e.maxTasks??W.maxTasks,W.maxTasks),maxTokens:Math.min(e.maxTokens??W.maxTokens,W.maxTokens),tokensUsed:0},roles:un,tasks:[],createdAt:r,updatedAt:r,...e.dryRun?{dryRun:!0}:{}};return this.list.push(i),this.update(i),this.log(i,`info`,`planning: ${t}`,`planner`),this.host.later(G,()=>this.plan(i)),i}cancel(e){let t=this.list.find(t=>t.id===e);if(!t)throw new F(404,`not_found`,`unknown goal "${e}"`);if(U.has(t.status))return t;for(let e of t.tasks)e.status===`IN_PROGRESS`&&(e.status=`PENDING`);return this.finish(t,`cancelled`),t}execute(e){let t=this.list.find(e=>!U.has(e.status));if(t)throw new F(409,`busy`,`goal ${t.id} is still running; cancel it first`);let n=this.list.find(t=>t.id===e);if(!n)throw new F(404,`not_found`,`unknown goal "${e}"`);if(n.status!==`planned`)throw new F(400,`invalid`,`goal "${e}" is ${n.status}; only a planned goal can be executed`);return delete n.dryRun,delete n.finishedAt,delete n.lastError,n.status=`running`,this.update(n),this.log(n,`info`,`executing planned goal (${n.tasks.length} task(s))`,`planner`),this.host.later(G,()=>this.step(n)),n}artifact(e,t){let n=this.list.find(t=>t.id===e);if(!n)throw new F(404,`not_found`,`unknown goal "${e}"`);let r=n.tasks.find(e=>e.id===t);if(!r?.artifact)throw new F(404,`not_found`,`task "${t}" has no artifact in goal "${e}"`);return{taskId:r.id,path:r.artifact,content:[`# ${r.title}`,``,`- **Goal:** ${n.objective}`,`- **Role:** \`${r.role}\` (round ${r.round})`,``,`## Summary`,``,r.id===`outreach`?`Draft email prepared for human review. DaveCode never sends outbound messages or takes external actions automatically.`:`Completed deliverable for **${r.title.toLowerCase()}** based on repository state and quota-aware routing.`].join(`
|
|
54
|
-
`)}}plan(e){if(!U.has(e.status)){if(e.tasks=dn(e.objective).slice(0,e.limits.maxTasks).map(e=>({...e,status:`PENDING`,round:1,attempts:0})),e.summary=`${e.tasks.length} tasks: research first, then positioning and copy; outbound steps stay drafts.`,this.spend(e,2400),this.log(e,`info`,`planned ${e.tasks.length} task(s)`,`planner`),e.dryRun){this.finish(e,`planned`);return}e.status=`running`,this.update(e),this.host.later(G,()=>this.step(e))}}step(e){if(U.has(e.status))return;let t=e.tasks.find(e=>e.status===`IN_PROGRESS`);t&&(t.status=`SUCCESS`,t.kind===`code`?(t.runnerTaskId=`goal-${e.id.slice(-6)}-${t.id}`,t.notes=`Merged into main after lint, typecheck and tests passed.`):(t.artifact=`.davecode/goals/${e.id}/${t.id}.md`,t.notes=`Wrote ${t.artifact}`),delete e.activeTaskId,this.spend(e,t.kind===`code`?42e3:5e3+Math.round(Math.random()*4e3)),this.log(e,`info`,`${t.id}: SUCCESS`,t.role,t.id));let n=new Set(e.tasks.filter(e=>e.status===`SUCCESS`).map(e=>e.id)),r=e.tasks.find(e=>e.status===`PENDING`&&e.dependsOn.every(e=>n.has(e)));if(r){r.status=`IN_PROGRESS`,r.attempts+=1,e.activeTaskId=r.id,this.update(e),this.log(e,`info`,`${r.title} (attempt ${r.attempts})`,r.role,r.id),this.host.later(r.kind===`code`?G*3:G,()=>this.step(e));return}e.status=`reviewing`,this.update(e),this.log(e,`info`,`reviewing round ${e.round}`,`reviewer`),this.host.later(G,()=>{U.has(e.status)||(this.spend(e,3100),e.summary=`Every task succeeded. The outreach email is a draft in the goal folder: review it and send it yourself.`,this.finish(e,`succeeded`))})}spend(e,t){e.limits.tokensUsed+=t}finish(e,t){delete e.activeTaskId,e.status=t,e.finishedAt=new Date(this.host.now()).toISOString(),this.update(e),this.log(e,t===`succeeded`||t===`planned`?`info`:`warn`,`goal ${t} (${e.limits.tokensUsed} tokens)`)}update(e){e.updatedAt=new Date(this.host.now()).toISOString(),this.host.emit({type:`goal.updated`,goal:structuredClone(e)})}log(e,t,n,r,i){this.host.emit({type:`goal.log`,goalId:e.id,level:t,message:n,...r?{role:r}:{},...i?{taskId:i}:{}})}},pn=/^[a-z0-9][a-z0-9-]*$/,mn=0,K=e=>`${e}-${++mn}`;function hn(e=`anthropic`){return{key:K(`t`),provider:e,model:``,accountId:``}}function gn(e=``){return{key:K(`r`),name:e,description:``,targets:[hn()]}}function _n(e,t){let n=e.map(e=>({key:K(`r`),name:e.name,description:e.description??``,targets:e.targets.map(e=>({key:K(`t`),provider:e.provider,model:e.model,accountId:e.accountId??``}))}));return{routes:n,defaultKey:n.find(e=>e.name===t)?.key??null}}function vn(e){let t=e.routes.map(e=>{let t=e.description.trim();return{name:e.name.trim(),...t&&{description:t},targets:e.targets.map(e=>({provider:e.provider,model:e.model.trim(),...e.accountId&&{accountId:e.accountId}}))}}),n=e.routes.find(t=>t.key===e.defaultKey);return{routes:t,...n&&{defaultRoute:n.name.trim()}}}function yn(e,t,n){let r=[...e];if(t<0||t>=r.length)return r;let i=Math.max(0,Math.min(r.length-1,n));if(i===t)return r;let[a]=r.splice(t,1);return r.splice(i,0,a),r}function bn(e){let t=new Set(e.map(e=>e.name));for(let n=e.length+1;;n++)if(!t.has(`route-${n}`))return`route-${n}`}function xn(e,t=[]){let n={},r=new Map;for(let t of e.routes){let e=t.name.trim();r.set(e,(r.get(e)??0)+1)}let i=!0;for(let a of e.routes){let e={target:{}},o=a.name.trim();o?pn.test(o)?(r.get(o)??0)>1&&(e.name=`Another route already uses this name.`):e.name=`Lowercase letters, digits and hyphens only, starting with a letter or digit.`:e.name=`Give the route a name.`,a.targets.length===0&&(e.targets=`Add at least one target.`);for(let n of a.targets){let r={};if(n.model.trim()||(r.model=`Enter a model id.`),n.accountId){let e=t.find(e=>e.id===n.accountId);e?e.provider!==n.provider&&(r.accountId=`The pinned account belongs to a different provider.`):r.accountId=`This account no longer exists.`}(r.model||r.accountId)&&(e.target[n.key]=r)}(e.name||e.targets||Object.keys(e.target).length>0)&&(i=!1),n[a.key]=e}let a;return e.routes.length>0&&!e.routes.some(t=>t.key===e.defaultKey)&&(a=`Pick the default route.`,i=!1),{byRoute:n,...a&&{defaultRoute:a},valid:i}}function Sn(e,t,n){return JSON.stringify(vn(e))!==JSON.stringify(Cn(t,n))}function Cn(e,t){return vn(_n(e,t))}var wn=/^[a-z0-9]+(?:[-_.][a-z0-9]+)*$/;function Tn(e,t){return e?wn.test(e)?t.some(t=>t.id===e)?`A task with the id "${e}" already exists.`:null:`Use lowercase letters, digits and - _ . (for example build-api).`:`Give the task an id.`}function En(e){return e.toLowerCase().normalize(`NFKD`).replace(/[̀-ͯ]/g,``).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,48).replace(/-+$/g,``)}function Dn(e,t){let n=e||`task`,r=new Set(t.map(e=>e.id));if(!r.has(n))return n;for(let e=2;;e++){let t=`${n}-${e}`;if(!r.has(t))return t}}var On={PENDING:[`IN_PROGRESS`],IN_PROGRESS:[`SUCCESS`,`FAILED`,`PENDING`],FAILED:[`PENDING`],SUCCESS:[`PENDING`]};function kn(e,t){return e===t||On[e].includes(t)}function An(e){switch(e){case`PENDING`:return[{to:`IN_PROGRESS`,label:`Start`,variant:`secondary`}];case`IN_PROGRESS`:return[{to:`SUCCESS`,label:`Mark done`,variant:`primary`},{to:`FAILED`,label:`Mark failed`,variant:`secondary`},{to:`PENDING`,label:`Reopen`,variant:`secondary`}];case`FAILED`:case`SUCCESS`:return[{to:`PENDING`,label:`Reopen`,variant:`secondary`}]}}function jn(e,t){let n=new Set,r=[t];for(;r.length>0;){let t=r.pop();for(let i of e)i.dependsOn.includes(t)&&!n.has(i.id)&&(n.add(i.id),r.push(i.id))}return n}function Mn(e,t){if(t===void 0)return[...e];let n=jn(e,t);return e.filter(e=>e.id!==t&&!n.has(e.id))}function Nn(e,t,n){let r=new Map(e.map(e=>[e.id,e.dependsOn]));r.set(t,n);let i=new Set,a=(e,n)=>{for(let o of r.get(e)??[]){if(o===t)return[...n,t];if(i.has(o))continue;i.add(o);let e=a(o,[...n,o]);if(e)return e}return null};return a(t,[t])}function Pn(){return{id:``,title:``,description:``,acceptance:``,priority:``,notes:``,dependsOn:[]}}function Fn(e){return{id:e.id,title:e.title,description:e.description??``,acceptance:(e.acceptance??[]).join(`
|
|
55
|
-
`),priority:e.priority===void 0?``:String(e.priority),notes:e.notes??``,dependsOn:[...e.dependsOn]}}function In(e){return e.split(/\r?\n/).map(e=>e.replace(/^\s*(?:[-*]|\d+[.)])\s+/,``).trim()).filter(Boolean)}function Ln(e){let t=e.trim();if(!t)return{};let n=Number(t);return Number.isFinite(n)?{value:n}:{error:`Priority must be a number.`}}function Rn(e,t,n){let r={};if(n===void 0){let n=Tn(e.id.trim(),t);n&&(r.id=n)}e.title.trim()?e.title.trim().length>300&&(r.title=`Keep the title under 300 characters.`):r.title=`Give the task a title.`;let i=Ln(e.priority);i.error&&(r.priority=i.error);let a=n??e.id.trim();if(e.dependsOn.includes(a))r.dependsOn=`A task cannot depend on itself.`;else{let n=e.dependsOn.find(e=>!t.some(t=>t.id===e));if(n)r.dependsOn=`Unknown task "${n}".`;else if(a){let n=Nn(t,a,e.dependsOn);n&&(r.dependsOn=`Would create a dependency cycle: ${n.join(` → `)}.`)}}return r}function zn(e){let t=e.description.trim(),n=In(e.acceptance),{value:r}=Ln(e.priority);return{id:e.id.trim(),title:e.title.trim(),...t&&{description:t},...e.dependsOn.length>0&&{dependsOn:e.dependsOn},...r!==void 0&&{priority:r},...n.length>0&&{acceptance:n}}}var Bn=(e,t)=>e.length===t.length&&e.every((e,n)=>e===t[n]);function Vn(e,t){let n={},r=t.title.trim();r!==e.title&&(n.title=r);let i=t.description.trim();i!==(e.description??``)&&(n.description=i||null);let a=t.notes.trim();a!==(e.notes??``)&&(n.notes=a||null);let o=In(t.acceptance);Bn(o,e.acceptance??[])||(n.acceptance=o.length>0?o:null);let{value:s}=Ln(t.priority);return s!==e.priority&&(n.priority=s??null),Bn(t.dependsOn,e.dependsOn)||(n.dependsOn=t.dependsOn),n}function Hn(e){return Object.keys(e).length===0}var q=6e4,J=.85,Y=.9,Un=4;function Wn(e){let t=e>>>0;return()=>{t=t+1831565813>>>0;let e=t;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}}var X={rate_limit:[429,`Rate limited by upstream (Retry-After: 45)`],quota_exhausted:[429,`5h usage window exhausted for this account`],unavailable:[503,`Upstream overloaded, try again shortly`],timeout:[504,`Upstream did not answer within 60s`]},Gn={"p2-router":[`packages/core/src/router/select.ts`,`packages/core/src/router/failover.ts`,`packages/core/src/router/circuit-breaker.ts`,`packages/core/src/router/select.test.ts`],"p1-gateway":[`packages/server/src/app.ts`,`packages/server/src/routes/v1.ts`,`packages/server/src/routes/api.ts`,`packages/server/src/sse.ts`],"p4-runner":[`packages/core/src/autonomous/runner.ts`,`packages/core/src/autonomous/validator.ts`,`packages/core/src/autonomous/git.ts`,`packages/core/src/autonomous/runner.test.ts`],"p5-cli":[`packages/cli/src/commands/start.ts`,`packages/cli/src/commands/run.ts`,`packages/cli/src/tui/App.tsx`]},Kn={"p2-router":1,"p1-gateway":0,"p4-runner":2,"p5-cli":1},qn=class{mode=`mock`;rng;clock;t0;opts;seeds=new Map;accounts=[];records=[];taskList;routeList=structuredClone(an);defaultRoute=`auto`;runnerStatus;buffer=[];subscribers=new Set;timers=new Set;running=!1;stopGrace;seq=0;runnerQueue=[];runnerTimer;runnerPending;initialResumed=!1;pausedFrom;pressureLogged=new Map;goalSim;loggedIn=new Set($t);constructor(e={}){this.rng=Wn(e.seed??3665739998),this.clock=e.now??Date.now,this.opts={runnerAvailable:e.runnerAvailable??!0,geminiWeb:e.geminiWeb??!1,latency:e.latency??!0},this.t0=this.clock();for(let e of rn){this.seeds.set(e.account.id,e);let t=Kt(e.account.id,this.t0);this.accounts.push({...e.account,...t&&{subscription:t},status:e.account.status??`active`,createdAt:new Date(this.t0-10368e5).toISOString(),updatedAt:new Date(this.t0-36e5).toISOString()})}this.taskList=sn(this.t0),this.runnerStatus={state:`implementing`,taskId:`p2-router`,repairCycle:1,startedAt:new Date(this.t0-4.2*q).toISOString()},this.generateHistory(),this.opts.runnerAvailable&&this.seedRunnerHistory(),this.goalSim=new fn({now:()=>this.clock(),emit:e=>this.emit(e),later:(e,t)=>this.later(e,t),nextId:e=>this.nextId(e)}),this.goalSim.seed(this.t0)}health(){return this.respond(()=>({status:`ok`,version:`0.2.0`,uptimeSec:Math.round((this.clock()-this.t0)/1e3)+10800+1020,experimental:{geminiWeb:this.opts.geminiWeb,multiAccountRotation:!1}}))}listAccounts(){return this.respond(()=>this.accounts)}createAccount(e){return this.respond(()=>{if(!e.label?.trim())throw new F(400,`invalid_body`,`label: must not be empty`);if(e.provider===`gemini-web`&&!this.opts.geminiWeb)throw new F(400,`experimental_disabled`,`gemini-web requires experimental.geminiWeb = true in config.json`);let t=new Date(this.clock()).toISOString(),n={id:`acc_${e.provider.replace(/[^a-z]/g,``)}_${Math.floor(this.rng()*1e6).toString(36)}`,provider:e.provider,label:e.label.trim(),enabled:!0,priority:e.priority??100,weight:e.weight??1,limits:e.limits??{},config:e.config??{},...e.subscription&&{subscription:e.subscription},status:`active`,createdAt:t,updatedAt:t};return this.accounts.push(n),this.seeds.set(n.id,{account:n,curve5h:{from:0,to:.05},curve24h:{from:0,to:.02},latency:[700,10],failRate:.01}),this.emit({type:`account.updated`,account:n}),this.log(`info`,`accounts`,`Account ${n.id} (${n.provider}) added`),n})}updateAccount(e,t){return this.respond(()=>{let n=this.findAccount(e),r=t.enabled??n.enabled,i={...n,...t.label!==void 0&&{label:t.label},...t.priority!==void 0&&{priority:t.priority},...t.weight!==void 0&&{weight:t.weight},...t.limits!==void 0&&{limits:t.limits},...t.config!==void 0&&{config:t.config},...t.subscription&&{subscription:t.subscription},enabled:r,status:r?n.status===`disabled`?`active`:n.status:`disabled`,updatedAt:new Date(this.clock()).toISOString()};return r||delete i.cooldownUntil,t.subscription===null&&delete i.subscription,this.replaceAccount(i),i})}deleteAccount(e){return this.respond(()=>{this.findAccount(e),this.accounts=this.accounts.filter(t=>t.id!==e),this.emit({type:`account.removed`,accountId:e})})}usage(){return this.respond(()=>this.accounts.map(e=>this.accountUsage(e,this.clock())))}budget(){return this.respond(()=>{let e=this.clock();return Yt(this.accounts,t=>this.accountUsage(t,e),e)})}connection(e){return this.respond(()=>nn(this.findAccount(e),this.loggedIn.has(e),this.clock()))}connect(e){return this.respond(()=>{let t=nn(this.findAccount(e),this.loggedIn.has(e),this.clock());if(t.method!==`cli-login`)throw new F(400,`not_cli_login`,`This account connects with an API key: set it in the account settings`);let n=`davecode accounts login ${e}`;return t.status!==`connected`&&this.later(en,()=>{this.loggedIn.add(e),this.log(`info`,`accounts`,`Account ${e} signed in through the vendor CLI`)}),this.log(`info`,`accounts`,`Opened the official sign-in for ${e}`),{connection:t,launched:!0,command:n,message:`A terminal opened on the gateway machine with the official sign-in. Finish it there; this page updates when the login is detected.`}})}timeseries(e=60,t=60){return this.respond(()=>this.buildTimeseries(e,t))}requests(e=100){return this.respond(()=>this.records.slice(-e).reverse())}routes(){return this.respond(()=>({defaultRoute:this.defaultRoute,routes:this.routeList}))}updateRoutes(e){return this.respond(()=>{let t=new Set;if(e.routes.forEach((e,n)=>{let r=`routes.${n}`;if(!pn.test(e.name))throw new F(400,`invalid_body`,`${r}.name: route names are lowercase kebab-case`);if(t.has(e.name))throw new F(400,`invalid_body`,`${r}.name: duplicate route name "${e.name}"`);if(t.add(e.name),e.targets.length===0)throw new F(400,`invalid_body`,`${r}.targets: at least one target is required`);e.targets.forEach((t,n)=>{if(!t.model.trim())throw new F(400,`invalid_body`,`${r}.targets.${n}.model: required`);if(t.accountId&&!this.accounts.some(e=>e.id===t.accountId))throw new F(400,`unknown_account`,`route "${e.name}" pins unknown account "${t.accountId}"`)})}),e.defaultRoute!==void 0&&!t.has(e.defaultRoute))throw new F(400,`invalid_body`,`defaultRoute: "${e.defaultRoute}" is not one of the routes`);return this.routeList=structuredClone(e.routes),e.defaultRoute!==void 0&&(this.defaultRoute=e.defaultRoute),this.log(`info`,`config`,`Routes updated (${this.routeList.length}); saved to ~/.davecode/config.json`),{defaultRoute:this.defaultRoute,routes:this.routeList,shadowedByProject:!1}})}tasks(){return this.respond(()=>({project:{root:`C:/Users/dev/code/DaveCode`,name:`DaveCode`},graph:{version:1,tasks:this.taskList}}))}createTask(e){return this.respond(()=>{if(!wn.test(e.id))throw new F(400,`invalid_body`,`id: must be lowercase kebab-case or snake_case`);if(!e.title.trim())throw new F(400,`invalid_body`,`title: required`);if(this.taskList.some(t=>t.id===e.id))throw new F(409,`duplicate_id`,`duplicate task id "${e.id}"`);this.assertDependencies(e.id,e.dependsOn??[]);let t=new Date(this.clock()).toISOString(),n={id:e.id,title:e.title.trim(),status:`PENDING`,dependsOn:[...e.dependsOn??[]],...e.description!==void 0&&{description:e.description},...e.priority!==void 0&&{priority:e.priority},...e.acceptance!==void 0&&{acceptance:e.acceptance},createdAt:t,updatedAt:t};return this.taskList=[...this.taskList,n],this.emit({type:`task.updated`,task:n}),n})}updateTask(e,t){return this.respond(()=>{let n=this.taskList.find(t=>t.id===e);if(!n)throw new F(404,`not_found`,`unknown task "${e}"`);let r={...n};t.title!==void 0&&(r.title=t.title.trim()),t.dependsOn!==void 0&&(this.assertDependencies(e,t.dependsOn),r.dependsOn=[...t.dependsOn]);for(let e of[`description`,`priority`,`acceptance`,`notes`]){let n=t[e];n===null?delete r[e]:n!==void 0&&Object.assign(r,{[e]:n})}if(t.status!==void 0&&t.status!==n.status){if(!kn(n.status,t.status))throw new F(409,`invalid_transition`,`task "${e}": cannot move ${n.status} → ${t.status}`);r.status=t.status,t.status===`IN_PROGRESS`&&(r.attempts=(n.attempts??0)+1)}return this.commitTask(r),this.taskList.find(t=>t.id===e)})}deleteTask(e){return this.respond(()=>{let t=this.taskList.find(t=>t.id===e);if(!t)throw new F(404,`not_found`,`unknown task "${e}"`);let n=this.taskList.filter(t=>t.dependsOn.includes(e)).map(e=>e.id);if(n.length>0)throw new F(409,`has_dependents`,`cannot delete "${e}": ${n.map(e=>`"${e}"`).join(`, `)} depend on it`,{dependents:n});if(t.status===`IN_PROGRESS`)throw new F(409,`task_in_progress`,`cannot delete "${e}" while it is IN_PROGRESS; reopen it first`);this.taskList=this.taskList.filter(t=>t.id!==e),this.emit({type:`task.removed`,taskId:e})})}assertDependencies(e,t){for(let n of t){if(n===e)throw new F(400,`self_dependency`,`task "${e}" depends on itself`);if(!this.taskList.some(e=>e.id===n))throw new F(400,`unknown_dependency`,`task "${e}" depends on unknown task "${n}"`)}let n=Nn(this.taskList,e,t);if(n)throw new F(400,`cycle`,`dependency cycle: ${n.join(` → `)}`,{cycle:n})}brain(){return this.respond(()=>({state:cn(this.taskList,this.clock()),architecture:ln}))}runner(){return this.respond(()=>(this.assertRunner(),this.runnerStatus))}runnerAction(e,t={}){return this.respond(()=>{this.assertRunner();let n=this.runnerStatus.state;if(e===`start`&&t.taskId!==void 0&&n!==`paused`&&this.assertRunnable(t.taskId),e===`pause`)n!==`paused`&&n!==`idle`&&n!==`stopped`&&(this.pausedFrom=n,this.haltRunner(),this.setRunner({...this.runnerStatus,state:`paused`}),this.runnerLog(`warn`,`Paused by user. The current step resumes where it left off.`));else if(e===`start`)n===`paused`?(this.setRunner({...this.runnerStatus,state:this.pausedFrom??`selecting`}),this.pausedFrom=void 0,this.runnerLog(`info`,`Resumed by user.`),this.pumpRunner()):(n===`idle`||n===`stopped`||n===`error`)&&(this.runnerLog(`info`,`Runner started.`),this.runnerQueue=[],this.enqueueSelect(0,t.taskId),this.pumpRunner());else if(e===`stop`){this.haltRunner(),this.runnerQueue=[];let e=this.runnerStatus.taskId;if(e){let t=this.taskList.find(t=>t.id===e);t&&t.status===`IN_PROGRESS`&&this.commitTask({...t,status:`PENDING`,notes:`Run stopped by user; branch kept.`})}this.setRunner({state:`stopped`}),this.runnerLog(`warn`,`Stopped by user. Work in progress stays on its task branch.`)}return this.runnerStatus})}logs(e=200){return this.respond(()=>this.buffer.slice(-e))}goals(){return this.respond(()=>(this.assertGoals(),this.goalSim.all()))}startGoal(e){return this.respond(()=>(this.assertGoals(),this.goalSim.start(e)))}executeGoal(e){return this.respond(()=>(this.assertGoals(),this.goalSim.execute(e)))}goalArtifact(e,t){return this.respond(()=>(this.assertGoals(),this.goalSim.artifact(e,t)))}cancelGoal(e){return this.respond(()=>(this.assertGoals(),this.goalSim.cancel(e)))}models(){return this.respond(()=>{let e=Math.floor(this.t0/1e3),t=[];for(let n of this.accounts.filter(e=>e.enabled))for(let r of this.modelsFor(n))t.push({id:`${n.provider}/${r}`,object:`model`,created:e,owned_by:n.provider});for(let n of this.routeList)t.push({id:`davecode/${n.name}`,object:`model`,created:e,owned_by:`davecode`});return t})}subscribe(e){this.subscribers.add(e),e.onStatus?.({state:`mock`,attempt:0,lastEventAt:this.clock()});let t=this.buffer.slice(-500);return queueMicrotask(()=>{if(this.subscribers.has(e))for(let n of t)e.onEvent(n)}),this.stopGrace&&=(clearTimeout(this.stopGrace),void 0),this.start(),()=>{this.subscribers.delete(e),this.subscribers.size===0&&(this.stopGrace=setTimeout(()=>this.stop(),1e3))}}start(){this.running||(this.running=!0,this.scheduleRequest(),this.every(5e3,()=>{for(let e of this.accounts)e.enabled&&this.emit({type:`quota.updated`,usage:this.accountUsage(e,this.clock())});this.checkPressure()}),this.opts.runnerAvailable&&(!this.initialResumed&&this.runnerStatus.state===`implementing`&&(this.initialResumed=!0,this.resumeInitialTask()),this.runnerStatus.state!==`paused`&&this.pumpRunner()))}stop(){this.running=!1;for(let e of this.timers)clearTimeout(e);this.timers.clear(),this.haltRunner()}later(e,t){let n=setTimeout(()=>{this.timers.delete(n),this.running&&t()},e);this.timers.add(n)}every(e,t){let n=()=>{t(),this.later(e,n)};this.later(e,n)}rate(e){let t=e/q,n=11+4*Math.sin(t/9)+2.5*Math.sin(t/3.3);return Math.max(3,n)}scheduleRequest(){let e=q/this.rate(this.clock()),t=Math.min(e*3,-Math.log(1-this.rng())*e);this.later(Math.max(250,t),()=>{this.runLiveRequest(),this.scheduleRequest()})}runLiveRequest(){let e=this.planRequest(this.clock(),!0);if(!e)return;let t=this.nextId(`req`),{candidates:n}=e,r=e=>{let i=n[e];if(!i)return;let{account:a,target:o}=i;this.emit({type:`request.started`,requestId:t,model:o.model,accountId:a.id,provider:a.provider});let s=this.rollAttempt(a,o,this.clock(),!0);this.later(s.latencyMs,()=>{let i=this.clock();if(this.pushRecord(t,s,i),s.ok){this.emit({type:`request.completed`,requestId:t,model:o.model,accountId:a.id,provider:a.provider,promptTokens:s.promptTokens,completionTokens:s.completionTokens,latencyMs:s.latencyMs}),this.emit({type:`quota.updated`,usage:this.accountUsage(a,i)});return}let c=s.errorKind??`unknown`,[l,u]=X[c]??[500,`Upstream error`];this.emit({type:`request.failed`,requestId:t,accountId:a.id,provider:a.provider,error:{kind:c,message:u,status:l}}),(c===`rate_limit`||c===`quota_exhausted`||c===`unavailable`)&&this.startCooldown(a,c===`unavailable`?20:45);let d=e+1<n.length&&e<Un?n[e+1]:void 0;this.emit({type:`router.failover`,requestId:t,fromAccountId:a.id,toAccountId:d?.account.id??null,reason:c}),d&&this.later(20+this.rng()*40,()=>r(e+1))})};r(0)}pickRoute(){let e=this.rng();for(let[t,n]of on){if(e<n)return t;e-=n}return`auto`}candidatesFor(e,t){return this.accounts.filter(n=>!n.enabled||n.status===`disabled`||n.status===`error`||t&&n.status===`cooldown`?!1:e.accountId?n.id===e.accountId:n.provider===e.provider?this.modelsFor(n).includes(e.model)||this.modelsFor(n).length===0:!1)}planRequest(e,t){let n=this.routeList.find(e=>e.name===this.pickRoute())??this.routeList[0];if(!n)return null;let r=[];if(n.targets.forEach((n,i)=>{for(let a of this.candidatesFor(n,t)){let t=this.util5h(a,e),o=t>=Y?.12:t>=J?.45:1,s=[5,3,1.4,.7][i]??.5;r.push({account:a,target:n,weight:s*a.weight*o})}}),r.length===0)return null;let i=r.reduce((e,t)=>e+t.weight,0),a=this.rng()*i,o=0;for(let e=0;e<r.length;e++)if(a-=r[e]?.weight??0,a<=0){o=e;break}let s=r[o];if(!s)return null;let c=r.filter((e,t)=>t!==o&&r[t]?.account.id!==s.account.id);return{model:s.target.model,candidates:[s,...c].map(({account:e,target:t})=>({account:e,target:t}))}}rollAttempt(e,t,n,r){let i=this.seeds.get(e.id),[a,o]=i?.latency??[700,10],s=t.model.includes(`mini`)||t.model.includes(`haiku`)||t.model.includes(`scout`),c=t.model.includes(`opus`)||t.model.includes(`pro`),l=Math.round((s?900:2400)*Math.exp(this.rng()*1.6)),u=Math.round((s?80:c?700:300)*Math.exp(this.rng()*1.1)),d=Math.round((a+u*o*(s?.35:.6))*(.75+this.rng()*.5)),f=this.util5h(e,n),p=i?.failRate??.01;if(f>=Y?p+=.5:f>=J&&(p+=.16),r||(p*=.8),this.rng()<p){let n=e.provider===`openai-compatible`?`timeout`:f>=J||this.rng()<.7?`rate_limit`:`unavailable`;return{account:e,target:t,ok:!1,errorKind:n,status:X[n]?.[0],latencyMs:Math.round(n===`timeout`?6e3+this.rng()*2e3:180+this.rng()*400),promptTokens:0,completionTokens:0}}return{account:e,target:t,ok:!0,latencyMs:d,promptTokens:l,completionTokens:u}}pushRecord(e,t,n){this.records.push({id:this.nextId(`use`),requestId:e,accountId:t.account.id,provider:t.account.provider,model:t.target.model,promptTokens:t.promptTokens,completionTokens:t.completionTokens,latencyMs:t.latencyMs,status:t.ok?`success`:t.errorKind===`rate_limit`?`rate_limited`:`error`,...t.errorKind&&{errorKind:t.errorKind},ts:n});let r=this.clock()-72e5;(this.records.length>4e3||(this.records[0]?.ts??r)<r)&&(this.records=this.records.filter(e=>e.ts>=r).slice(-4e3))}generateHistory(){let e=this.t0-62*q,t=this.t0-6*q;for(let n=e;n<this.t0;n+=q){let e=n>this.t0-24*q&&n<this.t0-18*q?7:0,r=Math.round(this.rate(n)+e+(this.rng()-.5)*4);for(let e=0;e<r;e++){let e=n+this.rng()*q;if(e>=this.t0)continue;let r=this.planRequest(e,!1);if(!r)continue;let i=this.nextId(`req`),a=e;for(let n=0;n<r.candidates.length&&n<=Un;n++){let o=r.candidates[n];if(!o)break;let s=this.rollAttempt(o.account,o.target,a,!1),c=a+s.latencyMs;if(c>=this.t0||(this.pushRecord(i,s,c),e>=t&&this.bufferChainEvents(i,s,a,c,r.candidates[n+1]?.account),a=c+25,s.ok))break}}}this.records.sort((e,t)=>e.ts-t.ts),this.buffer.sort((e,t)=>e.ts-t.ts)}bufferChainEvents(e,t,n,r,i){let a={requestId:e,accountId:t.account.id,provider:t.account.provider};if(this.buffer.push({type:`request.started`,...a,model:t.target.model,ts:n}),t.ok){this.buffer.push({type:`request.completed`,...a,model:t.target.model,promptTokens:t.promptTokens,completionTokens:t.completionTokens,latencyMs:t.latencyMs,ts:r});return}let o=t.errorKind??`unknown`,[s,c]=X[o]??[500,`Upstream error`];this.buffer.push({type:`request.failed`,...a,error:{kind:o,message:c,status:s},ts:r}),this.buffer.push({type:`router.failover`,requestId:e,fromAccountId:t.account.id,toAccountId:i?.id??null,reason:o,ts:r+1})}curve(e,t){let n=Math.max(0,t-this.t0)/1e3,r=1-Math.exp(-(n+20)/260),i=Math.sin(t/23e3)*.004;return Math.max(0,e.from+(e.to-e.from)*r+(e.to>0?i:0))}util5h(e,t){let n=this.seeds.get(e.id);return!n||!e.limits.tokens5h&&!e.limits.requests5h?0:this.curve(n.curve5h,t)}accountUsage(e,t){let n=this.seeds.get(e.id),r=this.records.filter(n=>n.accountId===e.id&&n.ts>t-q&&n.ts<=t),i=this.records.filter(n=>n.accountId===e.id&&n.ts>t-60*q),a=e=>e.reduce((e,t)=>e+t.promptTokens+t.completionTokens,0),o=e.limits,s=a(r),c={window:`1m`,tokens:s,requests:r.length,...o.tpm!==void 0&&{tokenLimit:o.tpm},...o.rpm!==void 0&&{requestLimit:o.rpm},utilization:Math.max(o.tpm?s/o.tpm:0,o.rpm?r.length/o.rpm:0)},l=(e,n,r,o,s)=>{if(!n&&!r)return{window:e,tokens:Math.round(a(i)*s),requests:Math.round(i.length*s),utilization:0};let c=o?this.curve(o,t):0;return{window:e,tokens:Math.round(c*(n??a(i)*s*2)),requests:Math.round(r?c*.92*r:i.length*s),...n!==void 0&&{tokenLimit:n},...r!==void 0&&{requestLimit:r},utilization:c}};return{accountId:e.id,windows:{"1m":c,"5h":l(`5h`,o.tokens5h,o.requests5h,n?.curve5h,3.4),"24h":l(`24h`,o.tokensDaily,o.requestsDaily,n?.curve24h,9.5)}}}checkPressure(){let e=this.clock();for(let t of this.accounts){let n=this.util5h(t,e),r=n>=Y?2:+(n>=J);r>(this.pressureLogged.get(t.id)??0)&&(this.pressureLogged.set(t.id,r),r===1?this.log(`info`,`router`,`Backpressure: ${t.id} at ${(n*100).toFixed(0)}% of its 5h window; weight smoothed down`):this.log(`warn`,`router`,`Quota shift: ${t.id} above 90% of its 5h window; routing to alternates`))}}startCooldown(e,t){let n=this.accounts.find(t=>t.id===e.id);if(!n||n.status===`cooldown`)return;let r=this.clock()+t*1e3;this.replaceAccount({...n,status:`cooldown`,cooldownUntil:new Date(r).toISOString(),lastError:X.rate_limit?.[1],updatedAt:new Date(this.clock()).toISOString()}),this.log(`warn`,`router`,`${e.id} cooling down for ${t}s after upstream ${t>30?429:503}`),this.later(t*1e3,()=>{let t=this.accounts.find(t=>t.id===e.id);if(t?.status!==`cooldown`)return;let{cooldownUntil:n,...r}=t;this.replaceAccount({...r,status:`active`,updatedAt:new Date(this.clock()).toISOString()}),this.log(`info`,`router`,`${e.id} back in rotation`)})}buildTimeseries(e,t){let n=Math.max(1,t)*1e3,r=this.clock(),i=Math.floor(r/n)*n,a=i-(Math.ceil(e*q/n)-1)*n,o=[];for(let e=a;e<=i;e+=n)o.push({ts:e,tokens:0,requests:0,byAccount:{}});for(let e of this.records){if(e.ts<a||e.ts>r||e.status!==`success`)continue;let t=o[Math.floor((e.ts-a)/n)];if(!t)continue;let i=e.promptTokens+e.completionTokens;t.tokens+=i,t.requests+=1;let s=t.byAccount[e.accountId]??{tokens:0,requests:0};s.tokens+=i,s.requests+=1,t.byAccount[e.accountId]=s}return o}assertGoals(){if(!this.opts.runnerAvailable)throw new F(501,`goals_unavailable`,`Goal mode is not available; start the gateway inside a project (davecode init)`)}assertRunner(){if(!this.opts.runnerAvailable)throw new F(501,`runner_unavailable`,`The autonomous runner is not available in this gateway (started with --no-runner).`)}setRunner(e){this.runnerStatus=e,this.emit({type:`runner.status`,status:e})}runnerLog(e,t,n){let r=this.runnerStatus.taskId,i={type:`runner.log`,level:e,message:t,...r&&{taskId:r},ts:n??this.clock()};n===void 0?this.emit(i):this.buffer.push(i)}haltRunner(){this.runnerTimer&&clearTimeout(this.runnerTimer),this.runnerTimer=void 0,this.runnerPending&&this.runnerQueue.unshift(this.runnerPending),this.runnerPending=void 0}pumpRunner(){if(this.runnerTimer||!this.running)return;let e=this.runnerQueue.shift();e&&(this.runnerPending=e,this.runnerTimer=setTimeout(()=>{this.runnerTimer=void 0,this.runnerPending=void 0,e.run(),this.pumpRunner()},e.delay))}q(e,t){this.runnerQueue.push({delay:e,run:t})}commitTask(e){let t={...e,updatedAt:new Date(this.clock()).toISOString()};this.taskList=this.taskList.map(n=>n.id===e.id?t:n),this.emit({type:`task.updated`,task:t})}nextTask(){let e=new Set(this.taskList.filter(e=>e.status===`SUCCESS`).map(e=>e.id));return this.taskList.filter(t=>t.status===`PENDING`&&t.dependsOn.every(t=>e.has(t))).sort((e,t)=>(t.priority??0)-(e.priority??0))[0]}assertRunnable(e){let t=this.taskList.find(t=>t.id===e);if(!t)throw new F(404,`task_not_found`,`unknown task "${e}"`);if(t.status!==`PENDING`)throw new F(409,`task_not_runnable`,`task "${e}" is ${t.status}; only PENDING tasks can run`);let n=t.dependsOn.filter(e=>this.taskList.find(t=>t.id===e)?.status!==`SUCCESS`);if(n.length>0)throw new F(409,`task_blocked`,`task "${e}" is blocked by unfinished dependencies: ${n.map(e=>`"${e}"`).join(`, `)}`)}enqueueSelect(e,t){this.q(e,()=>{this.setRunner({state:`selecting`,startedAt:new Date(this.clock()).toISOString()}),this.runnerLog(`info`,`Scanning TASK_GRAPH.json for unblocked tasks…`)}),this.q(1100,()=>{let e=this.taskList.find(e=>e.id===t&&e.status===`PENDING`&&e.dependsOn.every(e=>this.taskList.find(t=>t.id===e)?.status===`SUCCESS`))??this.nextTask();if(!e){let e=this.taskList.filter(e=>e.status===`PENDING`).length;this.runnerLog(`warn`,e?`No unblocked tasks: ${e} pending task(s) wait on a FAILED dependency (p2-codex-cli).`:`Task graph complete. Nothing left to do.`),this.setRunner({state:`idle`});return}this.commitTask({...e,status:`IN_PROGRESS`,attempts:(e.attempts??0)+1}),this.setRunner({state:`preparing`,taskId:e.id,repairCycle:0,startedAt:new Date(this.clock()).toISOString()}),this.runnerLog(`info`,`Selected ${e.id} (priority ${e.priority??0}): ${e.title}`),this.enqueueTask(e.id,0)})}enqueueTask(e,t){t===0&&(this.q(900,()=>this.runnerLog(`info`,`$ git switch -c davecode/task-${e} main`)),this.q(1200,()=>this.runnerLog(`debug`,`Injected brain: STATE.md (2.3 KB), ARCHITECTURE.md (4.9 KB), 4 global preferences`))),this.enqueueImplement(e,t)}enqueueImplement(e,t){let n=Gn[e]??[`src/index.ts`];this.q(1e3,()=>{this.setRunner({...this.runnerStatus,state:`implementing`,taskId:e,repairCycle:t}),this.runnerLog(`info`,`→ davecode/auto · claude-sonnet-5-5 via acc_claude_pro (${(8+this.rng()*9).toFixed(1)}K in)`)}),n.forEach((e,t)=>{this.q(1400+this.rng()*1600,()=>{t===0&&this.runnerLog(`debug`,`read ${n[n.length-1]??e}`);let r=Math.round(20+this.rng()*160),i=Math.round(this.rng()*30);this.runnerLog(`info`,`edit ${e} (+${r} −${i})`)})}),this.enqueueValidate(e,t)}enqueueValidate(e,t){let n=t<(Kn[e]??0);if(this.q(1500,()=>{this.setRunner({...this.runnerStatus,state:`validating`}),this.runnerLog(`info`,`$ pnpm lint`)}),this.q(1100,()=>this.runnerLog(`info`,`✓ lint passed (${(.6+this.rng()).toFixed(1)}s)`)),this.q(400,()=>this.runnerLog(`info`,`$ pnpm typecheck`)),this.q(2200,()=>this.runnerLog(`info`,`✓ typecheck passed (${(4+this.rng()*3).toFixed(1)}s)`)),this.q(400,()=>this.runnerLog(`info`,`$ pnpm test`)),n){if(this.q(2600,()=>{this.runnerLog(`error`,`✗ 2 failed, 211 passed (8.1s)`),this.runnerLog(`error`,` FAIL ${Gn[e]?.at(-1)??`test`} > honours Retry-After given as an HTTP-date`)}),t+1>=3){this.q(900,()=>{let t=this.taskList.find(t=>t.id===e);t&&this.commitTask({...t,status:`FAILED`,notes:`Failed after 3 repair cycles.`}),this.runnerLog(`error`,`${e} FAILED after 3 repair cycles; branch kept for review.`)}),this.enqueueSelect(2e3);return}this.q(900,()=>{this.setRunner({...this.runnerStatus,state:`repairing`,repairCycle:t+1}),this.runnerLog(`warn`,`Repair cycle ${t+1}/3: feeding 2 failing assertions and stderr back to the model`)}),this.q(1600,()=>this.runnerLog(`info`,`→ davecode/reasoning · claude-opus-5-5 via acc_anthropic_work`)),this.enqueueImplement(e,t+1);return}this.q(2800,()=>this.runnerLog(`info`,`✓ ${200+Math.round(this.rng()*40)} tests passed (8.4s)`)),this.q(900,()=>{this.setRunner({...this.runnerStatus,state:`merging`}),this.runnerLog(`info`,`$ git merge --no-ff davecode/task-${e} → main`)}),this.q(1400,()=>{let t=this.taskList.find(t=>t.id===e);t&&this.commitTask({...t,status:`SUCCESS`,notes:void 0}),this.runnerLog(`info`,`✓ ${e} merged. STATE.md updated.`)}),this.enqueueSelect(2500)}resumeInitialTask(){this.q(1500,()=>this.runnerLog(`info`,`edit packages/core/src/router/failover.ts (+34 −9)`)),this.q(2200,()=>this.runnerLog(`info`,`edit packages/core/src/router/select.test.ts (+12 −2)`)),this.enqueueValidate(`p2-router`,1)}seedRunnerHistory(){let e=e=>this.t0-e*q;for(let[t,n,r]of[[4.3,`info`,`Scanning TASK_GRAPH.json for unblocked tasks…`],[4.25,`info`,`Selected p2-router (priority 80): Router with balancing, backpressure, cooldowns and hot failover`],[4.2,`info`,`$ git switch -c davecode/task-p2-router main`],[4.15,`debug`,`Injected brain: STATE.md (2.3 KB), ARCHITECTURE.md (4.9 KB), 4 global preferences`],[4.1,`info`,`→ davecode/auto · claude-sonnet-5-5 via acc_claude_pro (14.2K in)`],[3.9,`info`,`edit packages/core/src/router/select.ts (+142 −8)`],[3.7,`info`,`edit packages/core/src/router/failover.ts (+96 −0)`],[3.5,`info`,`edit packages/core/src/router/circuit-breaker.ts (+61 −0)`],[3.3,`info`,`edit packages/core/src/router/select.test.ts (+188 −0)`],[3.1,`info`,`$ pnpm lint`],[3.05,`info`,`✓ lint passed (1.1s)`],[3,`info`,`$ pnpm typecheck`],[2.9,`info`,`✓ typecheck passed (5.8s)`],[2.85,`info`,`$ pnpm test`],[2.7,`error`,`✗ 2 failed, 209 passed (8.3s)`],[2.69,`error`,` FAIL packages/core/src/router/select.test.ts > honours Retry-After given as an HTTP-date`],[2.6,`warn`,`Repair cycle 1/3: feeding 2 failing assertions and stderr back to the model`],[2.5,`info`,`→ davecode/reasoning · claude-opus-5-5 via acc_anthropic_work`],[2,`info`,`edit packages/core/src/router/failover.ts (+21 −6)`]])this.buffer.push({type:`runner.log`,level:n,message:r,taskId:`p2-router`,ts:e(t)});this.buffer.push({type:`runner.status`,status:{...this.runnerStatus},ts:e(2.4)}),this.buffer.push({type:`log`,level:`info`,scope:`gateway`,message:`Listening on http://127.0.0.1:4040 (dashboard at /)`,ts:e(5.5)}),this.buffer.sort((e,t)=>e.ts-t.ts)}emit(e){let t={...e,ts:e.ts??this.clock()};this.buffer.push(t),this.buffer.length>800&&this.buffer.splice(0,this.buffer.length-800);for(let e of this.subscribers)e.onEvent(t)}log(e,t,n){this.emit({type:`log`,level:e,scope:t,message:n})}nextId(e){this.seq+=1;let t=()=>Math.floor(this.rng()*16777215).toString(16).padStart(6,`0`);return`${e}_${t()}${t()}${this.seq.toString(36)}`}modelsFor(e){let t=e.config.models;return Array.isArray(t)?t.filter(e=>typeof e==`string`):e.provider===`claude-cli`?[`claude-sonnet-5-5`,`claude-opus-5-5`]:e.provider===`gemini-web`?[`gemini-3-pro`]:[]}findAccount(e){let t=this.accounts.find(t=>t.id===e);if(!t)throw new F(404,`not_found`,`Account ${e} not found`);return t}replaceAccount(e){this.accounts=this.accounts.map(t=>t.id===e.id?e:t),this.emit({type:`account.updated`,account:e})}async respond(e){return this.opts.latency&&await new Promise(e=>setTimeout(e,90+Math.random()*220)),structuredClone(e())}},Jn;function Yn(){if(!Jn){let e=typeof window>`u`?new URLSearchParams:new URLSearchParams(window.location.search||window.location.hash.split(`?`)[1]);Jn=new qn({runnerAvailable:e.get(`runner`)!==`off`,geminiWeb:e.get(`geminiWeb`)===`1`})}return Jn}var Xn=(0,a.createContext)(null),Zn=15e3;function Qn(e){return _t()?{mode:`mock`,reason:`forced`}:e===`mock`?{mode:`mock`,reason:`setting`}:e===`live`?{mode:`live`,reason:null}:{mode:`probing`,reason:null}}function $n({children:e}){let t=gt(),n=c(),[r,i]=(0,a.useState)(()=>Qn(t.dataMode)),[s,l]=(0,a.useState)(),[u,d]=(0,a.useState)(0),[f,p]=(0,a.useState)({state:`connecting`,attempt:0}),[m,h]=(0,a.useState)(!1);(0,a.useEffect)(()=>{i(Qn(t.dataMode))},[t.dataMode]);let g=(0,a.useMemo)(()=>Et({baseUrl:t.gatewayUrl,token:t.token}),[t.gatewayUrl,t.token]);(0,a.useEffect)(()=>{if(_t()||t.dataMode!==`auto`)return;let e=!1,n,r=async()=>{try{if(await g.health(),e)return;h(!1),l(void 0),i({mode:`live`,reason:null})}catch(t){if(e)return;if(I(t)&&t.reachable){h(t.status===401),i({mode:`live`,reason:null});return}l(t instanceof Error?t.message:String(t)),i({mode:`mock`,reason:`unreachable`}),n=window.setTimeout(r,Zn)}};return r(),()=>{e=!0,window.clearTimeout(n)}},[g,t.dataMode,u]);let _=r.mode===`mock`?Yn():g,v=r.mode===`mock`?`mock`:`live:${t.gatewayUrl}:${t.token?`auth`:`anon`}`,y=(0,a.useMemo)(()=>new Ht,[v]);(0,a.useEffect)(()=>{if(r.mode===`probing`)return;p({state:r.mode===`mock`?`mock`:`connecting`,attempt:0});let e=_.subscribe({onEvent:e=>{y.ingest(e)&&nr(n,v,e)},onStatus:e=>p(e)});return _.requests(200).then(e=>y.seedRecords(e)).catch(()=>{}),_.logs(500).then(e=>{for(let t of e)y.ingest(t)}).catch(()=>{}),()=>{e(),y.dispose()}},[_,y,n,v,r.mode]);let b=(0,a.useMemo)(()=>({client:_,sourceKey:v,live:y,connection:{mode:r.mode,reason:r.reason,stream:f,probeError:s,unauthorized:m},retry:()=>{d(e=>e+1),n.invalidateQueries()}}),[_,v,y,r,f,s,m,n]);return(0,o.jsx)(Xn.Provider,{value:b,children:e})}function Z(){let e=(0,a.useContext)(Xn);if(!e)throw Error(`useData must be used inside <DataProvider>`);return e}function er(){let{live:e}=Z();return(0,a.useSyncExternalStore)(e.subscribe,e.getState,e.getState)}function Q(e,...t){return[`dc`,e,...t]}function tr(e,t){if(!e)return[t];let n=e.findIndex(e=>e.id===t.id);if(n===-1)return[t,...e];let r=e.slice();return r[n]=t,r}function nr(e,t,n){switch(n.type){case`account.updated`:e.setQueryData(Q(t,`accounts`),e=>{if(!e)return e;let t=e.findIndex(e=>e.id===n.account.id);if(t===-1)return[...e,n.account];let r=e.slice();return r[t]=n.account,r});break;case`account.removed`:e.setQueryData(Q(t,`accounts`),e=>e?.filter(e=>e.id!==n.accountId)),e.setQueryData(Q(t,`usage`),e=>e?.filter(e=>e.accountId!==n.accountId));break;case`quota.updated`:e.setQueryData(Q(t,`usage`),e=>{if(!e)return e;let t=e.findIndex(e=>e.accountId===n.usage.accountId);if(t===-1)return[...e,n.usage];let r=e.slice();return r[t]=n.usage,r});break;case`task.updated`:e.setQueryData(Q(t,`tasks`),e=>{if(!e)return e;let t=e.graph.tasks.slice(),r=t.findIndex(e=>e.id===n.task.id);return r===-1?t.push(n.task):t[r]=n.task,{...e,graph:{...e.graph,tasks:t}}});break;case`task.removed`:e.setQueryData(Q(t,`tasks`),e=>e&&{...e,graph:{...e.graph,tasks:e.graph.tasks.filter(e=>e.id!==n.taskId)}});break;case`runner.status`:e.setQueryData(Q(t,`runner`),n.status);break;case`goal.updated`:e.setQueryData(Q(t,`goals`),e=>e&&tr(e,n.goal))}}function rr(){let{client:e,sourceKey:t}=Z();return j({queryKey:Q(t,`health`),queryFn:()=>e.health(),refetchInterval:3e4})}function ir(){let{client:e,sourceKey:t}=Z();return j({queryKey:Q(t,`accounts`),queryFn:()=>e.listAccounts(),refetchInterval:6e4})}function ar(){let{client:e,sourceKey:t}=Z();return j({queryKey:Q(t,`usage`),queryFn:()=>e.usage(),refetchInterval:3e4})}function or(){let{client:e,sourceKey:t}=Z();return j({queryKey:Q(t,`budget`),queryFn:()=>e.budget(),refetchInterval:3e4})}function sr(e,t=!1){let{client:n,sourceKey:r}=Z();return j({queryKey:Q(r,`connection`,e),queryFn:()=>n.connection(e),refetchInterval:t?3e3:!1,staleTime:15e3})}function cr(){let{client:e,sourceKey:t}=Z(),n=c();return M({mutationFn:t=>e.connect(t),onSuccess:(e,r)=>n.setQueryData(Q(t,`connection`,r),e.connection)})}function lr(e=60,t=60){let{client:n,sourceKey:r}=Z();return j({queryKey:Q(r,`timeseries`,e,t),queryFn:()=>n.timeseries(e,t),refetchInterval:6e4})}function ur(){let{client:e,sourceKey:t}=Z();return j({queryKey:Q(t,`routes`),queryFn:()=>e.routes()})}function dr(){let{client:e,sourceKey:t}=Z();return j({queryKey:Q(t,`models`),queryFn:()=>e.models()})}function fr(){let{client:e,sourceKey:t}=Z();return j({queryKey:Q(t,`tasks`),queryFn:()=>e.tasks(),refetchInterval:6e4})}function pr(){let{client:e,sourceKey:t}=Z();return j({queryKey:Q(t,`brain`),queryFn:()=>e.brain(),refetchInterval:6e4})}function mr(){let{client:e,sourceKey:t}=Z();return j({queryKey:Q(t,`runner`),queryFn:()=>e.runner(),refetchInterval:15e3,retry:(e,t)=>t.status!==501&&e<2})}function hr(){let{sourceKey:e}=Z(),t=c(),n=Q(e,`accounts`);return{upsert:e=>t.setQueryData(n,t=>{if(!t)return[e];let n=t.findIndex(t=>t.id===e.id);if(n===-1)return[...t,e];let r=t.slice();return r[n]=e,r}),remove:e=>t.setQueryData(n,t=>t?.filter(t=>t.id!==e)),invalidate:()=>{t.invalidateQueries({queryKey:n}),t.invalidateQueries({queryKey:Q(e,`usage`)}),t.invalidateQueries({queryKey:Q(e,`budget`)})}}}function gr(){let{client:e}=Z(),t=hr();return M({mutationFn:t=>e.createAccount(t),onSuccess:e=>t.upsert(e),onSettled:()=>t.invalidate()})}function _r(){let{client:e,sourceKey:t}=Z(),n=c(),r=hr();return M({mutationFn:({id:t,patch:n})=>e.updateAccount(t,n),onMutate:async({id:e,patch:r})=>{let i=Q(t,`accounts`);await n.cancelQueries({queryKey:i});let a=n.getQueryData(i);return a&&r.enabled!==void 0&&n.setQueryData(i,a.map(t=>t.id===e?{...t,enabled:r.enabled,status:r.enabled?`active`:`disabled`}:t)),{prev:a}},onError:(e,r,i)=>{i?.prev&&n.setQueryData(Q(t,`accounts`),i.prev)},onSuccess:e=>r.upsert(e),onSettled:()=>n.invalidateQueries({queryKey:Q(t,`budget`)})})}function vr(){let{client:e}=Z(),t=hr();return M({mutationFn:t=>e.deleteAccount(t),onSuccess:(e,n)=>t.remove(n),onSettled:()=>t.invalidate()})}function yr(){let{sourceKey:e}=Z(),t=c(),n=Q(e,`tasks`);return{upsert:e=>t.setQueryData(n,t=>{if(!t)return t;let n=t.graph.tasks.slice(),r=n.findIndex(t=>t.id===e.id);return r===-1?n.push(e):n[r]=e,{...t,graph:{...t.graph,tasks:n}}}),remove:e=>t.setQueryData(n,t=>t&&{...t,graph:{...t.graph,tasks:t.graph.tasks.filter(t=>t.id!==e)}}),invalidate:()=>{t.invalidateQueries({queryKey:n}),t.invalidateQueries({queryKey:Q(e,`brain`)})}}}function br(){let{client:e}=Z(),t=yr();return M({mutationFn:t=>e.createTask(t),onSuccess:e=>t.upsert(e),onSettled:()=>t.invalidate()})}function xr(){let{client:e}=Z(),t=yr();return M({mutationFn:({id:t,patch:n})=>e.updateTask(t,n),onSuccess:e=>t.upsert(e),onSettled:()=>t.invalidate()})}function Sr(){let{client:e}=Z(),t=yr();return M({mutationFn:t=>e.deleteTask(t),onSuccess:(e,n)=>t.remove(n),onSettled:()=>t.invalidate()})}function Cr(){let{client:e,sourceKey:t}=Z(),n=c();return M({mutationFn:t=>e.updateRoutes(t),onSuccess:({defaultRoute:e,routes:r})=>{n.setQueryData(Q(t,`routes`),{defaultRoute:e,routes:r}),n.invalidateQueries({queryKey:Q(t,`models`)})}})}function wr(){let{client:e,sourceKey:t}=Z(),n=c();return M({mutationFn:t=>e.runnerAction(t),onSuccess:e=>n.setQueryData(Q(t,`runner`),e)})}function Tr(){let{client:e,sourceKey:t}=Z();return j({queryKey:Q(t,`goals`),queryFn:()=>e.goals(),refetchInterval:6e4,retry:(e,t)=>t.status!==501&&e<2})}function Er(){let{sourceKey:e}=Z(),t=c();return n=>t.setQueryData(Q(e,`goals`),e=>tr(e,n))}function Dr(){let{client:e}=Z(),t=Er();return M({mutationFn:t=>e.startGoal(t),onSuccess:e=>t(e)})}function Or(){let{client:e}=Z(),t=Er();return M({mutationFn:t=>e.executeGoal(t),onSuccess:e=>t(e)})}function kr(e,t){let{client:n,sourceKey:r}=Z();return j({queryKey:Q(r,`goal-artifact`,e??``,t??``),queryFn:()=>n.goalArtifact(e,t),enabled:!!(e&&t),staleTime:6e4})}function Ar(){let{client:e}=Z(),t=Er();return M({mutationFn:t=>e.cancelGoal(t),onSuccess:e=>t(e)})}function jr(){let{client:e,sourceKey:t}=Z(),n=c();return M({mutationFn:t=>e.runnerAction(`start`,{taskId:t}),onSuccess:e=>n.setQueryData(Q(t,`runner`),e)})}var Mr=new Intl.NumberFormat(`en`,{notation:`compact`,maximumFractionDigits:1}),Nr=new Intl.NumberFormat(`en`);function Pr(e){return Number.isFinite(e)?Mr.format(e):`—`}function Fr(e){return Number.isFinite(e)?Nr.format(Math.round(e)):`—`}function Ir(e,t=0){return Number.isFinite(e)?`${(e*100).toFixed(t)}%`:`—`}function Lr(e){return Number.isFinite(e)?e<1e3?`${Math.round(e)} ms`:`${(e/1e3).toFixed(e<1e4?2:1)} s`:`—`}function Rr(e){let t=Math.max(0,Math.floor(e));if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m ${String(t%60).padStart(2,`0`)}s`;let r=Math.floor(n/60);return r<24?`${r}h ${String(n%60).padStart(2,`0`)}m`:`${Math.floor(r/24)}d ${r%24}h`}function zr(e){let t=Math.max(0,Math.ceil(e));return`${Math.floor(t/60)}:${String(t%60).padStart(2,`0`)}`}function Br(e,t=!1){let n=new Date(e),r=`${$(n.getHours())}:${$(n.getMinutes())}:${$(n.getSeconds())}`;return t?`${r}.${String(n.getMilliseconds()).padStart(3,`0`)}`:r}function Vr(e){let t=new Date(e);return`${$(t.getHours())}:${$(t.getMinutes())}`}function Hr(e,t=Date.now()){let n=Math.round((t-e)/1e3);return n<5?`just now`:n<60?`${n}s ago`:n<3600?`${Math.floor(n/60)}m ago`:n<86400?`${Math.floor(n/3600)}h ago`:new Date(e).toLocaleDateString()}function $(e){return String(e).padStart(2,`0`)}function Ur(e,t=8){return(e.includes(`_`)?e.slice(e.indexOf(`_`)+1):e).slice(0,t)}var Wr={neutral:`bg-hover text-fg-2 border-line-strong`,accent:`bg-accent-soft text-accent-text border-accent/25`,ok:`bg-ok-soft text-ok border-ok/25`,warn:`bg-warn-soft text-warn border-warn/25`,err:`bg-err-soft text-err border-err/25`,info:`bg-info-soft text-info border-info/25`},Gr={neutral:`bg-muted`,accent:`bg-accent`,ok:`bg-ok`,warn:`bg-warn`,err:`bg-err`,info:`bg-info`};function Kr({tone:t=`neutral`,dot:n,pulse:r,mono:i,className:a,children:s}){return(0,o.jsxs)(`span`,{className:e(`inline-flex h-5 shrink-0 items-center gap-1.5 rounded border px-1.5 text-2xs font-medium whitespace-nowrap`,i&&`font-mono`,Wr[t],a),children:[n&&(0,o.jsx)(qr,{tone:t,pulse:r}),s]})}function qr({tone:t=`neutral`,pulse:n,className:r}){return(0,o.jsx)(`span`,{"aria-hidden":!0,className:e(`inline-block size-1.5 shrink-0 rounded-full`,Gr[t],n&&`animate-pulse-dot`,n&&Jr[t],r)})}var Jr={neutral:`text-muted/60`,accent:`text-accent/60`,ok:`text-ok/60`,warn:`text-warn/60`,err:`text-err/60`,info:`text-info/60`};export{yn as $,mr as A,b as At,Z as B,Or as C,O as Ct,dr as D,h as Dt,rr as E,E as Et,_r as F,ce as Ft,Pn as G,zn as H,Cr as I,l as It,En as J,Hn as K,xr as L,c as Lt,Dr as M,m as Mt,fr as N,C as Nt,ur as O,S as Ot,lr as P,v as Pt,Sn as Q,ar as R,Sr as S,we as St,Tr as T,me as Tt,Mn as U,er as V,Fn as W,Dn as X,An as Y,Rn as Z,cr as _,vt as _t,zr as a,xn as at,br as b,j as bt,Fr as c,Ft as ct,Hr as d,Et as dt,gn as et,Ur as f,Dt as ft,Ar as g,_t as gt,or as h,pt as ht,Pr as i,vn as it,wr as j,y as jt,jr as k,x as kt,Lr as l,Pt as lt,pr as m,yt as mt,qr as n,bn as nt,Rr as o,Zt as ot,ir as p,I as pt,Vn as q,Br as r,_n as rt,Vr as s,Qt as st,Kr as t,hn as tt,Ir as u,It as ut,sr as v,mt as vt,kr as w,D as wt,vr as x,Ne as xt,gr as y,gt as yt,$n as z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e,o as t,s as n}from"./Panel-B9tSgX6l.js";import{E as r,R as i}from"./index-BMWr9EKo.js";var a={name:`octagon-alert`,size:24,node:[[`path`,{d:`M12 16h.01`,key:`1drbdi`}],[`path`,{d:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M15.312 2a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586l-4.688-4.688A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2z`,key:`1fd625`}]],aliases:[`alert-octagon`]};a.node;var o=t(a),s=n(),c={info:{box:`border-info/25 bg-info-soft [&_svg]:text-info`,icon:i},warn:{box:`border-warn/30 bg-warn-soft [&_svg]:text-warn`,icon:r},err:{box:`border-err/30 bg-err-soft [&_svg]:text-err`,icon:o}};function l({tone:t=`info`,title:n,children:r,action:i,className:a}){let{box:o,icon:l}=c[t];return(0,s.jsxs)(`div`,{role:t===`info`?`note`:`alert`,className:e(`flex gap-2.5 rounded-md border px-3 py-2.5 text-[12px] leading-5`,o,a),children:[(0,s.jsx)(l,{"aria-hidden":!0,className:`mt-0.5 size-3.5 shrink-0`,strokeWidth:1.75}),(0,s.jsxs)(`div`,{className:`min-w-0 flex-1 text-fg-2`,children:[n&&(0,s.jsx)(`p`,{className:`font-medium text-fg`,children:n}),r]}),i&&(0,s.jsx)(`div`,{className:`shrink-0 self-center`,children:i})]})}export{l as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e,c as t,s as n,u as r}from"./Panel-B9tSgX6l.js";var i=r(t(),1),a=n(),o=`h-8 w-full min-w-0 rounded-md border border-line-strong bg-bg px-2.5 text-[13px] text-fg placeholder:text-faint transition-[border-color,box-shadow] duration-150 ease-snappy hover:border-faint/70 focus-visible:border-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/25 disabled:opacity-50 aria-invalid:border-err`,s=(0,i.forwardRef)(function({className:t,...n},r){return(0,a.jsx)(`input`,{ref:r,className:e(o,t),...n})}),c=(0,i.forwardRef)(function({className:t,rows:n=3,...r},i){return(0,a.jsx)(`textarea`,{ref:i,rows:n,className:e(o,`h-auto min-h-16 resize-y py-1.5 leading-5`,t),...r})}),l=(0,i.forwardRef)(function({className:t,children:n,...r},i){return(0,a.jsx)(`select`,{ref:i,className:e(o,`cursor-pointer pr-7`,t),...r,children:n})});function u({label:t,hint:n,error:r,required:o,className:s,children:c}){let l=(0,i.useId)(),u=`${l}-hint`,d=`${l}-error`,f=[n?u:null,r?d:null].filter(Boolean).join(` `);return(0,a.jsxs)(`div`,{className:e(`flex flex-col gap-1.5`,s),children:[(0,a.jsxs)(`label`,{htmlFor:l,className:`text-[12px] font-medium text-fg-2`,children:[t,o&&(0,a.jsx)(`span`,{"aria-hidden":!0,className:`ml-0.5 text-accent-text`,children:`*`})]}),c({id:l,describedBy:f||void 0,invalid:!!r}),n&&!r&&(0,a.jsx)(`p`,{id:u,className:`text-[12px] leading-4 text-muted`,children:n}),r&&(0,a.jsx)(`p`,{id:d,role:`alert`,className:`text-[12px] leading-4 text-err`,children:r})]})}export{c as i,s as n,l as r,u as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e,c as t,i as n,n as r,o as i,r as a,s as o,t as s,u as c}from"./Panel-B9tSgX6l.js";import{C as l,M as u,T as d,V as f,d as p,ft as m,g as h,i as g,pt as _,r as v,t as y,w as b}from"./Badge-B-qzNRrZ.js";import{n as x,t as S}from"./Switch-CUpOJjUT.js";import{n as C,t as w}from"./Markdown-ClRsddnB.js";import{t as T}from"./Callout-B9g_wPDi.js";import{D as E,P as D,h as O,i as k,k as A,l as j,o as M,s as N,u as P,y as F}from"./index-BMWr9EKo.js";import{i as I,n as L,t as R}from"./Field-BfabPEcY.js";var z={name:`chevron-down`,size:24,node:[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]};z.node;var B=i(z),V={name:`shield-check`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]};V.node;var H=i(V),U=c(t(),1),W=o(),G={planning:`info`,running:`info`,reviewing:`info`,planned:`accent`,succeeded:`ok`,failed:`err`,cancelled:`neutral`,budget_exhausted:`warn`},K={planning:`planning`,running:`running`,reviewing:`reviewing`,planned:`planned (dry run)`,succeeded:`succeeded`,failed:`failed`,cancelled:`cancelled`,budget_exhausted:`out of budget`},q=new Set([`planning`,`running`,`reviewing`]);function J(e){return q.has(e.status)}function Y(e){let t=Number(e);return e.trim()&&Number.isInteger(t)&&t>0?t:void 0}function X(){let t=d(),[n,i]=(0,U.useState)(),o=_(t.error)&&t.error.status===501,c=t.data??[],l=c.find(e=>e.id===n)??c[0],u=c.find(J);return(0,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,W.jsx)(s,{title:`Goals`,description:`Give the agent team an objective: a planner splits it into tasks, role agents execute them, a reviewer re-plans until it is done or the budget runs out.`}),o?(0,W.jsxs)(T,{tone:`warn`,title:`Goal mode unavailable`,children:[(0,W.jsxs)(`p`,{children:[`This gateway answered `,(0,W.jsx)(`code`,{className:`font-mono text-fg`,children:`501 goals_unavailable`}),`: it was started outside a project. Start it inside a repository with a project brain, or run a goal from the terminal:`]}),(0,W.jsx)(j,{command:`davecode goal "<objective>"`,className:`mt-2 max-w-sm`})]}):(0,W.jsx)(Z,{busy:u?.id,onStarted:e=>i(e.id)}),t.isError&&!o&&(0,W.jsx)(T,{tone:`err`,title:`Could not load goals`,children:m(t.error)}),!o&&(0,W.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 xl:grid-cols-[320px_minmax(0,1fr)]`,children:[(0,W.jsxs)(r,{"aria-labelledby":`goal-list-title`,className:`xl:self-start`,children:[(0,W.jsx)(a,{id:`goal-list-title`,title:`History`,meta:c.length?`${c.length} goal${c.length===1?``:`s`}`:void 0}),t.isPending?(0,W.jsx)(M,{rows:4,className:`p-3`}):c.length===0?(0,W.jsx)(k,{icon:E,title:`No goals yet`,description:`Describe an objective above, or try a dry run to see the plan first.`}):(0,W.jsx)(`ul`,{className:`flex flex-col p-1.5`,"aria-label":`Goals`,children:c.map(t=>{let n=t.tasks.filter(e=>e.status===`SUCCESS`).length,r=t.id===l?.id;return(0,W.jsx)(`li`,{children:(0,W.jsxs)(`button`,{type:`button`,"aria-current":r?`true`:void 0,onClick:()=>i(t.id),className:e(`flex w-full flex-col gap-1 rounded-md px-2.5 py-2 text-left transition-colors duration-150`,r?`bg-hover`:`hover:bg-hover/60`),children:[(0,W.jsx)(`span`,{className:`line-clamp-2 text-[13px] leading-5 text-fg`,children:t.objective}),(0,W.jsxs)(`span`,{className:`flex items-center gap-2 text-2xs text-muted`,children:[(0,W.jsx)(y,{tone:G[t.status],dot:!0,pulse:J(t),children:K[t.status]}),(0,W.jsxs)(`span`,{className:`tnum`,children:[n,`/`,t.tasks.length,` tasks`]}),(0,W.jsx)(`span`,{className:`ml-auto`,children:p(Date.parse(t.createdAt))})]})]})},t.id)})})]}),l?(0,W.jsx)($,{goal:l}):null]})]})}function Z({busy:e,onStarted:t}){let i=u(),[o,s]=(0,U.useState)(``),[c,l]=(0,U.useState)(``),[d,f]=(0,U.useState)(``),[p,h]=(0,U.useState)(``),[g,v]=(0,U.useState)(!1),[y,b]=(0,U.useState)(null);return(0,W.jsxs)(r,{"aria-labelledby":`new-goal-title`,children:[(0,W.jsx)(a,{id:`new-goal-title`,title:`New goal`,meta:(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,W.jsx)(H,{"aria-hidden":!0,className:`size-3.5 text-ok`,strokeWidth:1.75}),`Never emails, posts, pays or signs up: those become drafts`]})}),(0,W.jsxs)(`form`,{onSubmit:e=>{if(e.preventDefault(),!o.trim()){b(`Describe what the team should achieve.`);return}b(null);let n={objective:o.trim()},r=Y(c),a=Y(d),l=Y(p);r&&(n.maxRounds=r),a&&(n.maxTasks=a),l&&(n.maxTokens=l),g&&(n.dryRun=!0),i.mutate(n,{onSuccess:e=>{F({tone:`info`,title:g?`Planning (dry run)`:`Goal started`,description:e.objective}),s(``),t(e)},onError:e=>F({tone:`err`,title:`Could not start the goal`,description:_(e)&&e.code===`busy`?`${e.message}. Goals and the runner take turns on the working tree.`:m(e)})})},className:`flex flex-col gap-3 p-4`,children:[(0,W.jsx)(R,{label:`Objective`,required:!0,error:y,children:({id:e,describedBy:t,invalid:n})=>(0,W.jsx)(I,{id:e,"aria-describedby":t,"aria-invalid":n,rows:2,maxLength:4e3,placeholder:`e.g. Write positioning and landing-page copy for this project, then add a /pricing page`,value:o,onChange:e=>s(e.target.value)})}),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-end gap-3`,children:[(0,W.jsx)(R,{label:`Max rounds`,className:`w-28`,children:({id:e})=>(0,W.jsx)(L,{id:e,inputMode:`numeric`,placeholder:`4`,value:c,onChange:e=>l(e.target.value)})}),(0,W.jsx)(R,{label:`Max tasks`,className:`w-28`,children:({id:e})=>(0,W.jsx)(L,{id:e,inputMode:`numeric`,placeholder:`12`,value:d,onChange:e=>f(e.target.value)})}),(0,W.jsx)(R,{label:`Token budget`,className:`w-36`,children:({id:e})=>(0,W.jsx)(L,{id:e,inputMode:`numeric`,placeholder:`1000000`,value:p,onChange:e=>h(e.target.value)})}),(0,W.jsxs)(`span`,{className:`flex h-8 items-center gap-2 text-[12px] text-fg-2`,children:[(0,W.jsx)(S,{checked:g,onChange:v,label:`Dry run`}),`Dry run (plan only)`]}),(0,W.jsx)(n,{type:`submit`,variant:`primary`,icon:D,className:`ml-auto`,loading:i.isPending,disabled:i.isPending||!!e&&!g,title:e&&!g?`Goal ${e} is still running`:void 0,children:g?`Plan`:`Start goal`})]})]})]})}function Q({label:t,value:n,max:r,format:i=String}){let a=r>0?Math.min(100,n/r*100):0;return(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1.5`,children:[(0,W.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2 text-[12px]`,children:[(0,W.jsx)(`span`,{className:`text-muted`,children:t}),(0,W.jsxs)(`span`,{className:`tnum font-mono text-fg`,children:[i(n),(0,W.jsxs)(`span`,{className:`text-muted`,children:[` / `,i(r)]})]})]}),(0,W.jsx)(`div`,{className:`h-1.5 overflow-hidden rounded-full bg-track`,"aria-hidden":!0,children:(0,W.jsx)(`div`,{className:e(`h-full rounded-full transition-[width] duration-500 ease-snappy`,a>=90?`bg-warn`:`bg-accent`),style:{width:`${a}%`}})})]})}function $({goal:t}){let i=h(),o=l(),s=f(),[c,u]=(0,U.useState)(!1),[d,p]=(0,U.useState)(),_=J(t),b=t.tasks.filter(e=>e.status===`SUCCESS`).length,S=s.events.filter(e=>e.type===`goal.log`&&e.goalId===t.id),T=()=>i.mutate(t.id,{onSuccess:e=>F({tone:`info`,title:`Goal ${e.status}`,description:e.objective}),onError:e=>F({tone:`err`,title:`Could not cancel`,description:m(e)})});return(0,W.jsxs)(r,{"aria-labelledby":`goal-detail-title`,className:`min-w-0`,children:[(0,W.jsx)(a,{id:`goal-detail-title`,title:(0,W.jsx)(`span`,{className:`font-mono text-2xs text-muted`,children:t.id}),meta:(0,W.jsx)(y,{tone:G[t.status],dot:!0,pulse:_,children:K[t.status]}),actions:(0,W.jsxs)(W.Fragment,{children:[t.status===`planned`&&(0,W.jsx)(n,{size:`sm`,variant:`primary`,icon:D,loading:o.isPending,onClick:()=>o.mutate(t.id,{onSuccess:e=>F({tone:`info`,title:`Executing planned goal`,description:e.objective}),onError:e=>F({tone:`err`,title:`Could not execute plan`,description:m(e)})}),children:`Execute plan`}),_&&(0,W.jsx)(n,{size:`sm`,variant:`danger`,icon:A,loading:i.isPending,onClick:()=>u(!0),children:`Cancel`})]})}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-4 p-4`,children:[(0,W.jsx)(`p`,{className:`text-[15px] leading-6 font-medium text-fg`,children:t.objective}),(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-x-6 gap-y-3`,children:[(0,W.jsx)(Q,{label:`Rounds`,value:t.round,max:t.limits.maxRounds}),(0,W.jsx)(Q,{label:`Tasks done`,value:b,max:Math.max(t.tasks.length,1)}),(0,W.jsx)(Q,{label:`Tokens`,value:t.limits.tokensUsed,max:t.limits.maxTokens,format:g})]}),t.lastError&&(0,W.jsx)(`p`,{className:`rounded-md border border-err/30 bg-err-soft p-2 font-mono text-2xs text-err`,children:t.lastError}),(0,W.jsx)(`section`,{"aria-label":`Tasks`,className:`flex flex-col`,children:t.tasks.length===0?(0,W.jsx)(`p`,{className:`text-[12px] text-muted`,children:_?`The planner is drafting the task graph…`:`No tasks were planned.`}):(0,W.jsx)(`ol`,{className:`flex flex-col divide-y divide-line rounded-md border border-line`,children:t.tasks.map(n=>(0,W.jsxs)(`li`,{className:e(`flex flex-col gap-1.5 px-3 py-2.5`,n.id===t.activeTaskId&&`bg-accent-soft/40`),children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,W.jsx)(O,{status:n.status}),(0,W.jsx)(`span`,{className:`font-mono text-2xs text-muted`,children:n.id}),(0,W.jsx)(`span`,{className:`min-w-0 flex-1 text-[13px] text-fg`,children:n.title}),(0,W.jsx)(y,{mono:!0,children:n.role}),(0,W.jsx)(y,{tone:n.kind===`code`?`accent`:`neutral`,mono:!0,children:n.kind}),n.round>1&&(0,W.jsxs)(y,{mono:!0,children:[`round `,n.round]})]}),n.dependsOn.length>0&&(0,W.jsxs)(`p`,{className:`text-2xs text-muted`,children:[`after `,n.dependsOn.join(`, `)]}),n.artifact&&(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5 font-mono text-2xs text-fg-2`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>p(e=>e===n.id?void 0:n.id),"aria-expanded":d===n.id,className:`inline-flex items-center gap-1 rounded px-1 py-0.5 text-fg-2 transition-colors hover:bg-hover hover:text-fg`,children:[d===n.id?(0,W.jsx)(B,{"aria-hidden":!0,className:`size-3.5 text-muted`}):(0,W.jsx)(x,{"aria-hidden":!0,className:`size-3.5 text-muted`}),(0,W.jsx)(C,{"aria-hidden":!0,className:`size-3.5 text-muted`,strokeWidth:1.75}),(0,W.jsx)(`span`,{className:`truncate`,children:n.artifact})]}),(0,W.jsx)(P,{value:n.artifact,label:`Copy path`})]}),d===n.id&&(0,W.jsx)(ee,{goalId:t.id,taskId:n.id})]}),n.status===`FAILED`&&n.notes&&(0,W.jsx)(`p`,{className:`line-clamp-3 font-mono text-2xs text-err`,children:n.notes})]},n.id))})}),t.summary&&(0,W.jsx)(`section`,{"aria-label":`Summary`,className:`rounded-md border border-line bg-raised/40 p-3`,children:(0,W.jsx)(w,{source:t.summary,className:`text-[13px]`})}),(0,W.jsx)(`section`,{"aria-label":`Goal log`,className:`term max-h-64 overflow-auto rounded-md border border-line bg-term py-2 font-mono text-[12px] leading-[1.6]`,children:S.length===0?(0,W.jsx)(`p`,{className:`px-3 text-muted`,children:_?`Waiting for agent output…`:`No live log for this goal in this session.`}):S.map(t=>(0,W.jsxs)(`div`,{className:`flex gap-3 px-3`,children:[(0,W.jsx)(`span`,{className:`tnum shrink-0 text-faint select-none`,children:v(t.ts)}),(0,W.jsx)(`span`,{className:`w-20 shrink-0 truncate text-info`,children:t.role??`goal`}),(0,W.jsx)(`span`,{className:e(`min-w-0 break-words`,t.level===`error`?`text-err`:t.level===`warn`?`text-warn`:`text-fg-2`),children:t.message})]},`${t.ts}-${t.message}`))})]}),(0,W.jsx)(N,{open:c,onClose:()=>u(!1),title:`Cancel this goal?`,description:`The agent in flight is stopped. Finished artifacts and merged code stay; an interrupted code task keeps its partial work on its branch.`,footer:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(n,{variant:`ghost`,onClick:()=>u(!1),children:`Keep going`}),(0,W.jsx)(n,{variant:`danger`,icon:A,onClick:()=>{u(!1),T()},children:`Cancel goal`})]}),children:(0,W.jsx)(`p`,{className:`text-[12px] text-muted`,children:t.objective})})]})}function ee({goalId:e,taskId:t}){let n=b(e,t);return n.isPending?(0,W.jsx)(M,{rows:3,className:`p-2`}):n.isError?(0,W.jsx)(`p`,{className:`rounded-md border border-err/30 bg-err-soft p-2 font-mono text-2xs text-err`,children:m(n.error)}):(0,W.jsxs)(`div`,{className:`rounded-md border border-line bg-raised/50 p-3`,children:[(0,W.jsxs)(`div`,{className:`mb-2 flex items-center justify-between gap-2 border-b border-line pb-1.5`,children:[(0,W.jsx)(`span`,{className:`font-mono text-2xs text-muted`,children:n.data.path}),(0,W.jsx)(P,{value:n.data.content,label:`Copy markdown`})]}),(0,W.jsx)(w,{source:n.data.content,className:`text-[13px]`})]})}export{$ as GoalDetail,X as Goals,J as isActiveGoal,B as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as e,i as t,s as n,t as r,u as i}from"./Panel-B9tSgX6l.js";import{A as a,U as o,W as s,x as c}from"./index-BMWr9EKo.js";import{n as l}from"./Field-BfabPEcY.js";var u=i(e(),1),d=[{id:`ponytail`,name:`Ponytail`,kind:`Guidance`,url:`https://github.com/DietrichGebert/ponytail`,description:`Reuse what exists and keep implementations small. Useful for avoiding unnecessary code; it does not supply an art direction.`,access:`Repository; review license before reuse`},{id:`anti-slop`,name:`Anti Slop`,kind:`Guidance`,url:`https://github.com/miqdadbadjuber/anti-slop`,description:`Review recurring generic patterns in interface design, copy and generated code.`,access:`Repository; review license before reuse`},{id:`impeccable`,name:`Impeccable`,kind:`Guidance`,url:`https://github.com/pbakaus/impeccable`,description:`Design guidance for defining a product direction and refining the finished interface.`,access:`Repository; review license before reuse`},{id:`anti-ui-slop`,name:`Anti UI Slop`,kind:`Guidance`,url:`https://github.com/tuanphung2005/anti-ui-slop`,description:`A separate UI-focused ruleset. Compare its constraints with your brief rather than combining conflicting rules.`,access:`Repository; review license before reuse`},{id:`shadcn`,name:`shadcn/ui`,kind:`Components`,url:`https://github.com/shadcn-ui/ui`,description:`Own and adapt the component source. Start from accessible building blocks and make them fit your identity.`,access:`MIT component library`},{id:`radix`,name:`Radix Primitives`,kind:`Components`,url:`https://github.com/radix-ui/primitives`,description:`Accessible interaction primitives for dialogs, menus and other complex interface behaviors.`,access:`MIT component library`},{id:`motion`,name:`Motion`,kind:`Components`,url:`https://github.com/motiondivision/motion`,description:`Animation for React and JavaScript. Use motion to explain a change, with a reduced-motion alternative.`,access:`MIT library; optional paid products are separate`},{id:`r3f`,name:`React Three Fiber`,kind:`Components`,url:`https://github.com/pmndrs/react-three-fiber`,description:`A React renderer for Three.js. Consider it when a real 3D experience serves the idea.`,access:`MIT library; assets have their own licenses`},{id:`awwwards`,name:`Awwwards`,kind:`Inspiration`,url:`https://www.awwwards.com/`,description:`Explore expressive websites and the studios behind them. Study composition and interaction, then create your own interpretation.`,access:`Reference gallery; artwork is not licensed for copying`},{id:`siteinspire`,name:`Siteinspire`,kind:`Inspiration`,url:`https://www.siteinspire.com/`,description:`Find references by style, type and subject instead of starting from the same SaaS template.`,access:`Reference gallery; artwork is not licensed for copying`},{id:`freight`,name:`Studio Freight`,kind:`Inspiration`,url:`https://studiofreight.com/`,description:`A studio reference for thoughtful digital identity and web experiences.`,access:`Studio portfolio; reference only`},{id:`hf`,name:`Hugging Face Spaces`,kind:`AI tools`,url:`https://huggingface.co/spaces`,description:`Discover interactive AI demos. Check each Space, model license and compute requirements before using it in your project.`,access:`Availability, model licenses and costs vary`}];function f(e){return`Help me create a distinctive interface for this project. Use ${e.name} (${e.url}) as a reference if you can access it. Its purpose: ${e.description}\n\nFirst identify the audience, intended outcome and existing design system. Propose a specific visual direction and a short design brief: typography, palette, composition, imagery, interaction and mobile behavior. Preserve the project stack, cover loading/empty/error states, and verify the rendered result. Use references as inspiration and respect their licenses. Do not claim to have read, installed or connected a resource without checking. Explain any external dependency before adding it.`}var p=n(),m=[`All`,`Guidance`,`Components`,`Inspiration`,`AI tools`];function h(){let[e,n]=(0,u.useState)(`All`),[i,h]=(0,u.useState)(``),g=d.filter(t=>(e===`All`||t.kind===e)&&`${t.name} ${t.description}`.toLowerCase().includes(i.toLowerCase()));return(0,p.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,p.jsx)(r,{title:`Creative library`,description:`Find a direction before you build. A curated starting point for people with ideas, with guidance, components and real design references.`}),(0,p.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,p.jsx)(`fieldset`,{className:`flex flex-wrap gap-1`,"aria-label":`Resource category`,children:m.map(r=>(0,p.jsx)(t,{variant:r===e?`primary`:`ghost`,onClick:()=>n(r),"aria-pressed":r===e,children:r},r))}),(0,p.jsxs)(`label`,{htmlFor:`creative-search`,className:`relative ml-auto w-full max-w-xs`,children:[(0,p.jsx)(`span`,{className:`sr-only`,children:`Find a creative resource`}),(0,p.jsx)(a,{"aria-hidden":!0,className:`absolute top-2.5 left-2.5 size-3.5 text-muted`}),(0,p.jsx)(l,{id:`creative-search`,value:i,onChange:e=>h(e.target.value),placeholder:`Find a resource…`,className:`pl-8`})]})]}),(0,p.jsx)(`div`,{className:`grid gap-x-8 md:grid-cols-2 xl:grid-cols-3`,children:g.map(e=>(0,p.jsxs)(`article`,{className:`flex flex-col items-start border-t border-line py-6`,children:[(0,p.jsx)(`p`,{className:`text-[12px] text-accent-text`,children:e.kind}),(0,p.jsx)(`h2`,{className:`mt-3 text-[21px] font-medium tracking-tight text-fg`,children:e.name}),(0,p.jsx)(`p`,{className:`mt-3 max-w-sm flex-1 text-[13px] leading-6 text-muted`,children:e.description}),(0,p.jsx)(`p`,{className:`mt-4 text-[11px] leading-5 text-muted`,children:e.access}),(0,p.jsxs)(`div`,{className:`mt-4 flex flex-wrap items-center gap-4`,children:[(0,p.jsx)(t,{size:`sm`,onClick:()=>c(`/?brief=${encodeURIComponent(f(e))}`),children:`Use in a goal`}),(0,p.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 text-[12px] text-fg-2 hover:text-fg`,children:[`Visit source`,(0,p.jsx)(s,{"aria-hidden":!0,className:`size-3`})]})]})]},e.id))}),g.length===0&&(0,p.jsx)(`p`,{role:`status`,className:`py-8 text-[13px] text-muted`,children:`No resources match. Try another name or category.`}),(0,p.jsxs)(`div`,{className:`flex gap-3 border-t border-line pt-5 text-[12px] leading-6 text-muted`,children:[(0,p.jsx)(o,{"aria-hidden":!0,className:`mt-1 size-4 shrink-0`}),(0,p.jsx)(`p`,{children:`These are curated references, not installed plugins. “Use in a goal” prepares a brief for your agent; it does not run code, fetch a site or connect an account. DaveCode includes its own design-quality guidance by default. Third-party resources keep their own licenses and access requirements.`})]})]})}export{h as Library};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,o)=>(o=n==null?{}:e(i(n)),s(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n)),l=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.for(`react.view_transition`),m=Symbol.iterator;function h(e){return typeof e!=`object`||!e?null:(e=m&&e[m]||e[`@@iterator`],typeof e==`function`?e:null)}var g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,v={};function y(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function b(){}b.prototype=y.prototype;function x(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}var S=x.prototype=new b;S.constructor=x,_(S,y.prototype),S.isPureReactComponent=!0;var C=Array.isArray;function w(){}var T={H:null,A:null,T:null,S:null},E=Object.prototype.hasOwnProperty;function D(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function O(e,t){return D(e.type,t,e.props)}function k(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function ee(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var A=/\/+/g;function j(e,t){return typeof e==`object`&&e&&e.key!=null?ee(``+e.key):t.toString(36)}function M(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(w,w):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function N(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,N(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+j(e,0):a,C(o)?(i=``,c!=null&&(i=c.replace(A,`$&/`)+`/`),N(o,r,i,``,function(e){return e})):o!=null&&(k(o)&&(o=O(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(A,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(C(e))for(var u=0;u<e.length;u++)a=e[u],s=l+j(a,u),c+=N(a,r,i,s,o);else if(u=h(e),typeof u==`function`)for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,s=l+j(a,u++),c+=N(a,r,i,s,o);else if(s===`object`){if(typeof e.then==`function`)return N(M(e),r,i,a,o);throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`)}return c}function P(e,t,n){if(e==null)return e;var r=[],i=0;return N(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function F(e){if(e._status===-1){var t=e._result,n=t();n.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t,n.status===void 0&&(n.status=`fulfilled`,n.value=t))},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t,n.status===void 0&&(n.status=`rejected`,n.reason=t))}),e._status===-1&&(e._status=0,e._result=n)}if(e._status===1)return e._result.default;throw e._result}var I=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)};function te(e){var t=T.T,n={};n.types=t===null?null:t.types,T.T=n;try{var r=e(),i=T.S;i!==null&&i(n,r),typeof r==`object`&&r&&typeof r.then==`function`&&r.then(w,I)}catch(e){I(e)}finally{t!==null&&n.types!==null&&(t.types=n.types),T.T=t}}function ne(e){var t=T.T;if(t!==null){var n=t.types;n===null?t.types=[e]:n.indexOf(e)===-1&&n.push(e)}else te(ne.bind(null,e))}var re={map:P,forEach:function(e,t,n){P(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return P(e,function(){t++}),t},toArray:function(e){return P(e,function(e){return e})||[]},only:function(e){if(!k(e))throw Error(`React.Children.only expected to receive a single React element child.`);return e}};e.Activity=f,e.Children=re,e.Component=y,e.Fragment=r,e.Profiler=a,e.PureComponent=x,e.StrictMode=i,e.Suspense=l,e.ViewTransition=p,e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=T,e.__COMPILER_RUNTIME={__proto__:null,c:function(e){return T.H.useMemoCache(e)}},e.addTransitionType=ne,e.cache=function(e){return function(){return e.apply(null,arguments)}},e.cacheSignal=function(){return null},e.cloneElement=function(e,t,n){if(e==null)throw Error(`The argument must be a React element, but you passed `+e+`.`);var r=_({},e.props),i=e.key;if(t!=null)for(a in t.key!==void 0&&(i=``+t.key),t)!E.call(t,a)||a===`key`||a===`__self`||a===`__source`||a===`ref`&&t.ref===void 0||(r[a]=t[a]);var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){for(var o=Array(a),s=0;s<a;s++)o[s]=arguments[s+2];r.children=o}return D(e.type,i,r)},e.createContext=function(e){return e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:o,_context:e},e},e.createElement=function(e,t,n){var r,i={},a=null;if(t!=null)for(r in t.key!==void 0&&(a=``+t.key),t)E.call(t,r)&&r!==`key`&&r!==`__self`&&r!==`__source`&&(i[r]=t[r]);var o=arguments.length-2;if(o===1)i.children=n;else if(1<o){for(var s=Array(o),c=0;c<o;c++)s[c]=arguments[c+2];i.children=s}if(e&&e.defaultProps)for(r in o=e.defaultProps,o)i[r]===void 0&&(i[r]=o[r]);return D(e,a,i)},e.createRef=function(){return{current:null}},e.forwardRef=function(e){return{$$typeof:c,render:e}},e.isValidElement=k,e.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:F}},e.memo=function(e,t){return{$$typeof:u,type:e,compare:t===void 0?null:t}},e.startTransition=te,e.unstable_useCacheRefresh=function(){return T.H.useCacheRefresh()},e.use=function(e){return T.H.use(e)},e.useActionState=function(e,t,n){return T.H.useActionState(e,t,n)},e.useCallback=function(e,t){return T.H.useCallback(e,t)},e.useContext=function(e){return T.H.useContext(e)},e.useDebugValue=function(){},e.useDeferredValue=function(e,t){return T.H.useDeferredValue(e,t)},e.useEffect=function(e,t){return T.H.useEffect(e,t)},e.useEffectEvent=function(e){return T.H.useEffectEvent(e)},e.useId=function(){return T.H.useId()},e.useImperativeHandle=function(e,t,n){return T.H.useImperativeHandle(e,t,n)},e.useInsertionEffect=function(e,t){return T.H.useInsertionEffect(e,t)},e.useLayoutEffect=function(e,t){return T.H.useLayoutEffect(e,t)},e.useMemo=function(e,t){return T.H.useMemo(e,t)},e.useOptimistic=function(e,t){return T.H.useOptimistic(e,t)},e.useReducer=function(e,t,n){return T.H.useReducer(e,t,n)},e.useRef=function(e){return T.H.useRef(e)},e.useState=function(e){return T.H.useState(e)},e.useSyncExternalStore=function(e,t,n){return T.H.useSyncExternalStore(e,t,n)},e.useTransition=function(){return T.H.useTransition()},e.version=`19.3.0`})),u=o(((e,t)=>{t.exports=l()})),d=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),f=o(((e,t)=>{t.exports=d()})),p=c(u(),1),m=e=>e?.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase();function h(e,t,n=[]){if(t==null)throw Error(`[lucide]: iconNode is required when icon name is used`);return{name:m(e),size:24,node:t,...n.length>0?{aliases:n}:{}}}var g=e=>{let t=``,n=!1;for(let r of e){if(r===`-`||r===`_`||r<=` `){n=t.length>0;continue}t.length===0?t+=r.toLowerCase():t+=n?r.toUpperCase():r,n=!1}return t},_=e=>{let t=g(e);return t.charAt(0).toUpperCase()+t.slice(1)},v=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),y={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`};function b(e){return e!=null}function x(e,t={}){let n=t.attributeNames??{},r=e=>n[e]??e,i=e.size??e.width??y.width,a=e.size??e.height??y.height,o=e.aliases?.filter(e=>typeof e==`string`&&e.trim()!==``).map(e=>`lucide-${e}`)??[],s=[...e.name?[`lucide-${e.name}`]:[],...o],c=t.className?.split(` `).filter(Boolean)??[],l=t.includeDefaultClasses===!1?v(...c):v(`lucide`,...s,...c),u=t.absoluteStrokeWidth?Number(t.strokeWidth??y[`stroke-width`])*Number(e.size??e.width??y.width)/Number(t.size??t.width??y.width):t.strokeWidth??y[`stroke-width`];return[`svg`,{...Object.entries(y).reduce((e,[t,n])=>(e[r(t)]=n,e),{}),...`color`in t&&t.color&&{[r(`stroke`)]:t.color},...`size`in t&&b(t.size)&&{[r(`width`)]:t.size,[r(`height`)]:t.size},...`width`in t&&b(t.width)&&{[r(`width`)]:t.width},...`height`in t&&b(t.height)&&{[r(`height`)]:t.height},[r(`stroke-width`)]:u,...l&&{[r(`class`)]:l},[r(`viewBox`)]:`0 0 ${i} ${a}`,...t.hasA11yProp===!1?{[r(`aria-hidden`)]:`true`}:{},...`attributes`in t&&t.attributes},e.node.map(e=>{let[n,i,a]=e,o=t.nonScalingStroke?{[r(`vector-effect`)]:`non-scaling-stroke`,...i}:i;return a?[n,o,a]:[n,o]})]}function S(e,t={}){return x(e,{...t,attributeNames:{...t.attributeNames,class:`className`,"stroke-width":`strokeWidth`,"stroke-linecap":`strokeLinecap`,"stroke-linejoin":`strokeLinejoin`,"vector-effect":`vectorEffect`}})}var C=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},w=(0,p.createContext)({}),T=()=>(0,p.useContext)(w),E=(0,p.forwardRef)(({color:e,size:t,width:n,height:r,strokeWidth:i,absoluteStrokeWidth:a,nonScalingStroke:o,className:s=``,children:c,iconNode:l=[],icon:u={node:l,aliases:[],size:24},...d},f)=>{let{size:m=24,strokeWidth:h=2,absoluteStrokeWidth:g=!1,nonScalingStroke:_=!1,color:y=`currentColor`,className:b=``}=T()??{},x=!!c||C(d),[w,E,D=[]]=S(u,{color:e??y,width:n??t??m,height:r??t??m,strokeWidth:i??h,absoluteStrokeWidth:a??g,nonScalingStroke:o??_,className:v(b,s),hasA11yProp:x,attributes:d});return(0,p.createElement)(w,{ref:f,...E},[...D.map(([e,t])=>(0,p.createElement)(e,t)),...Array.isArray(c)?c:[c]])});function D(e,t=[],n=[]){let r=typeof e==`string`?h(e,t,n):e,i=(0,p.forwardRef)(({className:e,...t},n)=>(0,p.createElement)(E,{ref:n,icon:r,className:e,...t}));return r.name&&(i.displayName=_(r.name)),i}function O(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=O(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n)}return r}function k(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=O(e))&&(r&&(r+=` `),r+=t);return r}var ee=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t<e.length;t++)n[t]=e[t];for(let r=0;r<t.length;r++)n[e.length+r]=t[r];return n},A=(e,t)=>({classGroupId:e,validator:t}),j=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),M=`-`,N=[],P=`arbitrary..`,F=e=>{let t=ne(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return te(e);let n=e.split(M);return I(n,+(n[0]===``&&n.length>1),t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?ee(i,t):t:i||N}return n[e]||N}}},I=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=I(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(M):e.slice(t).join(M),s=a.length;for(let e=0;e<s;e++){let t=a[e];if(t.validator(o))return t.classGroupId}},te=e=>e.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?P+r:void 0})(),ne=e=>{let{theme:t,classGroups:n}=e;return re(n,t)},re=(e,t)=>{let n=j();for(let r in e){let i=e[r];L(i,n,r,t)}return n},L=(e,t,n,r)=>{let i=e.length;for(let a=0;a<i;a++){let i=e[a];R(i,t,n,r)}},R=(e,t,n,r)=>{if(typeof e==`string`){ie(e,t,n);return}if(typeof e==`function`){ae(e,t,n,r);return}z(e,t,n,r)},ie=(e,t,n)=>{let r=e===``?t:oe(t,e);r.classGroupId=n},ae=(e,t,n,r)=>{if(se(e)){L(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(A(n,e))},z=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e<a;e++){let[a,o]=i[e];L(o,oe(t,a),n,r)}},oe=(e,t)=>{let n=e,r=t.split(M),i=r.length;for(let e=0;e<i;e++){let t=r[e],i=n.nextPart.get(t);i||(i=j(),n.nextPart.set(t,i)),n=i}return n},se=e=>`isThemeGetter`in e&&e.isThemeGetter===!0,ce=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},B=`!`,V=`:`,le=[],ue=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),de=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;s<o;s++){let o=e[s];if(n===0&&r===0){if(o===V){t.push(e.slice(i,s)),i=s+1;continue}if(o===`/`){a=s;continue}}o===`[`?n++:o===`]`?n--:o===`(`?r++:o===`)`&&r--}let s=t.length===0?e:e.slice(i),c=s,l=!1;s.endsWith(B)?(c=s.slice(0,-1),l=!0):s.startsWith(B)&&(c=s.slice(1),l=!0);let u=a&&a>i?a-i:void 0;return ue(t,l,c,u)};if(t){let e=t+V,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):ue(le,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},fe=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i<e.length;i++){let a=e[i],o=a[0]===`[`,s=t.has(a);o||s?(r.length>0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},pe=e=>({cache:ce(e.cacheSize),parseClassName:de(e),sortModifiers:fe(e),postfixLookupClassGroupIds:me(e),...F(e)}),me=e=>{let t=Object.create(null),n=e.postfixLookupClassGroups;if(n)for(let e=0;e<n.length;e++)t[n[e]]=!0;return t},he=/\s+/,ge=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a,postfixLookupClassGroupIds:o}=t,s=[],c=e.trim().split(he),l=``;for(let e=c.length-1;e>=0;--e){let t=c[e],{isExternal:u,modifiers:d,hasImportantModifier:f,baseClassName:p,maybePostfixModifierPosition:m}=n(t);if(u){l=t+(l.length>0?` `+l:l);continue}let h=!!m,g;if(h){g=r(p.substring(0,m));let e=g&&o[g]?r(p):void 0;e&&e!==g&&(g=e,h=!1)}else g=r(p);if(!g){if(!h){l=t+(l.length>0?` `+l:l);continue}if(g=r(p),!g){l=t+(l.length>0?` `+l:l);continue}h=!1}let _=d.length===0?``:d.length===1?d[0]:a(d).join(`:`),v=f?_+B:_,y=v+g;if(s.indexOf(y)>-1)continue;s.push(y);let b=i(g,h);for(let e=0;e<b.length;++e){let t=b[e];s.push(v+t)}l=t+(l.length>0?` `+l:l)}return l},_e=(...e)=>{let t=0,n,r,i=``;for(;t<e.length;)(n=e[t++])&&(r=ve(n))&&(i&&(i+=` `),i+=r);return i},ve=e=>{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r<e.length;r++)e[r]&&(t=ve(e[r]))&&(n&&(n+=` `),n+=t);return n},ye=(e,...t)=>{let n,r,i,a,o=o=>(n=pe(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=ge(e,n);return i(e,a),a};return a=o,(...e)=>a(_e(...e))},be=[],H=e=>{let t=t=>t[e]||be;return t.isThemeGetter=!0,t.themeKey=e,t},xe=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Se=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Ce=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,we=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Te=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Ee=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix|color|light-dark)\(.+\)$/,De=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Oe=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,U=e=>Ce.test(e),W=e=>!!e&&!Number.isNaN(Number(e)),G=e=>!!e&&Number.isInteger(Number(e)),ke=e=>e.endsWith(`%`)&&W(e.slice(0,-1)),K=e=>we.test(e),Ae=()=>!0,je=e=>Te.test(e)&&!Ee.test(e),Me=()=>!1,Ne=e=>De.test(e),Pe=e=>Oe.test(e),Fe=e=>!q(e)&&!Y(e),Ie=e=>e.startsWith(`@container`)&&(e[10]===`/`&&e[11]!==void 0||e[11]===`s`&&e[16]!==void 0&&e.startsWith(`-size/`,10)||e[11]===`n`&&e[18]!==void 0&&e.startsWith(`-normal/`,10)),Le=e=>X(e,$e,Me),q=e=>xe.test(e),J=e=>X(e,et,je),Re=e=>X(e,tt,W),ze=e=>X(e,rt,Ae),Be=e=>X(e,nt,Me),Ve=e=>X(e,Ze,Me),He=e=>X(e,Qe,Pe),Ue=e=>X(e,it,Ne),Y=e=>Se.test(e),We=e=>Z(e,et),Ge=e=>Z(e,nt),Ke=e=>Z(e,Ze),qe=e=>Z(e,$e),Je=e=>Z(e,Qe),Ye=e=>Z(e,it,!0),Xe=e=>Z(e,rt,!0),X=(e,t,n)=>{let r=xe.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},Z=(e,t,n=!1)=>{let r=Se.exec(e);return r?r[1]?t(r[1]):n:!1},Ze=e=>e===`position`||e===`percentage`,Qe=e=>e===`image`||e===`url`,$e=e=>e===`length`||e===`size`||e===`bg-size`,et=e=>e===`length`,tt=e=>e===`number`,nt=e=>e===`family-name`,rt=e=>e===`number`||e===`weight`,it=e=>e===`shadow`,at=()=>{let e=H(`color`),t=H(`font`),n=H(`text`),r=H(`font-weight`),i=H(`tracking`),a=H(`leading`),o=H(`breakpoint`),s=H(`container`),c=H(`spacing`),l=H(`radius`),u=H(`shadow`),d=H(`inset-shadow`),f=H(`text-shadow`),p=H(`drop-shadow`),m=H(`blur`),h=H(`perspective`),g=H(`aspect`),_=H(`ease`),v=H(`animate`),y=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],b=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],x=()=>[...b(),Y,q],S=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],C=()=>[`auto`,`contain`,`none`],w=()=>[Y,q,c],T=()=>[U,`full`,`auto`,...w()],E=()=>[G,`none`,`subgrid`,Y,q],D=()=>[`auto`,{span:[`full`,G,Y,q]},G,Y,q],O=()=>[G,`auto`,Y,q],k=()=>[`auto`,`min`,`max`,`fr`,Y,q],ee=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],A=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],j=()=>[`auto`,...w()],M=()=>[U,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...w()],N=()=>[s,U,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...w()],P=()=>[U,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...w()],F=()=>[e,Y,q],I=()=>[...b(),Ke,Ve,{position:[Y,q]}],te=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],ne=()=>[`auto`,`cover`,`contain`,qe,Le,{size:[Y,q]}],re=()=>[ke,We,J],L=()=>[``,`none`,`full`,l,Y,q],R=()=>[``,W,We,J],ie=()=>[`solid`,`dashed`,`dotted`,`double`],ae=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],z=()=>[W,ke,Ke,Ve],oe=()=>[``,`none`,m,Y,q],se=()=>[`none`,W,Y,q],ce=()=>[`none`,W,Y,q],B=()=>[W,Y,q],V=()=>[U,`full`,...w()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[K],breakpoint:[K],color:[Ae],container:[K],"drop-shadow":[K],ease:[`in`,`out`,`in-out`],font:[Fe],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[K],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[K],shadow:[K],spacing:[`px`,W],text:[K],"text-shadow":[K],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,U,q,Y,g]}],container:[`container`],"container-type":[{"@container":[``,`normal`,`size`,Y,q]}],"container-named":[Ie],columns:[{columns:[W,`auto`,q,Y,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:x()}],overflow:[{overflow:S()}],"overflow-x":[{"overflow-x":S()}],"overflow-y":[{"overflow-y":S()}],overscroll:[{overscroll:C()}],"overscroll-x":[{"overscroll-x":C()}],"overscroll-y":[{"overscroll-y":C()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:T()}],"inset-x":[{"inset-x":T()}],"inset-y":[{"inset-y":T()}],start:[{"inset-s":T(),start:T()}],end:[{"inset-e":T(),end:T()}],"inset-bs":[{"inset-bs":T()}],"inset-be":[{"inset-be":T()}],top:[{top:T()}],right:[{right:T()}],bottom:[{bottom:T()}],left:[{left:T()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[G,`auto`,Y,q]}],basis:[{basis:[U,`full`,`auto`,s,...w()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[W,U,`auto`,`initial`,`none`,q]}],grow:[{grow:[``,W,Y,q]}],shrink:[{shrink:[``,W,Y,q]}],order:[{order:[G,`first`,`last`,`none`,Y,q]}],"grid-cols":[{"grid-cols":E()}],"col-start-end":[{col:D()}],"col-start":[{"col-start":O()}],"col-end":[{"col-end":O()}],"grid-rows":[{"grid-rows":E()}],"row-start-end":[{row:D()}],"row-start":[{"row-start":O()}],"row-end":[{"row-end":O()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":k()}],"auto-rows":[{"auto-rows":k()}],gap:[{gap:w()}],"gap-x":[{"gap-x":w()}],"gap-y":[{"gap-y":w()}],"justify-content":[{justify:[...ee(),`normal`]}],"justify-items":[{"justify-items":[...A(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...A()]}],"align-content":[{content:[`normal`,...ee()]}],"align-items":[{items:[...A(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...A(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":ee()}],"place-items":[{"place-items":[...A(),`baseline`]}],"place-self":[{"place-self":[`auto`,...A()]}],p:[{p:w()}],px:[{px:w()}],py:[{py:w()}],ps:[{ps:w()}],pe:[{pe:w()}],pbs:[{pbs:w()}],pbe:[{pbe:w()}],pt:[{pt:w()}],pr:[{pr:w()}],pb:[{pb:w()}],pl:[{pl:w()}],m:[{m:j()}],mx:[{mx:j()}],my:[{my:j()}],ms:[{ms:j()}],me:[{me:j()}],mbs:[{mbs:j()}],mbe:[{mbe:j()}],mt:[{mt:j()}],mr:[{mr:j()}],mb:[{mb:j()}],ml:[{ml:j()}],"space-x":[{"space-x":w()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":w()}],"space-y-reverse":[`space-y-reverse`],size:[{size:M()}],"inline-size":[{inline:[`auto`,...N()]}],"min-inline-size":[{"min-inline":[`auto`,...N()]}],"max-inline-size":[{"max-inline":[`none`,...N()]}],"block-size":[{block:[`auto`,...P()]}],"min-block-size":[{"min-block":[`auto`,...P()]}],"max-block-size":[{"max-block":[`none`,...P()]}],w:[{w:[s,`screen`,...M()]}],"min-w":[{"min-w":[s,`screen`,`none`,...M()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...M()]}],h:[{h:[`screen`,`lh`,...M()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...M()]}],"max-h":[{"max-h":[`screen`,`lh`,`none`,...M()]}],"font-size":[{text:[`base`,n,We,J]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,Xe,ze]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,ke,q]}],"font-family":[{font:[Ge,Be,t]}],"font-features":[{"font-features":[q]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,Y,q]}],"line-clamp":[{"line-clamp":[W,`none`,Y,Re]}],leading:[{leading:[`none`,a,...w()]}],"list-image":[{"list-image":[`none`,Y,q]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,Y,q]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:F()}],"text-color":[{text:F()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...ie(),`wavy`]}],"text-decoration-thickness":[{decoration:[W,`from-font`,`auto`,Y,J]}],"text-decoration-color":[{decoration:F()}],"underline-offset":[{"underline-offset":[W,`auto`,Y,q]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:w()}],"tab-size":[{tab:[G,Y,q]}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,Y,q]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,Y,q]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:I()}],"bg-repeat":[{bg:te()}],"bg-size":[{bg:ne()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},G,Y,q],radial:[``,Y,q],conic:[``,G,Y,q]},Je,He]}],"bg-color":[{bg:F()}],"gradient-from-pos":[{from:re()}],"gradient-via-pos":[{via:re()}],"gradient-to-pos":[{to:re()}],"gradient-from":[{from:F()}],"gradient-via":[{via:F()}],"gradient-to":[{to:F()}],rounded:[{rounded:L()}],"rounded-s":[{"rounded-s":L()}],"rounded-e":[{"rounded-e":L()}],"rounded-t":[{"rounded-t":L()}],"rounded-r":[{"rounded-r":L()}],"rounded-b":[{"rounded-b":L()}],"rounded-l":[{"rounded-l":L()}],"rounded-ss":[{"rounded-ss":L()}],"rounded-se":[{"rounded-se":L()}],"rounded-ee":[{"rounded-ee":L()}],"rounded-es":[{"rounded-es":L()}],"rounded-tl":[{"rounded-tl":L()}],"rounded-tr":[{"rounded-tr":L()}],"rounded-br":[{"rounded-br":L()}],"rounded-bl":[{"rounded-bl":L()}],"border-w":[{border:R()}],"border-w-x":[{"border-x":R()}],"border-w-y":[{"border-y":R()}],"border-w-s":[{"border-s":R()}],"border-w-e":[{"border-e":R()}],"border-w-bs":[{"border-bs":R()}],"border-w-be":[{"border-be":R()}],"border-w-t":[{"border-t":R()}],"border-w-r":[{"border-r":R()}],"border-w-b":[{"border-b":R()}],"border-w-l":[{"border-l":R()}],"divide-x":[{"divide-x":R()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":R()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...ie(),`hidden`,`none`]}],"divide-style":[{divide:[...ie(),`hidden`,`none`]}],"border-color":[{border:F()}],"border-color-x":[{"border-x":F()}],"border-color-y":[{"border-y":F()}],"border-color-s":[{"border-s":F()}],"border-color-e":[{"border-e":F()}],"border-color-bs":[{"border-bs":F()}],"border-color-be":[{"border-be":F()}],"border-color-t":[{"border-t":F()}],"border-color-r":[{"border-r":F()}],"border-color-b":[{"border-b":F()}],"border-color-l":[{"border-l":F()}],"divide-color":[{divide:F()}],"outline-style":[{outline:[...ie(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[W,Y,q]}],"outline-w":[{outline:[``,W,We,J]}],"outline-color":[{outline:F()}],shadow:[{shadow:[``,`inner`,`none`,u,Ye,Ue]}],"shadow-color":[{shadow:F()}],"inset-shadow":[{"inset-shadow":[`none`,d,Ye,Ue]}],"inset-shadow-color":[{"inset-shadow":F()}],"ring-w":[{ring:R()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:F()}],"ring-offset-w":[{"ring-offset":[W,J]}],"ring-offset-color":[{"ring-offset":F()}],"inset-ring-w":[{"inset-ring":R()}],"inset-ring-color":[{"inset-ring":F()}],"text-shadow":[{"text-shadow":[`none`,f,Ye,Ue]}],"text-shadow-color":[{"text-shadow":F()}],opacity:[{opacity:[W,Y,q]}],"mix-blend":[{"mix-blend":[...ae(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":ae()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[W]}],"mask-image-linear-from-pos":[{"mask-linear-from":z()}],"mask-image-linear-to-pos":[{"mask-linear-to":z()}],"mask-image-linear-from-color":[{"mask-linear-from":F()}],"mask-image-linear-to-color":[{"mask-linear-to":F()}],"mask-image-t-from-pos":[{"mask-t-from":z()}],"mask-image-t-to-pos":[{"mask-t-to":z()}],"mask-image-t-from-color":[{"mask-t-from":F()}],"mask-image-t-to-color":[{"mask-t-to":F()}],"mask-image-r-from-pos":[{"mask-r-from":z()}],"mask-image-r-to-pos":[{"mask-r-to":z()}],"mask-image-r-from-color":[{"mask-r-from":F()}],"mask-image-r-to-color":[{"mask-r-to":F()}],"mask-image-b-from-pos":[{"mask-b-from":z()}],"mask-image-b-to-pos":[{"mask-b-to":z()}],"mask-image-b-from-color":[{"mask-b-from":F()}],"mask-image-b-to-color":[{"mask-b-to":F()}],"mask-image-l-from-pos":[{"mask-l-from":z()}],"mask-image-l-to-pos":[{"mask-l-to":z()}],"mask-image-l-from-color":[{"mask-l-from":F()}],"mask-image-l-to-color":[{"mask-l-to":F()}],"mask-image-x-from-pos":[{"mask-x-from":z()}],"mask-image-x-to-pos":[{"mask-x-to":z()}],"mask-image-x-from-color":[{"mask-x-from":F()}],"mask-image-x-to-color":[{"mask-x-to":F()}],"mask-image-y-from-pos":[{"mask-y-from":z()}],"mask-image-y-to-pos":[{"mask-y-to":z()}],"mask-image-y-from-color":[{"mask-y-from":F()}],"mask-image-y-to-color":[{"mask-y-to":F()}],"mask-image-radial":[{"mask-radial":[Y,q]}],"mask-image-radial-from-pos":[{"mask-radial-from":z()}],"mask-image-radial-to-pos":[{"mask-radial-to":z()}],"mask-image-radial-from-color":[{"mask-radial-from":F()}],"mask-image-radial-to-color":[{"mask-radial-to":F()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":b()}],"mask-image-conic-pos":[{"mask-conic":[W]}],"mask-image-conic-from-pos":[{"mask-conic-from":z()}],"mask-image-conic-to-pos":[{"mask-conic-to":z()}],"mask-image-conic-from-color":[{"mask-conic-from":F()}],"mask-image-conic-to-color":[{"mask-conic-to":F()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:I()}],"mask-repeat":[{mask:te()}],"mask-size":[{mask:ne()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,Y,q]}],filter:[{filter:[``,`none`,Y,q]}],blur:[{blur:oe()}],brightness:[{brightness:[W,Y,q]}],contrast:[{contrast:[W,Y,q]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,Ye,Ue]}],"drop-shadow-color":[{"drop-shadow":F()}],grayscale:[{grayscale:[``,W,Y,q]}],"hue-rotate":[{"hue-rotate":[W,Y,q]}],invert:[{invert:[``,W,Y,q]}],saturate:[{saturate:[W,Y,q]}],sepia:[{sepia:[``,W,Y,q]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,Y,q]}],"backdrop-blur":[{"backdrop-blur":oe()}],"backdrop-brightness":[{"backdrop-brightness":[W,Y,q]}],"backdrop-contrast":[{"backdrop-contrast":[W,Y,q]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,W,Y,q]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[W,Y,q]}],"backdrop-invert":[{"backdrop-invert":[``,W,Y,q]}],"backdrop-opacity":[{"backdrop-opacity":[W,Y,q]}],"backdrop-saturate":[{"backdrop-saturate":[W,Y,q]}],"backdrop-sepia":[{"backdrop-sepia":[``,W,Y,q]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":w()}],"border-spacing-x":[{"border-spacing-x":w()}],"border-spacing-y":[{"border-spacing-y":w()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,Y,q]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[W,`initial`,Y,q]}],ease:[{ease:[`linear`,`initial`,_,Y,q]}],delay:[{delay:[W,Y,q]}],animate:[{animate:[`none`,v,Y,q]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,Y,q]}],"perspective-origin":[{"perspective-origin":x()}],rotate:[{rotate:se()}],"rotate-x":[{"rotate-x":se()}],"rotate-y":[{"rotate-y":se()}],"rotate-z":[{"rotate-z":se()}],scale:[{scale:ce()}],"scale-x":[{"scale-x":ce()}],"scale-y":[{"scale-y":ce()}],"scale-z":[{"scale-z":ce()}],"scale-3d":[`scale-3d`],skew:[{skew:B()}],"skew-x":[{"skew-x":B()}],"skew-y":[{"skew-y":B()}],transform:[{transform:[Y,q,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:x()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:V()}],"translate-x":[{"translate-x":V()}],"translate-y":[{"translate-y":V()}],"translate-z":[{"translate-z":V()}],"translate-none":[`translate-none`],zoom:[{zoom:[G,Y,q]}],accent:[{accent:F()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:F()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,Y,q]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scrollbar-thumb-color":[{"scrollbar-thumb":F()}],"scrollbar-track-color":[{"scrollbar-track":F()}],"scrollbar-gutter":[{"scrollbar-gutter":[`auto`,`stable`,`both`]}],"scrollbar-w":[{scrollbar:[`auto`,`thin`,`none`]}],"scroll-m":[{"scroll-m":w()}],"scroll-mx":[{"scroll-mx":w()}],"scroll-my":[{"scroll-my":w()}],"scroll-ms":[{"scroll-ms":w()}],"scroll-me":[{"scroll-me":w()}],"scroll-mbs":[{"scroll-mbs":w()}],"scroll-mbe":[{"scroll-mbe":w()}],"scroll-mt":[{"scroll-mt":w()}],"scroll-mr":[{"scroll-mr":w()}],"scroll-mb":[{"scroll-mb":w()}],"scroll-ml":[{"scroll-ml":w()}],"scroll-p":[{"scroll-p":w()}],"scroll-px":[{"scroll-px":w()}],"scroll-py":[{"scroll-py":w()}],"scroll-ps":[{"scroll-ps":w()}],"scroll-pe":[{"scroll-pe":w()}],"scroll-pbs":[{"scroll-pbs":w()}],"scroll-pbe":[{"scroll-pbe":w()}],"scroll-pt":[{"scroll-pt":w()}],"scroll-pr":[{"scroll-pr":w()}],"scroll-pb":[{"scroll-pb":w()}],"scroll-pl":[{"scroll-pl":w()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,Y,q]}],fill:[{fill:[`none`,...F()]}],"stroke-w":[{stroke:[W,We,J,Re]}],stroke:[{stroke:[`none`,...F()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{"container-named":[`container-type`],overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`start`,`end`,`right`,`left`],"inset-y":[`inset-bs`,`inset-be`,`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`ps`,`pe`,`pr`,`pl`],py:[`pbs`,`pbe`,`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`ms`,`me`,`mr`,`ml`],my:[`mbs`,`mbe`,`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-s`,`border-w-e`,`border-w-r`,`border-w-l`],"border-w-y":[`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-s`,`border-color-e`,`border-color-r`,`border-color-l`],"border-color-y":[`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-ms`,`scroll-me`,`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-ps`,`scroll-pe`,`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},postfixLookupClassGroups:[`container-type`],orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}},ot=(e,{cacheSize:t,prefix:n,experimentalParseClassName:r,extend:i={},override:a={}})=>(Q(e,`cacheSize`,t),Q(e,`prefix`,n),Q(e,`experimentalParseClassName`,r),st(e.theme,a.theme),st(e.classGroups,a.classGroups),st(e.conflictingClassGroups,a.conflictingClassGroups),st(e.conflictingClassGroupModifiers,a.conflictingClassGroupModifiers),Q(e,`postfixLookupClassGroups`,a.postfixLookupClassGroups),Q(e,`orderSensitiveModifiers`,a.orderSensitiveModifiers),ct(e.theme,i.theme),ct(e.classGroups,i.classGroups),ct(e.conflictingClassGroups,i.conflictingClassGroups),ct(e.conflictingClassGroupModifiers,i.conflictingClassGroupModifiers),lt(e,i,`postfixLookupClassGroups`),lt(e,i,`orderSensitiveModifiers`),e),Q=(e,t,n)=>{n!==void 0&&(e[t]=n)},st=(e,t)=>{if(t)for(let n in t)Q(e,n,t[n])},ct=(e,t)=>{if(t)for(let n in t)lt(e,t,n)},lt=(e,t,n)=>{let r=t[n];r!==void 0&&(e[n]=e[n]?e[n].concat(r):r)},ut=((e,...t)=>typeof e==`function`?ye(at,e,...t):ye(()=>ot(at(),e),...t))({extend:{classGroups:{"font-size":[{text:[`2xs`]}]}}});function dt(...e){return ut(k(e))}var $=f(),ft={primary:`bg-accent text-accent-fg hover:brightness-110 active:brightness-95 border border-transparent font-medium`,secondary:`bg-raised text-fg border border-line-strong hover:bg-hover hover:border-faint/60`,ghost:`text-fg-2 border border-transparent hover:bg-hover hover:text-fg`,danger:`bg-err-soft text-err border border-err/30 hover:bg-err/20`},pt={sm:`h-7 gap-1.5 px-2.5 text-[12px]`,md:`h-8 gap-2 px-3 text-[13px]`},mt=(0,p.forwardRef)(function({variant:e=`secondary`,size:t=`md`,icon:n,iconOnly:r,loading:i,className:a,children:o,disabled:s,type:c=`button`,...l},u){return(0,$.jsxs)(`button`,{ref:u,type:c,disabled:s||i,"aria-busy":i||void 0,className:dt(`inline-flex shrink-0 items-center justify-center rounded-md whitespace-nowrap select-none`,`transition-[background-color,border-color,color,filter,transform] duration-150 ease-snappy`,`active:scale-[0.98] disabled:pointer-events-none disabled:opacity-45`,ft[e],pt[t],r&&(t===`sm`?`w-7 px-0`:`w-8 px-0`),a),...l,children:[i?(0,$.jsx)(`span`,{"aria-hidden":!0,className:`size-3.5 animate-spin rounded-full border-[1.5px] border-current border-r-transparent`}):n?(0,$.jsx)(n,{"aria-hidden":!0,className:`size-3.5 shrink-0`,strokeWidth:1.75}):null,!r&&o]})});function ht({className:e,...t}){return(0,$.jsx)(`section`,{className:dt(`flex min-w-0 flex-col rounded-lg border border-line bg-panel`,e),...t})}function gt({title:e,id:t,meta:n,actions:r,className:i}){return(0,$.jsxs)(`header`,{className:dt(`flex min-h-10 flex-wrap items-center gap-x-3 gap-y-1 border-b border-line px-3.5 py-2`,i),children:[(0,$.jsx)(`h2`,{id:t,className:`text-[13px] font-medium text-fg`,children:e}),n&&(0,$.jsx)(`div`,{className:`text-[12px] text-muted`,children:n}),r&&(0,$.jsx)(`div`,{className:`ml-auto flex items-center gap-1.5`,children:r})]})}function _t({title:e,description:t,actions:n}){return(0,$.jsxs)(`div`,{className:`flex flex-wrap items-end gap-x-6 gap-y-3 pb-4`,children:[(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`h1`,{className:`text-[17px] font-semibold tracking-tight text-fg`,children:e}),t&&(0,$.jsx)(`p`,{className:`mt-0.5 text-[13px] text-muted`,children:t})]}),n&&(0,$.jsx)(`div`,{className:`ml-auto flex flex-wrap items-center gap-2`,children:n})]})}export{dt as a,u as c,mt as i,o as l,ht as n,D as o,gt as r,f as s,_t as t,c as u};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{a as e,c as t,i as n,n as r,o as i,r as a,s as o,t as s,u as c}from"./Panel-B9tSgX6l.js";import{$ as l,D as u,I as d,O as f,Q as p,at as m,et as h,ft as g,it as _,n as v,nt as y,ot as b,p as x,rt as S,st as C,t as w,tt as T,yt as E}from"./Badge-B-qzNRrZ.js";import{t as D}from"./arrow-up-DL3CuFOO.js";import{t as O}from"./Callout-B9g_wPDi.js";import{n as k,t as A}from"./task-errors-CE4oEr8H.js";import{t as j}from"./trash-CWqeZ7eg.js";import{C as M,N,S as P,b as F,c as I,d as L,i as R,j as z,o as B,p as V,u as H,w as U,y as W}from"./index-BMWr9EKo.js";import{n as G,r as K,t as q}from"./Field-BfabPEcY.js";var J={name:`arrow-down`,size:24,node:[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]};J.node;var Y=i(J),X=c(t(),1),Z=o();function Q({open:e,onClose:t,routes:n,defaultRoute:r}){return(0,Z.jsx)(I,{open:e,onClose:t,title:`Edit routes`,description:(0,Z.jsxs)(Z.Fragment,{children:[`Saved to the global `,(0,Z.jsx)(`span`,{className:`font-mono`,children:`~/.davecode/config.json`}),` and applied to the router immediately.`]}),width:`w-[min(680px,100vw)]`,children:e&&(0,Z.jsx)($,{routes:n,defaultRoute:r,onDone:t})})}function $({routes:t,defaultRoute:r,onDone:i}){let a=x(),o=u(),s=d(),c=a.data??[],[f,g]=(0,X.useState)(()=>S(t,r)),[v,b]=(0,X.useState)(!1),[C,w]=(0,X.useState)(null),E=(0,X.useMemo)(()=>m(f,c),[f,c]),D=p(f,t,r),k=(0,X.useMemo)(()=>{let e=new Map;for(let t of o.data??[]){if(t.owned_by===`davecode`)continue;let n=t.owned_by,r=`${n}/`,i=e.get(n)??[];i.push(t.id.startsWith(r)?t.id.slice(r.length):t.id),e.set(n,i)}return e},[o.data]),M=(e,t)=>g(n=>({...n,routes:n.routes.map(n=>n.key===e?t(n):n)})),P=(e,t,n)=>M(e,e=>({...e,targets:e.targets.map(e=>e.key===t?{...e,...n}:e)})),F=()=>g(e=>{let t=h(y(e.routes));return{routes:[...e.routes,t],defaultKey:e.defaultKey??t.key}}),I=e=>g(t=>{let n=t.routes.filter(t=>t.key!==e);return{routes:n,defaultKey:t.defaultKey===e?n[0]?.key??null:t.defaultKey}});return(0,Z.jsxs)(`form`,{onSubmit:async e=>{if(e.preventDefault(),b(!0),w(null),E.valid)try{let e=await s.mutateAsync(_(f));W({tone:`ok`,title:`Routes saved`,description:`${e.routes.length} route${e.routes.length===1?``:`s`}, default davecode/${e.defaultRoute}`}),e.shadowedByProject&&W({tone:`info`,title:`This project overrides routes`,description:`The project .davecode/config.json also sets routing and wins after a restart.`}),i()}catch(e){w(A(e))}},noValidate:!0,className:`flex flex-col gap-4`,children:[f.routes.length===0&&(0,Z.jsxs)(`p`,{className:`rounded-md border border-dashed border-line-strong px-3 py-6 text-center text-[12px] text-muted`,children:[`No routes. Clients can still call `,(0,Z.jsx)(`span`,{className:`font-mono`,children:`provider/model`}),` ids directly. Add a route to expose `,(0,Z.jsx)(`span`,{className:`font-mono`,children:`davecode/<name>`}),`.`]}),f.routes.map(t=>{let r=E.byRoute[t.key],i=f.defaultKey===t.key,a=v;return(0,Z.jsxs)(`section`,{"aria-label":`Route ${t.name||`unnamed`}`,className:e(`flex flex-col gap-3 rounded-lg border bg-raised p-3`,i?`border-accent/50`:`border-line`),children:[(0,Z.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,Z.jsx)(q,{label:`Name`,error:a?r?.name:null,className:`min-w-0 flex-1`,children:({id:e,describedBy:n,invalid:r})=>(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Z.jsx)(`span`,{className:`shrink-0 font-mono text-[12px] text-muted`,children:`davecode/`}),(0,Z.jsx)(G,{id:e,value:t.name,onChange:e=>M(t.key,t=>({...t,name:e.target.value})),"aria-describedby":n,"aria-invalid":r||void 0,spellCheck:!1,autoCapitalize:`off`,className:`font-mono`})]})}),(0,Z.jsxs)(`label`,{className:`mt-6 flex shrink-0 cursor-pointer items-center gap-1.5 text-[12px] text-fg-2`,children:[(0,Z.jsx)(`input`,{type:`radio`,name:`default-route`,checked:i,onChange:()=>g(e=>({...e,defaultKey:t.key})),className:`size-3.5 accent-accent`}),`Default`]}),(0,Z.jsx)(n,{variant:`ghost`,size:`sm`,iconOnly:!0,icon:j,"aria-label":`Remove route ${t.name||`unnamed`}`,onClick:()=>I(t.key),className:`mt-6 text-err hover:bg-err-soft hover:text-err`})]}),(0,Z.jsx)(q,{label:`Description`,children:({id:e,describedBy:n})=>(0,Z.jsx)(G,{id:e,value:t.description,onChange:e=>M(t.key,t=>({...t,description:e.target.value})),"aria-describedby":n,placeholder:`When to use this route`})}),(0,Z.jsxs)(`fieldset`,{className:`flex flex-col gap-2`,children:[(0,Z.jsxs)(`legend`,{className:`mb-1 text-[12px] font-medium text-fg-2`,children:[`Targets`,` `,(0,Z.jsx)(`span`,{className:`font-normal text-muted`,children:`tried in order, then fail over`})]}),a&&r?.targets&&(0,Z.jsx)(`p`,{role:`alert`,className:`text-[12px] text-err`,children:r.targets}),(0,Z.jsx)(`ol`,{className:`flex flex-col gap-2`,children:t.targets.map((e,n)=>(0,Z.jsx)(ee,{index:n,count:t.targets.length,target:e,accounts:c,models:k.get(e.provider)??[],error:a?r?.target[e.key]:void 0,onChange:n=>P(t.key,e.key,n),onMove:e=>M(t.key,t=>({...t,targets:l(t.targets,n,e)})),onRemove:()=>M(t.key,t=>({...t,targets:t.targets.filter(t=>t.key!==e.key)}))},e.key))}),(0,Z.jsx)(n,{size:`sm`,variant:`secondary`,icon:N,className:`self-start`,onClick:()=>M(t.key,e=>({...e,targets:[...e.targets,T(e.targets.at(-1)?.provider)]})),children:`Add target`})]})]},t.key)}),v&&E.defaultRoute&&(0,Z.jsx)(`p`,{role:`alert`,className:`text-[12px] text-err`,children:E.defaultRoute}),(0,Z.jsx)(n,{variant:`secondary`,icon:N,className:`self-start`,onClick:F,children:`Add route`}),C&&(0,Z.jsx)(O,{tone:`err`,title:`Could not save the routes`,children:C}),(0,Z.jsxs)(`div`,{className:`sticky -bottom-4 -mx-5 -mb-4 flex items-center justify-end gap-2 border-t border-line bg-panel px-5 py-3`,children:[!D&&(0,Z.jsx)(`span`,{className:`mr-auto text-[12px] text-muted`,children:`No changes`}),(0,Z.jsx)(n,{variant:`ghost`,onClick:i,children:`Cancel`}),(0,Z.jsx)(n,{type:`submit`,variant:`primary`,loading:s.isPending,disabled:!D,children:`Save routes`})]})]})}function ee({index:e,count:t,target:r,accounts:i,models:a,error:o,onChange:s,onMove:c,onRemove:l}){let u=`models-${r.key}`,d=i.filter(e=>e.provider===r.provider),f=r.accountId&&!i.some(e=>e.id===r.accountId);return(0,Z.jsxs)(`li`,{className:`flex items-start gap-2 rounded-md border border-line bg-panel p-2`,children:[(0,Z.jsx)(`span`,{className:`mt-1.5 flex size-6 shrink-0 items-center justify-center rounded-full border border-line-strong bg-raised font-mono text-[11px] text-fg-2`,children:e+1}),(0,Z.jsxs)(`div`,{className:`grid min-w-0 flex-1 grid-cols-1 gap-2 sm:grid-cols-2`,children:[(0,Z.jsx)(q,{label:`Provider`,children:({id:e})=>(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(V,{provider:r.provider,size:`sm`}),(0,Z.jsx)(K,{id:e,value:r.provider,onChange:e=>{let t=e.target.value;s({provider:t,...i.find(e=>e.id===r.accountId)?.provider===t?{}:{accountId:``}})},children:b.map(e=>(0,Z.jsx)(`option`,{value:e,children:C(e).label},e))})]})}),(0,Z.jsx)(q,{label:`Model`,error:o?.model,children:({id:e,describedBy:t,invalid:n})=>(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(G,{id:e,list:u,value:r.model,onChange:e=>s({model:e.target.value}),"aria-describedby":t,"aria-invalid":n||void 0,spellCheck:!1,autoCapitalize:`off`,placeholder:`claude-sonnet-5-5`,className:`font-mono`}),(0,Z.jsx)(`datalist`,{id:u,children:a.map(e=>(0,Z.jsx)(`option`,{value:e},e))})]})}),(0,Z.jsx)(q,{label:`Account`,error:o?.accountId,className:`sm:col-span-2`,children:({id:e,describedBy:t,invalid:n})=>(0,Z.jsxs)(K,{id:e,value:r.accountId,onChange:e=>s({accountId:e.target.value}),"aria-describedby":t,"aria-invalid":n||void 0,children:[(0,Z.jsx)(`option`,{value:``,children:`Balanced across matching accounts`}),f&&(0,Z.jsxs)(`option`,{value:r.accountId,children:[r.accountId,` (missing)`]}),d.map(e=>(0,Z.jsxs)(`option`,{value:e.id,children:[`Pinned to `,e.label,` (`,e.id,`)`]},e.id))]})})]}),(0,Z.jsxs)(`div`,{className:`mt-1 flex shrink-0 flex-col gap-0.5`,children:[(0,Z.jsx)(n,{size:`sm`,variant:`ghost`,iconOnly:!0,icon:D,"aria-label":`Move target ${e+1} up`,disabled:e===0,onClick:()=>c(e-1)}),(0,Z.jsx)(n,{size:`sm`,variant:`ghost`,iconOnly:!0,icon:Y,"aria-label":`Move target ${e+1} down`,disabled:e===t-1,onClick:()=>c(e+1)}),(0,Z.jsx)(n,{size:`sm`,variant:`ghost`,iconOnly:!0,icon:U,"aria-label":`Remove target ${e+1}`,onClick:l})]})]})}function te(e,t){return t.filter(t=>{if(e.accountId)return t.id===e.accountId;if(t.provider!==e.provider)return!1;let n=t.config.models;return!Array.isArray(n)||n.length===0||n.includes(e.model)})}function ne(){let e=f(),{params:t}=M(),i=t.get(`edit`)===`1`,o=x(),c=u(),l=E(),d=o.data??[],p=`${l.gatewayUrl||`http://127.0.0.1:4040`}/v1`,m=e.data?.defaultRoute??`auto`,h=(0,X.useMemo)(()=>{let e=c.data??[];return{total:e.length,routes:e.filter(e=>e.owned_by===`davecode`).length}},[c.data]),_=`curl ${p}/chat/completions \\
|
|
2
|
-
-H "Content-Type: application/json" \\
|
|
3
|
-
-H "Authorization: Bearer $DAVECODE_TOKEN" \\
|
|
4
|
-
-d '{"model": "davecode/${m}", "messages": [{"role": "user", "content": "Hello"}]}'`;return(0,Z.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Z.jsx)(s,{title:`Routes`,description:(0,Z.jsxs)(Z.Fragment,{children:[`Exposed to clients as`,` `,(0,Z.jsx)(`code`,{className:`font-mono text-fg-2`,children:`davecode/<route>`}),`. Targets are tried in order; the router fails over down the list before the first byte.`]}),actions:(0,Z.jsxs)(Z.Fragment,{children:[c.data&&(0,Z.jsxs)(w,{mono:!0,children:[h.total,` models · `,h.routes,` routes on /v1/models`]}),(0,Z.jsx)(n,{variant:`primary`,icon:k,disabled:!e.data,onClick:()=>P(`edit`,`1`),children:`Edit routes`})]})}),e.isError&&(0,Z.jsx)(O,{tone:`err`,title:`Could not load routes`,children:g(e.error)}),e.isPending?(0,Z.jsx)(r,{children:(0,Z.jsx)(B,{rows:6})}):(e.data?.routes.length??0)===0?(0,Z.jsx)(r,{children:(0,Z.jsx)(R,{icon:z,title:`No routes configured`,description:`Until you add one, clients can call provider/model ids directly. Routes are saved to ~/.davecode/config.json.`,action:(0,Z.jsx)(n,{variant:`primary`,icon:N,onClick:()=>P(`edit`,`1`),children:`Add a route`})})}):(0,Z.jsx)(`div`,{className:`grid grid-cols-1 gap-4 lg:grid-cols-2`,children:e.data?.routes.map(e=>(0,Z.jsxs)(r,{"aria-labelledby":`route-${e.name}`,children:[(0,Z.jsx)(a,{id:`route-${e.name}`,title:(0,Z.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 font-mono`,children:[`davecode/`,e.name,(0,Z.jsx)(H,{value:`davecode/${e.name}`,label:`Copy davecode/${e.name}`})]}),actions:e.name===m?(0,Z.jsx)(w,{tone:`accent`,children:`default`}):void 0}),e.description&&(0,Z.jsx)(`p`,{className:`px-3.5 pt-3 text-[12px] text-muted`,children:e.description}),(0,Z.jsx)(`ol`,{className:`flex flex-col p-3.5`,children:e.targets.map((t,n)=>{let r=te(t,d),i=r.filter(e=>e.enabled&&e.status!==`disabled`);return(0,Z.jsxs)(`li`,{className:`relative flex gap-3 pb-3 last:pb-0`,children:[n<e.targets.length-1&&(0,Z.jsx)(`span`,{"aria-hidden":!0,className:`absolute top-7 bottom-0 left-[11px] w-px bg-line-strong`}),(0,Z.jsx)(`span`,{className:`z-10 flex size-6 shrink-0 items-center justify-center rounded-full border border-line-strong bg-raised font-mono text-[11px] text-fg-2`,children:n+1}),(0,Z.jsxs)(`div`,{className:`min-w-0 flex-1 rounded-md border border-line bg-raised px-2.5 py-2`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,Z.jsx)(V,{provider:t.provider,size:`sm`}),(0,Z.jsxs)(`span`,{className:`truncate font-mono text-[12px] text-fg`,children:[t.provider,`/`,t.model]}),i.length===0&&(0,Z.jsx)(w,{tone:`err`,className:`ml-auto`,children:`no usable account`})]}),(0,Z.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap items-center gap-x-3 gap-y-1 text-[12px] text-muted`,children:[(0,Z.jsx)(`span`,{children:t.accountId?`pinned to`:`balanced · ${C(t.provider).label}`}),r.length===0&&(0,Z.jsx)(`span`,{className:`text-faint`,children:`no matching account`}),r.map(e=>(0,Z.jsxs)(F,{to:`/accounts?account=${encodeURIComponent(e.id)}`,className:`inline-flex items-center gap-1.5 text-fg-2 hover:text-fg`,children:[(0,Z.jsx)(v,{tone:L[e.status]}),e.label,(0,Z.jsxs)(`span`,{className:`sr-only`,children:[`(`,e.status,`)`]})]},e.id))]})]})]},`${t.provider}/${t.model}/${t.accountId??``}`)})})]},e.name))}),(0,Z.jsx)(Q,{open:i&&!!e.data,onClose:()=>P(`edit`,null),routes:e.data?.routes??[],defaultRoute:m}),(0,Z.jsxs)(r,{"aria-labelledby":`usage-title`,children:[(0,Z.jsx)(a,{id:`usage-title`,title:`Use a route`,meta:`any OpenAI-compatible client`,actions:(0,Z.jsx)(H,{value:_,label:`Copy snippet`})}),(0,Z.jsx)(`pre`,{className:`overflow-x-auto p-3.5 font-mono text-[12px] leading-5 text-fg-2`,children:_})]})]})}export{ne as RoutesPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e,c as t,i as n,n as r,o as i,r as a,s as o,t as s,u as c}from"./Panel-B9tSgX6l.js";import{A as l,B as u,N as d,V as f,ft as p,j as m,o as h,pt as g,r as _,t as v}from"./Badge-B-qzNRrZ.js";import{t as y}from"./Callout-B9g_wPDi.js";import{A as b,F as x,H as S,P as C,V as w,_ as T,a as E,b as D,h as O,k,l as A,s as ee,y as j,z as M}from"./index-BMWr9EKo.js";var N={name:`arrow-down-to-line`,size:24,node:[[`path`,{d:`M12 17V3`,key:`1cwfxf`}],[`path`,{d:`m6 11 6 6 6-6`,key:`12ii2o`}],[`path`,{d:`M19 21H5`,key:`150jfl`}]]};N.node;var P=i(N),F={name:`eraser`,size:24,node:[[`path`,{d:`M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21`,key:`g5wo59`}],[`path`,{d:`m5.082 11.09 8.828 8.828`,key:`1wx5vj`}]]};F.node;var I=i(F),L={name:`rotate-ccw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]};L.node;var R=i(L),z={name:`text-wrap`,size:24,node:[[`path`,{d:`m16 16-3 3 3 3`,key:`117b85`}],[`path`,{d:`M3 12h14.5a1 1 0 0 1 0 7H13`,key:`18xa6z`}],[`path`,{d:`M3 19h6`,key:`1ygdsz`}],[`path`,{d:`M3 5h18`,key:`1u36vt`}]],aliases:[`wrap-text`]};z.node;var B=i(z),V=c(t(),1),H=o(),U=[`debug`,`info`,`warn`,`error`],W={debug:`text-muted`,info:`text-info`,warn:`text-warn`,error:`text-err`};function G(e){return e.level===`error`?`text-err`:e.level===`warn`?`text-warn`:e.message.startsWith(`$ `)?`text-fg`:e.message.startsWith(`✓`)?`text-ok`:e.message.startsWith(`→`)?`text-info`:e.level===`debug`?`text-muted`:`text-fg-2`}function K({lines:t,onClear:n,className:r}){let[i,a]=(0,V.useState)(()=>new Set([`info`,`warn`,`error`])),[o,s]=(0,V.useState)(`runner`),[c,l]=(0,V.useState)(``),[u,d]=(0,V.useState)(!0),[f,p]=(0,V.useState)(!0),m=(0,V.useRef)(null),h=(0,V.useMemo)(()=>{let e={debug:0,info:0,warn:0,error:0};for(let n of t)(o===`all`||n.source===`runner`)&&(e[n.level]+=1);return e},[t,o]),g=c.trim().toLowerCase(),v=(0,V.useMemo)(()=>t.filter(e=>i.has(e.level)&&(o===`all`||e.source===`runner`)&&(!g||e.message.toLowerCase().includes(g)||(e.taskId??e.scope??``).includes(g))),[t,i,o,g]);(0,V.useLayoutEffect)(()=>{let e=m.current;e&&f&&(e.scrollTop=e.scrollHeight)},[v,f]),(0,V.useEffect)(()=>{let e=m.current;if(!e)return;let t=()=>{let t=e.scrollHeight-e.scrollTop-e.clientHeight<24;p(t)};return e.addEventListener(`scroll`,t,{passive:!0}),()=>e.removeEventListener(`scroll`,t)},[]);let y=e=>a(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n});return(0,H.jsxs)(`section`,{"aria-label":`Runner log`,className:e(`term flex min-h-0 flex-col overflow-hidden rounded-lg border border-line bg-term`,r),children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 border-b border-line px-3 py-2`,children:[(0,H.jsxs)(`fieldset`,{className:`flex items-center gap-1`,children:[(0,H.jsx)(`legend`,{className:`sr-only`,children:`Log levels`}),U.map(t=>(0,H.jsxs)(`button`,{type:`button`,"aria-pressed":i.has(t),onClick:()=>y(t),className:e(`inline-flex h-6 items-center gap-1.5 rounded border px-2 font-mono text-2xs uppercase transition-colors duration-150`,i.has(t)?`border-line-strong bg-hover text-fg`:`border-transparent text-faint hover:text-muted`),children:[(0,H.jsx)(`span`,{"aria-hidden":!0,className:e(`size-1.5 rounded-full bg-current`,i.has(t)&&W[t])}),t,(0,H.jsx)(`span`,{className:`tnum text-muted`,children:h[t]})]},t))]}),(0,H.jsx)(`span`,{"aria-hidden":!0,className:`h-4 w-px bg-line-strong`}),(0,H.jsxs)(`fieldset`,{className:`flex items-center gap-1`,children:[(0,H.jsx)(`legend`,{className:`sr-only`,children:`Log source`}),[`runner`,`all`].map(t=>(0,H.jsx)(`button`,{type:`button`,"aria-pressed":o===t,onClick:()=>s(t),className:e(`h-6 rounded px-2 text-[12px] transition-colors duration-150`,o===t?`bg-hover text-fg`:`text-muted hover:text-fg-2`),children:t===`runner`?`Runner`:`All logs`},t))]}),(0,H.jsxs)(`div`,{className:`ml-auto flex items-center gap-1`,children:[(0,H.jsxs)(`div`,{className:`relative`,children:[(0,H.jsx)(b,{"aria-hidden":!0,className:`pointer-events-none absolute top-1/2 left-2 size-3 -translate-y-1/2 text-muted`,strokeWidth:1.75}),(0,H.jsx)(`input`,{type:`search`,"aria-label":`Filter log lines`,placeholder:`Filter`,value:c,onChange:e=>l(e.target.value),className:`h-6 w-32 rounded border border-line-strong bg-transparent pr-2 pl-6 font-mono text-[11px] text-fg placeholder:text-faint focus-visible:border-accent focus-visible:outline-none`,"data-filter-input":!0})]}),(0,H.jsx)(`button`,{type:`button`,"aria-pressed":u,onClick:()=>d(e=>!e),"aria-label":`Wrap long lines`,title:`Wrap long lines`,className:e(`inline-flex size-6 items-center justify-center rounded`,u?`bg-hover text-fg`:`text-muted hover:text-fg`),children:(0,H.jsx)(B,{"aria-hidden":!0,className:`size-3.5`,strokeWidth:1.75})}),(0,H.jsx)(`button`,{type:`button`,onClick:n,"aria-label":`Clear console`,title:`Clear console`,className:`inline-flex size-6 items-center justify-center rounded text-muted hover:bg-hover hover:text-fg`,children:(0,H.jsx)(I,{"aria-hidden":!0,className:`size-3.5`,strokeWidth:1.75})})]})]}),(0,H.jsxs)(`div`,{className:`relative min-h-0 flex-1`,children:[(0,H.jsx)(`div`,{ref:m,role:`log`,"aria-live":`off`,"aria-label":`Log lines`,tabIndex:0,className:`absolute inset-0 overflow-auto py-2 font-mono text-[12px] leading-[1.6]`,children:v.length===0?(0,H.jsx)(`p`,{className:`px-3 text-muted`,children:t.length===0?`Waiting for runner output…`:`No lines match the filters.`}):v.map(t=>(0,H.jsxs)(`div`,{className:e(`flex gap-3 px-3 hover:bg-hover/60`,u?`whitespace-pre-wrap break-words`:`whitespace-pre`,t.level===`error`&&`bg-err/[0.06]`),children:[(0,H.jsx)(`span`,{className:`tnum shrink-0 text-faint select-none`,children:_(t.ts,!0)}),(0,H.jsx)(`span`,{className:e(`w-10 shrink-0 uppercase select-none`,W[t.level]),children:t.level}),o===`all`&&(0,H.jsx)(`span`,{className:`w-16 shrink-0 truncate text-muted`,children:t.source===`runner`?`runner`:t.scope}),(0,H.jsx)(`span`,{className:e(`min-w-0`,G(t)),children:t.message})]},t.key))}),!f&&(0,H.jsxs)(`button`,{type:`button`,onClick:()=>{let e=m.current;e&&(e.scrollTop=e.scrollHeight),p(!0)},className:`absolute right-4 bottom-3 inline-flex animate-pop-in items-center gap-1.5 rounded-md border border-line-strong bg-raised px-2.5 py-1 text-[12px] text-fg shadow-overlay`,children:[(0,H.jsx)(P,{"aria-hidden":!0,className:`size-3.5`,strokeWidth:1.75}),`Jump to latest`]})]}),(0,H.jsx)(`p`,{className:`sr-only`,"aria-live":`polite`,children:f?``:`Autoscroll paused.`})]})}var q=[`idle`,`selecting`,`preparing`,`implementing`,`validating`,`repairing`,`merging`],J={idle:`Waiting for work`,selecting:`Picking the next unblocked task`,preparing:`Creating the task branch and loading the brain`,implementing:`Writing code through the gateway`,validating:`Running lint, typecheck and tests`,repairing:`Feeding failures back for another attempt`,merging:`Merging the task branch`,paused:`Paused; resumes at the same step`,stopped:`Stopped`,error:`Stopped on an error`},Y={idle:`neutral`,selecting:`info`,preparing:`info`,implementing:`info`,validating:`info`,repairing:`warn`,merging:`ok`,paused:`warn`,stopped:`neutral`,error:`err`},X=3;function Z(){let t=l(),i=d(),o=f(),{live:c}=u(),_=m(),b=T(1e3),[N,P]=(0,V.useState)(!1),F=g(t.error)&&t.error.status===501,I=F?void 0:t.data,L=I?.state,z=i.data?.graph.tasks.find(e=>e.id===I?.taskId),B=(0,V.useMemo)(()=>{if(!F){if(L&&q.includes(L))return L;for(let e=o.events.length-1;e>=0;e--){let t=o.events[e];if(t?.type===`runner.status`&&q.includes(t.status.state))return t.status.state}}},[F,L,o.events]),U=async e=>{try{let t=await _.mutateAsync(e);j({tone:`info`,title:`Runner ${t.state}`,description:J[t.state]})}catch(t){j({tone:`err`,title:`Could not ${e} the runner`,description:g(t)&&t.code===`runner_unavailable`?`This gateway was started without the autonomous runner.`:p(t)})}},W=L!==void 0&&![`idle`,`paused`,`stopped`,`error`].includes(L),G=!F&&(L===`idle`||L===`paused`||L===`stopped`||L===`error`),Z=I?.startedAt?(b-Date.parse(I.startedAt))/1e3:void 0,Q=I?.repairCycle??0,te=i.data?.graph.tasks.filter(e=>e.status===`SUCCESS`).length??0,$=i.data?.graph.tasks.length??0;return(0,H.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,H.jsx)(s,{title:`Runner`,description:`The autonomous engineer: one task at a time, on its own branch, merged only when checks pass.`,actions:(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(n,{variant:`primary`,icon:C,disabled:!G||_.isPending,loading:_.isPending&&_.variables===`start`,onClick:()=>U(`start`),children:L===`paused`?`Resume`:`Start`}),(0,H.jsx)(n,{icon:x,disabled:F||!W||_.isPending,loading:_.isPending&&_.variables===`pause`,onClick:()=>U(`pause`),children:`Pause`}),(0,H.jsx)(n,{variant:`danger`,icon:k,disabled:F||L===`stopped`||L===`idle`||L===void 0||_.isPending,onClick:()=>P(!0),children:`Stop`})]})}),F&&(0,H.jsxs)(y,{tone:`warn`,title:`Runner unavailable`,children:[(0,H.jsxs)(`p`,{children:[`This gateway answered `,(0,H.jsx)(`code`,{className:`font-mono text-fg`,children:`501 runner_unavailable`}),`: it is running without the autonomous engine. Routing and the dashboard keep working; start the runner from a project directory to drive the task graph:`]}),(0,H.jsx)(A,{command:`davecode run`,className:`mt-2 max-w-sm`})]}),t.isError&&!F&&(0,H.jsx)(y,{tone:`err`,title:`Could not read the runner status`,children:p(t.error)}),(0,H.jsxs)(r,{"aria-labelledby":`machine-title`,children:[(0,H.jsx)(a,{id:`machine-title`,title:`State machine`,meta:L?J[L]:void 0,actions:L&&(0,H.jsx)(v,{tone:Y[L],dot:!0,pulse:W,children:L})}),(0,H.jsxs)(`div`,{className:`p-4`,children:[t.isPending?(0,H.jsx)(E,{className:`h-16 w-full`}):(0,H.jsx)(`ol`,{className:`flex flex-wrap items-center gap-y-3`,"aria-label":`Runner pipeline`,children:q.map((t,n)=>{let r=t===B,i=r&&W,a=B?q.indexOf(B):-1,o=a>0&&n>0&&n<a&&(t!==`repairing`||Q!==0);return(0,H.jsxs)(`li`,{className:`flex items-center`,"aria-current":r?`step`:void 0,children:[n>0&&(0,H.jsx)(`span`,{"aria-hidden":!0,className:e(`mx-1.5 h-px w-4 sm:w-6`,o||r?`bg-fg-2/50`:`bg-line-strong`)}),(0,H.jsxs)(`span`,{className:e(`inline-flex h-7 items-center gap-1.5 rounded-full border px-3 font-mono text-[12px] transition-colors duration-200`,r?L===`paused`||L===`stopped`||t===`repairing`?`border-warn/50 bg-warn-soft text-warn`:`border-accent/60 bg-accent-soft text-accent-text shadow-[0_0_0_3px_var(--dc-accent-soft)]`:o?`border-line-strong text-fg-2`:`border-line text-faint`),children:[o&&(0,H.jsx)(w,{"aria-hidden":!0,className:`size-3`,strokeWidth:2.25}),t===`repairing`&&!o&&(0,H.jsx)(R,{"aria-hidden":!0,className:`size-3`,strokeWidth:2}),i&&(0,H.jsx)(`span`,{"aria-hidden":!0,className:`size-1.5 animate-pulse-dot rounded-full bg-current`}),t,r&&(0,H.jsxs)(`span`,{className:`sr-only`,children:[` (current`,L===t?``:`, ${L}`,`)`]})]})]},t)})}),(0,H.jsxs)(`p`,{className:`mt-3 text-[12px] text-muted`,children:[(0,H.jsx)(R,{"aria-hidden":!0,className:`mr-1 inline size-3 align-[-2px]`,strokeWidth:2}),`Failed validation loops `,(0,H.jsx)(`span`,{className:`font-mono`,children:`repairing → implementing`}),` up to `,X,` times; then the task is marked FAILED and the runner moves on.`]})]})]}),(0,H.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 xl:grid-cols-[minmax(0,1fr)_340px]`,children:[(0,H.jsxs)(r,{"aria-labelledby":`current-title`,className:`xl:order-2 xl:self-start`,children:[(0,H.jsx)(a,{id:`current-title`,title:`Current task`,meta:$?`${te}/${$} tasks done`:void 0}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-3 p-4`,children:[t.isPending?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(E,{className:`h-4 w-40`}),(0,H.jsx)(E,{className:`h-4 w-56`})]}):z?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(D,{to:`/tasks?task=${encodeURIComponent(z.id)}`,className:`font-mono text-2xs text-muted hover:text-fg`,children:z.id}),(0,H.jsx)(`p`,{className:`text-[13px] leading-5 font-medium text-fg`,children:z.title})]}),(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,H.jsx)(O,{status:z.status}),z.attempts!==void 0&&(0,H.jsxs)(v,{mono:!0,children:[`attempt `,z.attempts]})]}),(0,H.jsxs)(`p`,{className:`flex items-center gap-1.5 font-mono text-[12px] text-fg-2`,children:[(0,H.jsx)(M,{"aria-hidden":!0,className:`size-3.5 text-muted`,strokeWidth:1.75}),z.branch??`davecode/task-${z.id}`]}),(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-3 text-[12px]`,children:[(0,H.jsx)(`span`,{className:`text-muted`,children:`Repair cycle`}),(0,H.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`flex gap-1`,"aria-hidden":!0,children:Array.from({length:X},(t,n)=>(0,H.jsx)(`span`,{className:e(`h-1.5 w-5 rounded-full`,n<Q?`bg-warn`:`bg-track`)},n))}),(0,H.jsxs)(`span`,{className:`tnum font-mono text-fg`,children:[Q,`/`,X]})]})]}),Z!==void 0&&(0,H.jsxs)(`div`,{className:`flex items-center justify-between text-[12px]`,children:[(0,H.jsx)(`span`,{className:`text-muted`,children:`Running for`}),(0,H.jsx)(`span`,{className:`tnum font-mono text-fg`,children:h(Z)})]})]}):(0,H.jsxs)(`div`,{className:`flex items-center gap-2.5 text-[12px] text-muted`,children:[(0,H.jsx)(S,{"aria-hidden":!0,className:`size-4`,strokeWidth:1.5}),F?`No runner attached to this gateway.`:`No task in progress.`]}),I?.lastError&&(0,H.jsx)(`p`,{className:`rounded-md border border-err/30 bg-err-soft p-2 font-mono text-2xs text-err`,children:I.lastError})]})]}),(0,H.jsx)(K,{lines:o.logs,onClear:()=>c.clearLogs(),className:`h-[480px] xl:order-1`})]}),(0,H.jsx)(ee,{open:N,onClose:()=>P(!1),title:`Stop the runner?`,description:`The current step is abandoned. Work done so far stays on the task branch.`,footer:(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(n,{variant:`ghost`,onClick:()=>P(!1),children:`Keep running`}),(0,H.jsx)(n,{variant:`danger`,icon:k,onClick:()=>{P(!1),U(`stop`)},children:`Stop runner`})]}),children:z&&(0,H.jsx)(`p`,{className:`font-mono text-[12px] text-muted`,children:z.id})})]})}export{Z as Runner};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as e,i as t,n,o as r,r as i,s as a,t as o,u as s}from"./Panel-B9tSgX6l.js";import{B as c,E as l,dt as u,ft as d,gt as f,o as p,t as m,vt as h,yt as g}from"./Badge-B-qzNRrZ.js";import{i as _,n as v}from"./forms-D6UIYgC5.js";import{t as y}from"./Callout-B9g_wPDi.js";import{I as b,L as x,O as S,U as C,t as w,v as T,y as E}from"./index-BMWr9EKo.js";import{n as D,t as O}from"./Field-BfabPEcY.js";var k={name:`external-link`,size:24,node:[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]};k.node;var A=r(k),j={name:`monitor`,size:24,node:[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]};j.node;var M=r(j),N={name:`plug-zap`,size:24,node:[[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m18 3-4 4h6l-4 4`,key:`16psg9`}]],aliases:[`plug-zap-2`]};N.node;var P=r(N),F=s(e(),1),I=a(),L=`https://github.com/DMRLZZ/DaveCode`;function R(){let e=g(),r=l(),{connection:a}=c(),[s,k]=(0,F.useState)(e.gatewayUrl),[j,N]=(0,F.useState)(e.token),[R,z]=(0,F.useState)(null),[B,V]=(0,F.useState)(!1),[H,U]=(0,F.useState)(null),W=()=>{let e=s.trim();return e&&!_(e)?`Enter an http(s) origin such as http://127.0.0.1:4040, or leave empty.`:null},G=e=>{e.preventDefault();let t=W();z(t),!t&&(h({gatewayUrl:s.trim().replace(/\/+$/,``),token:j.trim()}),E({tone:`ok`,title:`Connection settings saved`,description:`Stored in this browser only.`}))},K=async()=>{let e=W();if(z(e),!e){V(!0),U(null);try{let e=await u({baseUrl:s.trim(),token:j.trim()}).health();U({ok:!0,text:`Connected: DaveCode ${e.version}, ${e.status}, up ${p(e.uptimeSec)}.`})}catch(e){U({ok:!1,text:d(e)})}finally{V(!1)}}},q=f();return(0,I.jsxs)(`div`,{className:`flex max-w-3xl flex-col gap-4`,children:[(0,I.jsx)(o,{title:`Settings`,description:`Preferences are stored in this browser's localStorage.`}),(0,I.jsxs)(n,{"aria-labelledby":`conn-title`,children:[(0,I.jsx)(i,{id:`conn-title`,title:`Gateway connection`}),(0,I.jsxs)(`form`,{onSubmit:G,noValidate:!0,className:`flex flex-col gap-4 p-4`,children:[(0,I.jsx)(O,{label:`Gateway URL`,error:R,hint:`Leave empty when the dashboard is served by the gateway or the Vite dev proxy (same origin).`,children:({id:e,describedBy:t,invalid:n})=>(0,I.jsx)(D,{id:e,type:`url`,value:s,placeholder:`same origin`,onChange:e=>k(e.target.value),"aria-describedby":t,"aria-invalid":n||void 0,className:`font-mono`})}),(0,I.jsx)(O,{label:`Bearer token`,hint:`Needed when server.authToken is set. Sent as Authorization: Bearer, and as ?token= for the event stream.`,children:({id:e,describedBy:t})=>(0,I.jsx)(v,{id:e,value:j,onChange:N,placeholder:`not set`,describedBy:t})}),H&&(0,I.jsx)(y,{tone:H.ok?`info`:`err`,title:H.ok?`Gateway reachable`:`Connection failed`,children:H.text}),(0,I.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,I.jsx)(t,{type:`submit`,variant:`primary`,children:`Save`}),(0,I.jsx)(t,{icon:P,onClick:K,loading:B,children:`Test connection`}),a.unauthorized&&(0,I.jsx)(m,{tone:`err`,children:`gateway returned 401`})]})]})]}),(0,I.jsxs)(n,{"aria-labelledby":`data-title`,children:[(0,I.jsx)(i,{id:`data-title`,title:`Data source`}),(0,I.jsxs)(`div`,{className:`flex flex-col gap-3 p-4`,children:[(0,I.jsx)(w,{label:`Data source`,value:e.dataMode,onChange:e=>h({dataMode:e}),options:[{value:`auto`,label:`Auto`},{value:`live`,label:`Live only`},{value:`mock`,label:`Mock data`}]}),(0,I.jsxs)(`p`,{className:`text-[12px] leading-5 text-muted`,children:[(0,I.jsx)(`strong`,{className:`font-medium text-fg-2`,children:`Auto`}),` uses the gateway and falls back to simulated data when it is unreachable, re-checking every 15 s.`,` `,(0,I.jsx)(`strong`,{className:`font-medium text-fg-2`,children:`Mock data`}),` always simulates a busy gateway, handy for demos and screenshots.`]}),q&&(0,I.jsxs)(y,{tone:`info`,children:[`Mock mode is currently forced by `,(0,I.jsx)(`code`,{className:`font-mono`,children:`?mock=1`}),` or`,` `,(0,I.jsx)(`code`,{className:`font-mono`,children:`VITE_DAVECODE_MOCK=1`}),`; this setting applies once that is removed.`]})]})]}),(0,I.jsxs)(n,{"aria-labelledby":`look-title`,children:[(0,I.jsx)(i,{id:`look-title`,title:`Appearance`}),(0,I.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3 p-4`,children:[(0,I.jsx)(w,{label:`Theme`,value:e.theme,onChange:e=>h({theme:e}),options:[{value:`dark`,label:`Dark`,icon:b},{value:`light`,label:`Light`,icon:S},{value:`system`,label:`System`,icon:M}]}),(0,I.jsx)(t,{variant:`ghost`,icon:x,onClick:T.openHelp,children:`Keyboard shortcuts`})]})]}),(0,I.jsxs)(n,{"aria-labelledby":`about-title`,children:[(0,I.jsx)(i,{id:`about-title`,title:`About`}),(0,I.jsxs)(`div`,{className:`flex flex-col gap-3 p-4 text-[13px]`,children:[(0,I.jsxs)(`dl`,{className:`grid grid-cols-[120px_1fr] gap-y-1.5`,children:[(0,I.jsx)(`dt`,{className:`text-muted`,children:`Gateway`}),(0,I.jsx)(`dd`,{className:`font-mono text-fg-2`,children:r.data?`v${r.data.version} · ${r.data.status}`:a.mode===`probing`?`checking…`:`unreachable`}),(0,I.jsx)(`dt`,{className:`text-muted`,children:`Data`}),(0,I.jsx)(`dd`,{className:`text-fg-2`,children:a.mode===`mock`?`Simulated (mock mode)`:`Live gateway`}),(0,I.jsx)(`dt`,{className:`text-muted`,children:`Experimental`}),(0,I.jsxs)(`dd`,{className:`flex flex-wrap gap-1.5`,children:[(0,I.jsxs)(m,{tone:r.data?.experimental.geminiWeb?`warn`:`neutral`,mono:!0,children:[`geminiWeb `,r.data?.experimental.geminiWeb?`on`:`off`]}),(0,I.jsxs)(m,{tone:r.data?.experimental.multiAccountRotation?`warn`:`neutral`,mono:!0,children:[`multiAccountRotation `,r.data?.experimental.multiAccountRotation?`on`:`off`]})]})]}),(0,I.jsx)(`ul`,{className:`flex flex-wrap gap-2`,children:[[`README`,`${L}#readme`],[`Architecture`,`${L}/blob/main/docs/ARCHITECTURE.md`],[`HTTP API`,`${L}/blob/main/docs/API.md`]].map(([e,t])=>(0,I.jsx)(`li`,{children:(0,I.jsxs)(`a`,{href:t,target:`_blank`,rel:`noreferrer`,className:`inline-flex h-7 items-center gap-1.5 rounded-md border border-line px-2.5 text-[12px] text-fg-2 transition-colors duration-150 hover:border-line-strong hover:text-fg`,children:[(0,I.jsx)(C,{"aria-hidden":!0,className:`size-3.5`,strokeWidth:1.75}),e,(0,I.jsx)(A,{"aria-hidden":!0,className:`size-3 text-muted`,strokeWidth:1.75}),(0,I.jsx)(`span`,{className:`sr-only`,children:`(opens in a new tab)`})]})},e))})]})]})]})}export{R as Settings};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e,o as t,s as n}from"./Panel-B9tSgX6l.js";var r={name:`chevron-right`,size:24,node:[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]};r.node;var i=t(r),a=n();function o({checked:t,onChange:n,label:r,disabled:i,className:o}){return(0,a.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":t,"aria-label":r,disabled:i,onClick:e=>{e.stopPropagation(),n(!t)},className:e(`relative inline-flex h-[18px] w-8 shrink-0 items-center rounded-full border transition-colors duration-150 ease-snappy`,t?`border-accent bg-accent`:`border-line-strong bg-track`,`disabled:cursor-not-allowed disabled:opacity-45`,o),children:(0,a.jsx)(`span`,{"aria-hidden":!0,className:e(`inline-block size-3 rounded-full shadow-sm transition-transform duration-150 ease-snappy`,t?`translate-x-[15px] bg-accent-fg`:`translate-x-[2px] bg-fg-2`)})})}export{i as n,o as t};
|