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/dist/tui.js CHANGED
@@ -1,4 +1,4 @@
1
- import {insert as _$insert,setProp as _$setProp,createElement as _$createElement,memo as _$memo,createComponent as _$createComponent,mergeProps as _$mergeProps,useRenderer,effect as _$effect,createTextNode as _$createTextNode,insertNode as _$insertNode,use as _$use,spread as _$spread,useTerminalDimensions,useTerminalDimensions as useTerminalDimensions2,useTerminalDimensions as useTerminalDimensions3,useTerminalDimensions as useTerminalDimensions4,useRenderer as useRenderer2,useTerminalDimensions as useTerminalDimensions5,useTerminalDimensions as useTerminalDimensions6,useTerminalDimensions as useTerminalDimensions7,useTerminalDimensions as useTerminalDimensions8,useTerminalDimensions as useTerminalDimensions9} from "@opentui/solid"
1
+ import {insert as _$insert,setProp as _$setProp,createElement as _$createElement,memo as _$memo,createComponent as _$createComponent,mergeProps as _$mergeProps,useRenderer,effect as _$effect,createTextNode as _$createTextNode,insertNode as _$insertNode,use as _$use,spread as _$spread,useTerminalDimensions,useTerminalDimensions as useTerminalDimensions2,useTerminalDimensions as useTerminalDimensions3,useRenderer as useRenderer2,useTerminalDimensions as useTerminalDimensions5,useTerminalDimensions as useTerminalDimensions6} from "@opentui/solid"
2
2
 
3
3
 
4
4
 
@@ -84,7 +84,7 @@ const session=sessionID?api.state.session.get(sessionID):undefined
84
84
  const directory=session?.directory??api.state.path.directory
85
85
  const workspace=session?.workspaceID
86
86
  return{key:JSON.stringify([directory,workspace??null]),routing:{directory,...workspace&&{workspace}}}}
87
- import {createSignal as createSignal2,createSignal,createEffect,onCleanup,createContext,useContext,createContext as createContext2,createSignal as createSignal3,onCleanup as onCleanup2,useContext as useContext2,createEffect as createEffect2,splitProps,untrack,splitProps as splitProps2,For,createEffect as createEffect3,onCleanup as onCleanup3,Show,createEffect as createEffect4,Show as Show2,splitProps as splitProps3,createEffect as createEffect5,createSignal as createSignal4,onCleanup as onCleanup4,onMount,Suspense,lazy,batch,createSignal as createSignal5,createSignal as createSignal6,onCleanup as onCleanup5,Show as Show3,batch as batch2,createSignal as createSignal8,createSignal as createSignal7,createEffect as createEffect6,createSignal as createSignal9,onCleanup as onCleanup6,createSignal as createSignal10,createSignal as createSignal11,Suspense as Suspense2,lazy as lazy2,Index,onCleanup as onCleanup7,createEffect as createEffect8,onCleanup as onCleanup10,batch as batch3,createEffect as createEffect7,createMemo,createSignal as createSignal13,onCleanup as onCleanup9,onMount as onMount2,createSignal as createSignal12,onCleanup as onCleanup8,For as For2,For as For3,Show as Show4,createMemo as createMemo2,Suspense as Suspense3,lazy as lazy3,For as For6,createMemo as createMemo4,onMount as onMount4,For as For5,createMemo as createMemo3,onMount as onMount3,Show as Show6,createEffect as createEffect9,createSignal as createSignal14,onCleanup as onCleanup11,Show as Show5,For as For4,For as For7,createEffect as createEffect10,createMemo as createMemo5,onCleanup as onCleanup12,createEffect as createEffect11,createMemo as createMemo6,untrack as untrack2,Suspense as Suspense4,lazy as lazy4,onCleanup as onCleanup13,createEffect as createEffect12,onCleanup as onCleanup14,createSignal as createSignal15,createMemo as createMemo7,createSignal as createSignal16,createSignal as createSignal17,lazy as lazy5,Show as Show9,For as For8,Show as Show8,Show as Show7,createEffect as createEffect13,onCleanup as onCleanup15,onMount as onMount5,onCleanup as onCleanup16,onMount as onMount6,For as For9,createSignal as createSignal18,createEffect as createEffect14,createSignal as createSignal19,onCleanup as onCleanup17,createSignal as createSignal20,onCleanup as onCleanup18,createSignal as createSignal21,Show as Show10,createSignal as createSignal23,createSignal as createSignal22,onCleanup as onCleanup19,For as For10,Show as Show13,createMemo as createMemo9,createComputed,createMemo as createMemo8,createSignal as createSignal24,untrack as untrack3,Show as Show11,createComputed as createComputed2,untrack as untrack4,Show as Show12,createSignal as createSignal26,createEffect as createEffect15,createSignal as createSignal25,on,createMemo as createMemo11,createSignal as createSignal29,createMemo as createMemo10,For as For11,Show as Show17,Show as Show14,Show as Show15,createSignal as createSignal27,createContext as createContext3,useContext as useContext3,Show as Show16,createSignal as createSignal28,onCleanup as onCleanup20,Show as Show25,createSignal as createSignal30,untrack as untrack5,createSignal as createSignal31,createSignal as createSignal32,Show as Show19,createEffect as createEffect16,createSignal as createSignal34,onCleanup as onCleanup21,Show as Show18,createSignal as createSignal33,For as For13,Show as Show20,For as For12,createSignal as createSignal35,Show as Show21,Show as Show22,Show as Show23,Show as Show24,createSignal as createSignal36,createEffect as createEffect17,createMemo as createMemo12,on as on2,onCleanup as onCleanup22,For as For14,Show as Show27,createMemo as createMemo14,Show as Show26,createMemo as createMemo13,createSignal as createSignal37,createContext as createContext4,useContext as useContext4,Show as Show28,Suspense as Suspense5,createEffect as createEffect18,onCleanup as onCleanup23,untrack as untrack6,For as For20,Match,Switch,createMemo as createMemo20,onCleanup as onCleanup29,For as For15,Show as Show30,createMemo as createMemo16,createSignal as createSignal39,createEffect as createEffect19,createMemo as createMemo15,onCleanup as onCleanup24,untrack as untrack7,Show as Show29,createEffect as createEffect20,createSignal as createSignal38,onCleanup as onCleanup25,For as For16,Show as Show32,createSignal as createSignal40,createEffect as createEffect21,createMemo as createMemo17,onCleanup as onCleanup26,untrack as untrack8,Show as Show31,For as For18,Show as Show35,createEffect as createEffect22,createMemo as createMemo18,createSignal as createSignal41,onCleanup as onCleanup27,untrack as untrack9,For as For17,Show as Show34,Show as Show33,Show as Show40,createEffect as createEffect23,createMemo as createMemo19,createSignal as createSignal42,onCleanup as onCleanup28,untrack as untrack10,Show as Show36,For as For19,Show as Show38,Show as Show37,Show as Show39,createEffect as createEffect24,createMemo as createMemo21,onCleanup as onCleanup30,untrack as untrack11,Show as Show41,createMemo as createMemo22,onCleanup as onCleanup31,createRoot,createSignal as createSignal43,getOwner,createSignal as createSignal44,onCleanup as onCleanup32,onMount as onMount7} from "solid-js"
87
+ import {createSignal as createSignal2,createSignal,createEffect,onCleanup,createContext,useContext,createContext as createContext2,createSignal as createSignal3,onCleanup as onCleanup2,useContext as useContext2,createEffect as createEffect2,splitProps,untrack,splitProps as splitProps2,For,createEffect as createEffect3,onCleanup as onCleanup3,Show,createEffect as createEffect4,Show as Show2,splitProps as splitProps3,createEffect as createEffect5,createSignal as createSignal4,onCleanup as onCleanup4,onMount,Suspense,lazy,batch,createSignal as createSignal5,createSignal as createSignal6,onCleanup as onCleanup5,Show as Show3,batch as batch2,createSignal as createSignal8,createSignal as createSignal7,createEffect as createEffect6,createSignal as createSignal9,onCleanup as onCleanup6,createSignal as createSignal10,Suspense as Suspense2,lazy as lazy2,createEffect as createEffect8,onCleanup as onCleanup10,batch as batch3,createEffect as createEffect7,createMemo,createSignal as createSignal13,onCleanup as onCleanup9,onMount as onMount2,createSignal as createSignal12,onCleanup as onCleanup8,For as For2,For as For3,Show as Show4,createMemo as createMemo2,Suspense as Suspense3,lazy as lazy3,For as For5,createMemo as createMemo3,onMount as onMount3,Show as Show6,createEffect as createEffect9,createSignal as createSignal14,onCleanup as onCleanup11,Show as Show5,For as For4,Suspense as Suspense4,lazy as lazy4,onCleanup as onCleanup13,createEffect as createEffect12,onCleanup as onCleanup14,createSignal as createSignal15,createSignal as createSignal16,createSignal as createSignal17,lazy as lazy5,createEffect as createEffect13,onCleanup as onCleanup15,onMount as onMount5,onCleanup as onCleanup16,onMount as onMount6,createEffect as createEffect14,createSignal as createSignal19,onCleanup as onCleanup17,createSignal as createSignal21,Show as Show10,createSignal as createSignal23,createSignal as createSignal22,onCleanup as onCleanup19,For as For10,Show as Show13,createMemo as createMemo9,createComputed,createMemo as createMemo8,createSignal as createSignal24,untrack as untrack3,Show as Show11,createComputed as createComputed2,untrack as untrack4,Show as Show12,createSignal as createSignal26,createEffect as createEffect15,createSignal as createSignal25,on,createMemo as createMemo11,createSignal as createSignal29,createMemo as createMemo10,For as For11,Show as Show17,Show as Show14,Show as Show15,createSignal as createSignal27,createContext as createContext3,useContext as useContext3,Show as Show16,createSignal as createSignal28,onCleanup as onCleanup20,createEffect as createEffect17,createMemo as createMemo13,on as on2,onCleanup as onCleanup23,For as For14,Show as Show26,createMemo as createMemo15,Show as Show25,createMemo as createMemo14,createSignal as createSignal38,createContext as createContext4,useContext as useContext4,Show as Show27,Suspense as Suspense5,createEffect as createEffect18,onCleanup as onCleanup24,untrack as untrack6,For as For20,Match,Switch,createMemo as createMemo21,onCleanup as onCleanup30,For as For15,Show as Show29,createMemo as createMemo17,createSignal as createSignal40,createEffect as createEffect19,createMemo as createMemo16,onCleanup as onCleanup25,untrack as untrack7,Show as Show28,createEffect as createEffect20,createSignal as createSignal39,onCleanup as onCleanup26,For as For16,Show as Show31,createSignal as createSignal41,createEffect as createEffect21,createMemo as createMemo18,onCleanup as onCleanup27,untrack as untrack8,Show as Show30,For as For18,Show as Show34,createEffect as createEffect22,createMemo as createMemo19,createSignal as createSignal42,onCleanup as onCleanup28,untrack as untrack9,For as For17,Show as Show33,Show as Show32,Show as Show39,createEffect as createEffect23,createMemo as createMemo20,createSignal as createSignal43,onCleanup as onCleanup29,untrack as untrack10,Show as Show35,For as For19,Show as Show37,Show as Show36,Show as Show38,createEffect as createEffect24,createMemo as createMemo22,onCleanup as onCleanup31,untrack as untrack11,Show as Show40,createMemo as createMemo23,onCleanup as onCleanup32,createRoot,createSignal as createSignal44,getOwner,createSignal as createSignal45,onMount as onMount7} from "solid-js"
88
88
  function mcpToggleAction(status){if(status==="pending")
89
89
  return
90
90
  return status==="connected"?"disconnect":"connect"
@@ -744,7 +744,7 @@ renderer.requestRender()
744
744
 
745
745
 
746
746
 
747
- import {RGBA,TextAttributes,TextAttributes as TextAttributes2,TextAttributes as TextAttributes3,RGBA as RGBA2,parseColor,TextAttributes as TextAttributes4,TextAttributes as TextAttributes5,TextAttributes as TextAttributes6,TextAttributes as TextAttributes7,RGBA as RGBA3,parseColor as parseColor2,TextAttributes as TextAttributes8,TextAttributes as TextAttributes9,TextAttributes as TextAttributes10,TextAttributes as TextAttributes11,TextAttributes as TextAttributes13,TextAttributes as TextAttributes12,TextAttributes as TextAttributes14,ScrollBoxRenderable,TextAttributes as TextAttributes15} from "@opentui/core"
747
+ import {RGBA,TextAttributes,TextAttributes as TextAttributes2,TextAttributes as TextAttributes3,RGBA as RGBA2,parseColor,TextAttributes as TextAttributes4,TextAttributes as TextAttributes5,TextAttributes as TextAttributes6,RGBA as RGBA3,parseColor as parseColor2,TextAttributes as TextAttributes8,TextAttributes as TextAttributes9,TextAttributes as TextAttributes10,ScrollBoxRenderable,TextAttributes as TextAttributes16} from "@opentui/core"
748
748
 
749
749
  var transparent=RGBA.fromInts(0,0,0,0)
750
750
  function selectionBackdrop(node){for(let parent=node.parent;parent; parent=parent.parent){if("backgroundColor" in parent&&parent.backgroundColor instanceof RGBA&&parent.backgroundColor.a>0&&(!("shouldFill" in parent)||parent.shouldFill!==false))
@@ -987,7 +987,12 @@ return _p$
987
987
  },{e:undefined,t:undefined,a:undefined,o:undefined
988
988
  })
989
989
  return _el$
990
- })(),(()=>{var _el$5=_$createElement("scrollbox"),_el$6=_$createElement("box")
990
+ })(),_$memo(()=>_$memo(()=>!!props.description)()&&(()=>{var _el$1=_$createElement("text")
991
+ _$setProp(_el$1,"wrapMode","word")
992
+ _$insert(_el$1,()=>props.description)
993
+ _$effect((_$p)=>_$setProp(_el$1,"fg",theme().textMuted,_$p))
994
+ return _el$1
995
+ })()),(()=>{var _el$5=_$createElement("scrollbox"),_el$6=_$createElement("box")
991
996
  _$insertNode(_el$5,_el$6)
992
997
  _$use((node)=>{body=node
993
998
  scroll.ref(node)
@@ -1000,24 +1005,24 @@ _$insert(_el$6,_$createComponent(For,{get each(){return props.options
1000
1005
  },onMouseOver:()=>setActive(index()),onMouseUp:(event)=>{event.stopPropagation()
1001
1006
  setActive(index())
1002
1007
  props.onSelect(option)
1003
- },get children(){return [(()=>{var _el$1=_$createElement("text")
1004
- _$setProp(_el$1,"wrapMode","word")
1005
- _$insert(_el$1,(()=>{var _c$=_$memo(()=>!!option.icon)
1008
+ },get children(){return props.renderOption?.(option)??[(()=>{var _el$10=_$createElement("text")
1009
+ _$setProp(_el$10,"wrapMode","word")
1010
+ _$insert(_el$10,(()=>{var _c$=_$memo(()=>!!option.icon)
1006
1011
  return()=>_c$()?`${icons.icon(option.icon)} `:""
1007
1012
  })(),null)
1008
- _$insert(_el$1,()=>option.title,null)
1013
+ _$insert(_el$10,()=>option.title,null)
1009
1014
  _$effect((_p$)=>{var _v$5=active()===index()?TextAttributes2.BOLD:undefined,_v$6=theme().text
1010
- _v$5!==_p$.e&&(_p$.e=_$setProp(_el$1,"attributes",_v$5,_p$.e))
1011
- _v$6!==_p$.t&&(_p$.t=_$setProp(_el$1,"fg",_v$6,_p$.t))
1015
+ _v$5!==_p$.e&&(_p$.e=_$setProp(_el$10,"attributes",_v$5,_p$.e))
1016
+ _v$6!==_p$.t&&(_p$.t=_$setProp(_el$10,"fg",_v$6,_p$.t))
1012
1017
  return _p$
1013
1018
  },{e:undefined,t:undefined
1014
1019
  })
1015
- return _el$1
1016
- })(),(()=>{var _el$10=_$createElement("text")
1017
- _$setProp(_el$10,"wrapMode","word")
1018
- _$insert(_el$10,()=>option.description)
1019
- _$effect((_$p)=>_$setProp(_el$10,"fg",theme().textMuted,_$p))
1020
1020
  return _el$10
1021
+ })(),(()=>{var _el$11=_$createElement("text")
1022
+ _$setProp(_el$11,"wrapMode","word")
1023
+ _$insert(_el$11,()=>option.description)
1024
+ _$effect((_$p)=>_$setProp(_el$11,"fg",theme().textMuted,_$p))
1025
+ return _el$11
1021
1026
  })(),_$memo(()=>props.renderDetails?.(option))]
1022
1027
  }})
1023
1028
  }))
@@ -5805,7 +5810,25 @@ return _$createComponent(SectionWithHeaderAction,{get api(){return props.api
5805
5810
 
5806
5811
 
5807
5812
 
5808
- var CHATGPT_METHODS=new Set(["chatgpt-browser","chatgpt-headless"]);
5813
+ var CHATGPT_METHODS=new Set(["chatgpt-browser","chatgpt-headless","chatgpt-token-sharing"]);
5814
+
5815
+
5816
+
5817
+
5818
+
5819
+
5820
+
5821
+
5822
+
5823
+
5824
+
5825
+
5826
+
5827
+
5828
+
5829
+
5830
+
5831
+
5809
5832
 
5810
5833
 
5811
5834
 
@@ -5878,9 +5901,9 @@ var scheduleInterval=(callback,milliseconds)=>{const timer=setInterval(callback,
5878
5901
  return()=>clearInterval(timer)
5879
5902
  }
5880
5903
  function createLimitsRefresh(options,schedule=scheduleInterval){let disposed=false
5881
- const selectedKey=createMemo12(()=>JSON.stringify(options.selectedModel?.()))
5882
- const targetKey=createMemo12(()=>JSON.stringify(options.controller.current().model))
5883
- const interval=createMemo12(()=>(parseLimitsRefreshMinutes(options.refreshMinutes?.())??DEFAULT_LIMITS_REFRESH_MINUTES)*60000)
5904
+ const selectedKey=createMemo13(()=>JSON.stringify(options.selectedModel?.()))
5905
+ const targetKey=createMemo13(()=>JSON.stringify(options.controller.current().model))
5906
+ const interval=createMemo13(()=>(parseLimitsRefreshMinutes(options.refreshMinutes?.())??DEFAULT_LIMITS_REFRESH_MINUTES)*60000)
5884
5907
  createEffect17(on2(selectedKey,()=>{const model=options.selectedModel?.()
5885
5908
  if(model&&options.accountSource)
5886
5909
  options.accountSource.refresh(model).catch(()=>{})
@@ -5898,9 +5921,9 @@ await options.accountSource.refresh(model)
5898
5921
  if(!disposed&&target===targetKey())
5899
5922
  await options.controller.refresh()
5900
5923
  }
5901
- createEffect17(on2(interval,(milliseconds)=>{onCleanup22(schedule(()=>void refresh().catch(()=>{}),milliseconds))
5924
+ createEffect17(on2(interval,(milliseconds)=>{onCleanup23(schedule(()=>void refresh().catch(()=>{}),milliseconds))
5902
5925
  }))
5903
- onCleanup22(()=>{disposed=true
5926
+ onCleanup23(()=>{disposed=true
5904
5927
  })
5905
5928
  }
5906
5929
 
@@ -5956,12 +5979,12 @@ function QuickActionRow(props){const{api,interaction
5956
5979
  const icons=useIcons()
5957
5980
  const toolbar=useToolbar()
5958
5981
  const theme=()=>api.theme.current
5959
- const [width,setWidth]=createSignal37(0)
5960
- const shortcut=createMemo13(()=>{const bindings=api.keymap.getCommandBindings({visibility:"registered",commands:[props.action.command]
5982
+ const [width,setWidth]=createSignal38(0)
5983
+ const shortcut=createMemo14(()=>{const bindings=api.keymap.getCommandBindings({visibility:"registered",commands:[props.action.command]
5961
5984
  })
5962
5985
  return api.keys.formatBindings(bindings.get(props.action.command))
5963
5986
  })
5964
- const visibleShortcut=createMemo13(()=>{const value=shortcut()
5987
+ const visibleShortcut=createMemo14(()=>{const value=shortcut()
5965
5988
  return value&&width()>=Bun.stringWidth(props.action.label) + Bun.stringWidth(value) + (toolbar?11:8)?value:undefined
5966
5989
  })
5967
5990
  function run(){if(props.action.command==="session.new"&&props.onNewSession?.())
@@ -6000,7 +6023,7 @@ _$insert(_el$2,()=>props.action.label)
6000
6023
  _$effect((_$p)=>_$setProp(_el$2,"fg",row.foregroundColor(),_$p))
6001
6024
  return _el$2
6002
6025
  })()
6003
- },get metadata(){return _$createComponent(Show26,{get when(){return visibleShortcut()
6026
+ },get metadata(){return _$createComponent(Show25,{get when(){return visibleShortcut()
6004
6027
  },children:(value)=>(()=>{var _el$3=_$createElement("text")
6005
6028
  _$setProp(_el$3,"flexShrink",0)
6006
6029
  _$setProp(_el$3,"wrapMode","none")
@@ -6009,12 +6032,12 @@ _$effect((_$p)=>_$setProp(_el$3,"fg",row.focused()?row.foregroundColor():theme()
6009
6032
  return _el$3
6010
6033
  })()
6011
6034
  })
6012
- },get trailing(){return _$createComponent(Show26,{when:toolbar,get children(){return _$createComponent(SidebarPinControl,{get id(){return id()
6035
+ },get trailing(){return _$createComponent(Show25,{when:toolbar,get children(){return _$createComponent(SidebarPinControl,{get id(){return id()
6013
6036
  },get position(){return props.position
6014
6037
  },get pin(){return{kind:"action",id:props.action.command,icon:"bolt"
6015
6038
  }}})
6016
6039
  }})
6017
- },get details(){return _$createComponent(Show26,{get when(){return props.disabled
6040
+ },get details(){return _$createComponent(Show25,{get when(){return props.disabled
6018
6041
  },children:(reason)=>(()=>{var _el$4=_$createElement("text")
6019
6042
  _$setProp(_el$4,"wrapMode","word")
6020
6043
  _$insert(_el$4,reason)
@@ -6025,7 +6048,7 @@ return _el$4
6025
6048
  }})
6026
6049
  }
6027
6050
  function QuickActionsSection(props){const commandRevision=createQuickActionRevision(props.api)
6028
- const actions=createMemo14(()=>{commandRevision()
6051
+ const actions=createMemo15(()=>{commandRevision()
6029
6052
  return orderQuickActionIds(props.preferences.quickActionOrder?.()??QUICK_ACTIONS.map((action)=>action.command),props.preferences.favoriteQuickActions?.()??new Set).flatMap((id)=>{const action=QUICK_ACTIONS.find((candidate)=>candidate.command===id)
6030
6053
  return action&&props.preferences.quickActionVisible?.(id)!==false?[{...action,label:quickActionLabel(props.api,action),disabled:quickActionDisabledReason(props.api,action)
6031
6054
  }]:[]
@@ -6042,7 +6065,7 @@ return _$createComponent(Section,{get api(){return props.api
6042
6065
  },onToggle:()=>props.preferences.toggleSectionExpanded("quick_actions"),get children(){return [_$createComponent(SidebarRowList,{get api(){return props.api
6043
6066
  },get interaction(){return props.interaction
6044
6067
  },get density(){return props.preferences.rowDensity?.()??"compact"
6045
- },get children(){return [_$createComponent(Show27,{get when(){return actions().length===0
6068
+ },get children(){return [_$createComponent(Show26,{get when(){return actions().length===0
6046
6069
  },get children(){var _el$=_$createElement("text")
6047
6070
  _$insertNode(_el$,_$createTextNode(`No quick actions selected`))
6048
6071
  _$effect((_$p)=>_$setProp(_el$,"fg",props.api.theme.current.textMuted,_$p))
@@ -6115,14 +6138,14 @@ untrack6(()=>shortcuts.bind(key))
6115
6138
  createEffect18(()=>{if(shortcuts.active()&&(props.api.route.current.name!=="session"||props.api.ui.dialog.open||props.api.mode.current()==="modal"))
6116
6139
  untrack6(shortcuts.cancel)
6117
6140
  })
6118
- onCleanup23(shortcuts.dispose)
6141
+ onCleanup24(shortcuts.dispose)
6119
6142
  return(()=>{var _el$=_$createElement("box")
6120
6143
  _$setProp(_el$,"position","absolute")
6121
6144
  _$setProp(_el$,"top",0)
6122
6145
  _$setProp(_el$,"left",0)
6123
6146
  _$setProp(_el$,"width","100%")
6124
6147
  _$setProp(_el$,"height","100%")
6125
- _$insert(_el$,_$createComponent(Show28,{get when(){return shortcuts.active()
6148
+ _$insert(_el$,_$createComponent(Show27,{get when(){return shortcuts.active()
6126
6149
  },get children(){return _$createComponent(Suspense5,{get children(){return _$createComponent(SidebarShortcutHint,{get api(){return props.api
6127
6150
  },get actions(){return shortcuts.actions
6128
6151
  }})
@@ -6137,11 +6160,11 @@ const unregisterCommands=props.api.keymap.registerLayer({commands:[...commands,.
6137
6160
  })=>({name:name.replace(PLUGIN_ID,()=>LEGACY_PLUGIN_ID),run,enabled
6138
6161
  }))]
6139
6162
  })
6140
- onCleanup23(unregisterCommands)
6163
+ onCleanup24(unregisterCommands)
6141
6164
  createEffect18(()=>{const unregister=props.api.keymap.registerLayer({bindings:[{key:props.preferences.focusKey(),cmd:FOCUS_COMMAND
6142
6165
  }]
6143
6166
  })
6144
- onCleanup23(unregister)
6167
+ onCleanup24(unregister)
6145
6168
  })
6146
6169
  return _$createElement("box")
6147
6170
  }
@@ -6221,13 +6244,13 @@ return 2 + Math.max(1,iconsWidth + (count&&pin.text?1:0) + Bun.stringWidth(pin.t
6221
6244
  function createToolbarModel(props){const icons=useIcons()
6222
6245
  const revision=createQuickActionRevision(props.api)
6223
6246
  const pins=()=>props.preferences.toolbarPins?.()??[]
6224
- const needsSkills=createMemo15(()=>pins().some((pin)=>pin.kind==="skill"))
6225
- const target=createMemo15(()=>props.skills.target())
6247
+ const needsSkills=createMemo16(()=>pins().some((pin)=>pin.kind==="skill"))
6248
+ const target=createMemo16(()=>props.skills.target())
6226
6249
  createEffect19(()=>{if(!needsSkills())
6227
6250
  return
6228
6251
  const current=target()
6229
6252
  const release=untrack7(()=>props.skills.activate(current))
6230
- onCleanup24(release)
6253
+ onCleanup25(release)
6231
6254
  untrack7(()=>{props.skills.refresh(current).catch(()=>{})
6232
6255
  })
6233
6256
  })
@@ -6258,14 +6281,14 @@ return{...model,width:toolbarPinWidth}}
6258
6281
 
6259
6282
  function ToolbarButton(props){const icons=useIcons()
6260
6283
  const foreground=()=>props.reason?props.api.theme.current.textMuted:item.foregroundColor()
6261
- const [hovered,setHovered]=createSignal38(false)
6284
+ const [hovered,setHovered]=createSignal39(false)
6262
6285
  const item=useSidebarItem(props.api,props.interaction,{id:props.id,position:()=>({section:0,row:props.row + 1,column:props.column
6263
6286
  }),activate:props.onRun
6264
6287
  },()=>props.reason?props.api.theme.current.textMuted:props.api.theme.current.accent,"control")
6265
6288
  const content=()=>[props.icons.map((icon)=>terminalIcon(icon,icons.style())).join(" "),props.text].filter(Boolean).join(" ")
6266
6289
  createEffect20(()=>props.onDetails(props.id,item.focused()||hovered()))
6267
- onCleanup25(()=>props.onDetails(props.id,false))
6268
- return _$createComponent(Show29,{get when(){return _$memo(()=>!!(props.width===3&&props.icons.length===1))()&&!props.text
6290
+ onCleanup26(()=>props.onDetails(props.id,false))
6291
+ return _$createComponent(Show28,{get when(){return _$memo(()=>!!(props.width===3&&props.icons.length===1))()&&!props.text
6269
6292
  },get fallback(){return _$createComponent(SelectionBox,{get id(){return props.id
6270
6293
  },ref(r$){var _ref$2=item.ref
6271
6294
  typeof _ref$2==="function"?_ref$2(r$):item.ref=r$
@@ -6305,17 +6328,17 @@ setHovered(false)
6305
6328
  }
6306
6329
  function SidebarToolbar(props){const model=createToolbarModel(props)
6307
6330
  const icons=useIcons()
6308
- const [width,setWidth]=createSignal39(3)
6309
- const [detail,setDetail]=createSignal39()
6310
- const keys=createMemo16(()=>model.pins().map((pin)=>toolbarPinKey(pin)))
6311
- const widths=createMemo16(()=>new Map(model.pins().map((pin)=>[toolbarPinKey(pin),model.width(pin)])))
6312
- const layout=createMemo16(()=>toolbarLayout(keys(),width(),props.preferences.toolbarOverflow?.()??"menu",widths()))
6313
- const rows=createMemo16(()=>layout().rows.map((_,index)=>index))
6314
- const byKey=createMemo16(()=>new Map(model.pins().map((pin)=>[toolbarPinKey(pin),pin])))
6331
+ const [width,setWidth]=createSignal40(3)
6332
+ const [detail,setDetail]=createSignal40()
6333
+ const keys=createMemo17(()=>model.pins().map((pin)=>toolbarPinKey(pin)))
6334
+ const widths=createMemo17(()=>new Map(model.pins().map((pin)=>[toolbarPinKey(pin),model.width(pin)])))
6335
+ const layout=createMemo17(()=>toolbarLayout(keys(),width(),props.preferences.toolbarOverflow?.()??"menu",widths()))
6336
+ const rows=createMemo17(()=>layout().rows.map((_,index)=>index))
6337
+ const byKey=createMemo17(()=>new Map(model.pins().map((pin)=>[toolbarPinKey(pin),pin])))
6315
6338
  const view=(key)=>{const pin=byKey().get(key)
6316
6339
  return pin&&model.view(pin)
6317
6340
  }
6318
- const details=createMemo16(()=>{if(detail()==="toolbar:more")
6341
+ const details=createMemo17(()=>{if(detail()==="toolbar:more")
6319
6342
  return "More pinned actions and Skills"
6320
6343
  const item=view(detail()??"")
6321
6344
  return item?[item.label,item.stateLabel,item.reason].filter(Boolean).join(" \xB7 "):undefined
@@ -6334,7 +6357,7 @@ dialogs.close()
6334
6357
  model.run(option.value)
6335
6358
  }}))
6336
6359
  }
6337
- return _$createComponent(Show30,{get when(){return keys().length>0
6360
+ return _$createComponent(Show29,{get when(){return keys().length>0
6338
6361
  },get children(){var _el$=_$createElement("box")
6339
6362
  _$setProp(_el$,"id","opencode-navigator.toolbar")
6340
6363
  _$setProp(_el$,"overflow","visible")
@@ -6357,7 +6380,7 @@ _$insert(_el$2,_$createComponent(For15,{get each(){return layout().rows[row]
6357
6380
  return _el$2
6358
6381
  })()
6359
6382
  }),null)
6360
- _$insert(_el$,_$createComponent(Show30,{get when(){return details()
6383
+ _$insert(_el$,_$createComponent(Show29,{get when(){return details()
6361
6384
  },children:(text)=>(()=>{var _el$3=_$createElement("text")
6362
6385
  _$setProp(_el$3,"position","absolute")
6363
6386
  _$setProp(_el$3,"left",0)
@@ -6388,18 +6411,18 @@ return _el$
6388
6411
 
6389
6412
 
6390
6413
 
6391
- function createSkillSectionModel(props,query){const target=createMemo17(()=>props.controller.target())
6392
- const recent=createMemo17(()=>new Map((props.preferences.recentSkills?.()??[]).map((location,index)=>[location,index])))
6393
- const groups=createMemo17(()=>props.preferences.skillGroups?.()??{})
6394
- const grouped=createMemo17(()=>Object.keys(groups()).length>0)
6395
- const list=createMemo17(()=>buildSkillGroupedView(props.controller.list(target()),props.preferences.favoriteSkills?.()??new Set,groups(),recent()))
6396
- const filtered=createMemo17(()=>list().filter((item)=>matchesFilter(query(),item.name,item.description,item.assignedGroup)))
6414
+ function createSkillSectionModel(props,query){const target=createMemo18(()=>props.controller.target())
6415
+ const recent=createMemo18(()=>new Map((props.preferences.recentSkills?.()??[]).map((location,index)=>[location,index])))
6416
+ const groups=createMemo18(()=>props.preferences.skillGroups?.()??{})
6417
+ const grouped=createMemo18(()=>Object.keys(groups()).length>0)
6418
+ const list=createMemo18(()=>buildSkillGroupedView(props.controller.list(target()),props.preferences.favoriteSkills?.()??new Set,groups(),recent()))
6419
+ const filtered=createMemo18(()=>list().filter((item)=>matchesFilter(query(),item.name,item.description,item.assignedGroup)))
6397
6420
  const visibility=createListVisibility({items:filtered,limit:()=>props.preferences.sectionItemLimit?.("skills")??0,resetKey:()=>JSON.stringify([target().key,query()])
6398
6421
  })
6399
- const state=createMemo17(()=>props.controller.state(target()))
6422
+ const state=createMemo18(()=>props.controller.state(target()))
6400
6423
  createEffect21(()=>{const current=target()
6401
6424
  const deactivate=untrack8(()=>props.controller.activate?.(current)??(()=>{}))
6402
- onCleanup26(deactivate)
6425
+ onCleanup27(deactivate)
6403
6426
  untrack8(()=>void props.controller.refresh(current).catch(()=>{}))
6404
6427
  })
6405
6428
  async function useSkill(item){try{const isInserted=await props.controller.use(target(),item.name)
@@ -6451,7 +6474,7 @@ _$insert(_el$,()=>props.item.name,null)
6451
6474
  _$effect((_$p)=>_$setProp(_el$,"fg",row.foregroundColor(),_$p))
6452
6475
  return _el$
6453
6476
  })()
6454
- },get trailing(){return _$createComponent(Show31,{when:toolbar,get children(){return _$createComponent(SidebarPinControl,{get id(){return id()
6477
+ },get trailing(){return _$createComponent(Show30,{when:toolbar,get children(){return _$createComponent(SidebarPinControl,{get id(){return id()
6455
6478
  },get position(){return props.position
6456
6479
  },get pin(){return{kind:"skill",name:props.item.name,location:props.item.location,icon:"book"
6457
6480
  }}})
@@ -6460,7 +6483,7 @@ return _el$
6460
6483
  }
6461
6484
  function SkillsSection(props){const dialogs=useDialogs(props.api)
6462
6485
  const toolbar=useToolbar()
6463
- const [query,setQuery]=createSignal40("")
6486
+ const [query,setQuery]=createSignal41("")
6464
6487
  const model=createSkillSectionModel(props,query)
6465
6488
  const navigationSection=()=>props.navigationSection??3
6466
6489
  function selectSkill(item){activateSkill({api:props.api,controller:props.controller,access:props.preferences,dialogs,skill:item,onConfigure:toolbar?(navigation)=>toolbar.configure({kind:"skill",name:item.name,location:item.location,icon:"book"
@@ -6484,7 +6507,7 @@ _$insert(_el$,_$createComponent(SectionFilter,{get api(){return props.api
6484
6507
  }},get query(){return query()
6485
6508
  },placeholder:"Filter skills...",onInput:setQuery
6486
6509
  }),null)
6487
- _$insert(_el$,_$createComponent(Show32,{get when(){return model.filtered().length>0
6510
+ _$insert(_el$,_$createComponent(Show31,{get when(){return model.filtered().length>0
6488
6511
  },get fallback(){return(()=>{var _el$2=_$createElement("text")
6489
6512
  _$insertNode(_el$2,_$createTextNode(`No matching skills`))
6490
6513
  _$effect((_$p)=>_$setProp(_el$2,"fg",props.api.theme.current.textMuted,_$p))
@@ -6495,7 +6518,7 @@ return _el$2
6495
6518
  },get grouped(){return model.grouped
6496
6519
  },get density(){return props.preferences.rowDensity?.()??"compact"
6497
6520
  },get children(){return _$createComponent(For16,{get each(){return model.visibility.visible()
6498
- },children:(item,index)=>[_$createComponent(Show32,{get when(){return _$memo(()=>!!model.grouped())()&&(index()===0||model.visibility.visible()[index()-1]?.bucket!==item.bucket)
6521
+ },children:(item,index)=>[_$createComponent(Show31,{get when(){return _$memo(()=>!!model.grouped())()&&(index()===0||model.visibility.visible()[index()-1]?.bucket!==item.bucket)
6499
6522
  },get children(){var _el$4=_$createElement("text")
6500
6523
  _$setProp(_el$4,"height",1)
6501
6524
  _$setProp(_el$4,"wrapMode","none")
@@ -6537,16 +6560,16 @@ return _el$
6537
6560
 
6538
6561
 
6539
6562
 
6540
- function createSubagentSectionModel(props){const list=createMemo18(()=>props.controller.list(props.sessionID))
6541
- const recent=createMemo18(()=>props.controller.recent?.(props.sessionID)??[])
6542
- const rows=createMemo18(()=>buildSubagentView(list(),recent()))
6543
- const [query,setQuery]=createSignal41("")
6544
- const [mode,setMode]=createSignal41("all")
6545
- const counts=createMemo18(()=>countSubagentView(rows(),query()))
6546
- const tabs=createMemo18(()=>["all","active","recent",...counts().errors>0?["errors"]:[]])
6547
- const filtered=createMemo18(()=>filterSubagentView(rows(),mode(),query()))
6548
- const parentID=createMemo18(()=>props.api.state?.session?.get(props.sessionID)?.parentID)
6549
- const targetKey=createMemo18(()=>props.controller.target?.(props.sessionID).key??props.sessionID)
6563
+ function createSubagentSectionModel(props){const list=createMemo19(()=>props.controller.list(props.sessionID))
6564
+ const recent=createMemo19(()=>props.controller.recent?.(props.sessionID)??[])
6565
+ const rows=createMemo19(()=>buildSubagentView(list(),recent()))
6566
+ const [query,setQuery]=createSignal42("")
6567
+ const [mode,setMode]=createSignal42("all")
6568
+ const counts=createMemo19(()=>countSubagentView(rows(),query()))
6569
+ const tabs=createMemo19(()=>["all","active","recent",...counts().errors>0?["errors"]:[]])
6570
+ const filtered=createMemo19(()=>filterSubagentView(rows(),mode(),query()))
6571
+ const parentID=createMemo19(()=>props.api.state?.session?.get(props.sessionID)?.parentID)
6572
+ const targetKey=createMemo19(()=>props.controller.target?.(props.sessionID).key??props.sessionID)
6550
6573
  createEffect22(()=>{targetKey()
6551
6574
  setQuery("")
6552
6575
  setMode("all")
@@ -6556,15 +6579,15 @@ setMode("all")
6556
6579
  })
6557
6580
  const visibility=createListVisibility({items:filtered,limit:()=>props.preferences.sectionItemLimit?.("subagents")??0,resetKey:()=>JSON.stringify([targetKey(),query(),mode()])
6558
6581
  })
6559
- const clockKey=createMemo18(()=>props.preferences.expanded().subagents&&visibility.visible().some((item)=>item.status.type!=="idle")?targetKey():undefined)
6582
+ const clockKey=createMemo19(()=>props.preferences.expanded().subagents&&visibility.visible().some((item)=>item.status.type!=="idle")?targetKey():undefined)
6560
6583
  const now=createSubagentClock(clockKey)
6561
- const byId=createMemo18(()=>new Map(visibility.visible().map((item)=>[item.session.id,item])))
6562
- const ids=createMemo18(()=>visibility.visible().map((item)=>item.session.id))
6563
- const state=createMemo18(()=>props.controller.state(props.sessionID))
6584
+ const byId=createMemo19(()=>new Map(visibility.visible().map((item)=>[item.session.id,item])))
6585
+ const ids=createMemo19(()=>visibility.visible().map((item)=>item.session.id))
6586
+ const state=createMemo19(()=>props.controller.state(props.sessionID))
6564
6587
  createEffect22(()=>{const sessionID=props.sessionID
6565
6588
  targetKey()
6566
6589
  const deactivate=untrack9(()=>props.controller.activate?.(sessionID)??(()=>{}))
6567
- onCleanup27(deactivate)
6590
+ onCleanup28(deactivate)
6568
6591
  untrack9(()=>void props.controller.refresh(sessionID).catch(()=>{}))
6569
6592
  })
6570
6593
  return{list,recent,rows,query,setQuery,mode,setMode,counts,tabs,filtered,parentID,visibility,now,byId,ids,state
@@ -6622,7 +6645,7 @@ return()=>_c$()?`${props.item.run.startedBeforeObservation ? `${icons.icon("rece
6622
6645
  _$effect((_$p)=>_$setProp(_el$3,"fg",row.focused()?row.foregroundColor():theme().textMuted,_$p))
6623
6646
  return _el$3
6624
6647
  })()
6625
- },get details(){return [_$createComponent(Show33,{get when(){return props.item.run?.errorMessage
6648
+ },get details(){return [_$createComponent(Show32,{get when(){return props.item.run?.errorMessage
6626
6649
  },get children(){var _el$4=_$createElement("text"),_el$5=_$createTextNode(`: `)
6627
6650
  _$insertNode(_el$4,_el$5)
6628
6651
  _$setProp(_el$4,"wrapMode","word")
@@ -6630,12 +6653,12 @@ _$insert(_el$4,()=>cancelled()?"Cancelled":"Error",_el$5)
6630
6653
  _$insert(_el$4,()=>props.item.run?.errorMessage,null)
6631
6654
  _$effect((_$p)=>_$setProp(_el$4,"fg",row.focused()?row.foregroundColor():failed()?theme().error:theme().textMuted,_$p))
6632
6655
  return _el$4
6633
- }}),_$createComponent(Show33,{get when(){return props.item.unavailable
6656
+ }}),_$createComponent(Show32,{get when(){return props.item.unavailable
6634
6657
  },get children(){var _el$6=_$createElement("text")
6635
6658
  _$insertNode(_el$6,_$createTextNode(`Worker status unavailable`))
6636
6659
  _$effect((_$p)=>_$setProp(_el$6,"fg",theme().warning,_$p))
6637
6660
  return _el$6
6638
- }}),_$createComponent(Show33,{get when(){return _$memo(()=>props.item.status.type==="retry")()?props.item.status:undefined
6661
+ }}),_$createComponent(Show32,{get when(){return _$memo(()=>props.item.status.type==="retry")()?props.item.status:undefined
6639
6662
  },children:(status)=>(()=>{var _el$0=_$createElement("text"),_el$1=_$createTextNode(`Retry #`),_el$10=_$createTextNode(` \xB7 `),_el$11=_$createTextNode(`s \xB7 `)
6640
6663
  _$insertNode(_el$0,_el$1)
6641
6664
  _$insertNode(_el$0,_el$10)
@@ -6647,7 +6670,7 @@ _$insert(_el$0,()=>status().message,null)
6647
6670
  _$effect((_$p)=>_$setProp(_el$0,"fg",row.focused()?row.foregroundColor():theme().warning,_$p))
6648
6671
  return _el$0
6649
6672
  })()
6650
- }),_$createComponent(Show33,{get when(){return _$memo(()=>!!idle())()&&!props.item.run?.errorMessage
6673
+ }),_$createComponent(Show32,{get when(){return _$memo(()=>!!idle())()&&!props.item.run?.errorMessage
6651
6674
  },get children(){var _el$8=_$createElement("text")
6652
6675
  _$insertNode(_el$8,_$createTextNode(`Finished`))
6653
6676
  _$effect((_$p)=>_$setProp(_el$8,"fg",theme().textMuted,_$p))
@@ -6663,7 +6686,7 @@ function SubagentList(props){return _$createComponent(SidebarRowList,{get api(){
6663
6686
  const item=()=>props.itemById(id)??initial
6664
6687
  const startsGroup=()=>index()===0||props.visible[index()-1]?.group!==item().group
6665
6688
  return(()=>{var _el$=_$createElement("box")
6666
- _$insert(_el$,_$createComponent(Show34,{get when(){return startsGroup()
6689
+ _$insert(_el$,_$createComponent(Show33,{get when(){return startsGroup()
6667
6690
  },get children(){var _el$2=_$createElement("text"),_el$3=_$createElement("b")
6668
6691
  _$insertNode(_el$2,_el$3)
6669
6692
  _$insert(_el$3,()=>item().group)
@@ -6689,7 +6712,7 @@ return _$createComponent(Section,{get api(){return props.api
6689
6712
  },sectionId:`${PLUGIN_ID}.section.subagents`,get navigationSection(){return navigationSection()
6690
6713
  },title:"SUBAGENTS",section:"subagents",get summary(){return `${model.list().length} active \xB7 ${model.recent().length} recent`
6691
6714
  },get open(){return props.preferences.expanded().subagents
6692
- },onToggle:()=>props.preferences.toggleSectionExpanded("subagents"),get children(){return [_$createComponent(Show35,{get when(){return model.parentID()
6715
+ },onToggle:()=>props.preferences.toggleSectionExpanded("subagents"),get children(){return [_$createComponent(Show34,{get when(){return model.parentID()
6693
6716
  },children:(id)=>_$createComponent(McpBulkAction,{get api(){return props.api
6694
6717
  },get interaction(){return props.interaction
6695
6718
  },id:`${PLUGIN_ID}.subagents.parent`,get position(){return{section:navigationSection(),row:1,column:0
@@ -6723,7 +6746,7 @@ _$insert(_el$2,_$createComponent(For18,{get each(){return model.tabs()
6723
6746
  },onActivate:()=>model.setMode(value)
6724
6747
  })
6725
6748
  }))
6726
- _$insert(_el$,_$createComponent(Show35,{get when(){return model.filtered().length===0
6749
+ _$insert(_el$,_$createComponent(Show34,{get when(){return model.filtered().length===0
6727
6750
  },get children(){var _el$3=_$createElement("text")
6728
6751
  _$insertNode(_el$3,_$createTextNode(`No matching subagents`))
6729
6752
  _$effect((_$p)=>_$setProp(_el$3,"fg",props.api.theme.current.textMuted,_$p))
@@ -6784,7 +6807,7 @@ _$insertNode(_el$2,_el$3)
6784
6807
  _$setProp(_el$2,"wrapMode","word")
6785
6808
  _$insert(_el$2,()=>icons.icon("info"),_el$3)
6786
6809
  _$insert(_el$2,message,null)
6787
- _$insert(_el$,_$createComponent(Show36,{get when(){return _$memo(()=>!!props.setup)()&&(disabled()||failed())
6810
+ _$insert(_el$,_$createComponent(Show35,{get when(){return _$memo(()=>!!props.setup)()&&(disabled()||failed())
6788
6811
  },get children(){return _$createComponent(SectionTab,{get api(){return props.api
6789
6812
  },get interaction(){return props.interaction
6790
6813
  },id:"opencode-navigator.todo.setup",get position(){return{section:props.navigationSection,row:2,column:0
@@ -6847,7 +6870,7 @@ _$insert(_el$2,()=>icons.icon(done()?"done":active()?"busy":cancelled()?"close":
6847
6870
  _$setProp(_el$3,"flexGrow",1)
6848
6871
  _$setProp(_el$3,"wrapMode","word")
6849
6872
  _$insert(_el$3,()=>props.item.content)
6850
- _$insert(_el$,_$createComponent(Show37,{get when(){return props.item.priority==="high"||props.item.priority==="medium"||props.item.priority==="low"
6873
+ _$insert(_el$,_$createComponent(Show36,{get when(){return props.item.priority==="high"||props.item.priority==="medium"||props.item.priority==="low"
6851
6874
  },get children(){var _el$4=_$createElement("text"),_el$5=_$createElement("b"),_el$6=_$createTextNode(` `)
6852
6875
  _$insertNode(_el$4,_el$5)
6853
6876
  _$setProp(_el$4,"width",2)
@@ -6857,7 +6880,7 @@ _$insert(_el$5,priorityLabel,null)
6857
6880
  _$effect((_$p)=>_$setProp(_el$4,"fg",priorityColor(),_$p))
6858
6881
  return _el$4
6859
6882
  }}),null)
6860
- _$effect((_p$)=>{var _v$=active()?theme().warning:done()?theme().success:cancelled()?theme().error:theme().textMuted,_v$2=active()?theme().primary:theme().textMuted,_v$3=done()?TextAttributes15.STRIKETHROUGH:active()?TextAttributes15.BOLD:undefined
6883
+ _$effect((_p$)=>{var _v$=active()?theme().warning:done()?theme().success:cancelled()?theme().error:theme().textMuted,_v$2=active()?theme().primary:theme().textMuted,_v$3=done()?TextAttributes16.STRIKETHROUGH:active()?TextAttributes16.BOLD:undefined
6861
6884
  _v$!==_p$.e&&(_p$.e=_$setProp(_el$2,"fg",_v$,_p$.e))
6862
6885
  _v$2!==_p$.t&&(_p$.t=_$setProp(_el$3,"fg",_v$2,_p$.t))
6863
6886
  _v$3!==_p$.a&&(_p$.a=_$setProp(_el$3,"attributes",_v$3,_p$.a))
@@ -6883,7 +6906,7 @@ _$insert(_el$2,_$createComponent(For19,{each:["all","active","finished"],childre
6883
6906
  },onActivate:()=>props.setMode(value)
6884
6907
  })
6885
6908
  }))
6886
- _$insert(_el$,_$createComponent(Show38,{get when(){return props.view.rows.length>0
6909
+ _$insert(_el$,_$createComponent(Show37,{get when(){return props.view.rows.length>0
6887
6910
  },get fallback(){return _$createComponent(EmptyTodo,{get api(){return props.api
6888
6911
  },get mode(){return props.mode
6889
6912
  }})
@@ -6893,7 +6916,7 @@ _$insert(_el$,_$createComponent(Show38,{get when(){return props.view.rows.length
6893
6916
  },get children(){return _$createComponent(For19,{get each(){return props.visibility.visible()
6894
6917
  },children:(row,index)=>{const startsGroup=()=>index()===0||props.visibility.visible()[index()-1].group!==row.group
6895
6918
  return(()=>{var _el$3=_$createElement("box")
6896
- _$insert(_el$3,_$createComponent(Show38,{get when(){return startsGroup()
6919
+ _$insert(_el$3,_$createComponent(Show37,{get when(){return startsGroup()
6897
6920
  },get children(){var _el$4=_$createElement("text"),_el$5=_$createElement("b")
6898
6921
  _$insertNode(_el$4,_el$5)
6899
6922
  _$insert(_el$5,()=>row.group)
@@ -6930,7 +6953,7 @@ return _el$6
6930
6953
 
6931
6954
 
6932
6955
  function TodoGuidanceControl(props){const state=()=>props.controller.guidance(props.sessionID)
6933
- return _$createComponent(Show39,{get when(){return state().available
6956
+ return _$createComponent(Show38,{get when(){return state().available
6934
6957
  },get children(){var _el$=_$createElement("box")
6935
6958
  _$insert(_el$,_$createComponent(SectionTab,{get api(){return props.api
6936
6959
  },get interaction(){return props.interaction
@@ -6940,7 +6963,7 @@ _$insert(_el$,_$createComponent(SectionTab,{get api(){return props.api
6940
6963
  },get disabled(){return state().saving
6941
6964
  },onActivate:()=>void props.controller.setGuidance(props.sessionID,!state().enabled)
6942
6965
  }),null)
6943
- _$insert(_el$,_$createComponent(Show39,{get when(){return state().error
6966
+ _$insert(_el$,_$createComponent(Show38,{get when(){return state().error
6944
6967
  },children:(message)=>(()=>{var _el$2=_$createElement("text")
6945
6968
  _$setProp(_el$2,"wrapMode","word")
6946
6969
  _$insert(_el$2,message)
@@ -6951,28 +6974,28 @@ return _el$2
6951
6974
  return _el$
6952
6975
  }})
6953
6976
  }
6954
- function TodoSection(props){const list=createMemo19(()=>props.controller.list(props.sessionID))
6977
+ function TodoSection(props){const list=createMemo20(()=>props.controller.list(props.sessionID))
6955
6978
  const icons=useIcons()
6956
6979
  const unavailable=()=>hostCapabilityUnavailable(props.api,"todo")
6957
6980
  const managed=()=>("guidance" in props.controller)?props.controller:undefined
6958
6981
  const native=()=>("source" in props.controller)&&props.controller.source==="native"
6959
6982
  const setup=()=>("setup" in props.controller)?props.controller.setup:undefined
6960
6983
  const setupState=()=>setup()?.state(props.sessionID)
6961
- const [mode,setMode]=createSignal42("all")
6962
- const targetKey=createMemo19(()=>props.controller.target?.(props.sessionID).key??props.sessionID)
6984
+ const [mode,setMode]=createSignal43("all")
6985
+ const targetKey=createMemo20(()=>props.controller.target?.(props.sessionID).key??props.sessionID)
6963
6986
  createEffect23(()=>{targetKey()
6964
6987
  setMode("all")
6965
6988
  })
6966
- const view=createMemo19(()=>buildTodoView(list(),mode()))
6989
+ const view=createMemo20(()=>buildTodoView(list(),mode()))
6967
6990
  const visibility=createListVisibility({items:()=>view().rows,limit:()=>props.preferences.sectionItemLimit?.("todo")??0,resetKey:()=>JSON.stringify([targetKey(),mode()])
6968
6991
  })
6969
- const state=createMemo19(()=>props.controller.state(props.sessionID))
6992
+ const state=createMemo20(()=>props.controller.state(props.sessionID))
6970
6993
  createEffect23(()=>{const sessionID=props.sessionID
6971
6994
  targetKey()
6972
6995
  if(unavailable())
6973
6996
  return
6974
6997
  const deactivate=untrack10(()=>props.controller.activate?.(sessionID)??(()=>{}))
6975
- onCleanup28(deactivate)
6998
+ onCleanup29(deactivate)
6976
6999
  untrack10(()=>void props.controller.refresh(sessionID).catch(()=>{}))
6977
7000
  untrack10(()=>void setup()?.refresh(sessionID).catch(()=>{}))
6978
7001
  })
@@ -6985,10 +7008,10 @@ return _$createComponent(Section,{get api(){return props.api
6985
7008
  setup()?.refresh(props.sessionID).catch(()=>{})
6986
7009
  }}:undefined
6987
7010
  },get open(){return props.preferences.expanded().todo
6988
- },onToggle:()=>props.preferences.toggleSectionExpanded("todo"),get children(){return _$createComponent(Show40,{get when(){return unavailable()
7011
+ },onToggle:()=>props.preferences.toggleSectionExpanded("todo"),get children(){return _$createComponent(Show39,{get when(){return unavailable()
6989
7012
  },get fallback(){return(()=>{var _el$=_$createElement("box")
6990
7013
  _$setProp(_el$,"gap",1)
6991
- _$insert(_el$,_$createComponent(Show40,{get when(){return native()
7014
+ _$insert(_el$,_$createComponent(Show39,{get when(){return native()
6992
7015
  },get children(){return _$createComponent(NativeTodoNotice,{get api(){return props.api
6993
7016
  },get setup(){return setup()
6994
7017
  },get sessionID(){return props.sessionID
@@ -6996,7 +7019,7 @@ _$insert(_el$,_$createComponent(Show40,{get when(){return native()
6996
7019
  },get navigationSection(){return navigationSection()
6997
7020
  }})
6998
7021
  }}),null)
6999
- _$insert(_el$,_$createComponent(Show40,{get when(){return managed()?.guidance(props.sessionID).available
7022
+ _$insert(_el$,_$createComponent(Show39,{get when(){return managed()?.guidance(props.sessionID).available
7000
7023
  },get children(){return _$createComponent(TodoGuidanceControl,{get api(){return props.api
7001
7024
  },get controller(){return managed()
7002
7025
  },get sessionID(){return props.sessionID
@@ -7004,7 +7027,7 @@ _$insert(_el$,_$createComponent(Show40,{get when(){return managed()?.guidance(pr
7004
7027
  },get navigationSection(){return navigationSection()
7005
7028
  }})
7006
7029
  }}),null)
7007
- _$insert(_el$,_$createComponent(Show40,{get when(){return managed()?.missing(props.sessionID)
7030
+ _$insert(_el$,_$createComponent(Show39,{get when(){return managed()?.missing(props.sessionID)
7008
7031
  },get fallback(){return _$createComponent(SectionRequestBody,{get api(){return props.api
7009
7032
  },get interaction(){return props.interaction
7010
7033
  },id:`${PLUGIN_ID}.retry.todo`,get position(){return{section:navigationSection(),row:1,column:0
@@ -7041,8 +7064,8 @@ return _el$4
7041
7064
  }})
7042
7065
  }
7043
7066
  function SidebarContent(props){const sections=props.preferences.sections
7044
- const visibleSections=createMemo20(()=>props.preferences.sectionOrder().filter((section)=>sections()[section]&&supportsSidebarSection(props.api,section)))
7045
- onCleanup29(()=>props.interaction.setContentRoot(undefined))
7067
+ const visibleSections=createMemo21(()=>props.preferences.sectionOrder().filter((section)=>sections()[section]&&supportsSidebarSection(props.api,section)))
7068
+ onCleanup30(()=>props.interaction.setContentRoot(undefined))
7046
7069
  return _$createComponent(ToolbarProvider,{get api(){return props.api
7047
7070
  },get preferences(){return props.preferences
7048
7071
  },get skills(){return props.skills
@@ -7093,7 +7116,7 @@ return _el$
7093
7116
  }
7094
7117
 
7095
7118
 
7096
- function McpPersistence(props){const persist=createMemo21(()=>props.controller.persist())
7119
+ function McpPersistence(props){const persist=createMemo22(()=>props.controller.persist())
7097
7120
  createEffect24(()=>{if(!props.api.state.ready)
7098
7121
  return
7099
7122
  persist()
@@ -7102,7 +7125,7 @@ const params="params" in route?route.params:undefined
7102
7125
  if(typeof params?.sessionID!=="string")
7103
7126
  return
7104
7127
  const current=props.controller.target()
7105
- onCleanup30(()=>props.controller.deactivate(current))
7128
+ onCleanup31(()=>props.controller.deactivate(current))
7106
7129
  untrack11(()=>void props.controller.activate(current).catch(()=>{}))
7107
7130
  })
7108
7131
  return _$createElement("box")
@@ -7133,7 +7156,7 @@ return _$createElement("box")
7133
7156
 
7134
7157
  function SidebarTitle(props){const icons=useIcons()
7135
7158
  const theme=()=>props.api.theme.current
7136
- const created=createMemo22(()=>{const value=props.api.state.session.get(props.sessionID)?.time?.created
7159
+ const created=createMemo23(()=>{const value=props.api.state.session.get(props.sessionID)?.time?.created
7137
7160
  return value===undefined?undefined:`Created ${new Date(value).toLocaleDateString("en", {
7138
7161
  dateStyle: "medium"
7139
7162
  })}`
@@ -7142,7 +7165,7 @@ const settingsId=`${PLUGIN_ID}.settings`
7142
7165
  const settings=useSidebarItem(props.api,props.interaction,{id:settingsId,position:{section:0,row:0,column:0
7143
7166
  },activate:()=>openSettings(props.api,props.preferences,undefined,props.mcp,props.skills)
7144
7167
  },()=>theme().textMuted,"control")
7145
- onCleanup31(()=>props.interaction.setTitleRoot(undefined))
7168
+ onCleanup32(()=>props.interaction.setTitleRoot(undefined))
7146
7169
  return(()=>{var _el$=_$createElement("box"),_el$2=_$createElement("box"),_el$3=_$createElement("box")
7147
7170
  _$insertNode(_el$,_el$2)
7148
7171
  _$use((node)=>props.interaction.setTitleRoot(node),_el$)
@@ -7153,7 +7176,7 @@ _$setProp(_el$2,"flexDirection","row")
7153
7176
  _$setProp(_el$2,"justifyContent","space-between")
7154
7177
  _$setProp(_el$2,"gap",1)
7155
7178
  _$setProp(_el$3,"flexGrow",1)
7156
- _$insert(_el$3,_$createComponent(Show41,{get when(){return props.preferences.showSessionTitle()
7179
+ _$insert(_el$3,_$createComponent(Show40,{get when(){return props.preferences.showSessionTitle()
7157
7180
  },get children(){var _el$4=_$createElement("text"),_el$5=_$createElement("b")
7158
7181
  _$insertNode(_el$4,_el$5)
7159
7182
  _$setProp(_el$4,"wrapMode","word")
@@ -7161,7 +7184,7 @@ _$insert(_el$5,()=>props.title)
7161
7184
  _$effect((_$p)=>_$setProp(_el$4,"fg",theme().text,_$p))
7162
7185
  return _el$4
7163
7186
  }}),null)
7164
- _$insert(_el$3,_$createComponent(Show41,{get when(){return _$memo(()=>!!props.preferences.showSessionDate())()&&created()
7187
+ _$insert(_el$3,_$createComponent(Show40,{get when(){return _$memo(()=>!!props.preferences.showSessionDate())()&&created()
7165
7188
  },children:(value)=>(()=>{var _el$6=_$createElement("text")
7166
7189
  _$insert(_el$6,value)
7167
7190
  _$effect((_$p)=>_$setProp(_el$6,"fg",theme().textMuted,_$p))
@@ -7205,7 +7228,7 @@ return mergeConfiguredDefaults(configuredDefaultsFromPluginOptions(options),user
7205
7228
  function LimitsPersistence(props){createLimitsRefresh(props)
7206
7229
  return _$createElement("box")
7207
7230
  }
7208
- function bindNavigatorAbout(api,status,updates,notes){const dispose=registerNavigatorAboutServices(api,{navigatorVersion:"0.27.4",openCodeVersion:api.app.version,checkState:()=>status.navigatorCheckState?.()??{status:"idle"},checking:()=>status.navigatorCheckState?.().status==="checking",updating:updates.navigatorUpdating,installed:updates.navigatorInstalled,check:()=>status.refreshNavigator?.()??Promise.resolve("unavailable"),update(dialogs){const target=status.navigatorUpdate()
7231
+ function bindNavigatorAbout(api,status,updates,notes){const dispose=registerNavigatorAboutServices(api,{navigatorVersion:"0.27.5",openCodeVersion:api.app.version,checkState:()=>status.navigatorCheckState?.()??{status:"idle"},checking:()=>status.navigatorCheckState?.().status==="checking",updating:updates.navigatorUpdating,installed:updates.navigatorInstalled,installation:updates,check:()=>status.refreshNavigator?.()??Promise.resolve("unavailable"),update(dialogs){const target=status.navigatorUpdate()
7209
7232
  if(target)
7210
7233
  updates.navigator(target,dialogs)
7211
7234
  },changelog:async ()=>notes.parseChangelog(await notes.readBundledChangelog())
@@ -7341,7 +7364,7 @@ context.keymap.dispatch(command.id)
7341
7364
  context.renderer.keyInput.on("keypress",onKeypress)
7342
7365
  const keymap={registerLayer(layer){const id=++sequence
7343
7366
  const owner=getOwner()
7344
- const [active,setActive]=createSignal43(true)
7367
+ const [active,setActive]=createSignal44(true)
7345
7368
  const install=()=>{context.keymap.layer(()=>({mode:typeof layer.mode==="string"?layer.mode:"base",priority:layer.priority,enabled:()=>active()&&enabled(layer.enabled),target:layer.target?()=>layer.target:undefined,commands:v2LayerCommands(id,layer,()=>true,run,context.keymap.dispatch)
7346
7369
  }))
7347
7370
  }
@@ -7386,7 +7409,7 @@ cleanups.clear()
7386
7409
  context.renderer.keyInput.off("keypress",onKeypress)
7387
7410
  }}}
7388
7411
 
7389
- function createV2SessionAdapter(context){const [retryDetails,setRetryDetails]=createSignal44({})
7412
+ function createV2SessionAdapter(context){const [retryDetails,setRetryDetails]=createSignal45({})
7390
7413
  const projections=new WeakMap
7391
7414
  function normalize(info){const directory=info.location.directory
7392
7415
  const workspaceID=context.location?.directory===directory?context.location.workspaceID:undefined
@@ -7452,34 +7475,42 @@ return context.data.session.message.list(route.sessionID).some((message)=>(!reve
7452
7475
 
7453
7476
 
7454
7477
  function createV2UI(context,api){let dialogOpen=false
7478
+ let dialogGeneration=0
7479
+ let handingOff=false
7455
7480
  function DialogPrompt(props){return _$createComponent(SingleLinePrompt,_$mergeProps({get api(){return api()
7456
7481
  }},props))
7457
7482
  }
7458
- function DialogConfirm(props){let active=true
7459
- onCleanup32(()=>{active=false
7460
- })
7461
- async function confirm(){const confirmed=await context.ui.dialog.confirm({title:props.title,message:props.message
7483
+ function DialogConfirm(props){const generation=dialogGeneration
7484
+ async function confirm(){handingOff=true
7485
+ try{return context.ui.dialog.confirm({title:props.title,message:props.message
7462
7486
  })
7463
- if(!active)
7487
+ } finally{handingOff=false
7488
+ }}
7489
+ onMount7(()=>{confirm().catch(()=>false).then((confirmed)=>{if(generation!==dialogGeneration||api().lifecycle.signal.aborted)
7490
+ return
7491
+ dialogOpen=false
7492
+ if(context.keymap.mode.current()==="modal")
7464
7493
  return
7465
7494
  if(confirmed)
7466
7495
  props.onConfirm?.()
7467
7496
  else
7468
7497
  props.onCancel?.()
7469
- }
7470
- onMount7(()=>{confirm().catch(()=>{if(active)
7471
- props.onCancel?.()
7472
7498
  })
7473
7499
  })
7474
7500
  return _$createElement("box")
7475
7501
  }
7476
- return{DialogConfirm,DialogPrompt,toast:(input)=>context.ui.toast.show(input),dialog:{replace(render,onClose){dialogOpen=true
7477
- context.ui.dialog.show(render,()=>{dialogOpen=false
7502
+ return{DialogConfirm,DialogPrompt,toast:(input)=>context.ui.toast.show(input),dialog:{replace(render,onClose){const generation=++dialogGeneration
7503
+ dialogOpen=true
7504
+ context.ui.dialog.show(render,()=>{if(handingOff||generation!==dialogGeneration)
7505
+ return
7506
+ dialogGeneration++
7507
+ dialogOpen=false
7478
7508
  onClose?.()
7479
7509
  })
7480
7510
  },setSize(size){context.ui.dialog.set({size
7481
7511
  })
7482
- },clear(){dialogOpen=false
7512
+ },clear(){dialogGeneration++
7513
+ dialogOpen=false
7483
7514
  context.ui.dialog.clear()
7484
7515
  },get open(){return dialogOpen
7485
7516
  }}}}
@@ -7670,7 +7701,7 @@ const limitsPath=import.meta.url.includes("/dist/tui.js")?"./provider-limits.js"
7670
7701
  const limitsModule=await import(limitsPath)
7671
7702
  const LimitsSection=limitsModule.ProviderLimitsSection
7672
7703
  const{controller:limits,codex,accountSource,selectModel,modelSelection
7673
- }=limitsModule.createProviderQuotaIntegration(api,preferences,"0.27.4",hostContext)
7704
+ }=limitsModule.createProviderQuotaIntegration(api,preferences,"0.27.5",hostContext)
7674
7705
  const mcp=createMcpController(api,preferences.persistMcp,preferences,nativeSources?.mcp)
7675
7706
  const interaction=createSidebarInteraction(api,()=>openKeyboardHelp(api,preferences.lspIconStyle,preferences.cornerFont,sidebarShortcutActions(api)))
7676
7707
  const startup=createStartupSessionController(api,preferences)
@@ -7699,7 +7730,7 @@ api.slots.register({order:100,slots:{app(){return _$createComponent(IconProvider
7699
7730
  },interaction,skills,subagents,mcp
7700
7731
  }),_$createComponent(FirstRunWizardPersistence,{api,preferences
7701
7732
  }),_$createComponent(StartupSessionBinding,{api,controller:startup
7702
- }),_$createComponent(UpgradeNotesBinding,{api,preferences,version:"0.27.4"
7733
+ }),_$createComponent(UpgradeNotesBinding,{api,preferences,version:"0.27.5"
7703
7734
  }),_$createComponent(McpPersistence,{api,controller:mcp
7704
7735
  })]
7705
7736
  }})
@@ -7733,13 +7764,13 @@ return result.data?.type==="text"?result.data.content:undefined
7733
7764
  const updateServices=await loadNavigatorUpdates()
7734
7765
  const{createVersionStatus,createVersionUpdateActions,createOpenCodeV1VersionUpdater
7735
7766
  }=updateServices
7736
- const versionStatus=createVersionStatus(api,"0.27.4")
7737
- const versionUpdates=createVersionUpdateActions(api,versionStatus,createOpenCodeV1VersionUpdater(api,meta),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.27.4"))
7767
+ const versionStatus=createVersionStatus(api,"0.27.5")
7768
+ const versionUpdates=createVersionUpdateActions(api,versionStatus,createOpenCodeV1VersionUpdater(api,meta),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.27.5"))
7738
7769
  bindNavigatorAbout(api,versionStatus,versionUpdates,updateServices)
7739
7770
  api.slots.register({order:90,slots:{sidebar_footer(_context,props){return _$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
7740
7771
  },get multilineCorners(){return preferences.cornerFont
7741
7772
  },get children(){return _$createComponent(VersionFooter,{api,get sessionID(){return props.session_id
7742
- },navigatorVersion:"0.27.4",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
7773
+ },navigatorVersion:"0.27.5",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
7743
7774
  },get onNavigatorUpdate(){return versionUpdates.navigator
7744
7775
  },get navigatorProgress(){return versionUpdates.navigatorProgress()
7745
7776
  },get openCodeProgress(){return versionUpdates.openCodeProgress()
@@ -7758,8 +7789,8 @@ return new TextDecoder().decode(await context.client.file.read({location:context
7758
7789
  const updateServices=await loadNavigatorUpdates()
7759
7790
  const{createVersionStatus,createVersionUpdateActions,createOpenCodeV2VersionUpdater
7760
7791
  }=updateServices
7761
- const versionStatus=createVersionStatus(adapter.api,"0.27.4")
7762
- const versionUpdates=createVersionUpdateActions(adapter.api,versionStatus,createOpenCodeV2VersionUpdater(context),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.27.4"))
7792
+ const versionStatus=createVersionStatus(adapter.api,"0.27.5")
7793
+ const versionUpdates=createVersionUpdateActions(adapter.api,versionStatus,createOpenCodeV2VersionUpdater(context),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.27.5"))
7763
7794
  bindNavigatorAbout(adapter.api,versionStatus,versionUpdates,updateServices)
7764
7795
  const disposeFooter=context.ui.slot({append:"sidebar.footer",render:()=>_$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
7765
7796
  },get multilineCorners(){return preferences.cornerFont
@@ -7767,7 +7798,7 @@ const disposeFooter=context.ui.slot({append:"sidebar.footer",render:()=>_$create
7767
7798
  _$setProp(_el$,"flexDirection","row")
7768
7799
  _$setProp(_el$,"justifyContent","space-between")
7769
7800
  _$insert(_el$,_$createComponent(VersionSummary,{get api(){return adapter.api
7770
- },navigatorVersion:"0.27.4",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
7801
+ },navigatorVersion:"0.27.5",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
7771
7802
  },get onNavigatorUpdate(){return versionUpdates.navigator
7772
7803
  },get navigatorProgress(){return versionUpdates.navigatorProgress()
7773
7804
  },get openCodeProgress(){return versionUpdates.openCodeProgress()