opencode-navigator 0.27.2 → 0.27.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/HOST_API.md +10 -0
- package/README.md +19 -3
- package/dist/gui-experimental.cjs +2657 -2317
- package/dist/provider-limits.js +299 -203
- package/dist/tui.js +75 -66
- package/package.json +1 -1
package/dist/provider-limits.js
CHANGED
|
@@ -134,6 +134,26 @@ return{...balance}})
|
|
|
134
134
|
if(bankedResets&&(!Number.isSafeInteger(bankedResets.availableCount)||bankedResets.availableCount<0)){throw new Error("Invalid banked reset count")
|
|
135
135
|
}
|
|
136
136
|
return{...snapshot,windows,...balances&&{balances},...bankedResets&&{bankedResets:{availableCount:bankedResets.availableCount,...bankedResets.credits&&{credits:[...bankedResets.credits]}}}}}
|
|
137
|
+
function remainingLabel(seconds){if(seconds===0)
|
|
138
|
+
return "Expired"
|
|
139
|
+
if(seconds<60)
|
|
140
|
+
return "Expires in less than a minute"
|
|
141
|
+
for(const [unit,duration] of [["day",86400],["hour",3600],["minute",60]]){if(seconds<duration)
|
|
142
|
+
continue
|
|
143
|
+
const count=Math.ceil(seconds / duration)
|
|
144
|
+
return `Expires in ${count} ${unit}${count === 1 ? "" : "s"}`
|
|
145
|
+
}
|
|
146
|
+
return "Expiry not supplied by the provider"
|
|
147
|
+
}
|
|
148
|
+
function resetCreditLifetime(credit,now){const expiry=credit.expiresAt
|
|
149
|
+
if(expiry===undefined)
|
|
150
|
+
return{label:"Expiry not supplied by the provider",remaining:undefined,expired:false}
|
|
151
|
+
if(!Number.isFinite(expiry)||expiry<=0||!Number.isFinite(new Date(expiry*1000).getTime()))
|
|
152
|
+
return{label:"Expiry date is invalid",remaining:undefined,expired:false}
|
|
153
|
+
const seconds=Math.max(0,expiry-now / 1000)
|
|
154
|
+
const lifetime=expiry-credit.grantedAt
|
|
155
|
+
const remaining=Number.isFinite(credit.grantedAt)&&credit.grantedAt>=0&&lifetime>0?Math.max(0,Math.min(1,seconds / lifetime)):undefined
|
|
156
|
+
return{label:remainingLabel(seconds),remaining,expired:seconds===0}}
|
|
137
157
|
var CHATGPT_METHODS=new Set(["chatgpt-browser","chatgpt-headless"])
|
|
138
158
|
function providerAccountIdentity(provider,credentials){if(!provider.integrationID||provider.activation==="disabled")
|
|
139
159
|
return{status:"unsupported"}
|
|
@@ -528,8 +548,8 @@ return _p$
|
|
|
528
548
|
return _el$
|
|
529
549
|
})()
|
|
530
550
|
}
|
|
531
|
-
import {createComponent as _$
|
|
532
|
-
import {createEffect} from "solid-js"
|
|
551
|
+
import {createComponent as _$createComponent4} from "@opentui/solid"
|
|
552
|
+
import {Show as Show2,createEffect,createSignal as createSignal6,onCleanup} from "solid-js"
|
|
533
553
|
import {SelectionMenu,useDialogs} from "./tui.js"
|
|
534
554
|
import {createComponent as _$createComponent2} from "@opentui/solid"
|
|
535
555
|
import {randomUUID} from "crypto"
|
|
@@ -594,6 +614,76 @@ warn(error instanceof Error?error.message:"Credit eligibility is unavailable")
|
|
|
594
614
|
}}
|
|
595
615
|
return{review,consume,busy
|
|
596
616
|
}}
|
|
617
|
+
import {createTextNode as _$createTextNode} from "@opentui/solid"
|
|
618
|
+
import {memo as _$memo} from "@opentui/solid"
|
|
619
|
+
import {createComponent as _$createComponent3} from "@opentui/solid"
|
|
620
|
+
import {effect as _$effect2} from "@opentui/solid"
|
|
621
|
+
import {insertNode as _$insertNode2} from "@opentui/solid"
|
|
622
|
+
import {insert as _$insert2} from "@opentui/solid"
|
|
623
|
+
import {setProp as _$setProp2} from "@opentui/solid"
|
|
624
|
+
import {createElement as _$createElement2} from "@opentui/solid"
|
|
625
|
+
import {Show,createSignal as createSignal5} from "solid-js"
|
|
626
|
+
import {subtleLineColor as subtleLineColor2,useIcons as useIcons2} from "./tui.js"
|
|
627
|
+
function ResetCreditExpiry(props){const icons=useIcons2()
|
|
628
|
+
const [columns,setColumns]=createSignal5(0)
|
|
629
|
+
const lifetime=()=>resetCreditLifetime(props.credit,props.now)
|
|
630
|
+
const expiry=()=>{const timestamp=props.credit.expiresAt
|
|
631
|
+
if(timestamp===undefined||timestamp<=0)
|
|
632
|
+
return
|
|
633
|
+
const date=new Date(timestamp*1000)
|
|
634
|
+
return Number.isFinite(date.getTime())?date:undefined
|
|
635
|
+
}
|
|
636
|
+
const scale=()=>{const width=Math.max(0,Math.floor(columns()))
|
|
637
|
+
const filled=Math.round((lifetime().remaining??0)*width)
|
|
638
|
+
const symbols=icons.style()==="text"?["=","-"]:["\u2501","\u2500"]
|
|
639
|
+
return{filled:symbols[0].repeat(filled),unfilled:symbols[1].repeat(width-filled)
|
|
640
|
+
}}
|
|
641
|
+
return(()=>{var _el$=_$createElement2("box"),_el$4=_$createElement2("text")
|
|
642
|
+
_$insertNode2(_el$,_el$4)
|
|
643
|
+
_$setProp2(_el$,"width","100%")
|
|
644
|
+
_$setProp2(_el$,"minWidth",0)
|
|
645
|
+
_$setProp2(_el$,"overflow","hidden")
|
|
646
|
+
_$setProp2(_el$,"onSizeChange",function(){setColumns(this.width)
|
|
647
|
+
})
|
|
648
|
+
_$insert2(_el$,_$createComponent3(Show,{get when(){return lifetime().remaining!==undefined
|
|
649
|
+
},get children(){var _el$2=_$createElement2("text"),_el$3=_$createElement2("span")
|
|
650
|
+
_$insertNode2(_el$2,_el$3)
|
|
651
|
+
_$setProp2(_el$2,"height",1)
|
|
652
|
+
_$setProp2(_el$2,"width","100%")
|
|
653
|
+
_$setProp2(_el$2,"wrapMode","none")
|
|
654
|
+
_$setProp2(_el$2,"truncate",true)
|
|
655
|
+
_$insert2(_el$2,()=>scale().filled,_el$3)
|
|
656
|
+
_$insert2(_el$3,()=>scale().unfilled)
|
|
657
|
+
_$effect2((_p$)=>{var _v$=props.api.theme.current.textMuted,_v$2={fg:subtleLineColor2(props.api.theme.current.backgroundElement,props.api.theme.current.borderSubtle)
|
|
658
|
+
}
|
|
659
|
+
_v$!==_p$.e&&(_p$.e=_$setProp2(_el$2,"fg",_v$,_p$.e))
|
|
660
|
+
_v$2!==_p$.t&&(_p$.t=_$setProp2(_el$3,"style",_v$2,_p$.t))
|
|
661
|
+
return _p$
|
|
662
|
+
},{e:undefined,t:undefined
|
|
663
|
+
})
|
|
664
|
+
return _el$2
|
|
665
|
+
}}),_el$4)
|
|
666
|
+
_$setProp2(_el$4,"wrapMode","word")
|
|
667
|
+
_$insert2(_el$4,()=>lifetime().label)
|
|
668
|
+
_$insert2(_el$,_$createComponent3(Show,{get when(){return expiry()
|
|
669
|
+
},children:(date)=>(()=>{var _el$7=_$createElement2("text")
|
|
670
|
+
_$setProp2(_el$7,"wrapMode","word")
|
|
671
|
+
_$insert2(_el$7,()=>`Expires ${date().toLocaleString()}`)
|
|
672
|
+
_$effect2((_$p)=>_$setProp2(_el$7,"fg",props.api.theme.current.textMuted,_$p))
|
|
673
|
+
return _el$7
|
|
674
|
+
})()
|
|
675
|
+
}),null)
|
|
676
|
+
_$insert2(_el$,_$createComponent3(Show,{get when(){return _$memo(()=>lifetime().remaining===undefined)()&&expiry()
|
|
677
|
+
},get children(){var _el$5=_$createElement2("text")
|
|
678
|
+
_$insertNode2(_el$5,_$createTextNode(`Grant date unavailable or invalid; progress unknown`))
|
|
679
|
+
_$setProp2(_el$5,"wrapMode","word")
|
|
680
|
+
_$effect2((_$p)=>_$setProp2(_el$5,"fg",props.api.theme.current.textMuted,_$p))
|
|
681
|
+
return _el$5
|
|
682
|
+
}}),null)
|
|
683
|
+
_$effect2((_$p)=>_$setProp2(_el$4,"fg",props.api.theme.current.textMuted,_$p))
|
|
684
|
+
return _el$
|
|
685
|
+
})()
|
|
686
|
+
}
|
|
597
687
|
function ResetCreditDialog(props){const dialogs=useDialogs(props.api)
|
|
598
688
|
const key=JSON.stringify(props.model)
|
|
599
689
|
const current=()=>JSON.stringify(props.controller.current().model)===key
|
|
@@ -601,19 +691,27 @@ const pending=props.preferences.pendingResetAttempt
|
|
|
601
691
|
const credits=()=>props.controller.snapshot()?.bankedResets
|
|
602
692
|
const actions=createResetCreditActions({...props,dialogs,current
|
|
603
693
|
})
|
|
694
|
+
const [now,setNow]=createSignal6(Date.now())
|
|
695
|
+
const timer=setInterval(()=>setNow(Date.now()),30000)
|
|
696
|
+
onCleanup(()=>clearInterval(timer))
|
|
604
697
|
createEffect(()=>{if(!current())
|
|
605
698
|
dialogs.close()
|
|
606
699
|
})
|
|
607
|
-
const options=()=>[...credits()?.credits?.map((credit)=>({title:credit.title??`Credit ${credit.id}`,value:`credit:${credit.id}`,icon:"presets",description:[credit.status,credit.description
|
|
700
|
+
const options=()=>[...credits()?.credits?.map((credit)=>({title:credit.title??`Credit ${credit.id}`,value:`credit:${credit.id}`,icon:"presets",description:[credit.status,credit.description].filter(Boolean).join(" \xB7 ")
|
|
608
701
|
}))??[],...credits()?.availableCount&&(credits()?.credits?.length??0)<credits().availableCount?[{title:"Use next available credit",value:"credit:",icon:"presets",description:"Credit details unavailable"
|
|
609
702
|
}]:[],...pending()?[{title:"Reconcile pending attempt",value:"retry",icon:"retry",description:"Reuse the previous idempotency key"
|
|
610
703
|
}]:[],{title:"Cancel",value:"cancel",icon:"close",description:"No credit is used"
|
|
611
704
|
}]
|
|
612
|
-
return _$
|
|
705
|
+
return _$createComponent4(SelectionMenu,{get api(){return props.api
|
|
613
706
|
},get title(){return `Banked resets \xB7 ${credits()?.availableCount ?? 0} available${actions.busy() ? " \xB7 pending" : ""}`
|
|
614
707
|
},get options(){return options()
|
|
615
|
-
},get height(){return Math.min(
|
|
616
|
-
},
|
|
708
|
+
},get height(){return Math.min(22,options().length*6)
|
|
709
|
+
},adaptive:true,renderDetails:(option)=>_$createComponent4(Show2,{get when(){return credits()?.credits?.find((credit)=>option.value===`credit:${credit.id}`)
|
|
710
|
+
},children:(credit)=>_$createComponent4(ResetCreditExpiry,{get api(){return props.api
|
|
711
|
+
},get credit(){return credit()
|
|
712
|
+
},get now(){return now()
|
|
713
|
+
}})
|
|
714
|
+
}),onSelect:(option)=>{if(option.value==="cancel")
|
|
617
715
|
dialogs.back()
|
|
618
716
|
else if(option.value==="retry")
|
|
619
717
|
actions.consume(pending()?.creditID)
|
|
@@ -621,56 +719,56 @@ else if(option.value.startsWith("credit:"))
|
|
|
621
719
|
actions.review(option.value.slice("credit:".length)||undefined)
|
|
622
720
|
}})
|
|
623
721
|
}
|
|
624
|
-
import {createComponent as _$
|
|
625
|
-
import {For as For2,Show} from "solid-js"
|
|
626
|
-
import {effect as _$
|
|
627
|
-
import {insertNode as _$
|
|
628
|
-
import {insert as _$
|
|
629
|
-
import {memo as _$
|
|
630
|
-
import {setProp as _$
|
|
631
|
-
import {createElement as _$
|
|
632
|
-
function QuotaBalanceRow(props){return(()=>{var _el$=_$
|
|
633
|
-
_$
|
|
634
|
-
_$
|
|
635
|
-
_$
|
|
636
|
-
_$
|
|
722
|
+
import {createComponent as _$createComponent6} from "@opentui/solid"
|
|
723
|
+
import {For as For2,Show as Show3} from "solid-js"
|
|
724
|
+
import {effect as _$effect3} from "@opentui/solid"
|
|
725
|
+
import {insertNode as _$insertNode3} from "@opentui/solid"
|
|
726
|
+
import {insert as _$insert3} from "@opentui/solid"
|
|
727
|
+
import {memo as _$memo2} from "@opentui/solid"
|
|
728
|
+
import {setProp as _$setProp3} from "@opentui/solid"
|
|
729
|
+
import {createElement as _$createElement3} from "@opentui/solid"
|
|
730
|
+
function QuotaBalanceRow(props){return(()=>{var _el$=_$createElement3("text"),_el$2=_$createElement3("span")
|
|
731
|
+
_$insertNode3(_el$,_el$2)
|
|
732
|
+
_$setProp3(_el$,"wrapMode","none")
|
|
733
|
+
_$setProp3(_el$,"truncate",true)
|
|
734
|
+
_$insert3(_el$2,(()=>{var _c$=_$memo2(()=>!!props.balance.unlimited)
|
|
637
735
|
return()=>_c$()?"No configured cap":`${props.balance.amount} ${props.balance.unit ?? "(provider unit not specified)"}`
|
|
638
736
|
})())
|
|
639
|
-
_$
|
|
640
|
-
_$
|
|
737
|
+
_$insert3(_el$,()=>` \xB7 ${props.balance.scope} \xB7 ${props.balance.label}`,null)
|
|
738
|
+
_$effect3((_p$)=>{var _v$=props.api.theme.current.textMuted,_v$2={fg:props.api.theme.current.text
|
|
641
739
|
}
|
|
642
|
-
_v$!==_p$.e&&(_p$.e=_$
|
|
643
|
-
_v$2!==_p$.t&&(_p$.t=_$
|
|
740
|
+
_v$!==_p$.e&&(_p$.e=_$setProp3(_el$,"fg",_v$,_p$.e))
|
|
741
|
+
_v$2!==_p$.t&&(_p$.t=_$setProp3(_el$2,"style",_v$2,_p$.t))
|
|
644
742
|
return _p$
|
|
645
743
|
},{e:undefined,t:undefined
|
|
646
744
|
})
|
|
647
745
|
return _el$
|
|
648
746
|
})()
|
|
649
747
|
}
|
|
650
|
-
import {insert as _$
|
|
651
|
-
import {createComponent as _$
|
|
652
|
-
import {setProp as _$
|
|
653
|
-
import {createElement as _$
|
|
748
|
+
import {insert as _$insert4} from "@opentui/solid"
|
|
749
|
+
import {createComponent as _$createComponent5} from "@opentui/solid"
|
|
750
|
+
import {setProp as _$setProp4} from "@opentui/solid"
|
|
751
|
+
import {createElement as _$createElement4} from "@opentui/solid"
|
|
654
752
|
import {For} from "solid-js"
|
|
655
|
-
function QuotaWindowGroup(props){return(()=>{var _el$=_$
|
|
656
|
-
_$
|
|
657
|
-
_$
|
|
658
|
-
_$
|
|
659
|
-
_$
|
|
660
|
-
_$
|
|
661
|
-
},children:(_,index)=>_$
|
|
753
|
+
function QuotaWindowGroup(props){return(()=>{var _el$=_$createElement4("box")
|
|
754
|
+
_$setProp4(_el$,"width","100%")
|
|
755
|
+
_$setProp4(_el$,"minWidth",0)
|
|
756
|
+
_$setProp4(_el$,"gap",1)
|
|
757
|
+
_$setProp4(_el$,"overflow","hidden")
|
|
758
|
+
_$insert4(_el$,_$createComponent5(For,{get each(){return props.windows.map((window)=>window.id)
|
|
759
|
+
},children:(_,index)=>_$createComponent5(QuotaWindowRow,{get api(){return props.api
|
|
662
760
|
},get window(){return props.windows[index()]
|
|
663
761
|
}})
|
|
664
762
|
}))
|
|
665
763
|
return _el$
|
|
666
764
|
})()
|
|
667
765
|
}
|
|
668
|
-
function QuotaSnapshotRows(props){return [_$
|
|
669
|
-
},get children(){return _$
|
|
766
|
+
function QuotaSnapshotRows(props){return [_$createComponent6(Show3,{get when(){return props.snapshot.windows.length>0
|
|
767
|
+
},get children(){return _$createComponent6(QuotaWindowGroup,{get api(){return props.api
|
|
670
768
|
},get windows(){return props.snapshot.windows
|
|
671
769
|
}})
|
|
672
|
-
}}),_$
|
|
673
|
-
},children:(balance)=>_$
|
|
770
|
+
}}),_$createComponent6(For2,{get each(){return props.snapshot.balances
|
|
771
|
+
},children:(balance)=>_$createComponent6(QuotaBalanceRow,{get api(){return props.api
|
|
674
772
|
},balance
|
|
675
773
|
})
|
|
676
774
|
})]
|
|
@@ -720,8 +818,8 @@ function providerQuotaCapability(id,canonical){const key=aliases[canonical??id]?
|
|
|
720
818
|
const found=PROVIDER_QUOTA_CAPABILITIES.find((entry)=>entry.id===key)
|
|
721
819
|
return found??{id,name:id,sources:[],reason:"No independent quota/balance API or native counter semantics are verified for this provider.",documentation:["https://opencode.ai/docs/providers/"]
|
|
722
820
|
}}
|
|
723
|
-
import {createSignal as
|
|
724
|
-
function createOpenCodeUsageAdapter(context){const [revision,setRevision]=
|
|
821
|
+
import {createSignal as createSignal7} from "solid-js"
|
|
822
|
+
function createOpenCodeUsageAdapter(context){const [revision,setRevision]=createSignal7(0)
|
|
725
823
|
let generation=0
|
|
726
824
|
const location=()=>context.location??context.data.location.default()
|
|
727
825
|
const provider=(model)=>context.data.location.provider?.list(location())?.find((item)=>item.id===model.providerID)
|
|
@@ -779,33 +877,33 @@ return{model,providerId:model.providerID,providerName:activeProvider.name,fetche
|
|
|
779
877
|
dispose()
|
|
780
878
|
}}
|
|
781
879
|
return{adapter,target:(model)=>({...model,quotaContext:key()})}}
|
|
782
|
-
import {insert as _$
|
|
880
|
+
import {insert as _$insert10} from "@opentui/solid"
|
|
783
881
|
import {mergeProps as _$mergeProps} from "@opentui/solid"
|
|
784
|
-
import {setProp as _$
|
|
785
|
-
import {effect as _$
|
|
786
|
-
import {createTextNode as _$
|
|
787
|
-
import {insertNode as _$
|
|
788
|
-
import {createElement as _$
|
|
789
|
-
import {memo as _$
|
|
790
|
-
import {createComponent as _$
|
|
791
|
-
import {Show as
|
|
882
|
+
import {setProp as _$setProp11} from "@opentui/solid"
|
|
883
|
+
import {effect as _$effect10} from "@opentui/solid"
|
|
884
|
+
import {createTextNode as _$createTextNode5} from "@opentui/solid"
|
|
885
|
+
import {insertNode as _$insertNode7} from "@opentui/solid"
|
|
886
|
+
import {createElement as _$createElement11} from "@opentui/solid"
|
|
887
|
+
import {memo as _$memo8} from "@opentui/solid"
|
|
888
|
+
import {createComponent as _$createComponent14} from "@opentui/solid"
|
|
889
|
+
import {Show as Show9} from "solid-js"
|
|
792
890
|
import {useDialogs as useDialogs3} from "./tui.js"
|
|
793
|
-
import {setProp as _$
|
|
891
|
+
import {setProp as _$setProp6} from "@opentui/solid"
|
|
892
|
+
import {effect as _$effect5} from "@opentui/solid"
|
|
893
|
+
import {createTextNode as _$createTextNode2} from "@opentui/solid"
|
|
894
|
+
import {insertNode as _$insertNode4} from "@opentui/solid"
|
|
895
|
+
import {createElement as _$createElement6} from "@opentui/solid"
|
|
896
|
+
import {memo as _$memo3} from "@opentui/solid"
|
|
897
|
+
import {createComponent as _$createComponent8} from "@opentui/solid"
|
|
898
|
+
import {Show as Show4} from "solid-js"
|
|
899
|
+
import {useDialogs as useDialogs2,useIcons as useIcons3} from "./tui.js"
|
|
900
|
+
import {createComponent as _$createComponent7} from "@opentui/solid"
|
|
794
901
|
import {effect as _$effect4} from "@opentui/solid"
|
|
795
|
-
import {
|
|
796
|
-
import {
|
|
902
|
+
import {insert as _$insert5} from "@opentui/solid"
|
|
903
|
+
import {setProp as _$setProp5} from "@opentui/solid"
|
|
797
904
|
import {createElement as _$createElement5} from "@opentui/solid"
|
|
798
|
-
import {memo as _$memo2} from "@opentui/solid"
|
|
799
|
-
import {createComponent as _$createComponent7} from "@opentui/solid"
|
|
800
|
-
import {Show as Show2} from "solid-js"
|
|
801
|
-
import {useDialogs as useDialogs2,useIcons as useIcons2} from "./tui.js"
|
|
802
|
-
import {createComponent as _$createComponent6} from "@opentui/solid"
|
|
803
|
-
import {effect as _$effect3} from "@opentui/solid"
|
|
804
|
-
import {insert as _$insert4} from "@opentui/solid"
|
|
805
|
-
import {setProp as _$setProp4} from "@opentui/solid"
|
|
806
|
-
import {createElement as _$createElement4} from "@opentui/solid"
|
|
807
905
|
import {SelectionBox} from "./tui.js"
|
|
808
|
-
import {createSignal as
|
|
906
|
+
import {createSignal as createSignal8,onCleanup as onCleanup2} from "solid-js"
|
|
809
907
|
function sidebarInteractiveColors(theme,state,normalColor=theme.text,mode="row"){const highlighted=!state.disabled&&(state.focused||mode==="control"&&state.hovered)
|
|
810
908
|
let backgroundColor=theme.backgroundPanel
|
|
811
909
|
let foregroundColor=normalColor
|
|
@@ -821,14 +919,14 @@ else if(highlighted)
|
|
|
821
919
|
foregroundColor=theme.selectedListItemText
|
|
822
920
|
return{backgroundColor,foregroundColor}}
|
|
823
921
|
function useSidebarItem(api,interaction,descriptor,normalColor=()=>api.theme.current.text,mode="row"){let unregister
|
|
824
|
-
const [hovered,setHovered]=
|
|
922
|
+
const [hovered,setHovered]=createSignal8(false)
|
|
825
923
|
const disabled=()=>descriptor.disabled?.()===true
|
|
826
924
|
const focused=()=>Boolean(interaction?.ownsFocus()&&interaction.isSelected(descriptor.id))
|
|
827
925
|
const colors=()=>sidebarInteractiveColors(api.theme.current,{focused:focused(),hovered:hovered(),disabled:disabled()},normalColor(),mode)
|
|
828
926
|
const ref=(renderable)=>{unregister?.()
|
|
829
927
|
unregister=interaction?.register({...descriptor,renderable})
|
|
830
928
|
}
|
|
831
|
-
|
|
929
|
+
onCleanup2(()=>unregister?.())
|
|
832
930
|
return{ref,disabled,focused,backgroundColor:()=>colors().backgroundColor,foregroundColor:()=>colors().foregroundColor,onMouseOver:()=>setHovered(true),onMouseOut:()=>setHovered(false),select(event){interaction?.mouseSelect(descriptor.id,event)
|
|
833
931
|
},activate(event){if(interaction)
|
|
834
932
|
return interaction.mouseActivate(descriptor.id,event)
|
|
@@ -839,7 +937,7 @@ return true
|
|
|
839
937
|
}}}
|
|
840
938
|
function LimitsAction(props){const item=useSidebarItem(props.api,props.interaction,{id:props.id,position:()=>props.position,disabled:()=>props.disabled===true,activate:props.onActivate
|
|
841
939
|
},()=>props.api.theme.current.text,props.inline?"control":"row")
|
|
842
|
-
return _$
|
|
940
|
+
return _$createComponent7(SelectionBox,{ref:(node)=>item.ref(node),get id(){return props.id
|
|
843
941
|
},height:1,get flexGrow(){return props.flexGrow
|
|
844
942
|
},get maxWidth(){return props.maxWidth
|
|
845
943
|
},flexShrink:1,minWidth:3,get backgroundColor(){return item.backgroundColor()
|
|
@@ -847,48 +945,48 @@ return _$createComponent6(SelectionBox,{ref:(node)=>item.ref(node),get id(){retu
|
|
|
847
945
|
},get onMouseOut(){return item.onMouseOut
|
|
848
946
|
},onMouseUp:(event)=>{event.stopPropagation()
|
|
849
947
|
item.activate(event)
|
|
850
|
-
},get children(){var _el$=_$
|
|
851
|
-
_$
|
|
852
|
-
_$
|
|
853
|
-
_$
|
|
854
|
-
_$
|
|
948
|
+
},get children(){var _el$=_$createElement5("text")
|
|
949
|
+
_$setProp5(_el$,"wrapMode","none")
|
|
950
|
+
_$setProp5(_el$,"truncate",true)
|
|
951
|
+
_$insert5(_el$,()=>props.label)
|
|
952
|
+
_$effect4((_$p)=>_$setProp5(_el$,"fg",item.foregroundColor(),_$p))
|
|
855
953
|
return _el$
|
|
856
954
|
}})
|
|
857
955
|
}
|
|
858
|
-
function CodexAccountControls(props){const icons=
|
|
956
|
+
function CodexAccountControls(props){const icons=useIcons3()
|
|
859
957
|
const model=()=>props.controller.current().model
|
|
860
958
|
const accountLink=createCodexAccountLink({api:props.api,preferences:props.preferences,adapter:props.codex,model,dialogs:useDialogs2(props.api)
|
|
861
959
|
})
|
|
862
960
|
const eligible=()=>(props.model.providerID==="openai"||props.model.hostConnection?.providerID==="openai")&&props.model.hostConnection?.method!=="api"
|
|
863
|
-
const action=(id,row,label,onActivate)=>_$
|
|
961
|
+
const action=(id,row,label,onActivate)=>_$createComponent8(LimitsAction,{get api(){return props.api
|
|
864
962
|
},get interaction(){return props.interaction
|
|
865
963
|
},id:`${PLUGIN_ID}.limits.${id}`,get position(){return{section:props.navigationSection,row,column:0
|
|
866
964
|
}},label,onActivate,get disabled(){return accountLink.busy()
|
|
867
965
|
}})
|
|
868
|
-
return _$
|
|
869
|
-
},get children(){return [_$
|
|
870
|
-
},get children(){return [(()=>{var _el$=_$
|
|
871
|
-
_$
|
|
872
|
-
_$
|
|
966
|
+
return _$createComponent8(Show4,{get when(){return eligible()
|
|
967
|
+
},get children(){return [_$createComponent8(Show4,{get when(){return _$memo3(()=>!!!props.model.accountID)()&&(!props.model.hostConnection||props.model.hostConnection.status==="ready")
|
|
968
|
+
},get children(){return [(()=>{var _el$=_$createElement6("text")
|
|
969
|
+
_$insertNode4(_el$,_$createTextNode2(`Link the matching Codex account once for this connection`))
|
|
970
|
+
_$effect5((_$p)=>_$setProp6(_el$,"fg",props.api.theme.current.textMuted,_$p))
|
|
873
971
|
return _el$
|
|
874
|
-
})(),_$
|
|
875
|
-
}}),_$
|
|
876
|
-
},get children(){return [_$
|
|
972
|
+
})(),_$memo3(()=>action("link",2,`${icons.icon("scope")} Link Codex CLI account`,()=>void accountLink.link()))]
|
|
973
|
+
}}),_$createComponent8(Show4,{get when(){return _$memo3(()=>!!(props.model.accountID&&props.model.accountSource!=="host"))()&&props.controller.snapshot()?.availability==="unauthenticated"
|
|
974
|
+
},get children(){return [_$memo3(()=>action("unlink",4,`${icons.icon("close")} Unlink Codex account`,()=>props.preferences.setCodexConnectionBinding(props.model.providerID,props.model.hostConnection?.id))),_$createComponent8(Show4,{get when(){return props.controller.snapshot()?.availability==="unauthenticated"
|
|
877
975
|
},get children(){return action("relink",5,`${icons.icon("scope")} Relink Codex account`,()=>void accountLink.link())
|
|
878
976
|
}})]
|
|
879
977
|
}})]
|
|
880
978
|
}})
|
|
881
979
|
}
|
|
980
|
+
import {createComponent as _$createComponent10} from "@opentui/solid"
|
|
981
|
+
import {Show as Show5} from "solid-js"
|
|
982
|
+
import {useIcons as useIcons4} from "./tui.js"
|
|
882
983
|
import {createComponent as _$createComponent9} from "@opentui/solid"
|
|
883
|
-
import {
|
|
884
|
-
import {
|
|
885
|
-
import {
|
|
886
|
-
import {
|
|
887
|
-
import {
|
|
888
|
-
import {
|
|
889
|
-
import {createElement as _$createElement6} from "@opentui/solid"
|
|
890
|
-
import {memo as _$memo3} from "@opentui/solid"
|
|
891
|
-
import {createEffect as createEffect2,createSignal as createSignal7,on} from "solid-js"
|
|
984
|
+
import {effect as _$effect6} from "@opentui/solid"
|
|
985
|
+
import {insert as _$insert6} from "@opentui/solid"
|
|
986
|
+
import {setProp as _$setProp7} from "@opentui/solid"
|
|
987
|
+
import {createElement as _$createElement7} from "@opentui/solid"
|
|
988
|
+
import {memo as _$memo4} from "@opentui/solid"
|
|
989
|
+
import {createEffect as createEffect2,createSignal as createSignal9,on} from "solid-js"
|
|
892
990
|
import {SelectionBox as SelectionBox2} from "./tui.js"
|
|
893
991
|
var graphemes=new Intl.Segmenter(undefined,{granularity:"grapheme"
|
|
894
992
|
})
|
|
@@ -905,12 +1003,12 @@ result += segment
|
|
|
905
1003
|
}
|
|
906
1004
|
return result + ellipsis
|
|
907
1005
|
}
|
|
908
|
-
function SectionHeaderControl(props){const [width,setWidth]=
|
|
1006
|
+
function SectionHeaderControl(props){const [width,setWidth]=createSignal9()
|
|
909
1007
|
const control=useSidebarItem(props.api,props.interaction,{id:props.action.id,position:()=>props.position,disabled:props.action.disabled,activate:props.action.onActivate
|
|
910
1008
|
},()=>props.api.theme.current.accent,"control")
|
|
911
1009
|
createEffect2(on(()=>[props.action.label(),props.resetWidth],()=>setWidth(undefined)))
|
|
912
1010
|
const label=()=>width()===undefined||props.iconOnly?props.action.label():truncateEnd(props.action.label(),width()-2)
|
|
913
|
-
return _$
|
|
1011
|
+
return _$createComponent9(SelectionBox2,{ref:(node)=>control.ref(node),get id(){return props.action.id
|
|
914
1012
|
},get iconOnly(){return props.iconOnly
|
|
915
1013
|
},get width(){return props.iconOnly?3:undefined
|
|
916
1014
|
},get flexShrink(){return props.iconOnly?0:1
|
|
@@ -921,42 +1019,42 @@ return _$createComponent8(SelectionBox2,{ref:(node)=>control.ref(node),get id(){
|
|
|
921
1019
|
},get onMouseOut(){return control.onMouseOut
|
|
922
1020
|
},onMouseDown:(event)=>event.stopPropagation(),onMouseUp:(event)=>{event.stopPropagation()
|
|
923
1021
|
control.activate(event)
|
|
924
|
-
},get children(){var _el$=_$
|
|
925
|
-
_$
|
|
926
|
-
_$
|
|
927
|
-
_$
|
|
928
|
-
_$
|
|
1022
|
+
},get children(){var _el$=_$createElement7("text")
|
|
1023
|
+
_$setProp7(_el$,"wrapMode","none")
|
|
1024
|
+
_$setProp7(_el$,"height",1)
|
|
1025
|
+
_$insert6(_el$,label)
|
|
1026
|
+
_$effect6((_$p)=>_$setProp7(_el$,"fg",control.foregroundColor(),_$p))
|
|
929
1027
|
return _el$
|
|
930
1028
|
}})
|
|
931
1029
|
}
|
|
932
|
-
function LimitsHeaderControls(props){const icons=
|
|
933
|
-
return [_$
|
|
934
|
-
},get children(){return _$
|
|
1030
|
+
function LimitsHeaderControls(props){const icons=useIcons4()
|
|
1031
|
+
return [_$createComponent10(Show5,{get when(){return props.credits
|
|
1032
|
+
},get children(){return _$createComponent10(SectionHeaderControl,{get api(){return props.api
|
|
935
1033
|
},get interaction(){return props.interaction
|
|
936
1034
|
},get position(){return{section:props.navigationSection,row:0,column:1
|
|
937
1035
|
}},get action(){return{id:`${PLUGIN_ID}.limits.credits`,label:()=>"Banked Resets",disabled:()=>false,onActivate:props.onCredits
|
|
938
1036
|
}}})
|
|
939
|
-
}}),_$
|
|
1037
|
+
}}),_$createComponent10(SectionHeaderControl,{get api(){return props.api
|
|
940
1038
|
},get interaction(){return props.interaction
|
|
941
1039
|
},iconOnly:true,get position(){return{section:props.navigationSection,row:0,column:2
|
|
942
1040
|
}},get action(){return{id:`${PLUGIN_ID}.limits.refresh`,label:()=>icons.icon(props.refreshing?"pending":"retry"),disabled:()=>props.refreshing||!props.canRefresh,onActivate:props.onRefresh
|
|
943
1041
|
}}})]
|
|
944
1042
|
}
|
|
945
|
-
import {insert as _$
|
|
946
|
-
import {effect as _$
|
|
947
|
-
import {createTextNode as _$
|
|
948
|
-
import {insertNode as _$
|
|
949
|
-
import {memo as _$
|
|
950
|
-
import {createComponent as _$
|
|
951
|
-
import {setProp as _$
|
|
952
|
-
import {createElement as _$
|
|
953
|
-
import {Show as
|
|
1043
|
+
import {insert as _$insert7} from "@opentui/solid"
|
|
1044
|
+
import {effect as _$effect7} from "@opentui/solid"
|
|
1045
|
+
import {createTextNode as _$createTextNode3} from "@opentui/solid"
|
|
1046
|
+
import {insertNode as _$insertNode5} from "@opentui/solid"
|
|
1047
|
+
import {memo as _$memo5} from "@opentui/solid"
|
|
1048
|
+
import {createComponent as _$createComponent11} from "@opentui/solid"
|
|
1049
|
+
import {setProp as _$setProp8} from "@opentui/solid"
|
|
1050
|
+
import {createElement as _$createElement8} from "@opentui/solid"
|
|
1051
|
+
import {Show as Show6} from "solid-js"
|
|
954
1052
|
function LimitsModelRow(props){const names=()=>props.selection?.names(props.model)??{provider:props.model.providerID,model:props.model.modelID
|
|
955
1053
|
}
|
|
956
|
-
return(()=>{var _el$=_$
|
|
957
|
-
_$
|
|
958
|
-
_$
|
|
959
|
-
_$
|
|
1054
|
+
return(()=>{var _el$=_$createElement8("box")
|
|
1055
|
+
_$setProp8(_el$,"flexDirection","row")
|
|
1056
|
+
_$setProp8(_el$,"minWidth",0)
|
|
1057
|
+
_$insert7(_el$,_$createComponent11(LimitsAction,{get api(){return props.api
|
|
960
1058
|
},get interaction(){return props.interaction
|
|
961
1059
|
},inline:true,flexGrow:1,get maxWidth(){return Bun.stringWidth(`[${names().provider}] ${names().model}`) + 2
|
|
962
1060
|
},id:`${PLUGIN_ID}.limits.model`,get position(){return{section:props.navigationSection,row:1,column:0
|
|
@@ -964,13 +1062,13 @@ _$insert6(_el$,_$createComponent10(LimitsAction,{get api(){return props.api
|
|
|
964
1062
|
},get disabled(){return !props.selection?.canOpen("model",props.model)
|
|
965
1063
|
},onActivate:()=>props.selection?.open("model",props.model)
|
|
966
1064
|
}),null)
|
|
967
|
-
_$
|
|
968
|
-
},get children(){return [(()=>{var _el$2=_$
|
|
969
|
-
_$
|
|
970
|
-
_$
|
|
971
|
-
_$
|
|
1065
|
+
_$insert7(_el$,_$createComponent11(Show6,{get when(){return props.model.variant||props.selection?.variants(props.model).length
|
|
1066
|
+
},get children(){return [(()=>{var _el$2=_$createElement8("text"),_el$3=_$createTextNode3(` \xB7 `)
|
|
1067
|
+
_$insertNode5(_el$2,_el$3)
|
|
1068
|
+
_$setProp8(_el$2,"flexShrink",0)
|
|
1069
|
+
_$effect7((_$p)=>_$setProp8(_el$2,"fg",props.api.theme.current.textMuted,_$p))
|
|
972
1070
|
return _el$2
|
|
973
|
-
})(),_$
|
|
1071
|
+
})(),_$createComponent11(LimitsAction,{get api(){return props.api
|
|
974
1072
|
},get interaction(){return props.interaction
|
|
975
1073
|
},inline:true,id:`${PLUGIN_ID}.limits.variant`,get position(){return{section:props.navigationSection,row:1,column:1
|
|
976
1074
|
}},get label(){return props.model.variant??"Default"
|
|
@@ -981,15 +1079,15 @@ return _el$2
|
|
|
981
1079
|
return _el$
|
|
982
1080
|
})()
|
|
983
1081
|
}
|
|
984
|
-
import {effect as _$
|
|
985
|
-
import {insert as _$
|
|
986
|
-
import {setProp as _$
|
|
987
|
-
import {createElement as _$
|
|
988
|
-
import {createComponent as _$
|
|
989
|
-
import {memo as _$
|
|
990
|
-
import {Show as
|
|
991
|
-
import {createSignal as
|
|
992
|
-
function createProviderAccountSource(ports){const [connections,setConnections]=
|
|
1082
|
+
import {effect as _$effect8} from "@opentui/solid"
|
|
1083
|
+
import {insert as _$insert8} from "@opentui/solid"
|
|
1084
|
+
import {setProp as _$setProp9} from "@opentui/solid"
|
|
1085
|
+
import {createElement as _$createElement9} from "@opentui/solid"
|
|
1086
|
+
import {createComponent as _$createComponent12} from "@opentui/solid"
|
|
1087
|
+
import {memo as _$memo6} from "@opentui/solid"
|
|
1088
|
+
import {Show as Show7} from "solid-js"
|
|
1089
|
+
import {createSignal as createSignal10} from "solid-js"
|
|
1090
|
+
function createProviderAccountSource(ports){const [connections,setConnections]=createSignal10({})
|
|
993
1091
|
let generation=0
|
|
994
1092
|
let disposed=false
|
|
995
1093
|
let lastModel
|
|
@@ -1047,12 +1145,12 @@ return{...model,accountID:undefined,accountSource:undefined}
|
|
|
1047
1145
|
const accountID=connection?.accountID??preferences?.codexAccountForConnection(model.providerID,connection?.id,model.modelID)
|
|
1048
1146
|
const accountSource=connection?.accountID?"host":"binding"
|
|
1049
1147
|
return{...model,accountID,accountSource:accountID?accountSource:undefined}}
|
|
1050
|
-
import {createEffect as createEffect3,createMemo,on as on2,onCleanup as
|
|
1148
|
+
import {createEffect as createEffect3,createMemo,on as on2,onCleanup as onCleanup3} from "solid-js"
|
|
1051
1149
|
function quotaStatusMessage(input){const{model,snapshot,state}=input
|
|
1052
1150
|
if(state.status==="error")
|
|
1053
1151
|
return snapshot?"Stale \xB7 refresh failed":"Quota read failed \xB7 refresh to retry"
|
|
1054
|
-
if(
|
|
1055
|
-
return
|
|
1152
|
+
if(snapshot?.availability==="ready"&&(snapshot.windows.length>0||snapshot.balances?.length))
|
|
1153
|
+
return input.showUpdatedAt?`Updated ${new Date(snapshot.fetchedAt).toLocaleTimeString()}`:undefined
|
|
1056
1154
|
if(snapshot?.message){if(snapshot.availability==="stale")
|
|
1057
1155
|
return `Stale \xB7 ${snapshot.message}`
|
|
1058
1156
|
return snapshot.availability==="ready"?`Updated ${new Date(snapshot.fetchedAt).toLocaleTimeString()} \xB7 ${snapshot.message}`:snapshot.message
|
|
@@ -1076,8 +1174,6 @@ if(snapshot.availability==="rate_limited")
|
|
|
1076
1174
|
return "Provider rate-limited this read \xB7 try again later"
|
|
1077
1175
|
if(snapshot.availability==="stale")
|
|
1078
1176
|
return "Stale provider data \xB7 refresh to update"
|
|
1079
|
-
if(snapshot.availability==="ready"&&input.showReadyMessage&&(snapshot.windows.length>0||snapshot.balances?.length))
|
|
1080
|
-
return
|
|
1081
1177
|
return `Updated ${new Date(snapshot.fetchedAt).toLocaleTimeString()}`
|
|
1082
1178
|
}
|
|
1083
1179
|
function LimitsStatus(props){const message=()=>{const{model,adapter
|
|
@@ -1085,85 +1181,85 @@ function LimitsStatus(props){const message=()=>{const{model,adapter
|
|
|
1085
1181
|
return quotaStatusMessage({model,snapshot:props.controller.snapshot(),state:props.controller.state(),hasAdapter:Boolean(adapter)
|
|
1086
1182
|
})
|
|
1087
1183
|
}
|
|
1088
|
-
return _$
|
|
1089
|
-
},children:(value)=>(()=>{var _el$=_$
|
|
1090
|
-
_$
|
|
1091
|
-
_$
|
|
1092
|
-
_$
|
|
1184
|
+
return _$createComponent12(Show7,{get when(){return _$memo6(()=>!!props.controller.current().model)()&&message()
|
|
1185
|
+
},children:(value)=>(()=>{var _el$=_$createElement9("text")
|
|
1186
|
+
_$setProp9(_el$,"wrapMode","word")
|
|
1187
|
+
_$insert8(_el$,value)
|
|
1188
|
+
_$effect8((_$p)=>_$setProp9(_el$,"fg",props.api.theme.current.textMuted,_$p))
|
|
1093
1189
|
return _el$
|
|
1094
1190
|
})()
|
|
1095
1191
|
})
|
|
1096
1192
|
}
|
|
1097
|
-
import {createComponent as _$
|
|
1098
|
-
import {effect as _$
|
|
1099
|
-
import {createTextNode as _$
|
|
1100
|
-
import {insertNode as _$
|
|
1101
|
-
import {memo as _$
|
|
1102
|
-
import {insert as _$
|
|
1103
|
-
import {setProp as _$
|
|
1104
|
-
import {createElement as _$
|
|
1105
|
-
import {Show as
|
|
1106
|
-
import {SelectionBox as SelectionBox3,useIcons as
|
|
1107
|
-
function Section(props){const icons=
|
|
1108
|
-
const [headerWidth,setHeaderWidth]=
|
|
1193
|
+
import {createComponent as _$createComponent13} from "@opentui/solid"
|
|
1194
|
+
import {effect as _$effect9} from "@opentui/solid"
|
|
1195
|
+
import {createTextNode as _$createTextNode4} from "@opentui/solid"
|
|
1196
|
+
import {insertNode as _$insertNode6} from "@opentui/solid"
|
|
1197
|
+
import {memo as _$memo7} from "@opentui/solid"
|
|
1198
|
+
import {insert as _$insert9} from "@opentui/solid"
|
|
1199
|
+
import {setProp as _$setProp10} from "@opentui/solid"
|
|
1200
|
+
import {createElement as _$createElement10} from "@opentui/solid"
|
|
1201
|
+
import {Show as Show8,createSignal as createSignal11} from "solid-js"
|
|
1202
|
+
import {SelectionBox as SelectionBox3,useIcons as useIcons5} from "./tui.js"
|
|
1203
|
+
function Section(props){const icons=useIcons5()
|
|
1204
|
+
const [headerWidth,setHeaderWidth]=createSignal11(0)
|
|
1109
1205
|
const icon=()=>props.section?icons.section(props.section):props.icon
|
|
1110
1206
|
const theme=()=>props.api.theme.current
|
|
1111
1207
|
const item=useSidebarItem(props.api,props.interaction,{id:props.sectionId??`section.${props.title}`,position:()=>({section:props.navigationSection??0,row:0,column:0
|
|
1112
1208
|
}),activate:props.onToggle
|
|
1113
1209
|
})
|
|
1114
|
-
return(()=>{var _el$=_$
|
|
1115
|
-
_$
|
|
1116
|
-
_$
|
|
1210
|
+
return(()=>{var _el$=_$createElement10("box")
|
|
1211
|
+
_$setProp10(_el$,"gap",1)
|
|
1212
|
+
_$insert9(_el$,_$createComponent13(SelectionBox3,{ref:(node)=>item.ref(node),get id(){return props.sectionId
|
|
1117
1213
|
},flexDirection:"row",height:1,justifyContent:"space-between",gap:1,get backgroundColor(){return item.backgroundColor()
|
|
1118
1214
|
},get onMouseOver(){return item.onMouseOver
|
|
1119
1215
|
},get onMouseOut(){return item.onMouseOut
|
|
1120
1216
|
},onMouseDown:(event)=>item.activate(event),onSizeChange:function(){setHeaderWidth(this.width)
|
|
1121
|
-
},get children(){return [(()=>{var _el$2=_$
|
|
1122
|
-
_$
|
|
1123
|
-
_$
|
|
1124
|
-
_$
|
|
1125
|
-
_$
|
|
1126
|
-
_$
|
|
1127
|
-
_$
|
|
1128
|
-
_$
|
|
1129
|
-
_$
|
|
1217
|
+
},get children(){return [(()=>{var _el$2=_$createElement10("text"),_el$3=_$createElement10("span"),_el$4=_$createTextNode4(` `),_el$5=_$createElement10("span"),_el$6=_$createElement10("b")
|
|
1218
|
+
_$insertNode6(_el$2,_el$3)
|
|
1219
|
+
_$insertNode6(_el$2,_el$4)
|
|
1220
|
+
_$insertNode6(_el$2,_el$5)
|
|
1221
|
+
_$insertNode6(_el$2,_el$6)
|
|
1222
|
+
_$setProp10(_el$2,"flexShrink",0)
|
|
1223
|
+
_$setProp10(_el$2,"wrapMode","none")
|
|
1224
|
+
_$insert9(_el$3,()=>icons.icon(props.open?"expanded":"collapsed"))
|
|
1225
|
+
_$insert9(_el$5,(()=>{var _c$=_$memo7(()=>!!icon())
|
|
1130
1226
|
return()=>_c$()?`${icon()} `:""
|
|
1131
1227
|
})())
|
|
1132
|
-
_$
|
|
1133
|
-
_$
|
|
1228
|
+
_$insert9(_el$6,()=>props.title)
|
|
1229
|
+
_$effect9((_p$)=>{var _v$=item.foregroundColor(),_v$2={fg:item.focused()?item.foregroundColor():theme().accent
|
|
1134
1230
|
},_v$3={fg:item.focused()?item.foregroundColor():theme().accent
|
|
1135
1231
|
}
|
|
1136
|
-
_v$!==_p$.e&&(_p$.e=_$
|
|
1137
|
-
_v$2!==_p$.t&&(_p$.t=_$
|
|
1138
|
-
_v$3!==_p$.a&&(_p$.a=_$
|
|
1232
|
+
_v$!==_p$.e&&(_p$.e=_$setProp10(_el$2,"fg",_v$,_p$.e))
|
|
1233
|
+
_v$2!==_p$.t&&(_p$.t=_$setProp10(_el$3,"style",_v$2,_p$.t))
|
|
1234
|
+
_v$3!==_p$.a&&(_p$.a=_$setProp10(_el$5,"style",_v$3,_p$.a))
|
|
1139
1235
|
return _p$
|
|
1140
1236
|
},{e:undefined,t:undefined,a:undefined
|
|
1141
1237
|
})
|
|
1142
1238
|
return _el$2
|
|
1143
|
-
})(),(()=>{var _el$7=_$
|
|
1144
|
-
_$
|
|
1145
|
-
_$
|
|
1146
|
-
_$
|
|
1147
|
-
_$
|
|
1148
|
-
_$
|
|
1149
|
-
_$
|
|
1150
|
-
_$
|
|
1151
|
-
},children:(action)=>_$
|
|
1239
|
+
})(),(()=>{var _el$7=_$createElement10("box")
|
|
1240
|
+
_$setProp10(_el$7,"flexDirection","row")
|
|
1241
|
+
_$setProp10(_el$7,"gap",1)
|
|
1242
|
+
_$setProp10(_el$7,"flexGrow",1)
|
|
1243
|
+
_$setProp10(_el$7,"minWidth",0)
|
|
1244
|
+
_$setProp10(_el$7,"justifyContent","flex-end")
|
|
1245
|
+
_$insert9(_el$7,()=>props.headerControls,null)
|
|
1246
|
+
_$insert9(_el$7,_$createComponent13(Show8,{get when(){return props.headerAction
|
|
1247
|
+
},children:(action)=>_$createComponent13(SectionHeaderControl,{get api(){return props.api
|
|
1152
1248
|
},get interaction(){return props.interaction
|
|
1153
1249
|
},get action(){return action()
|
|
1154
1250
|
},get resetWidth(){return headerWidth()
|
|
1155
1251
|
},get position(){return{section:props.navigationSection??0,row:0,column:1
|
|
1156
1252
|
}}})
|
|
1157
1253
|
}),null)
|
|
1158
|
-
_$
|
|
1159
|
-
},get children(){var _el$8=_$
|
|
1160
|
-
_$
|
|
1161
|
-
_$
|
|
1162
|
-
_$
|
|
1163
|
-
_$
|
|
1164
|
-
_$
|
|
1165
|
-
_v$4!==_p$.e&&(_p$.e=_$
|
|
1166
|
-
_v$5!==_p$.t&&(_p$.t=_$
|
|
1254
|
+
_$insert9(_el$7,_$createComponent13(Show8,{get when(){return props.summary
|
|
1255
|
+
},get children(){var _el$8=_$createElement10("text")
|
|
1256
|
+
_$setProp10(_el$8,"wrapMode","none")
|
|
1257
|
+
_$setProp10(_el$8,"truncate",true)
|
|
1258
|
+
_$setProp10(_el$8,"height",1)
|
|
1259
|
+
_$insert9(_el$8,()=>props.summary)
|
|
1260
|
+
_$effect9((_p$)=>{var _v$4=item.focused()?item.foregroundColor():theme().textMuted,_v$5=props.headerAction?0:1
|
|
1261
|
+
_v$4!==_p$.e&&(_p$.e=_$setProp10(_el$8,"fg",_v$4,_p$.e))
|
|
1262
|
+
_v$5!==_p$.t&&(_p$.t=_$setProp10(_el$8,"flexShrink",_v$5,_p$.t))
|
|
1167
1263
|
return _p$
|
|
1168
1264
|
},{e:undefined,t:undefined
|
|
1169
1265
|
})
|
|
@@ -1172,7 +1268,7 @@ return _el$8
|
|
|
1172
1268
|
return _el$7
|
|
1173
1269
|
})()]
|
|
1174
1270
|
}}),null)
|
|
1175
|
-
_$
|
|
1271
|
+
_$insert9(_el$,_$createComponent13(Show8,{get when(){return props.open
|
|
1176
1272
|
},get children(){return props.children
|
|
1177
1273
|
}}),null)
|
|
1178
1274
|
return _el$
|
|
@@ -1183,17 +1279,17 @@ const model=()=>props.controller.current().model
|
|
|
1183
1279
|
const snapshot=props.controller.snapshot
|
|
1184
1280
|
function openCredits(){const selected=model()
|
|
1185
1281
|
if(selected)
|
|
1186
|
-
dialogs.open(()=>_$
|
|
1282
|
+
dialogs.open(()=>_$createComponent14(ResetCreditDialog,{get api(){return props.api
|
|
1187
1283
|
},get preferences(){return props.preferences
|
|
1188
1284
|
},get controller(){return props.controller
|
|
1189
1285
|
},get adapter(){return props.codex
|
|
1190
1286
|
},model:selected
|
|
1191
1287
|
}))
|
|
1192
1288
|
}
|
|
1193
|
-
return _$
|
|
1289
|
+
return _$createComponent14(Section,{get api(){return props.api
|
|
1194
1290
|
},get interaction(){return props.interaction
|
|
1195
1291
|
},sectionId:`${PLUGIN_ID}.section.limits`,get navigationSection(){return props.navigationSection
|
|
1196
|
-
},title:"LIMITS",section:"limits",summary:"",get headerControls(){return _$
|
|
1292
|
+
},title:"LIMITS",section:"limits",summary:"",get headerControls(){return _$createComponent14(LimitsHeaderControls,{get api(){return props.api
|
|
1197
1293
|
},get interaction(){return props.interaction
|
|
1198
1294
|
},get navigationSection(){return props.navigationSection
|
|
1199
1295
|
},get credits(){return(snapshot()?.bankedResets?.availableCount??0)>0||Boolean(props.preferences.pendingResetAttempt())
|
|
@@ -1202,28 +1298,28 @@ return _$createComponent13(Section,{get api(){return props.api
|
|
|
1202
1298
|
},onCredits:openCredits,onRefresh:()=>void props.controller.refresh(true)
|
|
1203
1299
|
})
|
|
1204
1300
|
},get open(){return props.preferences.expanded().limits
|
|
1205
|
-
},onToggle:()=>props.preferences.toggleSectionExpanded("limits"),get children(){return _$
|
|
1206
|
-
},get fallback(){return(()=>{var _el$=_$
|
|
1207
|
-
_$
|
|
1208
|
-
_$
|
|
1301
|
+
},onToggle:()=>props.preferences.toggleSectionExpanded("limits"),get children(){return _$createComponent14(Show9,{get when(){return model()
|
|
1302
|
+
},get fallback(){return(()=>{var _el$=_$createElement11("text")
|
|
1303
|
+
_$insertNode7(_el$,_$createTextNode5(`Open a session to view model limits`))
|
|
1304
|
+
_$effect10((_$p)=>_$setProp11(_el$,"fg",props.api.theme.current.textMuted,_$p))
|
|
1209
1305
|
return _el$
|
|
1210
1306
|
})()
|
|
1211
|
-
},children:(selected)=>(()=>{var _el$3=_$
|
|
1212
|
-
_$
|
|
1213
|
-
_$
|
|
1214
|
-
_$
|
|
1215
|
-
_$
|
|
1216
|
-
_$
|
|
1307
|
+
},children:(selected)=>(()=>{var _el$3=_$createElement11("box")
|
|
1308
|
+
_$setProp11(_el$3,"width","100%")
|
|
1309
|
+
_$setProp11(_el$3,"minWidth",0)
|
|
1310
|
+
_$setProp11(_el$3,"flexShrink",1)
|
|
1311
|
+
_$setProp11(_el$3,"overflow","hidden")
|
|
1312
|
+
_$insert10(_el$3,_$createComponent14(LimitsModelRow,_$mergeProps(props,{get model(){return selected()
|
|
1217
1313
|
},get selection(){return props.modelSelection
|
|
1218
1314
|
}})),null)
|
|
1219
|
-
_$
|
|
1315
|
+
_$insert10(_el$3,_$createComponent14(CodexAccountControls,_$mergeProps(props,{get model(){return selected()
|
|
1220
1316
|
}})),null)
|
|
1221
|
-
_$
|
|
1222
|
-
},children:(quota)=>_$
|
|
1317
|
+
_$insert10(_el$3,_$createComponent14(Show9,{get when(){return _$memo8(()=>!!(snapshot()&&["ready","stale"].includes(snapshot().availability)))()?snapshot():undefined
|
|
1318
|
+
},children:(quota)=>_$createComponent14(QuotaSnapshotRows,{get api(){return props.api
|
|
1223
1319
|
},get snapshot(){return quota()
|
|
1224
1320
|
}})
|
|
1225
1321
|
}),null)
|
|
1226
|
-
_$
|
|
1322
|
+
_$insert10(_el$3,_$createComponent14(LimitsStatus,{get api(){return props.api
|
|
1227
1323
|
},get controller(){return props.controller
|
|
1228
1324
|
}}),null)
|
|
1229
1325
|
return _el$3
|