opencode-navigator 0.27.4 → 0.27.5
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 +9 -0
- package/HOST_API.md +7 -0
- package/PROVIDERS.md +4 -0
- package/README.md +58 -2
- package/dist/{chunk-fd7394y1.js → chunk-4rh7rb74.js} +15 -1
- package/dist/chunk-sm9ej5ac.js +6 -0
- package/dist/chunk-tq2z58v5.js +23 -0
- package/dist/chunk-v6qckzat.js +838 -0
- package/dist/gui-experimental.cjs +9468 -8995
- package/dist/native-todo-setup.js +5 -830
- package/dist/navigator-updates.js +671 -321
- package/dist/provider-limits.js +441 -287
- package/dist/sidebar-settings.js +14 -17
- package/dist/tui.js +161 -130
- package/dist/upgrade-notes.js +4 -2
- package/package.json +5 -1
- package/dist/chunk-rrvwmnyh.js +0 -22
package/dist/provider-limits.js
CHANGED
|
@@ -154,7 +154,7 @@ const seconds=Math.max(0,expiry-now / 1000)
|
|
|
154
154
|
const lifetime=expiry-credit.grantedAt
|
|
155
155
|
const remaining=Number.isFinite(credit.grantedAt)&&credit.grantedAt>=0&&lifetime>0?Math.max(0,Math.min(1,seconds / lifetime)):undefined
|
|
156
156
|
return{label:remainingLabel(seconds),remaining,expired:seconds===0}}
|
|
157
|
-
var CHATGPT_METHODS=new Set(["chatgpt-browser","chatgpt-headless"])
|
|
157
|
+
var CHATGPT_METHODS=new Set(["chatgpt-browser","chatgpt-headless","chatgpt-token-sharing"])
|
|
158
158
|
function providerAccountIdentity(provider,credentials){if(!provider.integrationID||provider.activation==="disabled")
|
|
159
159
|
return{status:"unsupported"}
|
|
160
160
|
const active=credentials.filter((entry)=>entry.integrationID===provider.integrationID&&entry.active)
|
|
@@ -458,13 +458,54 @@ input.api.ui.toast({variant:"warning",title:"Codex account",message:error instan
|
|
|
458
458
|
}}
|
|
459
459
|
return{link,busy
|
|
460
460
|
}}
|
|
461
|
-
import {effect as _$
|
|
462
|
-
import {insertNode as _$
|
|
463
|
-
import {insert as _$
|
|
464
|
-
import {
|
|
465
|
-
import {
|
|
466
|
-
import {
|
|
467
|
-
import {
|
|
461
|
+
import {effect as _$effect2} from "@opentui/solid"
|
|
462
|
+
import {insertNode as _$insertNode2} from "@opentui/solid"
|
|
463
|
+
import {insert as _$insert2} from "@opentui/solid"
|
|
464
|
+
import {createComponent as _$createComponent2} from "@opentui/solid"
|
|
465
|
+
import {memo as _$memo} from "@opentui/solid"
|
|
466
|
+
import {setProp as _$setProp2} from "@opentui/solid"
|
|
467
|
+
import {createElement as _$createElement2} from "@opentui/solid"
|
|
468
|
+
function duration(seconds){if(seconds<60)
|
|
469
|
+
return "<1m"
|
|
470
|
+
const minutes=Math.ceil(seconds / 60)
|
|
471
|
+
const days=Math.floor(minutes / 1440)
|
|
472
|
+
const hours=Math.floor(minutes%1440 / 60)
|
|
473
|
+
if(days)
|
|
474
|
+
return `${days}d ${hours}h`
|
|
475
|
+
if(hours)
|
|
476
|
+
return `${hours}h ${minutes % 60}m`
|
|
477
|
+
return `${minutes}m`
|
|
478
|
+
}
|
|
479
|
+
function quotaPeriod(window,now){const reset=window.resetsAt
|
|
480
|
+
const missing={ratio:undefined,seconds:undefined,active:false,countdown:"Reset time unknown",detail:"Period progress unknown"
|
|
481
|
+
}
|
|
482
|
+
if(reset===undefined)
|
|
483
|
+
return missing
|
|
484
|
+
if(!Number.isFinite(now)||!Number.isFinite(reset)||reset<=0||!Number.isFinite(new Date(reset*1000).getTime()))
|
|
485
|
+
return{...missing,countdown:"Reset date invalid"}
|
|
486
|
+
const seconds=reset-now / 1000
|
|
487
|
+
const countdown=seconds<=0?"Reset due; refresh to verify":`Reset in ${duration(seconds)}`
|
|
488
|
+
const dated={...missing,seconds,countdown}
|
|
489
|
+
const length=window.durationMinutes
|
|
490
|
+
if(length===undefined)
|
|
491
|
+
return{...dated,detail:"Period duration unknown"}
|
|
492
|
+
if(!Number.isFinite(length*60)||length<=0)
|
|
493
|
+
return{...dated,detail:"Period duration invalid"}
|
|
494
|
+
if(seconds>length*60)
|
|
495
|
+
return{...dated,detail:"Window has not started; progress unknown"}
|
|
496
|
+
const ratio=Math.max(0,Math.min(1,seconds / (length*60)))
|
|
497
|
+
return{...dated,ratio,active:seconds>0,detail:`${Math.round(ratio * 100)}%`}}
|
|
498
|
+
function quotaPace(quota,period){if(quota===undefined||!Number.isFinite(quota)||!period.active||period.ratio===undefined)
|
|
499
|
+
return "normal"
|
|
500
|
+
const deficit=Math.round((period.ratio-quota)*1e5) / 1000
|
|
501
|
+
if(deficit>=30)
|
|
502
|
+
return "red"
|
|
503
|
+
if(deficit>=15)
|
|
504
|
+
return "orange"
|
|
505
|
+
return deficit>0?"yellow":"normal"
|
|
506
|
+
}
|
|
507
|
+
var quotaPaceLabels={normal:"",yellow:"Above pace",orange:"High usage pace",red:"Critical usage pace"
|
|
508
|
+
};
|
|
468
509
|
function measurement(window,remaining){if(remaining!==undefined)
|
|
469
510
|
return `${remaining}${window.unit === "%" ? "" : " "}${window.unit} left`
|
|
470
511
|
if(window.used!==undefined)
|
|
@@ -473,6 +514,8 @@ return `${window.total} ${window.unit} capacity`
|
|
|
473
514
|
}
|
|
474
515
|
function resetTime(seconds,now){if(seconds===undefined)
|
|
475
516
|
return "Reset time unknown"
|
|
517
|
+
if(!Number.isFinite(seconds)||seconds<=0||!Number.isFinite(new Date(seconds*1000).getTime()))
|
|
518
|
+
return "Reset date invalid"
|
|
476
519
|
const date=new Date(seconds*1000)
|
|
477
520
|
const clock=date.toLocaleTimeString(undefined,{hour:"2-digit",minute:"2-digit"})
|
|
478
521
|
if(date.toDateString()===new Date(now).toDateString())
|
|
@@ -482,36 +525,42 @@ return `Resets ${date.toLocaleDateString(undefined, { month: "short", day: "nume
|
|
|
482
525
|
function quotaPresentation(window,now=Date.now()){const total=window.unit==="%"?100:window.total
|
|
483
526
|
const remaining=window.remaining??(total!==undefined&&window.used!==undefined?total-window.used:undefined)
|
|
484
527
|
const ratio=remaining!==undefined&&total!==undefined&&total>0?Math.max(0,Math.min(1,remaining / total)):undefined
|
|
485
|
-
|
|
486
|
-
|
|
528
|
+
const period=quotaPeriod(window,now)
|
|
529
|
+
const pace=quotaPace(ratio,period)
|
|
530
|
+
const reset=resetTime(window.resetsAt,now)
|
|
531
|
+
const resetSummary=period.seconds!==undefined&&period.seconds>0?`${period.countdown} \xB7 ${reset}`:period.countdown
|
|
532
|
+
return{value:measurement(window,remaining),ratio,reset,resetSummary,period,pace,paceLabel:quotaPaceLabels[pace]
|
|
533
|
+
}}
|
|
534
|
+
var quotaColors={blue:"#42a5f5",yellow:"#c4a000",orange:"#ef8b2c",red:"#ef5350"};
|
|
535
|
+
import {effect as _$effect} from "@opentui/solid"
|
|
536
|
+
import {insertNode as _$insertNode} from "@opentui/solid"
|
|
537
|
+
import {insert as _$insert} from "@opentui/solid"
|
|
538
|
+
import {setProp as _$setProp} from "@opentui/solid"
|
|
539
|
+
import {createElement as _$createElement} from "@opentui/solid"
|
|
540
|
+
import {createSignal as createSignal4} from "solid-js"
|
|
541
|
+
import {subtleLineColor,useIcons} from "./tui.js"
|
|
542
|
+
function QuotaMeter(props){const icons=useIcons()
|
|
487
543
|
const [columns,setColumns]=createSignal4(0)
|
|
488
|
-
const
|
|
489
|
-
|
|
490
|
-
if(ratio===undefined)
|
|
491
|
-
return{filled:"Scale unknown",unfilled:""
|
|
544
|
+
const scale=()=>{if(props.ratio===undefined)
|
|
545
|
+
return{filled:"",unfilled:"Scale unknown"
|
|
492
546
|
}
|
|
493
|
-
const
|
|
494
|
-
const filled=Math.round(ratio*width)
|
|
547
|
+
const filled=Math.round(props.ratio*columns())
|
|
495
548
|
const symbols=icons.style()==="text"?["=","-"]:["\u2501","\u2500"]
|
|
496
|
-
return{filled:symbols[0].repeat(filled),unfilled:symbols[1].repeat(
|
|
549
|
+
return{filled:symbols[0].repeat(filled),unfilled:symbols[1].repeat(columns()-filled)
|
|
497
550
|
}}
|
|
498
|
-
const
|
|
499
|
-
const valueWidth=()=>Math.min(columns(),Bun.stringWidth(view().value))
|
|
551
|
+
const valueWidth=()=>Math.min(columns(),Bun.stringWidth(props.value))
|
|
500
552
|
const gap=()=>columns()>valueWidth()?1:0
|
|
501
|
-
const resetWidth=()=>Math.max(0,columns()-valueWidth()-gap())
|
|
502
553
|
return(()=>{var _el$=_$createElement("box"),_el$2=_$createElement("text"),_el$3=_$createElement("span"),_el$4=_$createElement("box"),_el$5=_$createElement("text"),_el$6=_$createElement("text")
|
|
503
554
|
_$insertNode(_el$,_el$2)
|
|
504
555
|
_$insertNode(_el$,_el$4)
|
|
505
556
|
_$setProp(_el$,"width","100%")
|
|
506
557
|
_$setProp(_el$,"minWidth",0)
|
|
507
|
-
_$setProp(_el$,"flexShrink",1)
|
|
508
558
|
_$setProp(_el$,"height",2)
|
|
509
559
|
_$setProp(_el$,"overflow","hidden")
|
|
510
560
|
_$setProp(_el$,"onSizeChange",function(){setColumns(this.width)
|
|
511
561
|
})
|
|
512
562
|
_$insertNode(_el$2,_el$3)
|
|
513
563
|
_$setProp(_el$2,"width","100%")
|
|
514
|
-
_$setProp(_el$2,"minWidth",0)
|
|
515
564
|
_$setProp(_el$2,"height",1)
|
|
516
565
|
_$setProp(_el$2,"wrapMode","none")
|
|
517
566
|
_$setProp(_el$2,"truncate",true)
|
|
@@ -520,7 +569,6 @@ _$insert(_el$3,()=>scale().unfilled)
|
|
|
520
569
|
_$insertNode(_el$4,_el$5)
|
|
521
570
|
_$insertNode(_el$4,_el$6)
|
|
522
571
|
_$setProp(_el$4,"width","100%")
|
|
523
|
-
_$setProp(_el$4,"minWidth",0)
|
|
524
572
|
_$setProp(_el$4,"height",1)
|
|
525
573
|
_$setProp(_el$4,"flexDirection","row")
|
|
526
574
|
_$setProp(_el$4,"overflow","hidden")
|
|
@@ -528,13 +576,13 @@ _$setProp(_el$5,"minWidth",0)
|
|
|
528
576
|
_$setProp(_el$5,"height",1)
|
|
529
577
|
_$setProp(_el$5,"wrapMode","none")
|
|
530
578
|
_$setProp(_el$5,"truncate",true)
|
|
531
|
-
_$insert(_el$5,()=>
|
|
579
|
+
_$insert(_el$5,()=>props.label)
|
|
532
580
|
_$setProp(_el$6,"height",1)
|
|
533
581
|
_$setProp(_el$6,"wrapMode","none")
|
|
534
582
|
_$setProp(_el$6,"truncate",true)
|
|
535
|
-
_$insert(_el$6,()=>
|
|
536
|
-
_$effect((_p$)=>{var _v$=props.
|
|
537
|
-
},_v$3=
|
|
583
|
+
_$insert(_el$6,()=>props.value)
|
|
584
|
+
_$effect((_p$)=>{var _v$=props.color,_v$2={fg:subtleLineColor(props.api.theme.current.backgroundPanel,props.api.theme.current.borderSubtle)
|
|
585
|
+
},_v$3=Math.max(0,columns()-valueWidth()-gap()),_v$4=props.api.theme.current.textMuted,_v$5=valueWidth(),_v$6=gap(),_v$7=props.api.theme.current.text
|
|
538
586
|
_v$!==_p$.e&&(_p$.e=_$setProp(_el$2,"fg",_v$,_p$.e))
|
|
539
587
|
_v$2!==_p$.t&&(_p$.t=_$setProp(_el$3,"style",_v$2,_p$.t))
|
|
540
588
|
_v$3!==_p$.a&&(_p$.a=_$setProp(_el$5,"width",_v$3,_p$.a))
|
|
@@ -548,10 +596,43 @@ return _p$
|
|
|
548
596
|
return _el$
|
|
549
597
|
})()
|
|
550
598
|
}
|
|
551
|
-
|
|
552
|
-
|
|
599
|
+
function QuotaWindowRow(props){const view=()=>quotaPresentation(props.window,props.now)
|
|
600
|
+
const color=()=>{const pace=view().pace
|
|
601
|
+
return pace==="normal"?props.api.theme.current.textMuted:quotaColors[pace]
|
|
602
|
+
}
|
|
603
|
+
return(()=>{var _el$=_$createElement2("box"),_el$2=_$createElement2("text")
|
|
604
|
+
_$insertNode2(_el$,_el$2)
|
|
605
|
+
_$setProp2(_el$,"width","100%")
|
|
606
|
+
_$setProp2(_el$,"minWidth",0)
|
|
607
|
+
_$setProp2(_el$,"flexShrink",1)
|
|
608
|
+
_$setProp2(_el$,"height",5)
|
|
609
|
+
_$setProp2(_el$,"overflow","hidden")
|
|
610
|
+
_$insert2(_el$,_$createComponent2(QuotaMeter,{get api(){return props.api
|
|
611
|
+
},get label(){return view().paceLabel||"Quota remaining"
|
|
612
|
+
},get value(){return view().value
|
|
613
|
+
},get ratio(){return view().ratio
|
|
614
|
+
},get color(){return color()
|
|
615
|
+
}}),_el$2)
|
|
616
|
+
_$insert2(_el$,_$createComponent2(QuotaMeter,{get api(){return props.api
|
|
617
|
+
},get label(){return _$memo(()=>view().period.ratio===undefined)()?view().period.detail:"Time remaining"
|
|
618
|
+
},get value(){return _$memo(()=>view().period.ratio===undefined)()?"":view().period.detail
|
|
619
|
+
},get ratio(){return view().period.ratio
|
|
620
|
+
},get color(){return quotaColors.blue
|
|
621
|
+
}}),_el$2)
|
|
622
|
+
_$setProp2(_el$2,"width","100%")
|
|
623
|
+
_$setProp2(_el$2,"height",1)
|
|
624
|
+
_$setProp2(_el$2,"wrapMode","none")
|
|
625
|
+
_$setProp2(_el$2,"truncate",true)
|
|
626
|
+
_$insert2(_el$2,()=>view().resetSummary)
|
|
627
|
+
_$effect2((_$p)=>_$setProp2(_el$2,"fg",props.api.theme.current.textMuted,_$p))
|
|
628
|
+
return _el$
|
|
629
|
+
})()
|
|
630
|
+
}
|
|
631
|
+
import {memo as _$memo4} from "@opentui/solid"
|
|
632
|
+
import {createComponent as _$createComponent6} from "@opentui/solid"
|
|
633
|
+
import {createEffect,createMemo,createSignal as createSignal6,onCleanup} from "solid-js"
|
|
553
634
|
import {SelectionMenu,useDialogs} from "./tui.js"
|
|
554
|
-
import {createComponent as _$
|
|
635
|
+
import {createComponent as _$createComponent3} from "@opentui/solid"
|
|
555
636
|
import {randomUUID} from "crypto"
|
|
556
637
|
import {GuardedConfirmation as GuardedConfirmation2,useDialogState} from "./tui.js"
|
|
557
638
|
var resetCreditOutcomeMessage={reset:"Reset applied. Restart or continue your Codex session.",alreadyRedeemed:"This attempt was already redeemed; no second credit was used.",noCredit:"No reset credit is available.",nothingToReset:"There is no eligible usage window to reset."
|
|
@@ -604,9 +685,12 @@ input.dialogs.back()
|
|
|
604
685
|
async function review(creditID){try{const snapshot=await model.review(creditID)
|
|
605
686
|
if(!snapshot)
|
|
606
687
|
return
|
|
607
|
-
|
|
688
|
+
const credit=snapshot.bankedResets?.credits?.find((item)=>item.id===creditID)
|
|
689
|
+
input.dialogs.open(()=>_$createComponent3(GuardedConfirmation2,{get api(){return input.api
|
|
608
690
|
},get current(){return input.current
|
|
609
|
-
},title:"Use one banked reset?",get message(){return `Account ${snapshot.accountId} \xB7 model ${input.model.modelID}. This may reset other eligible Codex windows
|
|
691
|
+
},title:"Use one banked reset?",get message(){return [`Account ${snapshot.accountId} \xB7 model ${input.model.modelID}. This may reset other eligible Codex windows.`,credit?.description].filter(Boolean).join(`
|
|
692
|
+
|
|
693
|
+
`)
|
|
610
694
|
},onConfirm:()=>void consume(creditID)
|
|
611
695
|
}))
|
|
612
696
|
} catch(error){if(input.current())
|
|
@@ -614,14 +698,29 @@ warn(error instanceof Error?error.message:"Credit eligibility is unavailable")
|
|
|
614
698
|
}}
|
|
615
699
|
return{review,consume,busy
|
|
616
700
|
}}
|
|
701
|
+
function resetCreditView(credit,now){const expired=resetCreditLifetime(credit,now).expired
|
|
702
|
+
const labels={available:"Available",redeeming:"In progress",redeemed:"Used",unknown:"Status unknown"}
|
|
703
|
+
const status=expired&&(credit.status==="available"||credit.status==="unknown")?"Expired":labels[credit.status]
|
|
704
|
+
return{title:credit.title||`Credit ${credit.id}`,status,canReview:credit.status==="available"&&!expired&&credit.type==="codexRateLimits"
|
|
705
|
+
}}
|
|
706
|
+
import {effect as _$effect4} from "@opentui/solid"
|
|
707
|
+
import {memo as _$memo3} from "@opentui/solid"
|
|
708
|
+
import {createComponent as _$createComponent5} from "@opentui/solid"
|
|
709
|
+
import {createTextNode as _$createTextNode2} from "@opentui/solid"
|
|
710
|
+
import {insertNode as _$insertNode4} from "@opentui/solid"
|
|
711
|
+
import {insert as _$insert4} from "@opentui/solid"
|
|
712
|
+
import {setProp as _$setProp4} from "@opentui/solid"
|
|
713
|
+
import {createElement as _$createElement4} from "@opentui/solid"
|
|
714
|
+
import {TextAttributes} from "@opentui/core"
|
|
715
|
+
import {useIcons as useIcons3} from "./tui.js"
|
|
716
|
+
import {memo as _$memo2} from "@opentui/solid"
|
|
717
|
+
import {createComponent as _$createComponent4} from "@opentui/solid"
|
|
718
|
+
import {effect as _$effect3} from "@opentui/solid"
|
|
617
719
|
import {createTextNode as _$createTextNode} from "@opentui/solid"
|
|
618
|
-
import {
|
|
619
|
-
import {
|
|
620
|
-
import {
|
|
621
|
-
import {
|
|
622
|
-
import {insert as _$insert2} from "@opentui/solid"
|
|
623
|
-
import {setProp as _$setProp2} from "@opentui/solid"
|
|
624
|
-
import {createElement as _$createElement2} from "@opentui/solid"
|
|
720
|
+
import {insertNode as _$insertNode3} from "@opentui/solid"
|
|
721
|
+
import {insert as _$insert3} from "@opentui/solid"
|
|
722
|
+
import {setProp as _$setProp3} from "@opentui/solid"
|
|
723
|
+
import {createElement as _$createElement3} from "@opentui/solid"
|
|
625
724
|
import {Show,createSignal as createSignal5} from "solid-js"
|
|
626
725
|
import {subtleLineColor as subtleLineColor2,useIcons as useIcons2} from "./tui.js"
|
|
627
726
|
function ResetCreditExpiry(props){const icons=useIcons2()
|
|
@@ -638,49 +737,94 @@ const filled=Math.round((lifetime().remaining??0)*width)
|
|
|
638
737
|
const symbols=icons.style()==="text"?["=","-"]:["\u2501","\u2500"]
|
|
639
738
|
return{filled:symbols[0].repeat(filled),unfilled:symbols[1].repeat(width-filled)
|
|
640
739
|
}}
|
|
641
|
-
return(()=>{var _el$=_$
|
|
642
|
-
_$
|
|
643
|
-
_$
|
|
644
|
-
_$
|
|
645
|
-
_$
|
|
646
|
-
_$
|
|
740
|
+
return(()=>{var _el$=_$createElement3("box"),_el$2=_$createElement3("text"),_el$3=_$createTextNode(` `)
|
|
741
|
+
_$insertNode3(_el$,_el$2)
|
|
742
|
+
_$setProp3(_el$,"width","100%")
|
|
743
|
+
_$setProp3(_el$,"minWidth",0)
|
|
744
|
+
_$setProp3(_el$,"overflow","hidden")
|
|
745
|
+
_$setProp3(_el$,"onSizeChange",function(){setColumns(this.width)
|
|
647
746
|
})
|
|
648
|
-
_$
|
|
649
|
-
|
|
650
|
-
_$
|
|
651
|
-
_$
|
|
652
|
-
_$
|
|
653
|
-
_$
|
|
654
|
-
_$
|
|
655
|
-
_$
|
|
656
|
-
_$
|
|
657
|
-
_$
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
747
|
+
_$insertNode3(_el$2,_el$3)
|
|
748
|
+
_$setProp3(_el$2,"wrapMode","word")
|
|
749
|
+
_$insert3(_el$2,()=>icons.icon("recent"),_el$3)
|
|
750
|
+
_$insert3(_el$2,()=>lifetime().label,null)
|
|
751
|
+
_$insert3(_el$,_$createComponent4(Show,{get when(){return lifetime().remaining!==undefined
|
|
752
|
+
},get children(){var _el$4=_$createElement3("text"),_el$5=_$createElement3("span")
|
|
753
|
+
_$insertNode3(_el$4,_el$5)
|
|
754
|
+
_$setProp3(_el$4,"height",1)
|
|
755
|
+
_$setProp3(_el$4,"width","100%")
|
|
756
|
+
_$setProp3(_el$4,"wrapMode","none")
|
|
757
|
+
_$setProp3(_el$4,"truncate",true)
|
|
758
|
+
_$insert3(_el$4,()=>scale().filled,_el$5)
|
|
759
|
+
_$insert3(_el$5,()=>scale().unfilled)
|
|
760
|
+
_$effect3((_p$)=>{var _v$=props.api.theme.current.textMuted,_v$2={fg:subtleLineColor2(props.api.theme.current.backgroundElement,props.api.theme.current.borderSubtle)
|
|
761
|
+
}
|
|
762
|
+
_v$!==_p$.e&&(_p$.e=_$setProp3(_el$4,"fg",_v$,_p$.e))
|
|
763
|
+
_v$2!==_p$.t&&(_p$.t=_$setProp3(_el$5,"style",_v$2,_p$.t))
|
|
661
764
|
return _p$
|
|
662
765
|
},{e:undefined,t:undefined
|
|
663
766
|
})
|
|
664
|
-
return _el$
|
|
665
|
-
}}),
|
|
666
|
-
_$
|
|
667
|
-
|
|
668
|
-
_$
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
767
|
+
return _el$4
|
|
768
|
+
}}),null)
|
|
769
|
+
_$insert3(_el$,_$createComponent4(Show,{get when(){return expiry()
|
|
770
|
+
},children:(date)=>(()=>{var _el$8=_$createElement3("text")
|
|
771
|
+
_$setProp3(_el$8,"wrapMode","word")
|
|
772
|
+
_$insert3(_el$8,()=>`Expires ${date().toLocaleString(undefined, {
|
|
773
|
+
dateStyle: "medium",
|
|
774
|
+
timeStyle: "short"
|
|
775
|
+
})}`)
|
|
776
|
+
_$effect3((_$p)=>_$setProp3(_el$8,"fg",props.api.theme.current.textMuted,_$p))
|
|
777
|
+
return _el$8
|
|
674
778
|
})()
|
|
675
779
|
}),null)
|
|
676
|
-
_$
|
|
677
|
-
},get children(){var _el$
|
|
678
|
-
_$
|
|
679
|
-
_$
|
|
680
|
-
_$
|
|
681
|
-
return _el$
|
|
780
|
+
_$insert3(_el$,_$createComponent4(Show,{get when(){return _$memo2(()=>lifetime().remaining===undefined)()&&expiry()
|
|
781
|
+
},get children(){var _el$6=_$createElement3("text")
|
|
782
|
+
_$insertNode3(_el$6,_$createTextNode(`Grant date unavailable or invalid; progress unknown`))
|
|
783
|
+
_$setProp3(_el$6,"wrapMode","word")
|
|
784
|
+
_$effect3((_$p)=>_$setProp3(_el$6,"fg",props.api.theme.current.textMuted,_$p))
|
|
785
|
+
return _el$6
|
|
682
786
|
}}),null)
|
|
683
|
-
_$
|
|
787
|
+
_$effect3((_$p)=>_$setProp3(_el$2,"fg",props.api.theme.current.text,_$p))
|
|
788
|
+
return _el$
|
|
789
|
+
})()
|
|
790
|
+
}
|
|
791
|
+
function ResetCreditCard(props){const icons=useIcons3()
|
|
792
|
+
const view=()=>resetCreditView(props.credit,props.now)
|
|
793
|
+
return(()=>{var _el$=_$createElement4("box"),_el$2=_$createElement4("text"),_el$3=_$createTextNode2(` `),_el$4=_$createElement4("text"),_el$5=_$createTextNode2(` `),_el$6=_$createElement4("text")
|
|
794
|
+
_$insertNode4(_el$,_el$2)
|
|
795
|
+
_$insertNode4(_el$,_el$4)
|
|
796
|
+
_$insertNode4(_el$,_el$6)
|
|
797
|
+
_$setProp4(_el$,"width","100%")
|
|
798
|
+
_$setProp4(_el$,"minWidth",0)
|
|
799
|
+
_$setProp4(_el$,"border",true)
|
|
800
|
+
_$setProp4(_el$,"paddingLeft",1)
|
|
801
|
+
_$setProp4(_el$,"paddingRight",1)
|
|
802
|
+
_$insertNode4(_el$2,_el$3)
|
|
803
|
+
_$setProp4(_el$2,"wrapMode","word")
|
|
804
|
+
_$insert4(_el$2,()=>icons.icon("reset"),_el$3)
|
|
805
|
+
_$insert4(_el$2,()=>view().title,null)
|
|
806
|
+
_$insertNode4(_el$4,_el$5)
|
|
807
|
+
_$setProp4(_el$4,"wrapMode","word")
|
|
808
|
+
_$insert4(_el$4,()=>icons.icon(view().canReview?"done":"info"),_el$5)
|
|
809
|
+
_$insert4(_el$4,()=>view().status,null)
|
|
810
|
+
_$insert4(_el$,_$createComponent5(ResetCreditExpiry,{get api(){return props.api
|
|
811
|
+
},get credit(){return props.credit
|
|
812
|
+
},get now(){return props.now
|
|
813
|
+
}}),_el$6)
|
|
814
|
+
_$setProp4(_el$6,"wrapMode","word")
|
|
815
|
+
_$insert4(_el$6,(()=>{var _c$=_$memo3(()=>!!view().canReview)
|
|
816
|
+
return()=>_c$()?`${icons.icon("right")} ${props.disabled ? "Review unavailable" : "Review credit"}`:"Cannot use this credit"
|
|
817
|
+
})())
|
|
818
|
+
_$effect4((_p$)=>{var _v$=`opencode-navigator.reset-credit.${props.credit.id}`,_v$2=props.api.theme.current.borderSubtle,_v$3=TextAttributes.BOLD,_v$4=props.api.theme.current.text,_v$5=props.api.theme.current.textMuted,_v$6=props.disabled||!view().canReview?props.api.theme.current.textMuted:props.api.theme.current.primary
|
|
819
|
+
_v$!==_p$.e&&(_p$.e=_$setProp4(_el$,"id",_v$,_p$.e))
|
|
820
|
+
_v$2!==_p$.t&&(_p$.t=_$setProp4(_el$,"borderColor",_v$2,_p$.t))
|
|
821
|
+
_v$3!==_p$.a&&(_p$.a=_$setProp4(_el$2,"attributes",_v$3,_p$.a))
|
|
822
|
+
_v$4!==_p$.o&&(_p$.o=_$setProp4(_el$2,"fg",_v$4,_p$.o))
|
|
823
|
+
_v$5!==_p$.i&&(_p$.i=_$setProp4(_el$4,"fg",_v$5,_p$.i))
|
|
824
|
+
_v$6!==_p$.n&&(_p$.n=_$setProp4(_el$6,"fg",_v$6,_p$.n))
|
|
825
|
+
return _p$
|
|
826
|
+
},{e:undefined,t:undefined,a:undefined,o:undefined,i:undefined,n:undefined
|
|
827
|
+
})
|
|
684
828
|
return _el$
|
|
685
829
|
})()
|
|
686
830
|
}
|
|
@@ -697,78 +841,88 @@ onCleanup(()=>clearInterval(timer))
|
|
|
697
841
|
createEffect(()=>{if(!current())
|
|
698
842
|
dialogs.close()
|
|
699
843
|
})
|
|
700
|
-
const options=()=>[...credits()?.credits?.map((credit)=>({title:credit.title??`Credit ${credit.id}`,value:`credit:${credit.id}`,icon:"presets",description:
|
|
844
|
+
const options=createMemo(()=>[...credits()?.credits?.map((credit)=>({title:credit.title??`Credit ${credit.id}`,value:`credit:${credit.id}`,icon:"presets",description:""
|
|
701
845
|
}))??[],...credits()?.availableCount&&(credits()?.credits?.length??0)<credits().availableCount?[{title:"Use next available credit",value:"credit:",icon:"presets",description:"Credit details unavailable"
|
|
702
846
|
}]:[],...pending()?[{title:"Reconcile pending attempt",value:"retry",icon:"retry",description:"Reuse the previous idempotency key"
|
|
703
847
|
}]:[],{title:"Cancel",value:"cancel",icon:"close",description:"No credit is used"
|
|
704
|
-
}]
|
|
705
|
-
return _$
|
|
848
|
+
}])
|
|
849
|
+
return _$createComponent6(SelectionMenu,{get api(){return props.api
|
|
706
850
|
},get title(){return `Banked resets \xB7 ${credits()?.availableCount ?? 0} available${actions.busy() ? " \xB7 pending" : ""}`
|
|
707
|
-
},get options(){return options()
|
|
708
|
-
},get height(){return Math.min(
|
|
709
|
-
},adaptive:true,
|
|
710
|
-
|
|
711
|
-
},get
|
|
712
|
-
},get
|
|
851
|
+
},description:"Review a credit first. Nothing is used until you confirm.",get options(){return options()
|
|
852
|
+
},get height(){return Math.min(24,options().length*8)
|
|
853
|
+
},adaptive:true,renderOption:(option)=>{const credit=credits()?.credits?.find((item)=>option.value===`credit:${item.id}`)
|
|
854
|
+
return credit&&_$createComponent6(ResetCreditCard,{get api(){return props.api
|
|
855
|
+
},credit,get now(){return now()
|
|
856
|
+
},get disabled(){return actions.busy()||Boolean(pending())
|
|
713
857
|
}})
|
|
714
|
-
}
|
|
858
|
+
},onSelect:(option)=>{if(option.value==="cancel")
|
|
715
859
|
dialogs.back()
|
|
716
|
-
else if(option.value==="retry")
|
|
860
|
+
else if(!actions.busy()){if(option.value==="retry")
|
|
717
861
|
actions.consume(pending()?.creditID)
|
|
718
|
-
else if(option.value.startsWith("credit:"))
|
|
719
|
-
|
|
720
|
-
|
|
862
|
+
else if(!pending()&&option.value.startsWith("credit:")){const id=option.value.slice("credit:".length)||undefined
|
|
863
|
+
const credit=credits()?.credits?.find((item)=>item.id===id)
|
|
864
|
+
if(!credit||resetCreditView(credit,now()).canReview)
|
|
865
|
+
actions.review(id)
|
|
866
|
+
}}}})
|
|
721
867
|
}
|
|
722
|
-
import {createComponent as _$
|
|
723
|
-
import {For as For2,Show as
|
|
724
|
-
import {effect as _$
|
|
725
|
-
import {insertNode as _$
|
|
726
|
-
import {insert as _$
|
|
727
|
-
import {memo as _$
|
|
728
|
-
import {setProp as _$
|
|
729
|
-
import {createElement as _$
|
|
730
|
-
function QuotaBalanceRow(props){return(()=>{var _el$=_$
|
|
731
|
-
_$
|
|
732
|
-
_$
|
|
733
|
-
_$
|
|
734
|
-
_$
|
|
868
|
+
import {createComponent as _$createComponent8} from "@opentui/solid"
|
|
869
|
+
import {For as For2,Show as Show2} from "solid-js"
|
|
870
|
+
import {effect as _$effect5} from "@opentui/solid"
|
|
871
|
+
import {insertNode as _$insertNode5} from "@opentui/solid"
|
|
872
|
+
import {insert as _$insert5} from "@opentui/solid"
|
|
873
|
+
import {memo as _$memo5} from "@opentui/solid"
|
|
874
|
+
import {setProp as _$setProp5} from "@opentui/solid"
|
|
875
|
+
import {createElement as _$createElement5} from "@opentui/solid"
|
|
876
|
+
function QuotaBalanceRow(props){return(()=>{var _el$=_$createElement5("text"),_el$2=_$createElement5("span")
|
|
877
|
+
_$insertNode5(_el$,_el$2)
|
|
878
|
+
_$setProp5(_el$,"wrapMode","none")
|
|
879
|
+
_$setProp5(_el$,"truncate",true)
|
|
880
|
+
_$insert5(_el$2,(()=>{var _c$=_$memo5(()=>!!props.balance.unlimited)
|
|
735
881
|
return()=>_c$()?"No configured cap":`${props.balance.amount} ${props.balance.unit ?? "(provider unit not specified)"}`
|
|
736
882
|
})())
|
|
737
|
-
_$
|
|
738
|
-
_$
|
|
883
|
+
_$insert5(_el$,()=>` \xB7 ${props.balance.scope} \xB7 ${props.balance.label}`,null)
|
|
884
|
+
_$effect5((_p$)=>{var _v$=props.api.theme.current.textMuted,_v$2={fg:props.api.theme.current.text
|
|
739
885
|
}
|
|
740
|
-
_v$!==_p$.e&&(_p$.e=_$
|
|
741
|
-
_v$2!==_p$.t&&(_p$.t=_$
|
|
886
|
+
_v$!==_p$.e&&(_p$.e=_$setProp5(_el$,"fg",_v$,_p$.e))
|
|
887
|
+
_v$2!==_p$.t&&(_p$.t=_$setProp5(_el$2,"style",_v$2,_p$.t))
|
|
742
888
|
return _p$
|
|
743
889
|
},{e:undefined,t:undefined
|
|
744
890
|
})
|
|
745
891
|
return _el$
|
|
746
892
|
})()
|
|
747
893
|
}
|
|
748
|
-
import {insert as _$
|
|
749
|
-
import {createComponent as _$
|
|
750
|
-
import {setProp as _$
|
|
751
|
-
import {createElement as _$
|
|
894
|
+
import {insert as _$insert6} from "@opentui/solid"
|
|
895
|
+
import {createComponent as _$createComponent7} from "@opentui/solid"
|
|
896
|
+
import {setProp as _$setProp6} from "@opentui/solid"
|
|
897
|
+
import {createElement as _$createElement6} from "@opentui/solid"
|
|
752
898
|
import {For} from "solid-js"
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
899
|
+
import {createSignal as createSignal7,onCleanup as onCleanup2} from "solid-js"
|
|
900
|
+
function createQuotaClock(){const [now,setNow]=createSignal7(Date.now())
|
|
901
|
+
const timer=setInterval(()=>setNow(Date.now()),30000)
|
|
902
|
+
onCleanup2(()=>clearInterval(timer))
|
|
903
|
+
return now
|
|
904
|
+
}
|
|
905
|
+
function QuotaWindowGroup(props){const now=createQuotaClock()
|
|
906
|
+
return(()=>{var _el$=_$createElement6("box")
|
|
907
|
+
_$setProp6(_el$,"width","100%")
|
|
908
|
+
_$setProp6(_el$,"minWidth",0)
|
|
909
|
+
_$setProp6(_el$,"gap",1)
|
|
910
|
+
_$setProp6(_el$,"overflow","hidden")
|
|
911
|
+
_$insert6(_el$,_$createComponent7(For,{get each(){return props.windows.map((window)=>window.id)
|
|
912
|
+
},children:(_,index)=>_$createComponent7(QuotaWindowRow,{get api(){return props.api
|
|
760
913
|
},get window(){return props.windows[index()]
|
|
914
|
+
},get now(){return now()
|
|
761
915
|
}})
|
|
762
916
|
}))
|
|
763
917
|
return _el$
|
|
764
918
|
})()
|
|
765
919
|
}
|
|
766
|
-
function QuotaSnapshotRows(props){return [_$
|
|
767
|
-
},get children(){return _$
|
|
920
|
+
function QuotaSnapshotRows(props){return [_$createComponent8(Show2,{get when(){return props.snapshot.windows.length>0
|
|
921
|
+
},get children(){return _$createComponent8(QuotaWindowGroup,{get api(){return props.api
|
|
768
922
|
},get windows(){return props.snapshot.windows
|
|
769
923
|
}})
|
|
770
|
-
}}),_$
|
|
771
|
-
},children:(balance)=>_$
|
|
924
|
+
}}),_$createComponent8(For2,{get each(){return props.snapshot.balances
|
|
925
|
+
},children:(balance)=>_$createComponent8(QuotaBalanceRow,{get api(){return props.api
|
|
772
926
|
},balance
|
|
773
927
|
})
|
|
774
928
|
})]
|
|
@@ -818,8 +972,8 @@ function providerQuotaCapability(id,canonical){const key=aliases[canonical??id]?
|
|
|
818
972
|
const found=PROVIDER_QUOTA_CAPABILITIES.find((entry)=>entry.id===key)
|
|
819
973
|
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/"]
|
|
820
974
|
}}
|
|
821
|
-
import {createSignal as
|
|
822
|
-
function createOpenCodeUsageAdapter(context){const [revision,setRevision]=
|
|
975
|
+
import {createSignal as createSignal8} from "solid-js"
|
|
976
|
+
function createOpenCodeUsageAdapter(context){const [revision,setRevision]=createSignal8(0)
|
|
823
977
|
let generation=0
|
|
824
978
|
const location=()=>context.location??context.data.location.default()
|
|
825
979
|
const provider=(model)=>context.data.location.provider?.list(location())?.find((item)=>item.id===model.providerID)
|
|
@@ -877,33 +1031,33 @@ return{model,providerId:model.providerID,providerName:activeProvider.name,fetche
|
|
|
877
1031
|
dispose()
|
|
878
1032
|
}}
|
|
879
1033
|
return{adapter,target:(model)=>({...model,quotaContext:key()})}}
|
|
880
|
-
import {insert as _$
|
|
1034
|
+
import {insert as _$insert12} from "@opentui/solid"
|
|
881
1035
|
import {mergeProps as _$mergeProps} from "@opentui/solid"
|
|
882
|
-
import {setProp as _$
|
|
883
|
-
import {effect as _$
|
|
884
|
-
import {createTextNode as _$
|
|
885
|
-
import {insertNode as _$
|
|
886
|
-
import {createElement as _$
|
|
887
|
-
import {memo as _$
|
|
888
|
-
import {createComponent as _$
|
|
889
|
-
import {Show as
|
|
1036
|
+
import {setProp as _$setProp13} from "@opentui/solid"
|
|
1037
|
+
import {effect as _$effect12} from "@opentui/solid"
|
|
1038
|
+
import {createTextNode as _$createTextNode6} from "@opentui/solid"
|
|
1039
|
+
import {insertNode as _$insertNode9} from "@opentui/solid"
|
|
1040
|
+
import {createElement as _$createElement13} from "@opentui/solid"
|
|
1041
|
+
import {memo as _$memo11} from "@opentui/solid"
|
|
1042
|
+
import {createComponent as _$createComponent16} from "@opentui/solid"
|
|
1043
|
+
import {Show as Show8} from "solid-js"
|
|
890
1044
|
import {useDialogs as useDialogs3} from "./tui.js"
|
|
891
|
-
import {setProp as _$
|
|
892
|
-
import {effect as _$
|
|
893
|
-
import {createTextNode as _$
|
|
894
|
-
import {insertNode as _$
|
|
895
|
-
import {createElement as _$
|
|
896
|
-
import {memo as _$
|
|
897
|
-
import {createComponent as _$
|
|
898
|
-
import {Show as
|
|
899
|
-
import {useDialogs as useDialogs2,useIcons as
|
|
900
|
-
import {createComponent as _$
|
|
901
|
-
import {effect as _$
|
|
902
|
-
import {insert as _$
|
|
903
|
-
import {setProp as _$
|
|
904
|
-
import {createElement as _$
|
|
1045
|
+
import {setProp as _$setProp8} from "@opentui/solid"
|
|
1046
|
+
import {effect as _$effect7} from "@opentui/solid"
|
|
1047
|
+
import {createTextNode as _$createTextNode3} from "@opentui/solid"
|
|
1048
|
+
import {insertNode as _$insertNode6} from "@opentui/solid"
|
|
1049
|
+
import {createElement as _$createElement8} from "@opentui/solid"
|
|
1050
|
+
import {memo as _$memo6} from "@opentui/solid"
|
|
1051
|
+
import {createComponent as _$createComponent10} from "@opentui/solid"
|
|
1052
|
+
import {Show as Show3} from "solid-js"
|
|
1053
|
+
import {useDialogs as useDialogs2,useIcons as useIcons4} from "./tui.js"
|
|
1054
|
+
import {createComponent as _$createComponent9} from "@opentui/solid"
|
|
1055
|
+
import {effect as _$effect6} from "@opentui/solid"
|
|
1056
|
+
import {insert as _$insert7} from "@opentui/solid"
|
|
1057
|
+
import {setProp as _$setProp7} from "@opentui/solid"
|
|
1058
|
+
import {createElement as _$createElement7} from "@opentui/solid"
|
|
905
1059
|
import {SelectionBox} from "./tui.js"
|
|
906
|
-
import {createSignal as
|
|
1060
|
+
import {createSignal as createSignal9,onCleanup as onCleanup3} from "solid-js"
|
|
907
1061
|
function sidebarInteractiveColors(theme,state,normalColor=theme.text,mode="row"){const highlighted=!state.disabled&&(state.focused||mode==="control"&&state.hovered)
|
|
908
1062
|
let backgroundColor=theme.backgroundPanel
|
|
909
1063
|
let foregroundColor=normalColor
|
|
@@ -919,14 +1073,14 @@ else if(highlighted)
|
|
|
919
1073
|
foregroundColor=theme.selectedListItemText
|
|
920
1074
|
return{backgroundColor,foregroundColor}}
|
|
921
1075
|
function useSidebarItem(api,interaction,descriptor,normalColor=()=>api.theme.current.text,mode="row"){let unregister
|
|
922
|
-
const [hovered,setHovered]=
|
|
1076
|
+
const [hovered,setHovered]=createSignal9(false)
|
|
923
1077
|
const disabled=()=>descriptor.disabled?.()===true
|
|
924
1078
|
const focused=()=>Boolean(interaction?.ownsFocus()&&interaction.isSelected(descriptor.id))
|
|
925
1079
|
const colors=()=>sidebarInteractiveColors(api.theme.current,{focused:focused(),hovered:hovered(),disabled:disabled()},normalColor(),mode)
|
|
926
1080
|
const ref=(renderable)=>{unregister?.()
|
|
927
1081
|
unregister=interaction?.register({...descriptor,renderable})
|
|
928
1082
|
}
|
|
929
|
-
|
|
1083
|
+
onCleanup3(()=>unregister?.())
|
|
930
1084
|
return{ref,disabled,focused,backgroundColor:()=>colors().backgroundColor,foregroundColor:()=>colors().foregroundColor,onMouseOver:()=>setHovered(true),onMouseOut:()=>setHovered(false),select(event){interaction?.mouseSelect(descriptor.id,event)
|
|
931
1085
|
},activate(event){if(interaction)
|
|
932
1086
|
return interaction.mouseActivate(descriptor.id,event)
|
|
@@ -937,7 +1091,7 @@ return true
|
|
|
937
1091
|
}}}
|
|
938
1092
|
function LimitsAction(props){const item=useSidebarItem(props.api,props.interaction,{id:props.id,position:()=>props.position,disabled:()=>props.disabled===true,activate:props.onActivate
|
|
939
1093
|
},()=>props.api.theme.current.text,props.inline?"control":"row")
|
|
940
|
-
return _$
|
|
1094
|
+
return _$createComponent9(SelectionBox,{ref:(node)=>item.ref(node),get id(){return props.id
|
|
941
1095
|
},height:1,get flexGrow(){return props.flexGrow
|
|
942
1096
|
},get maxWidth(){return props.maxWidth
|
|
943
1097
|
},flexShrink:1,minWidth:3,get backgroundColor(){return item.backgroundColor()
|
|
@@ -945,48 +1099,48 @@ return _$createComponent7(SelectionBox,{ref:(node)=>item.ref(node),get id(){retu
|
|
|
945
1099
|
},get onMouseOut(){return item.onMouseOut
|
|
946
1100
|
},onMouseUp:(event)=>{event.stopPropagation()
|
|
947
1101
|
item.activate(event)
|
|
948
|
-
},get children(){var _el$=_$
|
|
949
|
-
_$
|
|
950
|
-
_$
|
|
951
|
-
_$
|
|
952
|
-
_$
|
|
1102
|
+
},get children(){var _el$=_$createElement7("text")
|
|
1103
|
+
_$setProp7(_el$,"wrapMode","none")
|
|
1104
|
+
_$setProp7(_el$,"truncate",true)
|
|
1105
|
+
_$insert7(_el$,()=>props.label)
|
|
1106
|
+
_$effect6((_$p)=>_$setProp7(_el$,"fg",item.foregroundColor(),_$p))
|
|
953
1107
|
return _el$
|
|
954
1108
|
}})
|
|
955
1109
|
}
|
|
956
|
-
function CodexAccountControls(props){const icons=
|
|
1110
|
+
function CodexAccountControls(props){const icons=useIcons4()
|
|
957
1111
|
const model=()=>props.controller.current().model
|
|
958
1112
|
const accountLink=createCodexAccountLink({api:props.api,preferences:props.preferences,adapter:props.codex,model,dialogs:useDialogs2(props.api)
|
|
959
1113
|
})
|
|
960
1114
|
const eligible=()=>(props.model.providerID==="openai"||props.model.hostConnection?.providerID==="openai")&&props.model.hostConnection?.method!=="api"
|
|
961
|
-
const action=(id,row,label,onActivate)=>_$
|
|
1115
|
+
const action=(id,row,label,onActivate)=>_$createComponent10(LimitsAction,{get api(){return props.api
|
|
962
1116
|
},get interaction(){return props.interaction
|
|
963
1117
|
},id:`${PLUGIN_ID}.limits.${id}`,get position(){return{section:props.navigationSection,row,column:0
|
|
964
1118
|
}},label,onActivate,get disabled(){return accountLink.busy()
|
|
965
1119
|
}})
|
|
966
|
-
return _$
|
|
967
|
-
},get children(){return [_$
|
|
968
|
-
},get children(){return [(()=>{var _el$=_$
|
|
969
|
-
_$
|
|
970
|
-
_$
|
|
1120
|
+
return _$createComponent10(Show3,{get when(){return eligible()
|
|
1121
|
+
},get children(){return [_$createComponent10(Show3,{get when(){return _$memo6(()=>!!!props.model.accountID)()&&(!props.model.hostConnection||props.model.hostConnection.status==="ready")
|
|
1122
|
+
},get children(){return [(()=>{var _el$=_$createElement8("text")
|
|
1123
|
+
_$insertNode6(_el$,_$createTextNode3(`Link the matching Codex account once for this connection`))
|
|
1124
|
+
_$effect7((_$p)=>_$setProp8(_el$,"fg",props.api.theme.current.textMuted,_$p))
|
|
971
1125
|
return _el$
|
|
972
|
-
})(),_$
|
|
973
|
-
}}),_$
|
|
974
|
-
},get children(){return [_$
|
|
1126
|
+
})(),_$memo6(()=>action("link",2,`${icons.icon("scope")} Link Codex CLI account`,()=>void accountLink.link()))]
|
|
1127
|
+
}}),_$createComponent10(Show3,{get when(){return _$memo6(()=>!!(props.model.accountID&&props.model.accountSource!=="host"))()&&props.controller.snapshot()?.availability==="unauthenticated"
|
|
1128
|
+
},get children(){return [_$memo6(()=>action("unlink",4,`${icons.icon("close")} Unlink Codex account`,()=>props.preferences.setCodexConnectionBinding(props.model.providerID,props.model.hostConnection?.id))),_$createComponent10(Show3,{get when(){return props.controller.snapshot()?.availability==="unauthenticated"
|
|
975
1129
|
},get children(){return action("relink",5,`${icons.icon("scope")} Relink Codex account`,()=>void accountLink.link())
|
|
976
1130
|
}})]
|
|
977
1131
|
}})]
|
|
978
1132
|
}})
|
|
979
1133
|
}
|
|
980
|
-
import {createComponent as _$
|
|
981
|
-
import {Show as
|
|
982
|
-
import {useIcons as
|
|
983
|
-
import {createComponent as _$
|
|
984
|
-
import {effect as _$
|
|
985
|
-
import {insert as _$
|
|
986
|
-
import {setProp as _$
|
|
987
|
-
import {createElement as _$
|
|
988
|
-
import {memo as _$
|
|
989
|
-
import {createEffect as createEffect2,createSignal as
|
|
1134
|
+
import {createComponent as _$createComponent12} from "@opentui/solid"
|
|
1135
|
+
import {Show as Show4} from "solid-js"
|
|
1136
|
+
import {useIcons as useIcons5} from "./tui.js"
|
|
1137
|
+
import {createComponent as _$createComponent11} from "@opentui/solid"
|
|
1138
|
+
import {effect as _$effect8} from "@opentui/solid"
|
|
1139
|
+
import {insert as _$insert8} from "@opentui/solid"
|
|
1140
|
+
import {setProp as _$setProp9} from "@opentui/solid"
|
|
1141
|
+
import {createElement as _$createElement9} from "@opentui/solid"
|
|
1142
|
+
import {memo as _$memo7} from "@opentui/solid"
|
|
1143
|
+
import {createEffect as createEffect2,createSignal as createSignal10,on} from "solid-js"
|
|
990
1144
|
import {SelectionBox as SelectionBox2} from "./tui.js"
|
|
991
1145
|
var graphemes=new Intl.Segmenter(undefined,{granularity:"grapheme"
|
|
992
1146
|
})
|
|
@@ -1003,12 +1157,12 @@ result += segment
|
|
|
1003
1157
|
}
|
|
1004
1158
|
return result + ellipsis
|
|
1005
1159
|
}
|
|
1006
|
-
function SectionHeaderControl(props){const [width,setWidth]=
|
|
1160
|
+
function SectionHeaderControl(props){const [width,setWidth]=createSignal10()
|
|
1007
1161
|
const control=useSidebarItem(props.api,props.interaction,{id:props.action.id,position:()=>props.position,disabled:props.action.disabled,activate:props.action.onActivate
|
|
1008
1162
|
},()=>props.api.theme.current.accent,"control")
|
|
1009
1163
|
createEffect2(on(()=>[props.action.label(),props.resetWidth],()=>setWidth(undefined)))
|
|
1010
1164
|
const label=()=>width()===undefined||props.iconOnly?props.action.label():truncateEnd(props.action.label(),width()-2)
|
|
1011
|
-
return _$
|
|
1165
|
+
return _$createComponent11(SelectionBox2,{ref:(node)=>control.ref(node),get id(){return props.action.id
|
|
1012
1166
|
},get iconOnly(){return props.iconOnly
|
|
1013
1167
|
},get width(){return props.iconOnly?3:undefined
|
|
1014
1168
|
},get flexShrink(){return props.iconOnly?0:1
|
|
@@ -1019,42 +1173,42 @@ return _$createComponent9(SelectionBox2,{ref:(node)=>control.ref(node),get id(){
|
|
|
1019
1173
|
},get onMouseOut(){return control.onMouseOut
|
|
1020
1174
|
},onMouseDown:(event)=>event.stopPropagation(),onMouseUp:(event)=>{event.stopPropagation()
|
|
1021
1175
|
control.activate(event)
|
|
1022
|
-
},get children(){var _el$=_$
|
|
1023
|
-
_$
|
|
1024
|
-
_$
|
|
1025
|
-
_$
|
|
1026
|
-
_$
|
|
1176
|
+
},get children(){var _el$=_$createElement9("text")
|
|
1177
|
+
_$setProp9(_el$,"wrapMode","none")
|
|
1178
|
+
_$setProp9(_el$,"height",1)
|
|
1179
|
+
_$insert8(_el$,label)
|
|
1180
|
+
_$effect8((_$p)=>_$setProp9(_el$,"fg",control.foregroundColor(),_$p))
|
|
1027
1181
|
return _el$
|
|
1028
1182
|
}})
|
|
1029
1183
|
}
|
|
1030
|
-
function LimitsHeaderControls(props){const icons=
|
|
1031
|
-
return [_$
|
|
1032
|
-
},get children(){return _$
|
|
1184
|
+
function LimitsHeaderControls(props){const icons=useIcons5()
|
|
1185
|
+
return [_$createComponent12(Show4,{get when(){return props.credits
|
|
1186
|
+
},get children(){return _$createComponent12(SectionHeaderControl,{get api(){return props.api
|
|
1033
1187
|
},get interaction(){return props.interaction
|
|
1034
1188
|
},get position(){return{section:props.navigationSection,row:0,column:1
|
|
1035
|
-
}},get action(){return{id:`${PLUGIN_ID}.limits.credits`,label:()=>"Banked Resets",disabled:()=>false,onActivate:props.onCredits
|
|
1189
|
+
}},get action(){return{id:`${PLUGIN_ID}.limits.credits`,label:()=>typeof props.credits==="number"?`${props.credits} Banked Resets`:"Banked Resets",disabled:()=>false,onActivate:props.onCredits
|
|
1036
1190
|
}}})
|
|
1037
|
-
}}),_$
|
|
1191
|
+
}}),_$createComponent12(SectionHeaderControl,{get api(){return props.api
|
|
1038
1192
|
},get interaction(){return props.interaction
|
|
1039
1193
|
},iconOnly:true,get position(){return{section:props.navigationSection,row:0,column:2
|
|
1040
1194
|
}},get action(){return{id:`${PLUGIN_ID}.limits.refresh`,label:()=>icons.icon(props.refreshing?"pending":"retry"),disabled:()=>props.refreshing||!props.canRefresh,onActivate:props.onRefresh
|
|
1041
1195
|
}}})]
|
|
1042
1196
|
}
|
|
1043
|
-
import {insert as _$
|
|
1044
|
-
import {effect as _$
|
|
1045
|
-
import {createTextNode as _$
|
|
1046
|
-
import {insertNode as _$
|
|
1047
|
-
import {memo as _$
|
|
1048
|
-
import {createComponent as _$
|
|
1049
|
-
import {setProp as _$
|
|
1050
|
-
import {createElement as _$
|
|
1051
|
-
import {Show as
|
|
1197
|
+
import {insert as _$insert9} from "@opentui/solid"
|
|
1198
|
+
import {effect as _$effect9} from "@opentui/solid"
|
|
1199
|
+
import {createTextNode as _$createTextNode4} from "@opentui/solid"
|
|
1200
|
+
import {insertNode as _$insertNode7} from "@opentui/solid"
|
|
1201
|
+
import {memo as _$memo8} from "@opentui/solid"
|
|
1202
|
+
import {createComponent as _$createComponent13} from "@opentui/solid"
|
|
1203
|
+
import {setProp as _$setProp10} from "@opentui/solid"
|
|
1204
|
+
import {createElement as _$createElement10} from "@opentui/solid"
|
|
1205
|
+
import {Show as Show5} from "solid-js"
|
|
1052
1206
|
function LimitsModelRow(props){const names=()=>props.selection?.names(props.model)??{provider:props.model.providerID,model:props.model.modelID
|
|
1053
1207
|
}
|
|
1054
|
-
return(()=>{var _el$=_$
|
|
1055
|
-
_$
|
|
1056
|
-
_$
|
|
1057
|
-
_$
|
|
1208
|
+
return(()=>{var _el$=_$createElement10("box")
|
|
1209
|
+
_$setProp10(_el$,"flexDirection","row")
|
|
1210
|
+
_$setProp10(_el$,"minWidth",0)
|
|
1211
|
+
_$insert9(_el$,_$createComponent13(LimitsAction,{get api(){return props.api
|
|
1058
1212
|
},get interaction(){return props.interaction
|
|
1059
1213
|
},inline:true,flexGrow:1,get maxWidth(){return Bun.stringWidth(`[${names().provider}] ${names().model}`) + 2
|
|
1060
1214
|
},id:`${PLUGIN_ID}.limits.model`,get position(){return{section:props.navigationSection,row:1,column:0
|
|
@@ -1062,13 +1216,13 @@ _$insert7(_el$,_$createComponent11(LimitsAction,{get api(){return props.api
|
|
|
1062
1216
|
},get disabled(){return !props.selection?.canOpen("model",props.model)
|
|
1063
1217
|
},onActivate:()=>props.selection?.open("model",props.model)
|
|
1064
1218
|
}),null)
|
|
1065
|
-
_$
|
|
1066
|
-
},get children(){return [(()=>{var _el$2=_$
|
|
1067
|
-
_$
|
|
1068
|
-
_$
|
|
1069
|
-
_$
|
|
1219
|
+
_$insert9(_el$,_$createComponent13(Show5,{get when(){return props.model.variant||props.selection?.variants(props.model).length
|
|
1220
|
+
},get children(){return [(()=>{var _el$2=_$createElement10("text"),_el$3=_$createTextNode4(` \xB7 `)
|
|
1221
|
+
_$insertNode7(_el$2,_el$3)
|
|
1222
|
+
_$setProp10(_el$2,"flexShrink",0)
|
|
1223
|
+
_$effect9((_$p)=>_$setProp10(_el$2,"fg",props.api.theme.current.textMuted,_$p))
|
|
1070
1224
|
return _el$2
|
|
1071
|
-
})(),_$
|
|
1225
|
+
})(),_$createComponent13(LimitsAction,{get api(){return props.api
|
|
1072
1226
|
},get interaction(){return props.interaction
|
|
1073
1227
|
},inline:true,id:`${PLUGIN_ID}.limits.variant`,get position(){return{section:props.navigationSection,row:1,column:1
|
|
1074
1228
|
}},get label(){return props.model.variant??"Default"
|
|
@@ -1079,15 +1233,15 @@ return _el$2
|
|
|
1079
1233
|
return _el$
|
|
1080
1234
|
})()
|
|
1081
1235
|
}
|
|
1082
|
-
import {effect as _$
|
|
1083
|
-
import {insert as _$
|
|
1084
|
-
import {setProp as _$
|
|
1085
|
-
import {createElement as _$
|
|
1086
|
-
import {createComponent as _$
|
|
1087
|
-
import {memo as _$
|
|
1088
|
-
import {Show as
|
|
1089
|
-
import {createSignal as
|
|
1090
|
-
function createProviderAccountSource(ports){const [connections,setConnections]=
|
|
1236
|
+
import {effect as _$effect10} from "@opentui/solid"
|
|
1237
|
+
import {insert as _$insert10} from "@opentui/solid"
|
|
1238
|
+
import {setProp as _$setProp11} from "@opentui/solid"
|
|
1239
|
+
import {createElement as _$createElement11} from "@opentui/solid"
|
|
1240
|
+
import {createComponent as _$createComponent14} from "@opentui/solid"
|
|
1241
|
+
import {memo as _$memo9} from "@opentui/solid"
|
|
1242
|
+
import {Show as Show6} from "solid-js"
|
|
1243
|
+
import {createSignal as createSignal11} from "solid-js"
|
|
1244
|
+
function createProviderAccountSource(ports){const [connections,setConnections]=createSignal11({})
|
|
1091
1245
|
let generation=0
|
|
1092
1246
|
let disposed=false
|
|
1093
1247
|
let lastModel
|
|
@@ -1145,7 +1299,7 @@ return{...model,accountID:undefined,accountSource:undefined}
|
|
|
1145
1299
|
const accountID=connection?.accountID??preferences?.codexAccountForConnection(model.providerID,connection?.id,model.modelID)
|
|
1146
1300
|
const accountSource=connection?.accountID?"host":"binding"
|
|
1147
1301
|
return{...model,accountID,accountSource:accountID?accountSource:undefined}}
|
|
1148
|
-
import {createEffect as createEffect3,createMemo,on as on2,onCleanup as
|
|
1302
|
+
import {createEffect as createEffect3,createMemo as createMemo2,on as on2,onCleanup as onCleanup4} from "solid-js"
|
|
1149
1303
|
function quotaStatusMessage(input){const{model,snapshot,state}=input
|
|
1150
1304
|
if(state.status==="error")
|
|
1151
1305
|
return snapshot?"Stale \xB7 refresh failed":"Quota read failed \xB7 refresh to retry"
|
|
@@ -1181,85 +1335,85 @@ function LimitsStatus(props){const message=()=>{const{model,adapter
|
|
|
1181
1335
|
return quotaStatusMessage({model,snapshot:props.controller.snapshot(),state:props.controller.state(),hasAdapter:Boolean(adapter)
|
|
1182
1336
|
})
|
|
1183
1337
|
}
|
|
1184
|
-
return _$
|
|
1185
|
-
},children:(value)=>(()=>{var _el$=_$
|
|
1186
|
-
_$
|
|
1187
|
-
_$
|
|
1188
|
-
_$
|
|
1338
|
+
return _$createComponent14(Show6,{get when(){return _$memo9(()=>!!props.controller.current().model)()&&message()
|
|
1339
|
+
},children:(value)=>(()=>{var _el$=_$createElement11("text")
|
|
1340
|
+
_$setProp11(_el$,"wrapMode","word")
|
|
1341
|
+
_$insert10(_el$,value)
|
|
1342
|
+
_$effect10((_$p)=>_$setProp11(_el$,"fg",props.api.theme.current.textMuted,_$p))
|
|
1189
1343
|
return _el$
|
|
1190
1344
|
})()
|
|
1191
1345
|
})
|
|
1192
1346
|
}
|
|
1193
|
-
import {createComponent as _$
|
|
1194
|
-
import {effect as _$
|
|
1195
|
-
import {createTextNode as _$
|
|
1196
|
-
import {insertNode as _$
|
|
1197
|
-
import {memo as _$
|
|
1198
|
-
import {insert as _$
|
|
1199
|
-
import {setProp as _$
|
|
1200
|
-
import {createElement as _$
|
|
1201
|
-
import {Show as
|
|
1202
|
-
import {SelectionBox as SelectionBox3,useIcons as
|
|
1203
|
-
function Section(props){const icons=
|
|
1204
|
-
const [headerWidth,setHeaderWidth]=
|
|
1347
|
+
import {createComponent as _$createComponent15} from "@opentui/solid"
|
|
1348
|
+
import {effect as _$effect11} from "@opentui/solid"
|
|
1349
|
+
import {createTextNode as _$createTextNode5} from "@opentui/solid"
|
|
1350
|
+
import {insertNode as _$insertNode8} from "@opentui/solid"
|
|
1351
|
+
import {memo as _$memo10} from "@opentui/solid"
|
|
1352
|
+
import {insert as _$insert11} from "@opentui/solid"
|
|
1353
|
+
import {setProp as _$setProp12} from "@opentui/solid"
|
|
1354
|
+
import {createElement as _$createElement12} from "@opentui/solid"
|
|
1355
|
+
import {Show as Show7,createSignal as createSignal12} from "solid-js"
|
|
1356
|
+
import {SelectionBox as SelectionBox3,useIcons as useIcons6} from "./tui.js"
|
|
1357
|
+
function Section(props){const icons=useIcons6()
|
|
1358
|
+
const [headerWidth,setHeaderWidth]=createSignal12(0)
|
|
1205
1359
|
const icon=()=>props.section?icons.section(props.section):props.icon
|
|
1206
1360
|
const theme=()=>props.api.theme.current
|
|
1207
1361
|
const item=useSidebarItem(props.api,props.interaction,{id:props.sectionId??`section.${props.title}`,position:()=>({section:props.navigationSection??0,row:0,column:0
|
|
1208
1362
|
}),activate:props.onToggle
|
|
1209
1363
|
})
|
|
1210
|
-
return(()=>{var _el$=_$
|
|
1211
|
-
_$
|
|
1212
|
-
_$
|
|
1364
|
+
return(()=>{var _el$=_$createElement12("box")
|
|
1365
|
+
_$setProp12(_el$,"gap",1)
|
|
1366
|
+
_$insert11(_el$,_$createComponent15(SelectionBox3,{ref:(node)=>item.ref(node),get id(){return props.sectionId
|
|
1213
1367
|
},flexDirection:"row",height:1,justifyContent:"space-between",gap:1,get backgroundColor(){return item.backgroundColor()
|
|
1214
1368
|
},get onMouseOver(){return item.onMouseOver
|
|
1215
1369
|
},get onMouseOut(){return item.onMouseOut
|
|
1216
1370
|
},onMouseDown:(event)=>item.activate(event),onSizeChange:function(){setHeaderWidth(this.width)
|
|
1217
|
-
},get children(){return [(()=>{var _el$2=_$
|
|
1218
|
-
_$
|
|
1219
|
-
_$
|
|
1220
|
-
_$
|
|
1221
|
-
_$
|
|
1222
|
-
_$
|
|
1223
|
-
_$
|
|
1224
|
-
_$
|
|
1225
|
-
_$
|
|
1371
|
+
},get children(){return [(()=>{var _el$2=_$createElement12("text"),_el$3=_$createElement12("span"),_el$4=_$createTextNode5(` `),_el$5=_$createElement12("span"),_el$6=_$createElement12("b")
|
|
1372
|
+
_$insertNode8(_el$2,_el$3)
|
|
1373
|
+
_$insertNode8(_el$2,_el$4)
|
|
1374
|
+
_$insertNode8(_el$2,_el$5)
|
|
1375
|
+
_$insertNode8(_el$2,_el$6)
|
|
1376
|
+
_$setProp12(_el$2,"flexShrink",0)
|
|
1377
|
+
_$setProp12(_el$2,"wrapMode","none")
|
|
1378
|
+
_$insert11(_el$3,()=>icons.icon(props.open?"expanded":"collapsed"))
|
|
1379
|
+
_$insert11(_el$5,(()=>{var _c$=_$memo10(()=>!!icon())
|
|
1226
1380
|
return()=>_c$()?`${icon()} `:""
|
|
1227
1381
|
})())
|
|
1228
|
-
_$
|
|
1229
|
-
_$
|
|
1382
|
+
_$insert11(_el$6,()=>props.title)
|
|
1383
|
+
_$effect11((_p$)=>{var _v$=item.foregroundColor(),_v$2={fg:item.focused()?item.foregroundColor():theme().accent
|
|
1230
1384
|
},_v$3={fg:item.focused()?item.foregroundColor():theme().accent
|
|
1231
1385
|
}
|
|
1232
|
-
_v$!==_p$.e&&(_p$.e=_$
|
|
1233
|
-
_v$2!==_p$.t&&(_p$.t=_$
|
|
1234
|
-
_v$3!==_p$.a&&(_p$.a=_$
|
|
1386
|
+
_v$!==_p$.e&&(_p$.e=_$setProp12(_el$2,"fg",_v$,_p$.e))
|
|
1387
|
+
_v$2!==_p$.t&&(_p$.t=_$setProp12(_el$3,"style",_v$2,_p$.t))
|
|
1388
|
+
_v$3!==_p$.a&&(_p$.a=_$setProp12(_el$5,"style",_v$3,_p$.a))
|
|
1235
1389
|
return _p$
|
|
1236
1390
|
},{e:undefined,t:undefined,a:undefined
|
|
1237
1391
|
})
|
|
1238
1392
|
return _el$2
|
|
1239
|
-
})(),(()=>{var _el$7=_$
|
|
1240
|
-
_$
|
|
1241
|
-
_$
|
|
1242
|
-
_$
|
|
1243
|
-
_$
|
|
1244
|
-
_$
|
|
1245
|
-
_$
|
|
1246
|
-
_$
|
|
1247
|
-
},children:(action)=>_$
|
|
1393
|
+
})(),(()=>{var _el$7=_$createElement12("box")
|
|
1394
|
+
_$setProp12(_el$7,"flexDirection","row")
|
|
1395
|
+
_$setProp12(_el$7,"gap",1)
|
|
1396
|
+
_$setProp12(_el$7,"flexGrow",1)
|
|
1397
|
+
_$setProp12(_el$7,"minWidth",0)
|
|
1398
|
+
_$setProp12(_el$7,"justifyContent","flex-end")
|
|
1399
|
+
_$insert11(_el$7,()=>props.headerControls,null)
|
|
1400
|
+
_$insert11(_el$7,_$createComponent15(Show7,{get when(){return props.headerAction
|
|
1401
|
+
},children:(action)=>_$createComponent15(SectionHeaderControl,{get api(){return props.api
|
|
1248
1402
|
},get interaction(){return props.interaction
|
|
1249
1403
|
},get action(){return action()
|
|
1250
1404
|
},get resetWidth(){return headerWidth()
|
|
1251
1405
|
},get position(){return{section:props.navigationSection??0,row:0,column:1
|
|
1252
1406
|
}}})
|
|
1253
1407
|
}),null)
|
|
1254
|
-
_$
|
|
1255
|
-
},get children(){var _el$8=_$
|
|
1256
|
-
_$
|
|
1257
|
-
_$
|
|
1258
|
-
_$
|
|
1259
|
-
_$
|
|
1260
|
-
_$
|
|
1261
|
-
_v$4!==_p$.e&&(_p$.e=_$
|
|
1262
|
-
_v$5!==_p$.t&&(_p$.t=_$
|
|
1408
|
+
_$insert11(_el$7,_$createComponent15(Show7,{get when(){return props.summary
|
|
1409
|
+
},get children(){var _el$8=_$createElement12("text")
|
|
1410
|
+
_$setProp12(_el$8,"wrapMode","none")
|
|
1411
|
+
_$setProp12(_el$8,"truncate",true)
|
|
1412
|
+
_$setProp12(_el$8,"height",1)
|
|
1413
|
+
_$insert11(_el$8,()=>props.summary)
|
|
1414
|
+
_$effect11((_p$)=>{var _v$4=item.focused()?item.foregroundColor():theme().textMuted,_v$5=props.headerAction?0:1
|
|
1415
|
+
_v$4!==_p$.e&&(_p$.e=_$setProp12(_el$8,"fg",_v$4,_p$.e))
|
|
1416
|
+
_v$5!==_p$.t&&(_p$.t=_$setProp12(_el$8,"flexShrink",_v$5,_p$.t))
|
|
1263
1417
|
return _p$
|
|
1264
1418
|
},{e:undefined,t:undefined
|
|
1265
1419
|
})
|
|
@@ -1268,7 +1422,7 @@ return _el$8
|
|
|
1268
1422
|
return _el$7
|
|
1269
1423
|
})()]
|
|
1270
1424
|
}}),null)
|
|
1271
|
-
_$
|
|
1425
|
+
_$insert11(_el$,_$createComponent15(Show7,{get when(){return props.open
|
|
1272
1426
|
},get children(){return props.children
|
|
1273
1427
|
}}),null)
|
|
1274
1428
|
return _el$
|
|
@@ -1279,47 +1433,47 @@ const model=()=>props.controller.current().model
|
|
|
1279
1433
|
const snapshot=props.controller.snapshot
|
|
1280
1434
|
function openCredits(){const selected=model()
|
|
1281
1435
|
if(selected)
|
|
1282
|
-
dialogs.open(()=>_$
|
|
1436
|
+
dialogs.open(()=>_$createComponent16(ResetCreditDialog,{get api(){return props.api
|
|
1283
1437
|
},get preferences(){return props.preferences
|
|
1284
1438
|
},get controller(){return props.controller
|
|
1285
1439
|
},get adapter(){return props.codex
|
|
1286
1440
|
},model:selected
|
|
1287
1441
|
}))
|
|
1288
1442
|
}
|
|
1289
|
-
return _$
|
|
1443
|
+
return _$createComponent16(Section,{get api(){return props.api
|
|
1290
1444
|
},get interaction(){return props.interaction
|
|
1291
1445
|
},sectionId:`${PLUGIN_ID}.section.limits`,get navigationSection(){return props.navigationSection
|
|
1292
|
-
},title:"LIMITS",section:"limits",summary:"",get headerControls(){return _$
|
|
1446
|
+
},title:"LIMITS",section:"limits",summary:"",get headerControls(){return _$createComponent16(LimitsHeaderControls,{get api(){return props.api
|
|
1293
1447
|
},get interaction(){return props.interaction
|
|
1294
1448
|
},get navigationSection(){return props.navigationSection
|
|
1295
|
-
},get credits(){return
|
|
1449
|
+
},get credits(){return snapshot()?.bankedResets?.availableCount||Boolean(props.preferences.pendingResetAttempt())
|
|
1296
1450
|
},get refreshing(){return ["loading","refreshing"].includes(props.controller.state().status)
|
|
1297
1451
|
},get canRefresh(){return Boolean(model()&&(props.controller.current().adapter??model()?.hostConnection?.status==="unavailable"))
|
|
1298
1452
|
},onCredits:openCredits,onRefresh:()=>void props.controller.refresh(true)
|
|
1299
1453
|
})
|
|
1300
1454
|
},get open(){return props.preferences.expanded().limits
|
|
1301
|
-
},onToggle:()=>props.preferences.toggleSectionExpanded("limits"),get children(){return _$
|
|
1302
|
-
},get fallback(){return(()=>{var _el$=_$
|
|
1303
|
-
_$
|
|
1304
|
-
_$
|
|
1455
|
+
},onToggle:()=>props.preferences.toggleSectionExpanded("limits"),get children(){return _$createComponent16(Show8,{get when(){return model()
|
|
1456
|
+
},get fallback(){return(()=>{var _el$=_$createElement13("text")
|
|
1457
|
+
_$insertNode9(_el$,_$createTextNode6(`Open a session to view model limits`))
|
|
1458
|
+
_$effect12((_$p)=>_$setProp13(_el$,"fg",props.api.theme.current.textMuted,_$p))
|
|
1305
1459
|
return _el$
|
|
1306
1460
|
})()
|
|
1307
|
-
},children:(selected)=>(()=>{var _el$3=_$
|
|
1308
|
-
_$
|
|
1309
|
-
_$
|
|
1310
|
-
_$
|
|
1311
|
-
_$
|
|
1312
|
-
_$
|
|
1461
|
+
},children:(selected)=>(()=>{var _el$3=_$createElement13("box")
|
|
1462
|
+
_$setProp13(_el$3,"width","100%")
|
|
1463
|
+
_$setProp13(_el$3,"minWidth",0)
|
|
1464
|
+
_$setProp13(_el$3,"flexShrink",1)
|
|
1465
|
+
_$setProp13(_el$3,"overflow","hidden")
|
|
1466
|
+
_$insert12(_el$3,_$createComponent16(LimitsModelRow,_$mergeProps(props,{get model(){return selected()
|
|
1313
1467
|
},get selection(){return props.modelSelection
|
|
1314
1468
|
}})),null)
|
|
1315
|
-
_$
|
|
1469
|
+
_$insert12(_el$3,_$createComponent16(CodexAccountControls,_$mergeProps(props,{get model(){return selected()
|
|
1316
1470
|
}})),null)
|
|
1317
|
-
_$
|
|
1318
|
-
},children:(quota)=>_$
|
|
1471
|
+
_$insert12(_el$3,_$createComponent16(Show8,{get when(){return _$memo11(()=>!!(snapshot()&&["ready","stale"].includes(snapshot().availability)))()?snapshot():undefined
|
|
1472
|
+
},children:(quota)=>_$createComponent16(QuotaSnapshotRows,{get api(){return props.api
|
|
1319
1473
|
},get snapshot(){return quota()
|
|
1320
1474
|
}})
|
|
1321
1475
|
}),null)
|
|
1322
|
-
_$
|
|
1476
|
+
_$insert12(_el$3,_$createComponent16(LimitsStatus,{get api(){return props.api
|
|
1323
1477
|
},get controller(){return props.controller
|
|
1324
1478
|
}}),null)
|
|
1325
1479
|
return _el$3
|