opencode-navigator 0.21.4 → 0.21.6
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 +11 -0
- package/README.md +23 -8
- package/dist/{chunk-cmmnfes2.js → chunk-d1bws32s.js} +2 -1
- package/dist/layout-preset-actions.js +1 -1
- package/dist/navigator-updates.js +1 -1
- package/dist/project-profile.js +5 -1
- package/dist/provider-limits.js +217 -165
- package/dist/quick-actions-settings.js +1 -1
- package/dist/tui.js +125 -74
- package/package.json +1 -1
package/dist/provider-limits.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {PLUGIN_ID
|
|
2
|
-
} from "./chunk-
|
|
2
|
+
} from "./chunk-d1bws32s.js";
|
|
3
3
|
function createCodexAppServerClient(input){const command=input.command??["codex","app-server","--stdio"]
|
|
4
4
|
const timeoutMs=input.timeoutMs??1e4
|
|
5
5
|
const pending=new Map
|
|
@@ -389,42 +389,56 @@ const [columns,setColumns]=createSignal4(0)
|
|
|
389
389
|
const view=()=>quotaPresentation(props.window)
|
|
390
390
|
const scale=()=>{const ratio=view().ratio
|
|
391
391
|
if(ratio===undefined)
|
|
392
|
-
return "
|
|
393
|
-
const width=
|
|
392
|
+
return "Scale unknown"
|
|
393
|
+
const width=columns()
|
|
394
394
|
const filled=Math.round(ratio*width)
|
|
395
395
|
const symbols=icons.style()==="text"?["=","-"]:["\u2501","\u2500"]
|
|
396
|
-
return
|
|
396
|
+
return symbols[0].repeat(filled) + symbols[1].repeat(width-filled)
|
|
397
397
|
}
|
|
398
|
-
|
|
398
|
+
const valueWidth=()=>Math.min(columns(),Bun.stringWidth(view().value))
|
|
399
|
+
const gap=()=>columns()>valueWidth()?1:0
|
|
400
|
+
const resetWidth=()=>Math.max(0,columns()-valueWidth()-gap())
|
|
401
|
+
return(()=>{var _el$=_$createElement("box"),_el$2=_$createElement("text"),_el$3=_$createElement("box"),_el$4=_$createElement("text"),_el$5=_$createElement("text")
|
|
399
402
|
_$insertNode(_el$,_el$2)
|
|
400
|
-
_$insertNode(_el$,_el$
|
|
403
|
+
_$insertNode(_el$,_el$3)
|
|
401
404
|
_$setProp(_el$,"width","100%")
|
|
402
405
|
_$setProp(_el$,"minWidth",0)
|
|
403
406
|
_$setProp(_el$,"flexShrink",1)
|
|
407
|
+
_$setProp(_el$,"height",2)
|
|
404
408
|
_$setProp(_el$,"overflow","hidden")
|
|
405
409
|
_$setProp(_el$,"onSizeChange",function(){setColumns(this.width)
|
|
406
410
|
})
|
|
407
|
-
_$insertNode(_el$2,_el$3)
|
|
408
411
|
_$setProp(_el$2,"width","100%")
|
|
409
412
|
_$setProp(_el$2,"minWidth",0)
|
|
410
413
|
_$setProp(_el$2,"height",1)
|
|
411
414
|
_$setProp(_el$2,"wrapMode","none")
|
|
412
415
|
_$setProp(_el$2,"truncate",true)
|
|
413
|
-
_$insert(_el$
|
|
414
|
-
_$
|
|
415
|
-
_$
|
|
416
|
+
_$insert(_el$2,scale)
|
|
417
|
+
_$insertNode(_el$3,_el$4)
|
|
418
|
+
_$insertNode(_el$3,_el$5)
|
|
419
|
+
_$setProp(_el$3,"width","100%")
|
|
420
|
+
_$setProp(_el$3,"minWidth",0)
|
|
421
|
+
_$setProp(_el$3,"height",1)
|
|
422
|
+
_$setProp(_el$3,"flexDirection","row")
|
|
423
|
+
_$setProp(_el$3,"overflow","hidden")
|
|
416
424
|
_$setProp(_el$4,"minWidth",0)
|
|
417
425
|
_$setProp(_el$4,"height",1)
|
|
418
426
|
_$setProp(_el$4,"wrapMode","none")
|
|
419
427
|
_$setProp(_el$4,"truncate",true)
|
|
420
428
|
_$insert(_el$4,()=>view().reset)
|
|
421
|
-
_$
|
|
422
|
-
|
|
429
|
+
_$setProp(_el$5,"height",1)
|
|
430
|
+
_$setProp(_el$5,"wrapMode","none")
|
|
431
|
+
_$setProp(_el$5,"truncate",true)
|
|
432
|
+
_$insert(_el$5,()=>view().value)
|
|
433
|
+
_$effect((_p$)=>{var _v$=props.api.theme.current.textMuted,_v$2=resetWidth(),_v$3=props.api.theme.current.textMuted,_v$4=valueWidth(),_v$5=gap(),_v$6=props.api.theme.current.text
|
|
423
434
|
_v$!==_p$.e&&(_p$.e=_$setProp(_el$2,"fg",_v$,_p$.e))
|
|
424
|
-
_v$2!==_p$.t&&(_p$.t=_$setProp(_el$
|
|
435
|
+
_v$2!==_p$.t&&(_p$.t=_$setProp(_el$4,"width",_v$2,_p$.t))
|
|
425
436
|
_v$3!==_p$.a&&(_p$.a=_$setProp(_el$4,"fg",_v$3,_p$.a))
|
|
437
|
+
_v$4!==_p$.o&&(_p$.o=_$setProp(_el$5,"width",_v$4,_p$.o))
|
|
438
|
+
_v$5!==_p$.i&&(_p$.i=_$setProp(_el$5,"marginLeft",_v$5,_p$.i))
|
|
439
|
+
_v$6!==_p$.n&&(_p$.n=_$setProp(_el$5,"fg",_v$6,_p$.n))
|
|
426
440
|
return _p$
|
|
427
|
-
},{e:undefined,t:undefined,a:undefined
|
|
441
|
+
},{e:undefined,t:undefined,a:undefined,o:undefined,i:undefined,n:undefined
|
|
428
442
|
})
|
|
429
443
|
return _el$
|
|
430
444
|
})()
|
|
@@ -509,8 +523,8 @@ else if(option.value.startsWith("credit:"))
|
|
|
509
523
|
actions.review(option.value.slice("credit:".length)||undefined)
|
|
510
524
|
}})
|
|
511
525
|
}
|
|
512
|
-
import {createComponent as _$
|
|
513
|
-
import {For} from "solid-js"
|
|
526
|
+
import {createComponent as _$createComponent5} from "@opentui/solid"
|
|
527
|
+
import {For as For2,Show} from "solid-js"
|
|
514
528
|
import {effect as _$effect2} from "@opentui/solid"
|
|
515
529
|
import {insertNode as _$insertNode2} from "@opentui/solid"
|
|
516
530
|
import {insert as _$insert2} from "@opentui/solid"
|
|
@@ -535,12 +549,50 @@ return _p$
|
|
|
535
549
|
return _el$
|
|
536
550
|
})()
|
|
537
551
|
}
|
|
538
|
-
|
|
552
|
+
import {effect as _$effect3} from "@opentui/solid"
|
|
553
|
+
import {insertNode as _$insertNode3} from "@opentui/solid"
|
|
554
|
+
import {createComponent as _$createComponent4} from "@opentui/solid"
|
|
555
|
+
import {insert as _$insert3} from "@opentui/solid"
|
|
556
|
+
import {setProp as _$setProp3} from "@opentui/solid"
|
|
557
|
+
import {createElement as _$createElement3} from "@opentui/solid"
|
|
558
|
+
import {For} from "solid-js"
|
|
559
|
+
import {useIcons as useIcons2} from "./tui.js"
|
|
560
|
+
function QuotaWindowGroup(props){const icons=useIcons2()
|
|
561
|
+
const guide=()=>Array.from({length:Math.max(0,props.windows.length*3-1)
|
|
562
|
+
},()=>icons.style()==="text"?"|":"\u2502").join(`
|
|
563
|
+
`)
|
|
564
|
+
return(()=>{var _el$=_$createElement3("box"),_el$2=_$createElement3("text"),_el$3=_$createElement3("box")
|
|
565
|
+
_$insertNode3(_el$,_el$2)
|
|
566
|
+
_$insertNode3(_el$,_el$3)
|
|
567
|
+
_$setProp3(_el$,"width","100%")
|
|
568
|
+
_$setProp3(_el$,"minWidth",0)
|
|
569
|
+
_$setProp3(_el$,"flexDirection","row")
|
|
570
|
+
_$setProp3(_el$,"overflow","hidden")
|
|
571
|
+
_$setProp3(_el$2,"width",1)
|
|
572
|
+
_$setProp3(_el$2,"marginRight",1)
|
|
573
|
+
_$setProp3(_el$2,"flexShrink",0)
|
|
574
|
+
_$setProp3(_el$2,"wrapMode","none")
|
|
575
|
+
_$insert3(_el$2,guide)
|
|
576
|
+
_$setProp3(_el$3,"width","100%")
|
|
577
|
+
_$setProp3(_el$3,"flexGrow",1)
|
|
578
|
+
_$setProp3(_el$3,"flexShrink",1)
|
|
579
|
+
_$setProp3(_el$3,"minWidth",0)
|
|
580
|
+
_$setProp3(_el$3,"gap",1)
|
|
581
|
+
_$insert3(_el$3,_$createComponent4(For,{get each(){return props.windows
|
|
539
582
|
},children:(window)=>_$createComponent4(QuotaWindowRow,{get api(){return props.api
|
|
540
583
|
},window
|
|
541
584
|
})
|
|
542
|
-
})
|
|
543
|
-
|
|
585
|
+
}))
|
|
586
|
+
_$effect3((_$p)=>_$setProp3(_el$2,"fg",props.api.theme.current.textMuted,_$p))
|
|
587
|
+
return _el$
|
|
588
|
+
})()
|
|
589
|
+
}
|
|
590
|
+
function QuotaSnapshotRows(props){return [_$createComponent5(Show,{get when(){return props.snapshot.windows.length>0
|
|
591
|
+
},get children(){return _$createComponent5(QuotaWindowGroup,{get api(){return props.api
|
|
592
|
+
},get windows(){return props.snapshot.windows
|
|
593
|
+
}})
|
|
594
|
+
}}),_$createComponent5(For2,{get each(){return props.snapshot.balances
|
|
595
|
+
},children:(balance)=>_$createComponent5(QuotaBalanceRow,{get api(){return props.api
|
|
544
596
|
},balance
|
|
545
597
|
})
|
|
546
598
|
})]
|
|
@@ -590,31 +642,31 @@ function providerQuotaCapability(id,canonical){const key=aliases[canonical??id]?
|
|
|
590
642
|
const found=PROVIDER_QUOTA_CAPABILITIES.find((entry)=>entry.id===key)
|
|
591
643
|
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/"]
|
|
592
644
|
}}
|
|
593
|
-
import {insert as _$
|
|
645
|
+
import {insert as _$insert9} from "@opentui/solid"
|
|
594
646
|
import {mergeProps as _$mergeProps} from "@opentui/solid"
|
|
595
|
-
import {setProp as _$
|
|
596
|
-
import {effect as _$
|
|
647
|
+
import {setProp as _$setProp10} from "@opentui/solid"
|
|
648
|
+
import {effect as _$effect10} from "@opentui/solid"
|
|
597
649
|
import {createTextNode as _$createTextNode4} from "@opentui/solid"
|
|
598
|
-
import {insertNode as _$
|
|
599
|
-
import {createElement as _$
|
|
650
|
+
import {insertNode as _$insertNode7} from "@opentui/solid"
|
|
651
|
+
import {createElement as _$createElement10} from "@opentui/solid"
|
|
600
652
|
import {memo as _$memo7} from "@opentui/solid"
|
|
601
|
-
import {createComponent as _$
|
|
602
|
-
import {Show as
|
|
653
|
+
import {createComponent as _$createComponent13} from "@opentui/solid"
|
|
654
|
+
import {Show as Show7} from "solid-js"
|
|
603
655
|
import {useDialogs as useDialogs3} from "./tui.js"
|
|
604
|
-
import {setProp as _$
|
|
605
|
-
import {effect as _$
|
|
656
|
+
import {setProp as _$setProp5} from "@opentui/solid"
|
|
657
|
+
import {effect as _$effect5} from "@opentui/solid"
|
|
606
658
|
import {createTextNode as _$createTextNode} from "@opentui/solid"
|
|
607
|
-
import {insertNode as _$
|
|
608
|
-
import {createElement as _$
|
|
659
|
+
import {insertNode as _$insertNode4} from "@opentui/solid"
|
|
660
|
+
import {createElement as _$createElement5} from "@opentui/solid"
|
|
609
661
|
import {memo as _$memo2} from "@opentui/solid"
|
|
662
|
+
import {createComponent as _$createComponent7} from "@opentui/solid"
|
|
663
|
+
import {Show as Show2} from "solid-js"
|
|
664
|
+
import {useDialogs as useDialogs2,useIcons as useIcons3} from "./tui.js"
|
|
610
665
|
import {createComponent as _$createComponent6} from "@opentui/solid"
|
|
611
|
-
import {
|
|
612
|
-
import {
|
|
613
|
-
import {
|
|
614
|
-
import {
|
|
615
|
-
import {insert as _$insert3} from "@opentui/solid"
|
|
616
|
-
import {setProp as _$setProp3} from "@opentui/solid"
|
|
617
|
-
import {createElement as _$createElement3} from "@opentui/solid"
|
|
666
|
+
import {effect as _$effect4} from "@opentui/solid"
|
|
667
|
+
import {insert as _$insert4} from "@opentui/solid"
|
|
668
|
+
import {setProp as _$setProp4} from "@opentui/solid"
|
|
669
|
+
import {createElement as _$createElement4} from "@opentui/solid"
|
|
618
670
|
import {SelectionBox} from "./tui.js"
|
|
619
671
|
import {createSignal as createSignal5,onCleanup} from "solid-js"
|
|
620
672
|
function sidebarInteractiveColors(theme,state,normalColor=theme.text,mode="row"){const highlighted=!state.disabled&&(state.focused||mode==="control"&&state.hovered)
|
|
@@ -650,7 +702,7 @@ return true
|
|
|
650
702
|
}}}
|
|
651
703
|
function LimitsAction(props){const item=useSidebarItem(props.api,props.interaction,{id:props.id,position:()=>props.position,disabled:()=>props.disabled===true,activate:props.onActivate
|
|
652
704
|
},()=>props.api.theme.current.text,props.inline?"control":"row")
|
|
653
|
-
return _$
|
|
705
|
+
return _$createComponent6(SelectionBox,{ref:(node)=>item.ref(node),get id(){return props.id
|
|
654
706
|
},height:1,get flexGrow(){return props.flexGrow
|
|
655
707
|
},get maxWidth(){return props.maxWidth
|
|
656
708
|
},flexShrink:1,minWidth:3,get backgroundColor(){return item.backgroundColor()
|
|
@@ -658,46 +710,46 @@ return _$createComponent5(SelectionBox,{ref:(node)=>item.ref(node),get id(){retu
|
|
|
658
710
|
},get onMouseOut(){return item.onMouseOut
|
|
659
711
|
},onMouseUp:(event)=>{event.stopPropagation()
|
|
660
712
|
item.activate(event)
|
|
661
|
-
},get children(){var _el$=_$
|
|
662
|
-
_$
|
|
663
|
-
_$
|
|
664
|
-
_$
|
|
665
|
-
_$
|
|
713
|
+
},get children(){var _el$=_$createElement4("text")
|
|
714
|
+
_$setProp4(_el$,"wrapMode","none")
|
|
715
|
+
_$setProp4(_el$,"truncate",true)
|
|
716
|
+
_$insert4(_el$,()=>props.label)
|
|
717
|
+
_$effect4((_$p)=>_$setProp4(_el$,"fg",item.foregroundColor(),_$p))
|
|
666
718
|
return _el$
|
|
667
719
|
}})
|
|
668
720
|
}
|
|
669
|
-
function CodexAccountControls(props){const icons=
|
|
721
|
+
function CodexAccountControls(props){const icons=useIcons3()
|
|
670
722
|
const model=()=>props.controller.current().model
|
|
671
723
|
const accountLink=createCodexAccountLink({api:props.api,preferences:props.preferences,adapter:props.codex,model,dialogs:useDialogs2(props.api)
|
|
672
724
|
})
|
|
673
725
|
const eligible=()=>(props.model.providerID==="openai"||props.model.hostConnection?.providerID==="openai")&&props.model.hostConnection?.method!=="api"
|
|
674
|
-
const action=(id,row,label,onActivate)=>_$
|
|
726
|
+
const action=(id,row,label,onActivate)=>_$createComponent7(LimitsAction,{get api(){return props.api
|
|
675
727
|
},get interaction(){return props.interaction
|
|
676
728
|
},id:`${PLUGIN_ID}.limits.${id}`,get position(){return{section:props.navigationSection,row,column:0
|
|
677
729
|
}},label,onActivate,get disabled(){return accountLink.busy()
|
|
678
730
|
}})
|
|
679
|
-
return _$
|
|
680
|
-
},get children(){return [_$
|
|
681
|
-
},get children(){return [(()=>{var _el$=_$
|
|
682
|
-
_$
|
|
683
|
-
_$
|
|
731
|
+
return _$createComponent7(Show2,{get when(){return eligible()
|
|
732
|
+
},get children(){return [_$createComponent7(Show2,{get when(){return _$memo2(()=>!!!props.model.accountID)()&&(!props.model.hostConnection||props.model.hostConnection.status==="ready")
|
|
733
|
+
},get children(){return [(()=>{var _el$=_$createElement5("text")
|
|
734
|
+
_$insertNode4(_el$,_$createTextNode(`Link the matching Codex account once for this connection`))
|
|
735
|
+
_$effect5((_$p)=>_$setProp5(_el$,"fg",props.api.theme.current.textMuted,_$p))
|
|
684
736
|
return _el$
|
|
685
737
|
})(),_$memo2(()=>action("link",2,`${icons.icon("scope")} Link Codex CLI account`,()=>void accountLink.link()))]
|
|
686
|
-
}}),_$
|
|
687
|
-
},get children(){return [_$memo2(()=>action("unlink",4,`${icons.icon("close")} Unlink Codex account`,()=>props.preferences.setCodexConnectionBinding(props.model.providerID,props.model.hostConnection?.id))),_$
|
|
738
|
+
}}),_$createComponent7(Show2,{get when(){return _$memo2(()=>!!(props.model.accountID&&props.model.accountSource!=="host"))()&&props.controller.snapshot()?.availability==="unauthenticated"
|
|
739
|
+
},get children(){return [_$memo2(()=>action("unlink",4,`${icons.icon("close")} Unlink Codex account`,()=>props.preferences.setCodexConnectionBinding(props.model.providerID,props.model.hostConnection?.id))),_$createComponent7(Show2,{get when(){return props.controller.snapshot()?.availability==="unauthenticated"
|
|
688
740
|
},get children(){return action("relink",5,`${icons.icon("scope")} Relink Codex account`,()=>void accountLink.link())
|
|
689
741
|
}})]
|
|
690
742
|
}})]
|
|
691
743
|
}})
|
|
692
744
|
}
|
|
745
|
+
import {createComponent as _$createComponent9} from "@opentui/solid"
|
|
746
|
+
import {Show as Show3} from "solid-js"
|
|
747
|
+
import {useIcons as useIcons4} from "./tui.js"
|
|
693
748
|
import {createComponent as _$createComponent8} from "@opentui/solid"
|
|
694
|
-
import {
|
|
695
|
-
import {
|
|
696
|
-
import {
|
|
697
|
-
import {
|
|
698
|
-
import {insert as _$insert4} from "@opentui/solid"
|
|
699
|
-
import {setProp as _$setProp5} from "@opentui/solid"
|
|
700
|
-
import {createElement as _$createElement5} from "@opentui/solid"
|
|
749
|
+
import {effect as _$effect6} from "@opentui/solid"
|
|
750
|
+
import {insert as _$insert5} from "@opentui/solid"
|
|
751
|
+
import {setProp as _$setProp6} from "@opentui/solid"
|
|
752
|
+
import {createElement as _$createElement6} from "@opentui/solid"
|
|
701
753
|
import {memo as _$memo3} from "@opentui/solid"
|
|
702
754
|
import {createEffect as createEffect2,createSignal as createSignal6,on} from "solid-js"
|
|
703
755
|
import {SelectionBox as SelectionBox2} from "./tui.js"
|
|
@@ -721,7 +773,7 @@ const control=useSidebarItem(props.api,props.interaction,{id:props.action.id,pos
|
|
|
721
773
|
},()=>props.api.theme.current.accent,"control")
|
|
722
774
|
createEffect2(on(()=>[props.action.label(),props.resetWidth],()=>setWidth(undefined)))
|
|
723
775
|
const label=()=>width()===undefined||props.iconOnly?props.action.label():truncateEnd(props.action.label(),width()-2)
|
|
724
|
-
return _$
|
|
776
|
+
return _$createComponent8(SelectionBox2,{ref:(node)=>control.ref(node),get id(){return props.action.id
|
|
725
777
|
},get iconOnly(){return props.iconOnly
|
|
726
778
|
},get width(){return props.iconOnly?3:undefined
|
|
727
779
|
},get flexShrink(){return props.iconOnly?0:1
|
|
@@ -732,42 +784,42 @@ return _$createComponent7(SelectionBox2,{ref:(node)=>control.ref(node),get id(){
|
|
|
732
784
|
},get onMouseOut(){return control.onMouseOut
|
|
733
785
|
},onMouseDown:(event)=>event.stopPropagation(),onMouseUp:(event)=>{event.stopPropagation()
|
|
734
786
|
control.activate(event)
|
|
735
|
-
},get children(){var _el$=_$
|
|
736
|
-
_$
|
|
737
|
-
_$
|
|
738
|
-
_$
|
|
739
|
-
_$
|
|
787
|
+
},get children(){var _el$=_$createElement6("text")
|
|
788
|
+
_$setProp6(_el$,"wrapMode","none")
|
|
789
|
+
_$setProp6(_el$,"height",1)
|
|
790
|
+
_$insert5(_el$,label)
|
|
791
|
+
_$effect6((_$p)=>_$setProp6(_el$,"fg",control.foregroundColor(),_$p))
|
|
740
792
|
return _el$
|
|
741
793
|
}})
|
|
742
794
|
}
|
|
743
|
-
function LimitsHeaderControls(props){const icons=
|
|
744
|
-
return [_$
|
|
745
|
-
},get children(){return _$
|
|
795
|
+
function LimitsHeaderControls(props){const icons=useIcons4()
|
|
796
|
+
return [_$createComponent9(Show3,{get when(){return props.credits
|
|
797
|
+
},get children(){return _$createComponent9(SectionHeaderControl,{get api(){return props.api
|
|
746
798
|
},get interaction(){return props.interaction
|
|
747
799
|
},get position(){return{section:props.navigationSection,row:0,column:1
|
|
748
800
|
}},get action(){return{id:`${PLUGIN_ID}.limits.credits`,label:()=>"Banked Resets",disabled:()=>false,onActivate:props.onCredits
|
|
749
801
|
}}})
|
|
750
|
-
}}),_$
|
|
802
|
+
}}),_$createComponent9(SectionHeaderControl,{get api(){return props.api
|
|
751
803
|
},get interaction(){return props.interaction
|
|
752
804
|
},iconOnly:true,get position(){return{section:props.navigationSection,row:0,column:2
|
|
753
805
|
}},get action(){return{id:`${PLUGIN_ID}.limits.refresh`,label:()=>icons.icon(props.refreshing?"pending":"retry"),disabled:()=>props.refreshing||!props.canRefresh,onActivate:props.onRefresh
|
|
754
806
|
}}})]
|
|
755
807
|
}
|
|
756
|
-
import {insert as _$
|
|
757
|
-
import {effect as _$
|
|
808
|
+
import {insert as _$insert6} from "@opentui/solid"
|
|
809
|
+
import {effect as _$effect7} from "@opentui/solid"
|
|
758
810
|
import {createTextNode as _$createTextNode2} from "@opentui/solid"
|
|
759
|
-
import {insertNode as _$
|
|
811
|
+
import {insertNode as _$insertNode5} from "@opentui/solid"
|
|
760
812
|
import {memo as _$memo4} from "@opentui/solid"
|
|
761
|
-
import {createComponent as _$
|
|
762
|
-
import {setProp as _$
|
|
763
|
-
import {createElement as _$
|
|
764
|
-
import {Show as
|
|
813
|
+
import {createComponent as _$createComponent10} from "@opentui/solid"
|
|
814
|
+
import {setProp as _$setProp7} from "@opentui/solid"
|
|
815
|
+
import {createElement as _$createElement7} from "@opentui/solid"
|
|
816
|
+
import {Show as Show4} from "solid-js"
|
|
765
817
|
function LimitsModelRow(props){const names=()=>props.selection?.names(props.model)??{provider:props.model.providerID,model:props.model.modelID
|
|
766
818
|
}
|
|
767
|
-
return(()=>{var _el$=_$
|
|
768
|
-
_$
|
|
769
|
-
_$
|
|
770
|
-
_$
|
|
819
|
+
return(()=>{var _el$=_$createElement7("box")
|
|
820
|
+
_$setProp7(_el$,"flexDirection","row")
|
|
821
|
+
_$setProp7(_el$,"minWidth",0)
|
|
822
|
+
_$insert6(_el$,_$createComponent10(LimitsAction,{get api(){return props.api
|
|
771
823
|
},get interaction(){return props.interaction
|
|
772
824
|
},inline:true,flexGrow:1,get maxWidth(){return Bun.stringWidth(`[${names().provider}] ${names().model}`) + 2
|
|
773
825
|
},id:`${PLUGIN_ID}.limits.model`,get position(){return{section:props.navigationSection,row:1,column:0
|
|
@@ -775,13 +827,13 @@ _$insert5(_el$,_$createComponent9(LimitsAction,{get api(){return props.api
|
|
|
775
827
|
},get disabled(){return !props.selection?.canOpen("model",props.model)
|
|
776
828
|
},onActivate:()=>props.selection?.open("model",props.model)
|
|
777
829
|
}),null)
|
|
778
|
-
_$
|
|
779
|
-
},get children(){return [(()=>{var _el$2=_$
|
|
780
|
-
_$
|
|
781
|
-
_$
|
|
782
|
-
_$
|
|
830
|
+
_$insert6(_el$,_$createComponent10(Show4,{get when(){return props.model.variant||props.selection?.variants(props.model).length
|
|
831
|
+
},get children(){return [(()=>{var _el$2=_$createElement7("text"),_el$3=_$createTextNode2(` \xB7 `)
|
|
832
|
+
_$insertNode5(_el$2,_el$3)
|
|
833
|
+
_$setProp7(_el$2,"flexShrink",0)
|
|
834
|
+
_$effect7((_$p)=>_$setProp7(_el$2,"fg",props.api.theme.current.textMuted,_$p))
|
|
783
835
|
return _el$2
|
|
784
|
-
})(),_$
|
|
836
|
+
})(),_$createComponent10(LimitsAction,{get api(){return props.api
|
|
785
837
|
},get interaction(){return props.interaction
|
|
786
838
|
},inline:true,id:`${PLUGIN_ID}.limits.variant`,get position(){return{section:props.navigationSection,row:1,column:1
|
|
787
839
|
}},get label(){return props.model.variant??"Default"
|
|
@@ -792,13 +844,13 @@ return _el$2
|
|
|
792
844
|
return _el$
|
|
793
845
|
})()
|
|
794
846
|
}
|
|
795
|
-
import {effect as _$
|
|
796
|
-
import {insert as _$
|
|
797
|
-
import {setProp as _$
|
|
798
|
-
import {createElement as _$
|
|
799
|
-
import {createComponent as _$
|
|
847
|
+
import {effect as _$effect8} from "@opentui/solid"
|
|
848
|
+
import {insert as _$insert7} from "@opentui/solid"
|
|
849
|
+
import {setProp as _$setProp8} from "@opentui/solid"
|
|
850
|
+
import {createElement as _$createElement8} from "@opentui/solid"
|
|
851
|
+
import {createComponent as _$createComponent11} from "@opentui/solid"
|
|
800
852
|
import {memo as _$memo5} from "@opentui/solid"
|
|
801
|
-
import {Show as
|
|
853
|
+
import {Show as Show5} from "solid-js"
|
|
802
854
|
function LimitsStatus(props){const message=()=>{const model=props.controller.current().model
|
|
803
855
|
const connection=model?.hostConnection
|
|
804
856
|
const snapshot=props.controller.snapshot()
|
|
@@ -828,85 +880,85 @@ if(availability==="stale")
|
|
|
828
880
|
return "Stale provider data \xB7 refresh to update"
|
|
829
881
|
return `Updated ${new Date(snapshot.fetchedAt).toLocaleTimeString()}`
|
|
830
882
|
}
|
|
831
|
-
return _$
|
|
832
|
-
},children:(value)=>(()=>{var _el$=_$
|
|
833
|
-
_$
|
|
834
|
-
_$
|
|
835
|
-
_$
|
|
883
|
+
return _$createComponent11(Show5,{get when(){return _$memo5(()=>!!props.controller.current().model)()&&message()
|
|
884
|
+
},children:(value)=>(()=>{var _el$=_$createElement8("text")
|
|
885
|
+
_$setProp8(_el$,"wrapMode","word")
|
|
886
|
+
_$insert7(_el$,value)
|
|
887
|
+
_$effect8((_$p)=>_$setProp8(_el$,"fg",props.api.theme.current.textMuted,_$p))
|
|
836
888
|
return _el$
|
|
837
889
|
})()
|
|
838
890
|
})
|
|
839
891
|
}
|
|
840
|
-
import {createComponent as _$
|
|
841
|
-
import {effect as _$
|
|
892
|
+
import {createComponent as _$createComponent12} from "@opentui/solid"
|
|
893
|
+
import {effect as _$effect9} from "@opentui/solid"
|
|
842
894
|
import {createTextNode as _$createTextNode3} from "@opentui/solid"
|
|
843
|
-
import {insertNode as _$
|
|
895
|
+
import {insertNode as _$insertNode6} from "@opentui/solid"
|
|
844
896
|
import {memo as _$memo6} from "@opentui/solid"
|
|
845
|
-
import {insert as _$
|
|
846
|
-
import {setProp as _$
|
|
847
|
-
import {createElement as _$
|
|
848
|
-
import {Show as
|
|
849
|
-
import {SelectionBox as SelectionBox3,useIcons as
|
|
850
|
-
function Section(props){const icons=
|
|
897
|
+
import {insert as _$insert8} from "@opentui/solid"
|
|
898
|
+
import {setProp as _$setProp9} from "@opentui/solid"
|
|
899
|
+
import {createElement as _$createElement9} from "@opentui/solid"
|
|
900
|
+
import {Show as Show6,createSignal as createSignal7} from "solid-js"
|
|
901
|
+
import {SelectionBox as SelectionBox3,useIcons as useIcons5} from "./tui.js"
|
|
902
|
+
function Section(props){const icons=useIcons5()
|
|
851
903
|
const [headerWidth,setHeaderWidth]=createSignal7(0)
|
|
852
904
|
const icon=()=>props.section?icons.section(props.section):props.icon
|
|
853
905
|
const theme=()=>props.api.theme.current
|
|
854
906
|
const item=useSidebarItem(props.api,props.interaction,{id:props.sectionId??`section.${props.title}`,position:()=>({section:props.navigationSection??0,row:0,column:0
|
|
855
907
|
}),activate:props.onToggle
|
|
856
908
|
})
|
|
857
|
-
return(()=>{var _el$=_$
|
|
858
|
-
_$
|
|
859
|
-
_$
|
|
909
|
+
return(()=>{var _el$=_$createElement9("box")
|
|
910
|
+
_$setProp9(_el$,"gap",1)
|
|
911
|
+
_$insert8(_el$,_$createComponent12(SelectionBox3,{ref:(node)=>item.ref(node),get id(){return props.sectionId
|
|
860
912
|
},flexDirection:"row",height:1,justifyContent:"space-between",gap:1,get backgroundColor(){return item.backgroundColor()
|
|
861
913
|
},get onMouseOver(){return item.onMouseOver
|
|
862
914
|
},get onMouseOut(){return item.onMouseOut
|
|
863
915
|
},onMouseDown:(event)=>item.activate(event),onSizeChange:function(){setHeaderWidth(this.width)
|
|
864
|
-
},get children(){return [(()=>{var _el$2=_$
|
|
865
|
-
_$
|
|
866
|
-
_$
|
|
867
|
-
_$
|
|
868
|
-
_$
|
|
869
|
-
_$
|
|
870
|
-
_$
|
|
871
|
-
_$
|
|
872
|
-
_$
|
|
916
|
+
},get children(){return [(()=>{var _el$2=_$createElement9("text"),_el$3=_$createElement9("span"),_el$4=_$createTextNode3(` `),_el$5=_$createElement9("span"),_el$6=_$createElement9("b")
|
|
917
|
+
_$insertNode6(_el$2,_el$3)
|
|
918
|
+
_$insertNode6(_el$2,_el$4)
|
|
919
|
+
_$insertNode6(_el$2,_el$5)
|
|
920
|
+
_$insertNode6(_el$2,_el$6)
|
|
921
|
+
_$setProp9(_el$2,"flexShrink",0)
|
|
922
|
+
_$setProp9(_el$2,"wrapMode","none")
|
|
923
|
+
_$insert8(_el$3,()=>icons.icon(props.open?"expanded":"collapsed"))
|
|
924
|
+
_$insert8(_el$5,(()=>{var _c$=_$memo6(()=>!!icon())
|
|
873
925
|
return()=>_c$()?`${icon()} `:""
|
|
874
926
|
})())
|
|
875
|
-
_$
|
|
876
|
-
_$
|
|
927
|
+
_$insert8(_el$6,()=>props.title)
|
|
928
|
+
_$effect9((_p$)=>{var _v$=item.foregroundColor(),_v$2={fg:item.focused()?item.foregroundColor():theme().accent
|
|
877
929
|
},_v$3={fg:item.focused()?item.foregroundColor():theme().accent
|
|
878
930
|
}
|
|
879
|
-
_v$!==_p$.e&&(_p$.e=_$
|
|
880
|
-
_v$2!==_p$.t&&(_p$.t=_$
|
|
881
|
-
_v$3!==_p$.a&&(_p$.a=_$
|
|
931
|
+
_v$!==_p$.e&&(_p$.e=_$setProp9(_el$2,"fg",_v$,_p$.e))
|
|
932
|
+
_v$2!==_p$.t&&(_p$.t=_$setProp9(_el$3,"style",_v$2,_p$.t))
|
|
933
|
+
_v$3!==_p$.a&&(_p$.a=_$setProp9(_el$5,"style",_v$3,_p$.a))
|
|
882
934
|
return _p$
|
|
883
935
|
},{e:undefined,t:undefined,a:undefined
|
|
884
936
|
})
|
|
885
937
|
return _el$2
|
|
886
|
-
})(),(()=>{var _el$7=_$
|
|
887
|
-
_$
|
|
888
|
-
_$
|
|
889
|
-
_$
|
|
890
|
-
_$
|
|
891
|
-
_$
|
|
892
|
-
_$
|
|
893
|
-
_$
|
|
894
|
-
},children:(action)=>_$
|
|
938
|
+
})(),(()=>{var _el$7=_$createElement9("box")
|
|
939
|
+
_$setProp9(_el$7,"flexDirection","row")
|
|
940
|
+
_$setProp9(_el$7,"gap",1)
|
|
941
|
+
_$setProp9(_el$7,"flexGrow",1)
|
|
942
|
+
_$setProp9(_el$7,"minWidth",0)
|
|
943
|
+
_$setProp9(_el$7,"justifyContent","flex-end")
|
|
944
|
+
_$insert8(_el$7,()=>props.headerControls,null)
|
|
945
|
+
_$insert8(_el$7,_$createComponent12(Show6,{get when(){return props.headerAction
|
|
946
|
+
},children:(action)=>_$createComponent12(SectionHeaderControl,{get api(){return props.api
|
|
895
947
|
},get interaction(){return props.interaction
|
|
896
948
|
},get action(){return action()
|
|
897
949
|
},get resetWidth(){return headerWidth()
|
|
898
950
|
},get position(){return{section:props.navigationSection??0,row:0,column:1
|
|
899
951
|
}}})
|
|
900
952
|
}),null)
|
|
901
|
-
_$
|
|
902
|
-
},get children(){var _el$8=_$
|
|
903
|
-
_$
|
|
904
|
-
_$
|
|
905
|
-
_$
|
|
906
|
-
_$
|
|
907
|
-
_$
|
|
908
|
-
_v$4!==_p$.e&&(_p$.e=_$
|
|
909
|
-
_v$5!==_p$.t&&(_p$.t=_$
|
|
953
|
+
_$insert8(_el$7,_$createComponent12(Show6,{get when(){return props.summary
|
|
954
|
+
},get children(){var _el$8=_$createElement9("text")
|
|
955
|
+
_$setProp9(_el$8,"wrapMode","none")
|
|
956
|
+
_$setProp9(_el$8,"truncate",true)
|
|
957
|
+
_$setProp9(_el$8,"height",1)
|
|
958
|
+
_$insert8(_el$8,()=>props.summary)
|
|
959
|
+
_$effect9((_p$)=>{var _v$4=item.focused()?item.foregroundColor():theme().textMuted,_v$5=props.headerAction?0:1
|
|
960
|
+
_v$4!==_p$.e&&(_p$.e=_$setProp9(_el$8,"fg",_v$4,_p$.e))
|
|
961
|
+
_v$5!==_p$.t&&(_p$.t=_$setProp9(_el$8,"flexShrink",_v$5,_p$.t))
|
|
910
962
|
return _p$
|
|
911
963
|
},{e:undefined,t:undefined
|
|
912
964
|
})
|
|
@@ -915,7 +967,7 @@ return _el$8
|
|
|
915
967
|
return _el$7
|
|
916
968
|
})()]
|
|
917
969
|
}}),null)
|
|
918
|
-
_$
|
|
970
|
+
_$insert8(_el$,_$createComponent12(Show6,{get when(){return props.open
|
|
919
971
|
},get children(){return props.children
|
|
920
972
|
}}),null)
|
|
921
973
|
return _el$
|
|
@@ -926,17 +978,17 @@ const model=()=>props.controller.current().model
|
|
|
926
978
|
const snapshot=props.controller.snapshot
|
|
927
979
|
function openCredits(){const selected=model()
|
|
928
980
|
if(selected)
|
|
929
|
-
dialogs.open(()=>_$
|
|
981
|
+
dialogs.open(()=>_$createComponent13(ResetCreditDialog,{get api(){return props.api
|
|
930
982
|
},get preferences(){return props.preferences
|
|
931
983
|
},get controller(){return props.controller
|
|
932
984
|
},get adapter(){return props.codex
|
|
933
985
|
},model:selected
|
|
934
986
|
}))
|
|
935
987
|
}
|
|
936
|
-
return _$
|
|
988
|
+
return _$createComponent13(Section,{get api(){return props.api
|
|
937
989
|
},get interaction(){return props.interaction
|
|
938
990
|
},sectionId:`${PLUGIN_ID}.section.limits`,get navigationSection(){return props.navigationSection
|
|
939
|
-
},title:"LIMITS",section:"limits",summary:"",get headerControls(){return _$
|
|
991
|
+
},title:"LIMITS",section:"limits",summary:"",get headerControls(){return _$createComponent13(LimitsHeaderControls,{get api(){return props.api
|
|
940
992
|
},get interaction(){return props.interaction
|
|
941
993
|
},get navigationSection(){return props.navigationSection
|
|
942
994
|
},get credits(){return(snapshot()?.bankedResets?.availableCount??0)>0||Boolean(props.preferences.pendingResetAttempt())
|
|
@@ -945,28 +997,28 @@ return _$createComponent12(Section,{get api(){return props.api
|
|
|
945
997
|
},onCredits:openCredits,onRefresh:()=>void props.controller.refresh(true)
|
|
946
998
|
})
|
|
947
999
|
},get open(){return props.preferences.expanded().limits
|
|
948
|
-
},onToggle:()=>props.preferences.toggleSectionExpanded("limits"),get children(){return _$
|
|
949
|
-
},get fallback(){return(()=>{var _el$=_$
|
|
950
|
-
_$
|
|
951
|
-
_$
|
|
1000
|
+
},onToggle:()=>props.preferences.toggleSectionExpanded("limits"),get children(){return _$createComponent13(Show7,{get when(){return model()
|
|
1001
|
+
},get fallback(){return(()=>{var _el$=_$createElement10("text")
|
|
1002
|
+
_$insertNode7(_el$,_$createTextNode4(`Open a session to view model limits`))
|
|
1003
|
+
_$effect10((_$p)=>_$setProp10(_el$,"fg",props.api.theme.current.textMuted,_$p))
|
|
952
1004
|
return _el$
|
|
953
1005
|
})()
|
|
954
|
-
},children:(selected)=>(()=>{var _el$3=_$
|
|
955
|
-
_$
|
|
956
|
-
_$
|
|
957
|
-
_$
|
|
958
|
-
_$
|
|
959
|
-
_$
|
|
1006
|
+
},children:(selected)=>(()=>{var _el$3=_$createElement10("box")
|
|
1007
|
+
_$setProp10(_el$3,"width","100%")
|
|
1008
|
+
_$setProp10(_el$3,"minWidth",0)
|
|
1009
|
+
_$setProp10(_el$3,"flexShrink",1)
|
|
1010
|
+
_$setProp10(_el$3,"overflow","hidden")
|
|
1011
|
+
_$insert9(_el$3,_$createComponent13(LimitsModelRow,_$mergeProps(props,{get model(){return selected()
|
|
960
1012
|
},get selection(){return props.modelSelection
|
|
961
1013
|
}})),null)
|
|
962
|
-
_$
|
|
1014
|
+
_$insert9(_el$3,_$createComponent13(CodexAccountControls,_$mergeProps(props,{get model(){return selected()
|
|
963
1015
|
}})),null)
|
|
964
|
-
_$
|
|
965
|
-
},children:(quota)=>_$
|
|
1016
|
+
_$insert9(_el$3,_$createComponent13(Show7,{get when(){return _$memo7(()=>!!(snapshot()&&["ready","stale"].includes(snapshot().availability)))()?snapshot():undefined
|
|
1017
|
+
},children:(quota)=>_$createComponent13(QuotaSnapshotRows,{get api(){return props.api
|
|
966
1018
|
},get snapshot(){return quota()
|
|
967
1019
|
}})
|
|
968
1020
|
}),null)
|
|
969
|
-
_$
|
|
1021
|
+
_$insert9(_el$3,_$createComponent13(LimitsStatus,{get api(){return props.api
|
|
970
1022
|
},get controller(){return props.controller
|
|
971
1023
|
}}),null)
|
|
972
1024
|
return _el$3
|
|
@@ -1042,13 +1094,17 @@ try{return await promise
|
|
|
1042
1094
|
} finally{if(pending?.promise===promise)
|
|
1043
1095
|
pending=undefined
|
|
1044
1096
|
}}
|
|
1045
|
-
function invalidate(){generation++
|
|
1097
|
+
function invalidate(eager=true){generation++
|
|
1098
|
+
if(eager)
|
|
1046
1099
|
setConnections({})
|
|
1100
|
+
else{const active=lastModel&&key(lastModel)
|
|
1101
|
+
setConnections((values)=>Object.fromEntries(Object.entries(values).filter(([target])=>target===active)))
|
|
1102
|
+
}
|
|
1047
1103
|
if(lastModel&&!disposed)
|
|
1048
1104
|
read(lastModel)
|
|
1049
1105
|
}
|
|
1050
1106
|
const events=["credential.switched","credential.updated","integration.updated","provider.updated","server.connected"]
|
|
1051
|
-
const unsubscribes=events.map((event)=>context.data.on(event,()=>untrack2(invalidate)))
|
|
1107
|
+
const unsubscribes=events.map((event)=>context.data.on(event,()=>untrack2(()=>invalidate(event!=="provider.updated"))))
|
|
1052
1108
|
return{current(model){lastModel=model
|
|
1053
1109
|
return{...model,hostConnection:connections()[key(model)]??{status:"loading"}}},async refresh(model){await read(model)
|
|
1054
1110
|
},async validate(model,signal){const actual=await read(model,signal)
|
|
@@ -1102,10 +1158,6 @@ return model?bindCodexAccount(accountSource?.current(model)??model,preferences):
|
|
|
1102
1158
|
if(model)
|
|
1103
1159
|
await accountSource.refresh(model)
|
|
1104
1160
|
}))
|
|
1105
|
-
native?.onUpdated((providerID,modelID)=>{const selected=selectModel()
|
|
1106
|
-
if(selected?.providerID===providerID&&selected.modelID===modelID)
|
|
1107
|
-
controller.refresh()
|
|
1108
|
-
})
|
|
1109
1161
|
return{controller,codex,accountSource,selectModel,modelSelection:createLimitsModelSelection(api,selectModel,context)
|
|
1110
1162
|
}}
|
|
1111
1163
|
export{ProviderLimitsSection,bindCodexAccount,createCodexAppServerClient,createCodexQuotaAdapter,createOpenCodeV2AccountSource,createProviderLimitsController,createProviderQuotaIntegration,selectedV1Model
|