opencode-navigator 0.24.0 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/HOST_API.md +22 -12
- package/LINT_COVERAGE.md +199 -0
- package/README.md +41 -9
- package/dist/native-todo-setup.js +1156 -0
- package/dist/onboarding.js +379 -0
- package/dist/provider-limits.js +6 -5
- package/dist/runtime-dependencies.json +3 -3
- package/dist/sidebar-settings.js +283 -543
- package/dist/tui.js +223 -414
- package/package.json +9 -6
package/dist/tui.js
CHANGED
|
@@ -3,14 +3,13 @@ import {insert as _$insert,setProp as _$setProp,createElement as _$createElement
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
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,createSignal as createSignal5,createSignal as createSignal6,onCleanup as onCleanup5,Show as Show3,batch,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,createSignal as createSignal12,onCleanup as onCleanup8,createEffect as createEffect8,onCleanup as onCleanup10,batch as batch2,createEffect as createEffect7,createMemo,createSignal as createSignal13,onCleanup as onCleanup9,onMount as onMount2,For as For2,For as For3,Show as Show4,createMemo as createMemo2,
|
|
6
|
+
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,createSignal as createSignal5,createSignal as createSignal6,onCleanup as onCleanup5,Show as Show3,batch,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,createSignal as createSignal12,onCleanup as onCleanup8,createEffect as createEffect8,onCleanup as onCleanup10,batch as batch2,createEffect as createEffect7,createMemo,createSignal as createSignal13,onCleanup as onCleanup9,onMount as onMount2,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,createSignal as createSignal19,onCleanup as onCleanup17,createSignal as createSignal20,Show as Show10,createSignal as createSignal22,createSignal as createSignal21,onCleanup as onCleanup18,For as For10,Show as Show13,createMemo as createMemo9,createComputed,createMemo as createMemo8,createSignal as createSignal23,untrack as untrack3,Show as Show11,createComputed as createComputed2,untrack as untrack4,Show as Show12,createSignal as createSignal25,createEffect as createEffect14,createSignal as createSignal24,on,createMemo as createMemo11,createSignal as createSignal28,createMemo as createMemo10,For as For11,Show as Show17,Show as Show14,Show as Show15,createSignal as createSignal26,createContext as createContext3,useContext as useContext3,Show as Show16,createSignal as createSignal27,onCleanup as onCleanup19,Show as Show23,createSignal as createSignal29,untrack as untrack5,createSignal as createSignal30,createSignal as createSignal31,createEffect as createEffect15,For as For13,Show as Show18,For as For12,createSignal as createSignal32,Show as Show19,Show as Show20,Show as Show21,Show as Show22,For as For14,Show as Show25,createMemo as createMemo13,Show as Show24,createMemo as createMemo12,createSignal as createSignal33,createContext as createContext4,useContext as useContext4,Show as Show26,Suspense as Suspense5,createEffect as createEffect16,onCleanup as onCleanup20,untrack as untrack6,For as For20,Match,Switch,createMemo as createMemo19,onCleanup as onCleanup26,For as For15,Show as Show28,createMemo as createMemo15,createSignal as createSignal35,createEffect as createEffect17,createMemo as createMemo14,onCleanup as onCleanup21,untrack as untrack7,Show as Show27,createEffect as createEffect18,createSignal as createSignal34,onCleanup as onCleanup22,For as For16,Show as Show30,createSignal as createSignal36,createEffect as createEffect19,createMemo as createMemo16,onCleanup as onCleanup23,untrack as untrack8,Show as Show29,For as For18,Show as Show33,createEffect as createEffect20,createMemo as createMemo17,createSignal as createSignal37,onCleanup as onCleanup24,untrack as untrack9,For as For17,Show as Show32,Show as Show31,Show as Show38,createEffect as createEffect21,createMemo as createMemo18,createSignal as createSignal38,onCleanup as onCleanup25,untrack as untrack10,Show as Show34,For as For19,Show as Show36,Show as Show35,Show as Show37,createEffect as createEffect22,createMemo as createMemo20,onCleanup as onCleanup27,untrack as untrack11,Show as Show39,createMemo as createMemo21,onCleanup as onCleanup28,createEffect as createEffect23,createMemo as createMemo22,on as on2,onCleanup as onCleanup29,createRoot,createSignal as createSignal39,getOwner,createSignal as createSignal40,onCleanup as onCleanup30,onMount as onMount7} from "solid-js"
|
|
7
7
|
var SIDEBAR_SECTIONS=["limits","todo","subagents","skills","quick_actions","lsp","mcp"]
|
|
8
8
|
var QUICK_ACTION_IDS=["session.rename","session.timeline","session.copy","session.export","session.compact","session.list","session.new","session.fork","messages.copy","session.first","session.last","session.messages_last_user","session.message.next","session.message.previous","permission.mode"]
|
|
9
9
|
function preferencesScope(path){return path.worktree||path.directory||"global"
|
|
10
10
|
}
|
|
11
11
|
var DEFAULT_SECTION_EXPANSION={limits:true,todo:true,subagents:false,skills:false,quick_actions:false,lsp:false,mcp:false
|
|
12
12
|
}
|
|
13
|
-
var SECTION_DEFINITIONS=[{name:"limits",label:"Limits"},{name:"todo",label:"Todo"},{name:"subagents",label:"Subagents"},{name:"skills",label:"Skills"},{name:"quick_actions",label:"Quick actions"},{name:"lsp",label:"LSP"},{name:"mcp",label:"MCP"}]
|
|
14
13
|
function parseQuickActionOrder(value){if(!Array.isArray(value))
|
|
15
14
|
return
|
|
16
15
|
const order=[...new Set(value.filter((id)=>QUICK_ACTION_IDS.includes(id)))]
|
|
@@ -180,10 +179,14 @@ setStates((values)=>({...values,[target]:{status:"error",error:requestError(caus
|
|
|
180
179
|
return{state,start,abort,abortAll}}
|
|
181
180
|
function wait(delay,signal){return new Promise((resolve,reject)=>{if(signal?.aborted)
|
|
182
181
|
return reject(signal.reason??new DOMException("Aborted","AbortError"))
|
|
183
|
-
const
|
|
184
|
-
signal?.
|
|
185
|
-
reject(signal
|
|
186
|
-
}
|
|
182
|
+
const abort=()=>{clearTimeout(timer)
|
|
183
|
+
signal?.removeEventListener("abort",abort)
|
|
184
|
+
reject(signal?.reason??new DOMException("Aborted","AbortError"))
|
|
185
|
+
}
|
|
186
|
+
const timer=setTimeout(()=>{signal?.removeEventListener("abort",abort)
|
|
187
|
+
resolve()
|
|
188
|
+
},delay)
|
|
189
|
+
signal?.addEventListener("abort",abort,{once:true})
|
|
187
190
|
})
|
|
188
191
|
}
|
|
189
192
|
async function retryBackgroundRefresh(refresh,options={}){const delays=options.delays??[250,1000]
|
|
@@ -738,7 +741,7 @@ renderer.requestRender()
|
|
|
738
741
|
|
|
739
742
|
|
|
740
743
|
|
|
741
|
-
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
|
|
744
|
+
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"
|
|
742
745
|
|
|
743
746
|
var transparent=RGBA.fromInts(0,0,0,0)
|
|
744
747
|
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))
|
|
@@ -1605,7 +1608,7 @@ behavior.quickActionVisibility=quickActionVisibility
|
|
|
1605
1608
|
const mcpUpdate={...update.mcp?.states,...update.mcp?.name&&update.mcp.state&&{[update.mcp.name]:update.mcp.state}}
|
|
1606
1609
|
const mcp=parseDesiredMcpStates({...!update.clearMcp&&existing.mcp,...mcpUpdate
|
|
1607
1610
|
})
|
|
1608
|
-
const scope={...Object.keys(behavior).length>0&&{behavior},...(update.layout
|
|
1611
|
+
const scope={...Object.keys(behavior).length>0&&{behavior},...(update.layout??(!update.clearLayout&&existing.layout))&&{layout:parseSectionLayout(update.layout??existing.layout)
|
|
1609
1612
|
},...Object.keys(mcp).length>0&&{mcp}}
|
|
1610
1613
|
const worktrees={...current.worktrees}
|
|
1611
1614
|
if(target.kind==="worktree"){if(isEmptyScope(scope))
|
|
@@ -1787,10 +1790,13 @@ await unlink(recovery).catch((error)=>{if(!errno(error,"ENOENT"))
|
|
|
1787
1790
|
throw error
|
|
1788
1791
|
})
|
|
1789
1792
|
}}
|
|
1790
|
-
async function tryAcquireLock(){const token=randomUUID()
|
|
1793
|
+
async function tryAcquireLock(deadline){const token=randomUUID()
|
|
1791
1794
|
const candidate=`${lock}.${token}.candidate`
|
|
1795
|
+
let acquired=false
|
|
1796
|
+
let handedOff=false
|
|
1792
1797
|
await writeFile(candidate,JSON.stringify({token,pid:process.pid}),{flag:"wx",mode:384})
|
|
1793
1798
|
try{try{await link(candidate,lock)
|
|
1799
|
+
acquired=true
|
|
1794
1800
|
} catch(error){if(!errno(error,"EEXIST"))
|
|
1795
1801
|
throw error
|
|
1796
1802
|
const owner=await readLockOwner()
|
|
@@ -1802,22 +1808,29 @@ return
|
|
|
1802
1808
|
while(true){const markers=await liveRecoveryMarkers()
|
|
1803
1809
|
if(markers.length===0)
|
|
1804
1810
|
break
|
|
1811
|
+
if(Date.now()>=deadline)
|
|
1812
|
+
return
|
|
1805
1813
|
await delay(10)
|
|
1806
1814
|
}
|
|
1807
1815
|
const currentOwner=await readLockOwner()
|
|
1808
1816
|
if(currentOwner?.token!==token)
|
|
1809
1817
|
return
|
|
1818
|
+
handedOff=true
|
|
1810
1819
|
return async ()=>{const current=await readLockOwner()
|
|
1811
1820
|
if(current?.token!==token)
|
|
1812
1821
|
throw new Error("Refusing to release a preferences lock owned by another process")
|
|
1813
1822
|
await moveLockToTombstone("released")
|
|
1814
|
-
}} finally{
|
|
1823
|
+
}} finally{if(acquired&&!handedOff){const current=await readLockOwner()
|
|
1824
|
+
if(current?.token===token)
|
|
1825
|
+
await moveLockToTombstone("released")
|
|
1826
|
+
}
|
|
1827
|
+
await unlink(candidate).catch((error)=>{if(!errno(error,"ENOENT"))
|
|
1815
1828
|
throw error
|
|
1816
1829
|
})
|
|
1817
1830
|
}}
|
|
1818
1831
|
async function acquireLock(){await mkdir(directory,{recursive:true,mode:448})
|
|
1819
1832
|
const deadline=Date.now() + LOCK_TIMEOUT_MS
|
|
1820
|
-
while(true){const release=await tryAcquireLock()
|
|
1833
|
+
while(true){const release=await tryAcquireLock(deadline)
|
|
1821
1834
|
if(release)
|
|
1822
1835
|
return release
|
|
1823
1836
|
if(Date.now()>=deadline)
|
|
@@ -2776,7 +2789,7 @@ return value
|
|
|
2776
2789
|
}
|
|
2777
2790
|
function changed(){setRevision((value)=>value + 1)
|
|
2778
2791
|
}
|
|
2779
|
-
return{observeStatus(key,sessionID,status,at=now()){const value=state(key)
|
|
2792
|
+
return{observeStatus(key,sessionID,status,at=now(),nativeStart){const value=state(key)
|
|
2780
2793
|
const run=value.active.get(sessionID)
|
|
2781
2794
|
const isKnown=value.known.has(sessionID)
|
|
2782
2795
|
value.known.add(sessionID)
|
|
@@ -2784,10 +2797,17 @@ if(status.type==="idle"){if(!run)
|
|
|
2784
2797
|
return
|
|
2785
2798
|
value.active.delete(sessionID)
|
|
2786
2799
|
value.recent=[{...run,finishedAt:Math.max(at,run.startedAt),outcome:run.outcome??"finished"},...value.recent].sort((a,b)=>b.finishedAt-a.finishedAt||a.sessionID.localeCompare(b.sessionID)).slice(0,10)
|
|
2787
|
-
} else{
|
|
2800
|
+
} else{const exact=typeof nativeStart==="number"&&Number.isFinite(nativeStart)&&nativeStart>0&&nativeStart<=at?nativeStart:undefined
|
|
2801
|
+
if(run){if(exact===undefined||run.nativeStartedAt!==undefined&&exact<=run.nativeStartedAt)
|
|
2788
2802
|
return
|
|
2803
|
+
const next=exact>run.startedAt?{sessionID}:run
|
|
2804
|
+
value.active.set(sessionID,{...next,startedAt:exact,nativeStartedAt:exact,startedBeforeObservation:false
|
|
2805
|
+
})
|
|
2806
|
+
changed()
|
|
2807
|
+
return
|
|
2808
|
+
}
|
|
2789
2809
|
value.recent=value.recent.filter((item)=>item.sessionID!==sessionID)
|
|
2790
|
-
value.active.set(sessionID,{sessionID,startedAt:at,startedBeforeObservation
|
|
2810
|
+
value.active.set(sessionID,{sessionID,startedAt:exact??at,startedBeforeObservation:exact===undefined&&!isKnown,...exact!==undefined&&{nativeStartedAt:exact}})
|
|
2791
2811
|
}
|
|
2792
2812
|
changed()
|
|
2793
2813
|
},observeError(key,sessionID,error,at=now()){if(!sessionID)
|
|
@@ -2858,12 +2878,13 @@ journal.sessions.push(mutation)
|
|
|
2858
2878
|
if(!source)
|
|
2859
2879
|
setChildren((current)=>Object.fromEntries(Object.entries(current).map(([key,items])=>[key,applySession(items,targets.get(key).parentID,mutation)])))
|
|
2860
2880
|
}
|
|
2861
|
-
function recordStatus(input){const mutation={...input,at:now(),observed:new Set
|
|
2881
|
+
function recordStatus(input){const mutation={...input,at:now(),startedAt:source?.startedAt?.(input.sessionID),observed:new Set
|
|
2882
|
+
}
|
|
2862
2883
|
for(const journal of journals)
|
|
2863
2884
|
journal.statuses.push(mutation)
|
|
2864
2885
|
batch(()=>{for(const [key,items] of Object.entries(snapshots())){if(items.every((item)=>item.id!==mutation.sessionID))
|
|
2865
2886
|
continue
|
|
2866
|
-
history.observeStatus(key,mutation.sessionID,mutation.status,mutation.at)
|
|
2887
|
+
history.observeStatus(key,mutation.sessionID,mutation.status,mutation.at,mutation.startedAt)
|
|
2867
2888
|
mutation.observed.add(key)
|
|
2868
2889
|
}
|
|
2869
2890
|
if(!source)
|
|
@@ -2898,7 +2919,7 @@ for(const mutation of journal.sessions)
|
|
|
2898
2919
|
nextChildren=applySession(nextChildren,current.parentID,mutation)
|
|
2899
2920
|
let nextStatuses={...statusResult.data}
|
|
2900
2921
|
const missing={}
|
|
2901
|
-
const remoteStatuses=source?[]:await Promise.all(nextChildren.map((session)=>{const key=JSON.stringify([current.key,session.id])
|
|
2922
|
+
const remoteStatuses=source?[]:await Promise.all(nextChildren.map(async (session)=>{const key=JSON.stringify([current.key,session.id])
|
|
2902
2923
|
return(remoteRetryAt.get(key)??0)<=now()?fetchDevTeamStatus(session,requestState.signal):{sessionID:session.id,failed:true,cooldown:true,status:undefined}}))
|
|
2903
2924
|
if(!requestState.isCurrent())
|
|
2904
2925
|
return
|
|
@@ -2927,10 +2948,10 @@ for(const mutation of journal.statuses)
|
|
|
2927
2948
|
nextStatuses=applyStatus(nextStatuses,mutation)
|
|
2928
2949
|
if(requestState.isCurrent()){batch(()=>{for(const session of nextChildren){const mutations=journal.statuses.filter((mutation)=>mutation.sessionID===session.id)
|
|
2929
2950
|
if(mutations.length>0){for(const mutation of mutations){if(!mutation.observed.has(current.key))
|
|
2930
|
-
history.observeStatus(current.key,session.id,mutation.status,mutation.at)
|
|
2951
|
+
history.observeStatus(current.key,session.id,mutation.status,mutation.at,mutation.startedAt)
|
|
2931
2952
|
}} else if(!missing[session.id]){const status=nextStatuses[session.id]??{type:"idle"}
|
|
2932
2953
|
nextStatuses[session.id]=status
|
|
2933
|
-
history.observeStatus(current.key,session.id,status)
|
|
2954
|
+
history.observeStatus(current.key,session.id,status,now(),source?.startedAt?.(session.id))
|
|
2934
2955
|
}
|
|
2935
2956
|
for(const mutation of journal.errors){if(mutation.sessionID===session.id&&!mutation.observed.has(current.key))
|
|
2936
2957
|
history.observeError(current.key,session.id,mutation.error,mutation.at)
|
|
@@ -3703,274 +3724,16 @@ return value&&valid()&&!blocked()?controller.applyPreset(name,value,target):unde
|
|
|
3703
3724
|
|
|
3704
3725
|
|
|
3705
3726
|
|
|
3706
|
-
|
|
3707
|
-
|
|
3708
|
-
|
|
3709
|
-
|
|
3710
|
-
|
|
3711
|
-
var ONBOARDING_STEPS=[{title:"A control center that stays compact",summary:"Navigator brings session state, search, and controls into OpenCode's existing sidebar.",icon:"help",features:[{icon:"sections",title:"Progressive disclosure",description:"Expand only the context you need right now."},{icon:"scope",title:"Current context",description:"Follow the active session, workspace, and worktree."},{icon:"actions",title:"Mouse and keyboard",description:"Use the same controls with either input method."}]
|
|
3712
|
-
},{title:"Stay oriented while agents work",summary:"Keep current work visible without turning the sidebar into another dashboard.",icon:"todo",features:[{icon:"todo",title:"Todo filters",description:"Separate active, finished, and cancelled work."},{icon:"subagents",title:"Live subagents",description:"See running, retrying, recent, and failed child sessions; open them directly."
|
|
3713
|
-
},{icon:"info",title:"Provider limits",description:"Link a matching Codex account for model quotas and confirmed banked resets."
|
|
3714
|
-
}]
|
|
3715
|
-
},{title:"Find anything and launch Skills safely",summary:"Search complete source lists without expanding every sidebar section.",icon:"search",features:[{icon:"search",title:"Search Everything",description:"Search Skills, Subagents, MCP, and Actions in shared tabs."
|
|
3716
|
-
},{icon:"search",title:"Full source lists",description:"Search beyond sidebar visibility and item limits."},{icon:"skills",title:"Skill confirmation",description:"Review a skill and its source before inserting its command."
|
|
3717
|
-
}]
|
|
3718
|
-
},{title:"Run actions and check language tools",summary:"Keep frequent OpenCode commands and LSP health within one compact section.",icon:"actions",features:[{icon:"actions",title:"Quick Actions",description:"Rename, inspect timelines, copy, export, or compact the session."
|
|
3719
|
-
},{icon:"lsp",title:"Compact LSP status",description:"Spot connected and failed language servers at a glance."
|
|
3720
|
-
},{icon:"settings",title:"Configurable commands",description:"Choose action visibility, order, and shortcuts."
|
|
3721
|
-
}]
|
|
3722
|
-
},{title:"Control MCP without losing context",summary:"Manage individual servers or entire working sets directly from Navigator.",icon:"mcp",features:[{icon:"mcp",title:"Live server controls",description:"Connect, disconnect, filter, and favorite servers."},{icon:"actions",title:"Bulk operations",description:"Change eligible servers together and retry failures."
|
|
3723
|
-
},{icon:"presets",title:"Safe presets",description:"Preview connections and disconnections before Apply."}]
|
|
3724
|
-
},{title:"Make Navigator fit each workspace",summary:"Use the same controls with mouse or keyboard and keep only the context you need.",icon:"settings",features:[{icon:"sections",title:"Flexible layout",description:"Choose section visibility, order, expansion, and item limits."
|
|
3725
|
-
},{icon:"presets",title:"Scoped presets",description:"Save layouts globally or for the current worktree."},{icon:"settings",title:"Accessible controls",description:"Change shortcuts or use Text fallback without a restart."
|
|
3726
|
-
}]
|
|
3727
|
-
}];
|
|
3728
|
-
|
|
3729
|
-
|
|
3730
|
-
|
|
3731
|
-
|
|
3732
|
-
|
|
3733
|
-
|
|
3734
|
-
|
|
3735
|
-
|
|
3736
|
-
|
|
3737
|
-
|
|
3738
|
-
function OnboardingStep(props){const icons=useIcons()
|
|
3739
|
-
const theme=()=>props.api.theme.current
|
|
3740
|
-
return(()=>{var _el$=_$createElement("box"),_el$2=_$createElement("text"),_el$3=_$createTextNode(` `),_el$4=_$createElement("text"),_el$5=_$createElement("box"),_el$6=_$createElement("text"),_el$7=_$createTextNode(`Toggle: `),_el$8=_$createTextNode(` \xB7 Focus: `),_el$9=_$createTextNode(` \xB7 Icons: `),_el$1=_$createElement("box")
|
|
3741
|
-
_$insertNode(_el$,_el$2)
|
|
3742
|
-
_$insertNode(_el$,_el$4)
|
|
3743
|
-
_$insertNode(_el$,_el$5)
|
|
3744
|
-
_$insertNode(_el$,_el$6)
|
|
3745
|
-
_$insertNode(_el$,_el$1)
|
|
3746
|
-
_$setProp(_el$,"gap",1)
|
|
3747
|
-
_$insertNode(_el$2,_el$3)
|
|
3748
|
-
_$insert(_el$2,()=>icons.icon(props.step.icon),_el$3)
|
|
3749
|
-
_$insert(_el$2,()=>props.step.title,null)
|
|
3750
|
-
_$setProp(_el$4,"wrapMode","word")
|
|
3751
|
-
_$insert(_el$4,()=>props.step.summary)
|
|
3752
|
-
_$setProp(_el$5,"border",["top","bottom"])
|
|
3753
|
-
_$setProp(_el$5,"paddingTop",1)
|
|
3754
|
-
_$setProp(_el$5,"paddingBottom",1)
|
|
3755
|
-
_$setProp(_el$5,"gap",1)
|
|
3756
|
-
_$insert(_el$5,_$createComponent(For4,{get each(){return props.step.features
|
|
3757
|
-
},children:(feature)=>(()=>{var _el$14=_$createElement("box"),_el$15=_$createElement("text"),_el$16=_$createElement("text"),_el$17=_$createElement("b"),_el$18=_$createTextNode(` \xB7 `)
|
|
3758
|
-
_$insertNode(_el$14,_el$15)
|
|
3759
|
-
_$insertNode(_el$14,_el$16)
|
|
3760
|
-
_$setProp(_el$14,"flexDirection","row")
|
|
3761
|
-
_$setProp(_el$14,"gap",1)
|
|
3762
|
-
_$setProp(_el$15,"flexShrink",0)
|
|
3763
|
-
_$insert(_el$15,()=>icons.icon(feature.icon))
|
|
3764
|
-
_$insertNode(_el$16,_el$17)
|
|
3765
|
-
_$insertNode(_el$16,_el$18)
|
|
3766
|
-
_$setProp(_el$16,"flexGrow",1)
|
|
3767
|
-
_$setProp(_el$16,"minWidth",0)
|
|
3768
|
-
_$setProp(_el$16,"wrapMode","word")
|
|
3769
|
-
_$insert(_el$17,()=>feature.title)
|
|
3770
|
-
_$insert(_el$16,()=>feature.description,null)
|
|
3771
|
-
_$effect((_p$)=>{var _v$6=theme().accent,_v$7=theme().textMuted
|
|
3772
|
-
_v$6!==_p$.e&&(_p$.e=_$setProp(_el$15,"fg",_v$6,_p$.e))
|
|
3773
|
-
_v$7!==_p$.t&&(_p$.t=_$setProp(_el$16,"fg",_v$7,_p$.t))
|
|
3774
|
-
return _p$
|
|
3775
|
-
},{e:undefined,t:undefined
|
|
3776
|
-
})
|
|
3777
|
-
return _el$14
|
|
3778
|
-
})()
|
|
3779
|
-
}))
|
|
3780
|
-
_$insertNode(_el$6,_el$7)
|
|
3781
|
-
_$insertNode(_el$6,_el$8)
|
|
3782
|
-
_$insertNode(_el$6,_el$9)
|
|
3783
|
-
_$setProp(_el$6,"wrapMode","word")
|
|
3784
|
-
_$insert(_el$6,()=>props.preferences.toggleKey(),_el$8)
|
|
3785
|
-
_$insert(_el$6,()=>props.preferences.focusKey(),_el$9)
|
|
3786
|
-
_$insert(_el$6,()=>icons.style()==="text"?"Text fallback":"Nerd Font",null)
|
|
3787
|
-
_$setProp(_el$1,"flexDirection","row")
|
|
3788
|
-
_$setProp(_el$1,"justifyContent","space-between")
|
|
3789
|
-
_$insert(_el$1,_$createComponent(SelectionBox,{paddingLeft:1,paddingRight:1,onMouseDown:(event)=>event.stopPropagation(),onMouseUp:(event)=>{event.stopPropagation()
|
|
3790
|
-
props.onBack()
|
|
3791
|
-
},get children(){var _el$10=_$createElement("text"),_el$11=_$createTextNode(` Back`)
|
|
3792
|
-
_$insertNode(_el$10,_el$11)
|
|
3793
|
-
_$insert(_el$10,()=>icons.icon("left"),_el$11)
|
|
3794
|
-
_$effect((_$p)=>_$setProp(_el$10,"fg",theme().textMuted,_$p))
|
|
3795
|
-
return _el$10
|
|
3796
|
-
}}),null)
|
|
3797
|
-
_$insert(_el$1,_$createComponent(SelectionBox,{paddingLeft:1,paddingRight:1,get backgroundColor(){return theme().primary
|
|
3798
|
-
},onMouseDown:(event)=>event.stopPropagation(),onMouseUp:(event)=>{event.stopPropagation()
|
|
3799
|
-
props.onAdvance()
|
|
3800
|
-
},get children(){var _el$12=_$createElement("text"),_el$13=_$createTextNode(` `)
|
|
3801
|
-
_$insertNode(_el$12,_el$13)
|
|
3802
|
-
_$insert(_el$12,()=>props.final?"Configure sidebar":"Next",_el$13)
|
|
3803
|
-
_$insert(_el$12,()=>icons.icon("right"),null)
|
|
3804
|
-
_$effect((_$p)=>_$setProp(_el$12,"fg",theme().selectedListItemText,_$p))
|
|
3805
|
-
return _el$12
|
|
3806
|
-
}}),null)
|
|
3807
|
-
_$effect((_p$)=>{var _v$=theme().accent,_v$2=TextAttributes10.BOLD,_v$3=theme().textMuted,_v$4=theme().borderSubtle,_v$5=theme().textMuted
|
|
3808
|
-
_v$!==_p$.e&&(_p$.e=_$setProp(_el$2,"fg",_v$,_p$.e))
|
|
3809
|
-
_v$2!==_p$.t&&(_p$.t=_$setProp(_el$2,"attributes",_v$2,_p$.t))
|
|
3810
|
-
_v$3!==_p$.a&&(_p$.a=_$setProp(_el$4,"fg",_v$3,_p$.a))
|
|
3811
|
-
_v$4!==_p$.o&&(_p$.o=_$setProp(_el$5,"borderColor",_v$4,_p$.o))
|
|
3812
|
-
_v$5!==_p$.i&&(_p$.i=_$setProp(_el$6,"fg",_v$5,_p$.i))
|
|
3813
|
-
return _p$
|
|
3814
|
-
},{e:undefined,t:undefined,a:undefined,o:undefined,i:undefined
|
|
3815
|
-
})
|
|
3816
|
-
return _el$
|
|
3817
|
-
})()
|
|
3818
|
-
}
|
|
3819
|
-
|
|
3820
|
-
|
|
3821
|
-
|
|
3822
|
-
|
|
3823
|
-
|
|
3824
|
-
|
|
3825
|
-
|
|
3826
|
-
|
|
3827
|
-
|
|
3828
|
-
|
|
3829
|
-
function SectionConfig(props){const icons=useIcons()
|
|
3830
|
-
const theme=()=>props.api.theme.current
|
|
3831
|
-
const sections=SECTION_DEFINITIONS.filter((section)=>supportsSidebarSection(props.api,section.name))
|
|
3832
|
-
const finishIndex=sections.length
|
|
3833
|
-
return(()=>{var _el$=_$createElement("box"),_el$2=_$createElement("text"),_el$3=_$createTextNode(` Choose your sidebar sections`),_el$4=_$createElement("text"),_el$6=_$createElement("box")
|
|
3834
|
-
_$insertNode(_el$,_el$2)
|
|
3835
|
-
_$insertNode(_el$,_el$4)
|
|
3836
|
-
_$insertNode(_el$,_el$6)
|
|
3837
|
-
_$setProp(_el$,"gap",1)
|
|
3838
|
-
_$insertNode(_el$2,_el$3)
|
|
3839
|
-
_$insert(_el$2,()=>icons.icon("sections"),_el$3)
|
|
3840
|
-
_$insertNode(_el$4,_$createTextNode(`Select what appears now. You can change visibility, order, limits, scope, and presets later with the gear button.`))
|
|
3841
|
-
_$setProp(_el$4,"wrapMode","word")
|
|
3842
|
-
_$insert(_el$,_$createComponent(For5,{each:sections,children:(section,index)=>_$createComponent(SelectionBox,{flexDirection:"row",gap:1,paddingLeft:1,paddingRight:1,get backgroundColor(){return _$memo(()=>props.active===index())()?theme().backgroundElement:undefined
|
|
3843
|
-
},onMouseOver:()=>props.onActive(index()),onMouseDown:(event)=>event.stopPropagation(),onMouseUp:(event)=>{event.stopPropagation()
|
|
3844
|
-
props.preferences.toggleSection(section.name)
|
|
3845
|
-
},get children(){return [(()=>{var _el$1=_$createElement("text")
|
|
3846
|
-
_$setProp(_el$1,"flexShrink",0)
|
|
3847
|
-
_$insert(_el$1,()=>icons.icon(props.preferences.sections()[section.name]?"checked":"unchecked"))
|
|
3848
|
-
_$effect((_$p)=>_$setProp(_el$1,"fg",props.preferences.sections()[section.name]?theme().accent:theme().textMuted,_$p))
|
|
3849
|
-
return _el$1
|
|
3850
|
-
})(),(()=>{var _el$10=_$createElement("text"),_el$11=_$createTextNode(` `)
|
|
3851
|
-
_$insertNode(_el$10,_el$11)
|
|
3852
|
-
_$insert(_el$10,()=>icons.section(section.name),_el$11)
|
|
3853
|
-
_$insert(_el$10,()=>section.label,null)
|
|
3854
|
-
_$effect((_$p)=>_$setProp(_el$10,"fg",props.active===index()?theme().text:theme().textMuted,_$p))
|
|
3855
|
-
return _el$10
|
|
3856
|
-
})()]
|
|
3727
|
+
var Content=lazy3(async ()=>{const path=import.meta.url.includes("/dist/")?"./onboarding.js":"./first-run-wizard-content"
|
|
3728
|
+
const module=await import(path)
|
|
3729
|
+
return{default:module.FirstRunWizard
|
|
3857
3730
|
}})
|
|
3858
|
-
|
|
3859
|
-
_$
|
|
3860
|
-
|
|
3861
|
-
_$insert(_el$6,_$createComponent(SelectionBox,{paddingLeft:1,paddingRight:1,onMouseDown:(event)=>event.stopPropagation(),onMouseUp:(event)=>{event.stopPropagation()
|
|
3862
|
-
props.onBack()
|
|
3863
|
-
},get children(){var _el$7=_$createElement("text"),_el$8=_$createTextNode(` Back`)
|
|
3864
|
-
_$insertNode(_el$7,_el$8)
|
|
3865
|
-
_$insert(_el$7,()=>icons.icon("left"),_el$8)
|
|
3866
|
-
_$effect((_$p)=>_$setProp(_el$7,"fg",theme().textMuted,_$p))
|
|
3867
|
-
return _el$7
|
|
3868
|
-
}}),null)
|
|
3869
|
-
_$insert(_el$6,_$createComponent(SelectionBox,{paddingLeft:2,paddingRight:2,get backgroundColor(){return _$memo(()=>props.active===finishIndex)()?theme().primary:undefined
|
|
3870
|
-
},onMouseOver:()=>props.onActive(finishIndex),onMouseDown:(event)=>event.stopPropagation(),onMouseUp:(event)=>{event.stopPropagation()
|
|
3871
|
-
props.onFinish()
|
|
3872
|
-
},get children(){var _el$9=_$createElement("text"),_el$0=_$createTextNode(` Finish`)
|
|
3873
|
-
_$insertNode(_el$9,_el$0)
|
|
3874
|
-
_$insert(_el$9,()=>icons.icon("done"),_el$0)
|
|
3875
|
-
_$effect((_$p)=>_$setProp(_el$9,"fg",props.active===finishIndex?theme().selectedListItemText:theme().textMuted,_$p))
|
|
3876
|
-
return _el$9
|
|
3877
|
-
}}),null)
|
|
3878
|
-
_$effect((_p$)=>{var _v$=theme().accent,_v$2=TextAttributes11.BOLD,_v$3=theme().textMuted
|
|
3879
|
-
_v$!==_p$.e&&(_p$.e=_$setProp(_el$2,"fg",_v$,_p$.e))
|
|
3880
|
-
_v$2!==_p$.t&&(_p$.t=_$setProp(_el$2,"attributes",_v$2,_p$.t))
|
|
3881
|
-
_v$3!==_p$.a&&(_p$.a=_$setProp(_el$4,"fg",_v$3,_p$.a))
|
|
3882
|
-
return _p$
|
|
3883
|
-
},{e:undefined,t:undefined,a:undefined
|
|
3884
|
-
})
|
|
3731
|
+
function FirstRunWizard(props){return(()=>{var _el$=_$createElement("box")
|
|
3732
|
+
_$insert(_el$,_$createComponent(Suspense3,{get children(){return _$createComponent(Content,props)
|
|
3733
|
+
}}))
|
|
3885
3734
|
return _el$
|
|
3886
3735
|
})()
|
|
3887
3736
|
}
|
|
3888
|
-
function FirstRunWizard(props){const icons=useIcons()
|
|
3889
|
-
const dialogs=useDialogs(props.api)
|
|
3890
|
-
const [active,setActive]=createSignal14(0)
|
|
3891
|
-
const [step,setStep]=createSignal14(0)
|
|
3892
|
-
const theme=()=>props.api.theme.current
|
|
3893
|
-
const sections=SECTION_DEFINITIONS.filter((section)=>supportsSidebarSection(props.api,section.name))
|
|
3894
|
-
const finishIndex=sections.length
|
|
3895
|
-
const stepCount=ONBOARDING_STEPS.length + 1
|
|
3896
|
-
const configuring=()=>step()===ONBOARDING_STEPS.length
|
|
3897
|
-
function finish(){dialogs.back()
|
|
3898
|
-
}
|
|
3899
|
-
function move(offset){if(configuring())
|
|
3900
|
-
setActive((value)=>(value + offset + finishIndex + 1)%(finishIndex + 1))
|
|
3901
|
-
else
|
|
3902
|
-
setStep((value)=>Math.max(0,Math.min(ONBOARDING_STEPS.length,value + offset)))
|
|
3903
|
-
}
|
|
3904
|
-
function back(){setStep((value)=>Math.max(0,value-1))
|
|
3905
|
-
}
|
|
3906
|
-
function advance(){if(!configuring())
|
|
3907
|
-
setStep((value)=>Math.min(ONBOARDING_STEPS.length,value + 1))
|
|
3908
|
-
}
|
|
3909
|
-
function select(){if(!configuring()){advance()
|
|
3910
|
-
return
|
|
3911
|
-
}
|
|
3912
|
-
const index=active()
|
|
3913
|
-
if(index===finishIndex)
|
|
3914
|
-
finish()
|
|
3915
|
-
else
|
|
3916
|
-
props.preferences.toggleSection(sections[index].name)
|
|
3917
|
-
}
|
|
3918
|
-
const unregister=props.api.keymap.registerLayer({mode:"modal",priority:1000,commands:[{name:`${PLUGIN_ID}.wizard.previous`,run(){move(-1)
|
|
3919
|
-
}},{name:`${PLUGIN_ID}.wizard.next`,run(){move(1)
|
|
3920
|
-
}},{name:`${PLUGIN_ID}.wizard.select`,run:select
|
|
3921
|
-
},{name:`${PLUGIN_ID}.wizard.back`,run:back
|
|
3922
|
-
},{name:`${PLUGIN_ID}.wizard.forward`,run:advance
|
|
3923
|
-
}],bindings:[{key:"up",cmd:`${PLUGIN_ID}.wizard.previous`
|
|
3924
|
-
},{key:"down",cmd:`${PLUGIN_ID}.wizard.next`
|
|
3925
|
-
},{key:"tab",cmd:`${PLUGIN_ID}.wizard.next`
|
|
3926
|
-
},{key:"left",cmd:`${PLUGIN_ID}.wizard.back`
|
|
3927
|
-
},{key:"right",cmd:`${PLUGIN_ID}.wizard.forward`
|
|
3928
|
-
},{key:"space",cmd:`${PLUGIN_ID}.wizard.select`
|
|
3929
|
-
},{key:"return",cmd:`${PLUGIN_ID}.wizard.select`
|
|
3930
|
-
}]
|
|
3931
|
-
})
|
|
3932
|
-
onCleanup11(unregister)
|
|
3933
|
-
return _$createComponent(DialogSurface,{get api(){return props.api
|
|
3934
|
-
},get children(){return [(()=>{var _el$=_$createElement("box"),_el$2=_$createElement("text"),_el$3=_$createTextNode(` Navigator setup`),_el$4=_$createElement("text"),_el$5=_$createTextNode(`Step `),_el$6=_$createTextNode(`/`),_el$7=_$createTextNode(` \xB7 `)
|
|
3935
|
-
_$insertNode(_el$,_el$2)
|
|
3936
|
-
_$insertNode(_el$,_el$4)
|
|
3937
|
-
_$setProp(_el$,"flexDirection","row")
|
|
3938
|
-
_$setProp(_el$,"justifyContent","space-between")
|
|
3939
|
-
_$insertNode(_el$2,_el$3)
|
|
3940
|
-
_$insert(_el$2,()=>icons.icon("help"),_el$3)
|
|
3941
|
-
_$insertNode(_el$4,_el$5)
|
|
3942
|
-
_$insertNode(_el$4,_el$6)
|
|
3943
|
-
_$insertNode(_el$4,_el$7)
|
|
3944
|
-
_$setProp(_el$4,"onMouseDown",(event)=>event.stopPropagation())
|
|
3945
|
-
_$setProp(_el$4,"onMouseUp",(event)=>{event.stopPropagation()
|
|
3946
|
-
finish()
|
|
3947
|
-
})
|
|
3948
|
-
_$insert(_el$4,()=>step() + 1,_el$6)
|
|
3949
|
-
_$insert(_el$4,stepCount,_el$7)
|
|
3950
|
-
_$insert(_el$4,()=>icons.key("esc"),null)
|
|
3951
|
-
_$effect((_p$)=>{var _v$=TextAttributes12.BOLD,_v$2=theme().text,_v$3=theme().textMuted
|
|
3952
|
-
_v$!==_p$.e&&(_p$.e=_$setProp(_el$2,"attributes",_v$,_p$.e))
|
|
3953
|
-
_v$2!==_p$.t&&(_p$.t=_$setProp(_el$2,"fg",_v$2,_p$.t))
|
|
3954
|
-
_v$3!==_p$.a&&(_p$.a=_$setProp(_el$4,"fg",_v$3,_p$.a))
|
|
3955
|
-
return _p$
|
|
3956
|
-
},{e:undefined,t:undefined,a:undefined
|
|
3957
|
-
})
|
|
3958
|
-
return _el$
|
|
3959
|
-
})(),_$createComponent(Show5,{get when(){return configuring()
|
|
3960
|
-
},get fallback(){return _$createComponent(OnboardingStep,{get api(){return props.api
|
|
3961
|
-
},get preferences(){return props.preferences
|
|
3962
|
-
},get step(){return ONBOARDING_STEPS[step()]
|
|
3963
|
-
},get final(){return step()===ONBOARDING_STEPS.length-1
|
|
3964
|
-
},onBack:back,onAdvance:advance
|
|
3965
|
-
})
|
|
3966
|
-
},get children(){return _$createComponent(SectionConfig,{get api(){return props.api
|
|
3967
|
-
},get preferences(){return props.preferences
|
|
3968
|
-
},get active(){return active()
|
|
3969
|
-
},onActive:setActive,onBack:back,onFinish:finish
|
|
3970
|
-
})
|
|
3971
|
-
}})]
|
|
3972
|
-
}})
|
|
3973
|
-
}
|
|
3974
3737
|
function openFirstRunWizard(api,preferences){createDialogStack(api,preferences.lspIconStyle,()=>true,preferences.cornerFont).open(()=>_$createComponent(FirstRunWizard,{api,preferences
|
|
3975
3738
|
}))
|
|
3976
3739
|
}
|
|
@@ -4013,7 +3776,7 @@ _$insertNode(_el$,_el$6)
|
|
|
4013
3776
|
_$setProp(_el$,"flexDirection","row")
|
|
4014
3777
|
_$setProp(_el$,"justifyContent","space-between")
|
|
4015
3778
|
_$setProp(_el$2,"flexGrow",1)
|
|
4016
|
-
_$insert(_el$2,_$createComponent(
|
|
3779
|
+
_$insert(_el$2,_$createComponent(Show5,{get when(){return props.onRefresh
|
|
4017
3780
|
},get children(){var _el$3=_$createElement("text"),_el$4=_$createTextNode(` Refresh (`),_el$5=_$createTextNode(`)`)
|
|
4018
3781
|
_$insertNode(_el$3,_el$4)
|
|
4019
3782
|
_$insertNode(_el$3,_el$5)
|
|
@@ -4056,7 +3819,7 @@ return(()=>{var _el$=_$createElement("box")
|
|
|
4056
3819
|
_$setProp(_el$,"flexDirection","row")
|
|
4057
3820
|
_$setProp(_el$,"flexWrap","wrap")
|
|
4058
3821
|
_$setProp(_el$,"gap",1)
|
|
4059
|
-
_$insert(_el$,_$createComponent(
|
|
3822
|
+
_$insert(_el$,_$createComponent(For4,{get each(){return props.stats
|
|
4060
3823
|
},children:(stat)=>_$createComponent(SelectionBox,{height:1,get backgroundColor(){return theme().backgroundElement
|
|
4061
3824
|
},paddingLeft:1,paddingRight:1,get children(){var _el$2=_$createElement("text"),_el$3=_$createTextNode(` `)
|
|
4062
3825
|
_$insertNode(_el$2,_el$3)
|
|
@@ -4076,7 +3839,7 @@ const dialogs=useDialogs(props.api)
|
|
|
4076
3839
|
const theme=()=>props.api.theme.current
|
|
4077
3840
|
const dimensions=useTerminalDimensions6()
|
|
4078
3841
|
const scroll=useDialogScroll()
|
|
4079
|
-
const [active,setActive]=
|
|
3842
|
+
const [active,setActive]=createSignal14("apply")
|
|
4080
3843
|
let body
|
|
4081
3844
|
const prefix=`${PLUGIN_ID}.preset-preview`
|
|
4082
3845
|
function activate(action){if(!props.valid()){dialogs.close()
|
|
@@ -4105,7 +3868,7 @@ const unregister=props.api.keymap.registerLayer({mode:"modal",priority:1000,comm
|
|
|
4105
3868
|
},{key:"ctrl+r",cmd:`${prefix}.refresh`
|
|
4106
3869
|
}]
|
|
4107
3870
|
})
|
|
4108
|
-
|
|
3871
|
+
onCleanup11(unregister)
|
|
4109
3872
|
createEffect9(()=>{if(!props.valid())
|
|
4110
3873
|
dialogs.close()
|
|
4111
3874
|
})
|
|
@@ -4147,7 +3910,7 @@ _$setProp(_el$6,"gap",1)
|
|
|
4147
3910
|
_$insert(_el$6,()=>props.children)
|
|
4148
3911
|
_$effect((_$p)=>_$setProp(_el$5,"height",Math.min(Math.max(2,Math.floor(dimensions().height*0.75)-14),Math.max(1,props.rowCount*3-1)),_$p))
|
|
4149
3912
|
return _el$5
|
|
4150
|
-
})(),_$createComponent(
|
|
3913
|
+
})(),_$createComponent(Show6,{get when(){return props.blocked||props.notice
|
|
4151
3914
|
},get children(){var _el$7=_$createElement("box"),_el$8=_$createElement("text"),_el$9=_$createElement("text")
|
|
4152
3915
|
_$insertNode(_el$7,_el$8)
|
|
4153
3916
|
_$insertNode(_el$7,_el$9)
|
|
@@ -4213,7 +3976,7 @@ _$insertNode(_el$4,_el$5)
|
|
|
4213
3976
|
_$setProp(_el$4,"flexShrink",0)
|
|
4214
3977
|
_$insert(_el$4,()=>icons.icon(props.statusIcon),_el$5)
|
|
4215
3978
|
_$insert(_el$4,()=>props.statusLabel,null)
|
|
4216
|
-
_$effect((_p$)=>{var _v$=statusColor(),_v$2=emphasized()?theme().text:theme().textMuted,_v$3=emphasized()?
|
|
3979
|
+
_$effect((_p$)=>{var _v$=statusColor(),_v$2=emphasized()?theme().text:theme().textMuted,_v$3=emphasized()?TextAttributes10.BOLD:undefined,_v$4=statusColor(),_v$5=emphasized()?TextAttributes10.BOLD:undefined
|
|
4217
3980
|
_v$!==_p$.e&&(_p$.e=_$setProp(_el$2,"fg",_v$,_p$.e))
|
|
4218
3981
|
_v$2!==_p$.t&&(_p$.t=_$setProp(_el$3,"fg",_v$2,_p$.t))
|
|
4219
3982
|
_v$3!==_p$.a&&(_p$.a=_$setProp(_el$3,"attributes",_v$3,_p$.a))
|
|
@@ -4259,7 +4022,7 @@ if(!request)
|
|
|
4259
4022
|
return
|
|
4260
4023
|
dialogs.close()
|
|
4261
4024
|
reportMcpApplyError(props.api,request)
|
|
4262
|
-
},get children(){return _$createComponent(
|
|
4025
|
+
},get children(){return _$createComponent(For5,{get each(){return rows()
|
|
4263
4026
|
},children:(row)=>_$createComponent(PresetPreviewRow,_$mergeProps({get api(){return props.api
|
|
4264
4027
|
}},row))
|
|
4265
4028
|
})
|
|
@@ -4359,12 +4122,12 @@ dialogs.open(()=>_$createComponent(SelectionMenu,{api,title:"MCP presets",get op
|
|
|
4359
4122
|
|
|
4360
4123
|
|
|
4361
4124
|
|
|
4362
|
-
var
|
|
4125
|
+
var Content2=lazy4(async ()=>{const path=import.meta.url.includes("/dist/")?"./sidebar-settings.js":"./settings-dialog-content"
|
|
4363
4126
|
const module=await import(path)
|
|
4364
4127
|
return{default:module.SettingsDialog
|
|
4365
4128
|
}})
|
|
4366
4129
|
function SettingsDialog(props){return(()=>{var _el$=_$createElement("box")
|
|
4367
|
-
_$insert(_el$,_$createComponent(
|
|
4130
|
+
_$insert(_el$,_$createComponent(Suspense4,{get children(){return _$createComponent(Content2,props)
|
|
4368
4131
|
}}))
|
|
4369
4132
|
return _el$
|
|
4370
4133
|
})()
|
|
@@ -4399,7 +4162,7 @@ function SettingsBinding(props){const unregister=props.api.keymap.registerLayer(
|
|
|
4399
4162
|
},cmd:`${PLUGIN_ID}.settings`
|
|
4400
4163
|
}]
|
|
4401
4164
|
})
|
|
4402
|
-
|
|
4165
|
+
onCleanup13(unregister)
|
|
4403
4166
|
return _$createElement("box")
|
|
4404
4167
|
}
|
|
4405
4168
|
|
|
@@ -4427,14 +4190,14 @@ observed=current
|
|
|
4427
4190
|
props.preferences.setAutoApprovePermissions(current)
|
|
4428
4191
|
})
|
|
4429
4192
|
if(unsubscribe)
|
|
4430
|
-
|
|
4193
|
+
onCleanup14(unsubscribe)
|
|
4431
4194
|
return _$createElement("box")
|
|
4432
4195
|
}
|
|
4433
4196
|
|
|
4434
4197
|
|
|
4435
4198
|
|
|
4436
4199
|
function SettingsFooterButton(props){const icons=useIcons()
|
|
4437
|
-
const [hovered,setHovered]=
|
|
4200
|
+
const [hovered,setHovered]=createSignal15(false)
|
|
4438
4201
|
const theme=()=>props.api.theme.current
|
|
4439
4202
|
return _$createComponent(IconControl,{id:`${PLUGIN_ID}.settings.footer`,get icon(){return icons.icon("settings")
|
|
4440
4203
|
},get foregroundColor(){return _$memo(()=>!!hovered())()?theme().text:theme().textMuted
|
|
@@ -4446,7 +4209,7 @@ return _$createComponent(IconControl,{id:`${PLUGIN_ID}.settings.footer`,get icon
|
|
|
4446
4209
|
|
|
4447
4210
|
|
|
4448
4211
|
var services=new WeakMap
|
|
4449
|
-
function createSlot(){const [read,write]=
|
|
4212
|
+
function createSlot(){const [read,write]=createSignal16()
|
|
4450
4213
|
return{read,write}}
|
|
4451
4214
|
function slot(api){let entry=services.get(api)
|
|
4452
4215
|
if(!entry){entry=createSlot()
|
|
@@ -4476,7 +4239,7 @@ var CANCEL_COMMAND=`${PLUGIN_ID}.sidebar-shortcuts.cancel`
|
|
|
4476
4239
|
var MODE=`${PLUGIN_ID}.sidebar-shortcuts`
|
|
4477
4240
|
var DEFAULT_TIMEOUT_MS=5000
|
|
4478
4241
|
function createSidebarShortcutMode(api,options={}){const actions=sidebarShortcutActions(api)
|
|
4479
|
-
const [active,setActive]=
|
|
4242
|
+
const [active,setActive]=createSignal17(false)
|
|
4480
4243
|
const timeoutMs=options.timeoutMs??DEFAULT_TIMEOUT_MS
|
|
4481
4244
|
let shortcutKey=""
|
|
4482
4245
|
let unregisterBinding
|
|
@@ -4526,7 +4289,7 @@ unregisterBinding=undefined
|
|
|
4526
4289
|
unregisterCommands()
|
|
4527
4290
|
}}}
|
|
4528
4291
|
|
|
4529
|
-
var SidebarShortcutHint=
|
|
4292
|
+
var SidebarShortcutHint=lazy5(()=>{const path=import.meta.url.includes("/dist/tui.js")?"./sidebar-shortcuts.js":"../../../sidebar-shortcuts"
|
|
4530
4293
|
return import(path)
|
|
4531
4294
|
});
|
|
4532
4295
|
|
|
@@ -4616,17 +4379,17 @@ function StartupSessionBinding(props){if(props.api.keymap.on){const unregister=p
|
|
|
4616
4379
|
return
|
|
4617
4380
|
queueMicrotask(()=>void props.controller.start())
|
|
4618
4381
|
})
|
|
4619
|
-
|
|
4382
|
+
onCleanup15(unregister)
|
|
4620
4383
|
} else
|
|
4621
4384
|
createEffect13(()=>{if(!props.controller.enabled())
|
|
4622
4385
|
return
|
|
4623
4386
|
const unregister=props.api.keymap.registerLayer({mode:"global",priority:2001,commands:[{name:"session.new",title:"New session",category:"Session",namespace:"palette",enabled:props.controller.enabled,run:()=>void props.controller.start()
|
|
4624
4387
|
}]
|
|
4625
4388
|
})
|
|
4626
|
-
|
|
4389
|
+
onCleanup15(unregister)
|
|
4627
4390
|
})
|
|
4628
4391
|
onMount5(()=>void props.controller.initialize())
|
|
4629
|
-
|
|
4392
|
+
onCleanup15(props.controller.dispose)
|
|
4630
4393
|
return _$createElement("box")
|
|
4631
4394
|
}
|
|
4632
4395
|
|
|
@@ -4634,7 +4397,7 @@ return _$createElement("box")
|
|
|
4634
4397
|
|
|
4635
4398
|
function UpgradeNotesBinding(props){let pending
|
|
4636
4399
|
let disposed=false
|
|
4637
|
-
|
|
4400
|
+
async function load(){const previous=await props.preferences.claimNavigatorUpgrade(props.version)
|
|
4638
4401
|
if(!previous||disposed)
|
|
4639
4402
|
return
|
|
4640
4403
|
try{let show=function(){if(disposed||props.api.lifecycle.signal?.aborted)
|
|
@@ -4654,8 +4417,9 @@ const entries=changesSince(await (props.read??readBundledChangelog)(),previous,p
|
|
|
4654
4417
|
if(entries.length===0||disposed)
|
|
4655
4418
|
return
|
|
4656
4419
|
show()
|
|
4657
|
-
} catch{}}
|
|
4658
|
-
|
|
4420
|
+
} catch{}}
|
|
4421
|
+
onMount6(()=>void load().catch(()=>{}))
|
|
4422
|
+
onCleanup16(()=>{disposed=true
|
|
4659
4423
|
clearTimeout(pending)
|
|
4660
4424
|
})
|
|
4661
4425
|
return _$createElement("box")
|
|
@@ -4786,9 +4550,9 @@ return false
|
|
|
4786
4550
|
return true
|
|
4787
4551
|
}
|
|
4788
4552
|
function createSidebarInteraction(api,showHelp=()=>openKeyboardHelp(api)){const descriptors=new Map
|
|
4789
|
-
const [selectedId,setSelectedId]=
|
|
4790
|
-
const [focusWithin,setFocusWithin]=
|
|
4791
|
-
const [revision,setRevision]=
|
|
4553
|
+
const [selectedId,setSelectedId]=createSignal20()
|
|
4554
|
+
const [focusWithin,setFocusWithin]=createSignal20(false)
|
|
4555
|
+
const [revision,setRevision]=createSignal20(0)
|
|
4792
4556
|
let titleRoot
|
|
4793
4557
|
let contentRoot
|
|
4794
4558
|
let targetedRoot
|
|
@@ -5057,14 +4821,14 @@ else if(highlighted)
|
|
|
5057
4821
|
foregroundColor=theme.selectedListItemText
|
|
5058
4822
|
return{backgroundColor,foregroundColor}}
|
|
5059
4823
|
function useSidebarItem(api,interaction,descriptor,normalColor=()=>api.theme.current.text,mode="row"){let unregister
|
|
5060
|
-
const [hovered,setHovered]=
|
|
4824
|
+
const [hovered,setHovered]=createSignal21(false)
|
|
5061
4825
|
const disabled=()=>descriptor.disabled?.()===true
|
|
5062
4826
|
const focused=()=>Boolean(interaction?.ownsFocus()&&interaction.isSelected(descriptor.id))
|
|
5063
4827
|
const colors=()=>sidebarInteractiveColors(api.theme.current,{focused:focused(),hovered:hovered(),disabled:disabled()},normalColor(),mode)
|
|
5064
4828
|
const ref=(renderable)=>{unregister?.()
|
|
5065
4829
|
unregister=interaction?.register({...descriptor,renderable})
|
|
5066
4830
|
}
|
|
5067
|
-
|
|
4831
|
+
onCleanup18(()=>unregister?.())
|
|
5068
4832
|
return{ref,disabled,focused,backgroundColor:()=>colors().backgroundColor,foregroundColor:()=>colors().foregroundColor,onMouseOver:()=>setHovered(true),onMouseOut:()=>setHovered(false),select(event){interaction?.mouseSelect(descriptor.id,event)
|
|
5069
4833
|
},activate(event){if(interaction)
|
|
5070
4834
|
return interaction.mouseActivate(descriptor.id,event)
|
|
@@ -5075,7 +4839,7 @@ return true
|
|
|
5075
4839
|
}}}
|
|
5076
4840
|
function LspBadge(props){const icons=useIcons()
|
|
5077
4841
|
const isKnown=lspIconName(props.id)!==undefined
|
|
5078
|
-
const [showName,setShowName]=
|
|
4842
|
+
const [showName,setShowName]=createSignal22(false)
|
|
5079
4843
|
const statusColor=()=>props.status==="connected"?props.api.theme.current.success:props.api.theme.current.error
|
|
5080
4844
|
if(!isKnown){return(()=>{var _el$=_$createElement("text")
|
|
5081
4845
|
_$setProp(_el$,"flexShrink",1)
|
|
@@ -5100,7 +4864,7 @@ _$setProp(_el$2,"flexShrink",0)
|
|
|
5100
4864
|
_$insert(_el$2,()=>lspIcon(props.id,props.iconStyle??icons.style()))
|
|
5101
4865
|
_$effect((_$p)=>_$setProp(_el$2,"fg",item.foregroundColor(),_$p))
|
|
5102
4866
|
return _el$2
|
|
5103
|
-
})(),_$createComponent(
|
|
4867
|
+
})(),_$createComponent(Show10,{get when(){return showName()
|
|
5104
4868
|
},get children(){var _el$3=_$createElement("text")
|
|
5105
4869
|
_$setProp(_el$3,"flexShrink",0)
|
|
5106
4870
|
_$setProp(_el$3,"wrapMode","none")
|
|
@@ -5118,7 +4882,7 @@ return _el$3
|
|
|
5118
4882
|
|
|
5119
4883
|
|
|
5120
4884
|
|
|
5121
|
-
function createListVisibility(options){const [expanded,setExpanded]=
|
|
4885
|
+
function createListVisibility(options){const [expanded,setExpanded]=createSignal23(false)
|
|
5122
4886
|
let previousKey
|
|
5123
4887
|
let previousLimit
|
|
5124
4888
|
const canToggle=createMemo8(()=>options.limit()>0&&options.items().length>options.limit())
|
|
@@ -5155,7 +4919,7 @@ else
|
|
|
5155
4919
|
props.visibility.showAll()
|
|
5156
4920
|
queueMicrotask(()=>props.interaction?.select(id))
|
|
5157
4921
|
}})
|
|
5158
|
-
return _$createComponent(
|
|
4922
|
+
return _$createComponent(Show11,{get when(){return props.visibility.canToggle()
|
|
5159
4923
|
},get children(){return _$createComponent(SelectionBox,{ref(r$){var _ref$=item.ref
|
|
5160
4924
|
typeof _ref$==="function"?_ref$(r$):item.ref=r$
|
|
5161
4925
|
},id,paddingLeft:1,paddingRight:1,get backgroundColor(){return item.backgroundColor()
|
|
@@ -5205,7 +4969,7 @@ result += segment
|
|
|
5205
4969
|
}
|
|
5206
4970
|
return result + ellipsis
|
|
5207
4971
|
}
|
|
5208
|
-
function SectionHeaderControl(props){const [width,setWidth]=
|
|
4972
|
+
function SectionHeaderControl(props){const [width,setWidth]=createSignal24()
|
|
5209
4973
|
const control=useSidebarItem(props.api,props.interaction,{id:props.action.id,position:()=>props.position,disabled:props.action.disabled,activate:props.action.onActivate
|
|
5210
4974
|
},()=>props.api.theme.current.accent,"control")
|
|
5211
4975
|
createEffect14(on(()=>[props.action.label(),props.resetWidth],()=>setWidth(undefined)))
|
|
@@ -5230,7 +4994,7 @@ return _el$
|
|
|
5230
4994
|
}})
|
|
5231
4995
|
}
|
|
5232
4996
|
function Section(props){const icons=useIcons()
|
|
5233
|
-
const [headerWidth,setHeaderWidth]=
|
|
4997
|
+
const [headerWidth,setHeaderWidth]=createSignal25(0)
|
|
5234
4998
|
const icon=()=>props.section?icons.section(props.section):props.icon
|
|
5235
4999
|
const theme=()=>props.api.theme.current
|
|
5236
5000
|
const item=useSidebarItem(props.api,props.interaction,{id:props.sectionId??`section.${props.title}`,position:()=>({section:props.navigationSection??0,row:0,column:0
|
|
@@ -5272,7 +5036,7 @@ _$setProp(_el$7,"flexGrow",1)
|
|
|
5272
5036
|
_$setProp(_el$7,"minWidth",0)
|
|
5273
5037
|
_$setProp(_el$7,"justifyContent","flex-end")
|
|
5274
5038
|
_$insert(_el$7,()=>props.headerControls,null)
|
|
5275
|
-
_$insert(_el$7,_$createComponent(
|
|
5039
|
+
_$insert(_el$7,_$createComponent(Show12,{get when(){return props.headerAction
|
|
5276
5040
|
},children:(action)=>_$createComponent(SectionHeaderControl,{get api(){return props.api
|
|
5277
5041
|
},get interaction(){return props.interaction
|
|
5278
5042
|
},get action(){return action()
|
|
@@ -5280,7 +5044,7 @@ _$insert(_el$7,_$createComponent(Show13,{get when(){return props.headerAction
|
|
|
5280
5044
|
},get position(){return{section:props.navigationSection??0,row:0,column:1
|
|
5281
5045
|
}}})
|
|
5282
5046
|
}),null)
|
|
5283
|
-
_$insert(_el$7,_$createComponent(
|
|
5047
|
+
_$insert(_el$7,_$createComponent(Show12,{get when(){return props.summary
|
|
5284
5048
|
},get children(){var _el$8=_$createElement("text")
|
|
5285
5049
|
_$setProp(_el$8,"wrapMode","none")
|
|
5286
5050
|
_$setProp(_el$8,"truncate",true)
|
|
@@ -5297,7 +5061,7 @@ return _el$8
|
|
|
5297
5061
|
return _el$7
|
|
5298
5062
|
})()]
|
|
5299
5063
|
}}),null)
|
|
5300
|
-
_$insert(_el$,_$createComponent(
|
|
5064
|
+
_$insert(_el$,_$createComponent(Show12,{get when(){return props.open
|
|
5301
5065
|
},get children(){return props.children
|
|
5302
5066
|
}}),null)
|
|
5303
5067
|
return _el$
|
|
@@ -5315,7 +5079,7 @@ return _$createComponent(Section,{get api(){return props.api
|
|
|
5315
5079
|
},sectionId:`${PLUGIN_ID}.section.lsp`,get navigationSection(){return navigationSection()
|
|
5316
5080
|
},title:"LSP",section:"lsp",get summary(){return `${connected()}/${list().length}`
|
|
5317
5081
|
},get open(){return props.preferences.expanded().lsp
|
|
5318
|
-
},onToggle:()=>props.preferences.toggleSectionExpanded("lsp"),get children(){return [_$createComponent(
|
|
5082
|
+
},onToggle:()=>props.preferences.toggleSectionExpanded("lsp"),get children(){return [_$createComponent(Show13,{get when(){return list().length>0
|
|
5319
5083
|
},get fallback(){return(()=>{var _el$2=_$createElement("text")
|
|
5320
5084
|
_$insert(_el$2,()=>disabled()?"LSP is disabled":"Activates as files are read")
|
|
5321
5085
|
_$effect((_$p)=>_$setProp(_el$2,"fg",props.api.theme.current.textMuted,_$p))
|
|
@@ -5327,7 +5091,7 @@ _$setProp(_el$,"flexWrap","wrap")
|
|
|
5327
5091
|
_$setProp(_el$,"gap",1)
|
|
5328
5092
|
_$setProp(_el$,"paddingLeft",1)
|
|
5329
5093
|
_$setProp(_el$,"paddingRight",1)
|
|
5330
|
-
_$insert(_el$,_$createComponent(
|
|
5094
|
+
_$insert(_el$,_$createComponent(For10,{get each(){return visibility.visible()
|
|
5331
5095
|
},children:(item,index)=>_$createComponent(LspBadge,{get api(){return props.api
|
|
5332
5096
|
},get interaction(){return props.interaction
|
|
5333
5097
|
},get id(){return item.id
|
|
@@ -5440,7 +5204,7 @@ _$insert(_el$,_$createComponent(McpBulkAction,{get api(){return props.api
|
|
|
5440
5204
|
}),null)
|
|
5441
5205
|
_$effect((_$p)=>_$setProp(_el$,"paddingBottom",model.bulkRunning()||model.bulk().status==="error"?1:0,_$p))
|
|
5442
5206
|
return _el$
|
|
5443
|
-
})(),_$createComponent(
|
|
5207
|
+
})(),_$createComponent(Show14,{get when(){return model.bulkRunning()
|
|
5444
5208
|
},get children(){var _el$2=_$createElement("text"),_el$3=_$createTextNode(` `),_el$4=_$createTextNode(`/`),_el$5=_$createTextNode(`\u2026`)
|
|
5445
5209
|
_$insertNode(_el$2,_el$3)
|
|
5446
5210
|
_$insertNode(_el$2,_el$4)
|
|
@@ -5450,7 +5214,7 @@ _$insert(_el$2,()=>model.bulk().completed,_el$4)
|
|
|
5450
5214
|
_$insert(_el$2,()=>model.bulk().total,_el$5)
|
|
5451
5215
|
_$effect((_$p)=>_$setProp(_el$2,"fg",props.api.theme.current.textMuted,_$p))
|
|
5452
5216
|
return _el$2
|
|
5453
|
-
}}),_$createComponent(
|
|
5217
|
+
}}),_$createComponent(Show14,{get when(){return model.bulk().status==="error"
|
|
5454
5218
|
},get children(){return _$createComponent(McpBulkAction,{get api(){return props.api
|
|
5455
5219
|
},get interaction(){return props.interaction
|
|
5456
5220
|
},id:`${PLUGIN_ID}.mcp.retry-all`,get position(){return{section:props.navigationSection,row:3,column:0
|
|
@@ -5530,7 +5294,7 @@ return _el$4
|
|
|
5530
5294
|
function RequestErrorRow(props){const icons=useIcons()
|
|
5531
5295
|
const item=useSidebarItem(props.api,props.interaction,{id:props.id,position:()=>props.position,disabled:()=>!props.state.error?.retryable||props.state.status==="loading"||props.state.status==="refreshing",activate:props.onRetry
|
|
5532
5296
|
})
|
|
5533
|
-
return _$createComponent(
|
|
5297
|
+
return _$createComponent(Show15,{get when(){return props.state.error
|
|
5534
5298
|
},children:(error)=>_$createComponent(SelectionBox,{ref:(node)=>item.ref(node),get id(){return props.id
|
|
5535
5299
|
},flexDirection:"row",gap:1,paddingLeft:1,paddingRight:1,get backgroundColor(){return item.backgroundColor()
|
|
5536
5300
|
},get onMouseOver(){return item.onMouseOver
|
|
@@ -5545,7 +5309,7 @@ _$insert(_el$,()=>icons.icon("error"),_el$2)
|
|
|
5545
5309
|
_$insert(_el$,()=>error().message,null)
|
|
5546
5310
|
_$effect((_$p)=>_$setProp(_el$,"fg",item.focused()?item.foregroundColor():props.api.theme.current.error,_$p))
|
|
5547
5311
|
return _el$
|
|
5548
|
-
})(),_$createComponent(
|
|
5312
|
+
})(),_$createComponent(Show15,{get when(){return error().retryable
|
|
5549
5313
|
},get children(){var _el$3=_$createElement("text"),_el$4=_$createTextNode(` Retry`)
|
|
5550
5314
|
_$insertNode(_el$3,_el$4)
|
|
5551
5315
|
_$setProp(_el$3,"flexShrink",0)
|
|
@@ -5560,7 +5324,7 @@ function SectionRequestBody(props){const icons=useIcons()
|
|
|
5560
5324
|
const pending=()=>props.state.status==="loading"
|
|
5561
5325
|
return(()=>{var _el$5=_$createElement("box")
|
|
5562
5326
|
_$insert(_el$5,_$createComponent(RequestErrorRow,props),null)
|
|
5563
|
-
_$insert(_el$5,_$createComponent(
|
|
5327
|
+
_$insert(_el$5,_$createComponent(Show15,{get when(){return _$memo(()=>!!pending())()&&!props.hasItems
|
|
5564
5328
|
},get children(){var _el$6=_$createElement("text"),_el$7=_$createTextNode(` `)
|
|
5565
5329
|
_$insertNode(_el$6,_el$7)
|
|
5566
5330
|
_$insert(_el$6,()=>icons.icon("pending"),_el$7)
|
|
@@ -5568,10 +5332,10 @@ _$insert(_el$6,()=>props.loading,null)
|
|
|
5568
5332
|
_$effect((_$p)=>_$setProp(_el$6,"fg",props.api.theme.current.textMuted,_$p))
|
|
5569
5333
|
return _el$6
|
|
5570
5334
|
}}),null)
|
|
5571
|
-
_$insert(_el$5,_$createComponent(
|
|
5335
|
+
_$insert(_el$5,_$createComponent(Show15,{get when(){return props.hasItems
|
|
5572
5336
|
},get children(){return props.children
|
|
5573
5337
|
}}),null)
|
|
5574
|
-
_$insert(_el$5,_$createComponent(
|
|
5338
|
+
_$insert(_el$5,_$createComponent(Show15,{get when(){return _$memo(()=>!!((props.state.status==="ready"||props.state.status==="refreshing")&&!props.hasItems))()&&!props.state.error
|
|
5575
5339
|
},get children(){var _el$8=_$createElement("text"),_el$9=_$createTextNode(` `)
|
|
5576
5340
|
_$insertNode(_el$8,_el$9)
|
|
5577
5341
|
_$insert(_el$8,()=>icons.icon("info"),_el$9)
|
|
@@ -5588,8 +5352,8 @@ return _el$5
|
|
|
5588
5352
|
function createSidebarBookmark(input){const{api,interaction,row,position,favorite,disabled,onToggle
|
|
5589
5353
|
}=input
|
|
5590
5354
|
const id=`${input.id}.favorite`
|
|
5591
|
-
const [rowHovered,setRowHovered]=
|
|
5592
|
-
const [controlHovered,setControlHovered]=
|
|
5355
|
+
const [rowHovered,setRowHovered]=createSignal26(false)
|
|
5356
|
+
const [controlHovered,setControlHovered]=createSignal26(false)
|
|
5593
5357
|
const control=useSidebarItem(api,interaction,{id,position:()=>({...position(),column:0
|
|
5594
5358
|
}),disabled,activate:()=>{onToggle()
|
|
5595
5359
|
queueMicrotask(()=>interaction?.select(id))
|
|
@@ -5705,7 +5469,7 @@ return _el$2
|
|
|
5705
5469
|
function SectionFilter(props){const icons=useIcons()
|
|
5706
5470
|
let input
|
|
5707
5471
|
let unregisterInput
|
|
5708
|
-
const [inputFocused,setInputFocused]=
|
|
5472
|
+
const [inputFocused,setInputFocused]=createSignal27(false)
|
|
5709
5473
|
const theme=()=>props.api.theme.current
|
|
5710
5474
|
const item=useSidebarItem(props.api,props.interaction,{id:props.id??`filter.${props.placeholder}`,position:()=>props.position??{section:0,row:0,column:0
|
|
5711
5475
|
},activate:()=>{if(!input)
|
|
@@ -5726,7 +5490,7 @@ props.interaction.leaveFilter(input)
|
|
|
5726
5490
|
else
|
|
5727
5491
|
input?.blur()
|
|
5728
5492
|
}
|
|
5729
|
-
|
|
5493
|
+
onCleanup19(()=>unregisterInput?.())
|
|
5730
5494
|
return _$createComponent(SelectionBox,{ref:(node)=>item.ref(node),get id(){return props.id
|
|
5731
5495
|
},flexDirection:"row",gap:1,marginTop:1,marginBottom:1,paddingLeft:1,paddingRight:1,get backgroundColor(){return _$memo(()=>!!highlighted())()?theme().primary:item.backgroundColor()
|
|
5732
5496
|
},get onMouseOver(){return item.onMouseOver
|
|
@@ -5764,7 +5528,7 @@ return _p$
|
|
|
5764
5528
|
},{e:undefined,t:undefined,a:undefined,o:undefined,i:undefined,n:undefined,s:undefined,h:undefined
|
|
5765
5529
|
})
|
|
5766
5530
|
return _el$2
|
|
5767
|
-
})(),_$createComponent(
|
|
5531
|
+
})(),_$createComponent(Show16,{get when(){return props.query
|
|
5768
5532
|
},get children(){var _el$3=_$createElement("text")
|
|
5769
5533
|
_$setProp(_el$3,"flexShrink",0)
|
|
5770
5534
|
_$setProp(_el$3,"onMouseDown",()=>props.onInput(""))
|
|
@@ -5793,7 +5557,7 @@ _$insert(_el$,_$createComponent(SectionFilter,{get api(){return props.api
|
|
|
5793
5557
|
}},get query(){return props.query
|
|
5794
5558
|
},placeholder:"Filter MCP...",get onInput(){return props.onQuery
|
|
5795
5559
|
}}),null)
|
|
5796
|
-
_$insert(_el$,_$createComponent(
|
|
5560
|
+
_$insert(_el$,_$createComponent(Show17,{get when(){return model.filtered().length>0
|
|
5797
5561
|
},get fallback(){return(()=>{var _el$2=_$createElement("text")
|
|
5798
5562
|
_$insertNode(_el$2,_$createTextNode(`No matching MCP servers`))
|
|
5799
5563
|
_$effect((_$p)=>_$setProp(_el$2,"fg",props.api.theme.current.textMuted,_$p))
|
|
@@ -5803,8 +5567,8 @@ return _el$2
|
|
|
5803
5567
|
},get interaction(){return props.interaction
|
|
5804
5568
|
},get grouped(){return model.grouped
|
|
5805
5569
|
},get density(){return props.preferences.rowDensity?.()??"compact"
|
|
5806
|
-
},get children(){return _$createComponent(
|
|
5807
|
-
},children:(item,index)=>[_$createComponent(
|
|
5570
|
+
},get children(){return _$createComponent(For11,{get each(){return model.visibility.visible()
|
|
5571
|
+
},children:(item,index)=>[_$createComponent(Show17,{get when(){return _$memo(()=>!!model.grouped())()&&(index()===0||model.visibility.visible()[index()-1]?.bucket!==item.bucket)
|
|
5808
5572
|
},get children(){return _$createComponent(McpGroupHeader,{get api(){return props.api
|
|
5809
5573
|
},get interaction(){return props.interaction
|
|
5810
5574
|
},get bucket(){return item.bucket
|
|
@@ -5835,7 +5599,7 @@ return _el$
|
|
|
5835
5599
|
}})
|
|
5836
5600
|
}
|
|
5837
5601
|
function McpSection(props){const icons=useIcons()
|
|
5838
|
-
const [query,setQuery]=
|
|
5602
|
+
const [query,setQuery]=createSignal28("")
|
|
5839
5603
|
const model=createMcpSectionModel(props,query)
|
|
5840
5604
|
const navigationSection=()=>props.navigationSection??6
|
|
5841
5605
|
const summary=createMemo11(()=>`${model.active()}/${model.list().length}${model.errors() ? ` \xB7 ${model.errors()} ${icons.icon("error")}` : ""}`)
|
|
@@ -5975,7 +5739,7 @@ function QuickActionRow(props){const{api,interaction
|
|
|
5975
5739
|
const icons=useIcons()
|
|
5976
5740
|
const toolbar=useToolbar()
|
|
5977
5741
|
const theme=()=>api.theme.current
|
|
5978
|
-
const [width,setWidth]=
|
|
5742
|
+
const [width,setWidth]=createSignal33(0)
|
|
5979
5743
|
const shortcut=createMemo12(()=>{const bindings=api.keymap.getCommandBindings({visibility:"registered",commands:[props.action.command]
|
|
5980
5744
|
})
|
|
5981
5745
|
return api.keys.formatBindings(bindings.get(props.action.command))
|
|
@@ -6019,7 +5783,7 @@ _$insert(_el$2,()=>props.action.label)
|
|
|
6019
5783
|
_$effect((_$p)=>_$setProp(_el$2,"fg",row.foregroundColor(),_$p))
|
|
6020
5784
|
return _el$2
|
|
6021
5785
|
})()
|
|
6022
|
-
},get metadata(){return _$createComponent(
|
|
5786
|
+
},get metadata(){return _$createComponent(Show24,{get when(){return visibleShortcut()
|
|
6023
5787
|
},children:(value)=>(()=>{var _el$3=_$createElement("text")
|
|
6024
5788
|
_$setProp(_el$3,"flexShrink",0)
|
|
6025
5789
|
_$setProp(_el$3,"wrapMode","none")
|
|
@@ -6028,12 +5792,12 @@ _$effect((_$p)=>_$setProp(_el$3,"fg",row.focused()?row.foregroundColor():theme()
|
|
|
6028
5792
|
return _el$3
|
|
6029
5793
|
})()
|
|
6030
5794
|
})
|
|
6031
|
-
},get trailing(){return _$createComponent(
|
|
5795
|
+
},get trailing(){return _$createComponent(Show24,{when:toolbar,get children(){return _$createComponent(SidebarPinControl,{get id(){return id()
|
|
6032
5796
|
},get position(){return props.position
|
|
6033
5797
|
},get pin(){return{kind:"action",id:props.action.command,icon:"bolt"
|
|
6034
5798
|
}}})
|
|
6035
5799
|
}})
|
|
6036
|
-
},get details(){return _$createComponent(
|
|
5800
|
+
},get details(){return _$createComponent(Show24,{get when(){return props.disabled
|
|
6037
5801
|
},children:(reason)=>(()=>{var _el$4=_$createElement("text")
|
|
6038
5802
|
_$setProp(_el$4,"wrapMode","word")
|
|
6039
5803
|
_$insert(_el$4,reason)
|
|
@@ -6061,12 +5825,12 @@ return _$createComponent(Section,{get api(){return props.api
|
|
|
6061
5825
|
},onToggle:()=>props.preferences.toggleSectionExpanded("quick_actions"),get children(){return [_$createComponent(SidebarRowList,{get api(){return props.api
|
|
6062
5826
|
},get interaction(){return props.interaction
|
|
6063
5827
|
},get density(){return props.preferences.rowDensity?.()??"compact"
|
|
6064
|
-
},get children(){return [_$createComponent(
|
|
5828
|
+
},get children(){return [_$createComponent(Show25,{get when(){return actions().length===0
|
|
6065
5829
|
},get children(){var _el$=_$createElement("text")
|
|
6066
5830
|
_$insertNode(_el$,_$createTextNode(`No quick actions selected`))
|
|
6067
5831
|
_$effect((_$p)=>_$setProp(_el$,"fg",props.api.theme.current.textMuted,_$p))
|
|
6068
5832
|
return _el$
|
|
6069
|
-
}}),_$createComponent(
|
|
5833
|
+
}}),_$createComponent(For14,{get each(){return visibility.visible().map((action)=>action.command)
|
|
6070
5834
|
},children:(id,index)=>_$createComponent(QuickActionRow,{get onNewSession(){return props.onNewSession
|
|
6071
5835
|
},get action(){return visibility.visible()[index()]
|
|
6072
5836
|
},get disabled(){return visibility.visible()[index()].disabled
|
|
@@ -6134,15 +5898,15 @@ untrack6(()=>shortcuts.bind(key))
|
|
|
6134
5898
|
createEffect16(()=>{if(shortcuts.active()&&(props.api.route.current.name!=="session"||props.api.ui.dialog.open||props.api.mode.current()==="modal"))
|
|
6135
5899
|
untrack6(shortcuts.cancel)
|
|
6136
5900
|
})
|
|
6137
|
-
|
|
5901
|
+
onCleanup20(shortcuts.dispose)
|
|
6138
5902
|
return(()=>{var _el$=_$createElement("box")
|
|
6139
5903
|
_$setProp(_el$,"position","absolute")
|
|
6140
5904
|
_$setProp(_el$,"top",0)
|
|
6141
5905
|
_$setProp(_el$,"left",0)
|
|
6142
5906
|
_$setProp(_el$,"width","100%")
|
|
6143
5907
|
_$setProp(_el$,"height","100%")
|
|
6144
|
-
_$insert(_el$,_$createComponent(
|
|
6145
|
-
},get children(){return _$createComponent(
|
|
5908
|
+
_$insert(_el$,_$createComponent(Show26,{get when(){return shortcuts.active()
|
|
5909
|
+
},get children(){return _$createComponent(Suspense5,{get children(){return _$createComponent(SidebarShortcutHint,{get api(){return props.api
|
|
6146
5910
|
},get actions(){return shortcuts.actions
|
|
6147
5911
|
}})
|
|
6148
5912
|
}})
|
|
@@ -6156,11 +5920,11 @@ const unregisterCommands=props.api.keymap.registerLayer({commands:[...commands,.
|
|
|
6156
5920
|
})=>({name:name.replace(PLUGIN_ID,()=>LEGACY_PLUGIN_ID),run,enabled
|
|
6157
5921
|
}))]
|
|
6158
5922
|
})
|
|
6159
|
-
|
|
5923
|
+
onCleanup20(unregisterCommands)
|
|
6160
5924
|
createEffect16(()=>{const unregister=props.api.keymap.registerLayer({bindings:[{key:props.preferences.focusKey(),cmd:FOCUS_COMMAND
|
|
6161
5925
|
}]
|
|
6162
5926
|
})
|
|
6163
|
-
|
|
5927
|
+
onCleanup20(unregister)
|
|
6164
5928
|
})
|
|
6165
5929
|
return _$createElement("box")
|
|
6166
5930
|
}
|
|
@@ -6226,7 +5990,7 @@ createEffect17(()=>{if(!needsSkills())
|
|
|
6226
5990
|
return
|
|
6227
5991
|
const current=target()
|
|
6228
5992
|
const release=untrack7(()=>props.skills.activate(current))
|
|
6229
|
-
|
|
5993
|
+
onCleanup21(release)
|
|
6230
5994
|
untrack7(()=>{props.skills.refresh(current).catch(()=>{})
|
|
6231
5995
|
})
|
|
6232
5996
|
})
|
|
@@ -6272,14 +6036,14 @@ return{pins,view,run,width:toolbarPinWidth}}
|
|
|
6272
6036
|
|
|
6273
6037
|
function ToolbarButton(props){const icons=useIcons()
|
|
6274
6038
|
const foreground=()=>props.reason?props.api.theme.current.textMuted:item.foregroundColor()
|
|
6275
|
-
const [hovered,setHovered]=
|
|
6039
|
+
const [hovered,setHovered]=createSignal34(false)
|
|
6276
6040
|
const item=useSidebarItem(props.api,props.interaction,{id:props.id,position:()=>({section:0,row:props.row + 1,column:props.column
|
|
6277
6041
|
}),activate:props.onRun
|
|
6278
6042
|
},()=>props.reason?props.api.theme.current.textMuted:props.api.theme.current.accent,"control")
|
|
6279
6043
|
const content=()=>[props.icons.map((icon)=>terminalIcon(icon,icons.style())).join(" "),props.text].filter(Boolean).join(" ")
|
|
6280
6044
|
createEffect18(()=>props.onDetails(props.id,item.focused()||hovered()))
|
|
6281
|
-
|
|
6282
|
-
return _$createComponent(
|
|
6045
|
+
onCleanup22(()=>props.onDetails(props.id,false))
|
|
6046
|
+
return _$createComponent(Show27,{get when(){return _$memo(()=>!!(props.width===3&&props.icons.length===1))()&&!props.text
|
|
6283
6047
|
},get fallback(){return _$createComponent(SelectionBox,{get id(){return props.id
|
|
6284
6048
|
},ref(r$){var _ref$2=item.ref
|
|
6285
6049
|
typeof _ref$2==="function"?_ref$2(r$):item.ref=r$
|
|
@@ -6319,8 +6083,8 @@ setHovered(false)
|
|
|
6319
6083
|
}
|
|
6320
6084
|
function SidebarToolbar(props){const model=createToolbarModel(props)
|
|
6321
6085
|
const icons=useIcons()
|
|
6322
|
-
const [width,setWidth]=
|
|
6323
|
-
const [detail,setDetail]=
|
|
6086
|
+
const [width,setWidth]=createSignal35(3)
|
|
6087
|
+
const [detail,setDetail]=createSignal35()
|
|
6324
6088
|
const keys=createMemo15(()=>model.pins().map((pin)=>toolbarPinKey(pin)))
|
|
6325
6089
|
const widths=createMemo15(()=>new Map(model.pins().map((pin)=>[toolbarPinKey(pin),model.width(pin)])))
|
|
6326
6090
|
const layout=createMemo15(()=>toolbarLayout(keys(),width(),props.preferences.toolbarOverflow?.()??"menu",widths()))
|
|
@@ -6348,17 +6112,17 @@ dialogs.close()
|
|
|
6348
6112
|
model.run(option.value)
|
|
6349
6113
|
}}))
|
|
6350
6114
|
}
|
|
6351
|
-
return _$createComponent(
|
|
6115
|
+
return _$createComponent(Show28,{get when(){return keys().length>0
|
|
6352
6116
|
},get children(){var _el$=_$createElement("box")
|
|
6353
6117
|
_$setProp(_el$,"id","opencode-navigator.toolbar")
|
|
6354
6118
|
_$setProp(_el$,"overflow","visible")
|
|
6355
6119
|
_$setProp(_el$,"onSizeChange",function(){setWidth(this.width)
|
|
6356
6120
|
})
|
|
6357
|
-
_$insert(_el$,_$createComponent(
|
|
6121
|
+
_$insert(_el$,_$createComponent(For15,{get each(){return rows()
|
|
6358
6122
|
},children:(row)=>(()=>{var _el$2=_$createElement("box")
|
|
6359
6123
|
_$setProp(_el$2,"flexDirection","row")
|
|
6360
6124
|
_$setProp(_el$2,"gap",1)
|
|
6361
|
-
_$insert(_el$2,_$createComponent(
|
|
6125
|
+
_$insert(_el$2,_$createComponent(For15,{get each(){return layout().rows[row]
|
|
6362
6126
|
},children:(key,column)=>_$createComponent(ToolbarButton,_$mergeProps(props,{id:`opencode-navigator.toolbar.${key}`,row,get column(){return column()
|
|
6363
6127
|
},get label(){return view(key)?.label??"More"
|
|
6364
6128
|
},get icons(){return key==="toolbar:more"?["list"]:view(key)?.icons??["bolt"]
|
|
@@ -6371,7 +6135,7 @@ _$insert(_el$2,_$createComponent(For17,{get each(){return layout().rows[row]
|
|
|
6371
6135
|
return _el$2
|
|
6372
6136
|
})()
|
|
6373
6137
|
}),null)
|
|
6374
|
-
_$insert(_el$,_$createComponent(
|
|
6138
|
+
_$insert(_el$,_$createComponent(Show28,{get when(){return details()
|
|
6375
6139
|
},children:(text)=>(()=>{var _el$3=_$createElement("text")
|
|
6376
6140
|
_$setProp(_el$3,"position","absolute")
|
|
6377
6141
|
_$setProp(_el$3,"left",0)
|
|
@@ -6413,7 +6177,7 @@ const visibility=createListVisibility({items:filtered,limit:()=>props.preference
|
|
|
6413
6177
|
const state=createMemo16(()=>props.controller.state(target()))
|
|
6414
6178
|
createEffect19(()=>{const current=target()
|
|
6415
6179
|
const deactivate=untrack8(()=>props.controller.activate?.(current)??(()=>{}))
|
|
6416
|
-
|
|
6180
|
+
onCleanup23(deactivate)
|
|
6417
6181
|
untrack8(()=>void props.controller.refresh(current).catch(()=>{}))
|
|
6418
6182
|
})
|
|
6419
6183
|
async function useSkill(item){try{const isInserted=await props.controller.use(target(),item.name)
|
|
@@ -6465,7 +6229,7 @@ _$insert(_el$,()=>props.item.name,null)
|
|
|
6465
6229
|
_$effect((_$p)=>_$setProp(_el$,"fg",row.foregroundColor(),_$p))
|
|
6466
6230
|
return _el$
|
|
6467
6231
|
})()
|
|
6468
|
-
},get trailing(){return _$createComponent(
|
|
6232
|
+
},get trailing(){return _$createComponent(Show29,{when:toolbar,get children(){return _$createComponent(SidebarPinControl,{get id(){return id()
|
|
6469
6233
|
},get position(){return props.position
|
|
6470
6234
|
},get pin(){return{kind:"skill",name:props.item.name,location:props.item.location,icon:"book"
|
|
6471
6235
|
}}})
|
|
@@ -6474,7 +6238,7 @@ return _el$
|
|
|
6474
6238
|
}
|
|
6475
6239
|
function SkillsSection(props){const dialogs=useDialogs(props.api)
|
|
6476
6240
|
const toolbar=useToolbar()
|
|
6477
|
-
const [query,setQuery]=
|
|
6241
|
+
const [query,setQuery]=createSignal36("")
|
|
6478
6242
|
const model=createSkillSectionModel(props,query)
|
|
6479
6243
|
const navigationSection=()=>props.navigationSection??3
|
|
6480
6244
|
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"
|
|
@@ -6498,7 +6262,7 @@ _$insert(_el$,_$createComponent(SectionFilter,{get api(){return props.api
|
|
|
6498
6262
|
}},get query(){return query()
|
|
6499
6263
|
},placeholder:"Filter skills...",onInput:setQuery
|
|
6500
6264
|
}),null)
|
|
6501
|
-
_$insert(_el$,_$createComponent(
|
|
6265
|
+
_$insert(_el$,_$createComponent(Show30,{get when(){return model.filtered().length>0
|
|
6502
6266
|
},get fallback(){return(()=>{var _el$2=_$createElement("text")
|
|
6503
6267
|
_$insertNode(_el$2,_$createTextNode(`No matching skills`))
|
|
6504
6268
|
_$effect((_$p)=>_$setProp(_el$2,"fg",props.api.theme.current.textMuted,_$p))
|
|
@@ -6508,8 +6272,8 @@ return _el$2
|
|
|
6508
6272
|
},get interaction(){return props.interaction
|
|
6509
6273
|
},get grouped(){return model.grouped
|
|
6510
6274
|
},get density(){return props.preferences.rowDensity?.()??"compact"
|
|
6511
|
-
},get children(){return _$createComponent(
|
|
6512
|
-
},children:(item,index)=>[_$createComponent(
|
|
6275
|
+
},get children(){return _$createComponent(For16,{get each(){return model.visibility.visible()
|
|
6276
|
+
},children:(item,index)=>[_$createComponent(Show30,{get when(){return _$memo(()=>!!model.grouped())()&&(index()===0||model.visibility.visible()[index()-1]?.bucket!==item.bucket)
|
|
6513
6277
|
},get children(){var _el$4=_$createElement("text")
|
|
6514
6278
|
_$setProp(_el$4,"height",1)
|
|
6515
6279
|
_$setProp(_el$4,"wrapMode","none")
|
|
@@ -6554,8 +6318,8 @@ return _el$
|
|
|
6554
6318
|
function createSubagentSectionModel(props){const list=createMemo17(()=>props.controller.list(props.sessionID))
|
|
6555
6319
|
const recent=createMemo17(()=>props.controller.recent?.(props.sessionID)??[])
|
|
6556
6320
|
const rows=createMemo17(()=>buildSubagentView(list(),recent()))
|
|
6557
|
-
const [query,setQuery]=
|
|
6558
|
-
const [mode,setMode]=
|
|
6321
|
+
const [query,setQuery]=createSignal37("")
|
|
6322
|
+
const [mode,setMode]=createSignal37("all")
|
|
6559
6323
|
const counts=createMemo17(()=>countSubagentView(rows(),query()))
|
|
6560
6324
|
const tabs=createMemo17(()=>["all","active","recent",...counts().errors>0?["errors"]:[]])
|
|
6561
6325
|
const filtered=createMemo17(()=>filterSubagentView(rows(),mode(),query()))
|
|
@@ -6578,7 +6342,7 @@ const state=createMemo17(()=>props.controller.state(props.sessionID))
|
|
|
6578
6342
|
createEffect20(()=>{const sessionID=props.sessionID
|
|
6579
6343
|
targetKey()
|
|
6580
6344
|
const deactivate=untrack9(()=>props.controller.activate?.(sessionID)??(()=>{}))
|
|
6581
|
-
|
|
6345
|
+
onCleanup24(deactivate)
|
|
6582
6346
|
untrack9(()=>void props.controller.refresh(sessionID).catch(()=>{}))
|
|
6583
6347
|
})
|
|
6584
6348
|
return{list,recent,rows,query,setQuery,mode,setMode,counts,tabs,filtered,parentID,visibility,now,byId,ids,state
|
|
@@ -6636,7 +6400,7 @@ return()=>_c$()?`${props.item.run.startedBeforeObservation ? `${icons.icon("rece
|
|
|
6636
6400
|
_$effect((_$p)=>_$setProp(_el$3,"fg",row.focused()?row.foregroundColor():theme().textMuted,_$p))
|
|
6637
6401
|
return _el$3
|
|
6638
6402
|
})()
|
|
6639
|
-
},get details(){return [_$createComponent(
|
|
6403
|
+
},get details(){return [_$createComponent(Show31,{get when(){return props.item.run?.errorMessage
|
|
6640
6404
|
},get children(){var _el$4=_$createElement("text"),_el$5=_$createTextNode(`: `)
|
|
6641
6405
|
_$insertNode(_el$4,_el$5)
|
|
6642
6406
|
_$setProp(_el$4,"wrapMode","word")
|
|
@@ -6644,12 +6408,12 @@ _$insert(_el$4,()=>cancelled()?"Cancelled":"Error",_el$5)
|
|
|
6644
6408
|
_$insert(_el$4,()=>props.item.run?.errorMessage,null)
|
|
6645
6409
|
_$effect((_$p)=>_$setProp(_el$4,"fg",row.focused()?row.foregroundColor():failed()?theme().error:theme().textMuted,_$p))
|
|
6646
6410
|
return _el$4
|
|
6647
|
-
}}),_$createComponent(
|
|
6411
|
+
}}),_$createComponent(Show31,{get when(){return props.item.unavailable
|
|
6648
6412
|
},get children(){var _el$6=_$createElement("text")
|
|
6649
6413
|
_$insertNode(_el$6,_$createTextNode(`Worker status unavailable`))
|
|
6650
6414
|
_$effect((_$p)=>_$setProp(_el$6,"fg",theme().warning,_$p))
|
|
6651
6415
|
return _el$6
|
|
6652
|
-
}}),_$createComponent(
|
|
6416
|
+
}}),_$createComponent(Show31,{get when(){return _$memo(()=>props.item.status.type==="retry")()?props.item.status:undefined
|
|
6653
6417
|
},children:(status)=>(()=>{var _el$0=_$createElement("text"),_el$1=_$createTextNode(`Retry #`),_el$10=_$createTextNode(` \xB7 `),_el$11=_$createTextNode(`s \xB7 `)
|
|
6654
6418
|
_$insertNode(_el$0,_el$1)
|
|
6655
6419
|
_$insertNode(_el$0,_el$10)
|
|
@@ -6661,7 +6425,7 @@ _$insert(_el$0,()=>status().message,null)
|
|
|
6661
6425
|
_$effect((_$p)=>_$setProp(_el$0,"fg",row.focused()?row.foregroundColor():theme().warning,_$p))
|
|
6662
6426
|
return _el$0
|
|
6663
6427
|
})()
|
|
6664
|
-
}),_$createComponent(
|
|
6428
|
+
}),_$createComponent(Show31,{get when(){return _$memo(()=>!!idle())()&&!props.item.run?.errorMessage
|
|
6665
6429
|
},get children(){var _el$8=_$createElement("text")
|
|
6666
6430
|
_$insertNode(_el$8,_$createTextNode(`Finished`))
|
|
6667
6431
|
_$effect((_$p)=>_$setProp(_el$8,"fg",theme().textMuted,_$p))
|
|
@@ -6672,12 +6436,12 @@ return _el$8
|
|
|
6672
6436
|
function SubagentList(props){return _$createComponent(SidebarRowList,{get api(){return props.api
|
|
6673
6437
|
},get interaction(){return props.interaction
|
|
6674
6438
|
},get density(){return props.density
|
|
6675
|
-
},get children(){return _$createComponent(
|
|
6439
|
+
},get children(){return _$createComponent(For17,{get each(){return props.ids
|
|
6676
6440
|
},children:(id,index)=>{const initial=props.itemById(id)
|
|
6677
6441
|
const item=()=>props.itemById(id)??initial
|
|
6678
6442
|
const startsGroup=()=>index()===0||props.visible[index()-1]?.group!==item().group
|
|
6679
6443
|
return(()=>{var _el$=_$createElement("box")
|
|
6680
|
-
_$insert(_el$,_$createComponent(
|
|
6444
|
+
_$insert(_el$,_$createComponent(Show32,{get when(){return startsGroup()
|
|
6681
6445
|
},get children(){var _el$2=_$createElement("text"),_el$3=_$createElement("b")
|
|
6682
6446
|
_$insertNode(_el$2,_el$3)
|
|
6683
6447
|
_$insert(_el$3,()=>item().group)
|
|
@@ -6703,7 +6467,7 @@ return _$createComponent(Section,{get api(){return props.api
|
|
|
6703
6467
|
},sectionId:`${PLUGIN_ID}.section.subagents`,get navigationSection(){return navigationSection()
|
|
6704
6468
|
},title:"SUBAGENTS",section:"subagents",get summary(){return `${model.list().length} active \xB7 ${model.recent().length} recent`
|
|
6705
6469
|
},get open(){return props.preferences.expanded().subagents
|
|
6706
|
-
},onToggle:()=>props.preferences.toggleSectionExpanded("subagents"),get children(){return [_$createComponent(
|
|
6470
|
+
},onToggle:()=>props.preferences.toggleSectionExpanded("subagents"),get children(){return [_$createComponent(Show33,{get when(){return model.parentID()
|
|
6707
6471
|
},children:(id)=>_$createComponent(McpBulkAction,{get api(){return props.api
|
|
6708
6472
|
},get interaction(){return props.interaction
|
|
6709
6473
|
},id:`${PLUGIN_ID}.subagents.parent`,get position(){return{section:navigationSection(),row:1,column:0
|
|
@@ -6726,7 +6490,7 @@ _$insert(_el$,_$createComponent(SectionFilter,{get api(){return props.api
|
|
|
6726
6490
|
}}),_el$2)
|
|
6727
6491
|
_$setProp(_el$2,"flexDirection","row")
|
|
6728
6492
|
_$setProp(_el$2,"flexWrap","wrap")
|
|
6729
|
-
_$insert(_el$2,_$createComponent(
|
|
6493
|
+
_$insert(_el$2,_$createComponent(For18,{get each(){return model.tabs()
|
|
6730
6494
|
},children:(value,index)=>_$createComponent(SectionTab,{get api(){return props.api
|
|
6731
6495
|
},get interaction(){return props.interaction
|
|
6732
6496
|
},id:`${PLUGIN_ID}.subagents.filter.${value}`,get position(){return{section:navigationSection(),row:4,column:index()
|
|
@@ -6737,7 +6501,7 @@ _$insert(_el$2,_$createComponent(For20,{get each(){return model.tabs()
|
|
|
6737
6501
|
},onActivate:()=>model.setMode(value)
|
|
6738
6502
|
})
|
|
6739
6503
|
}))
|
|
6740
|
-
_$insert(_el$,_$createComponent(
|
|
6504
|
+
_$insert(_el$,_$createComponent(Show33,{get when(){return model.filtered().length===0
|
|
6741
6505
|
},get children(){var _el$3=_$createElement("text")
|
|
6742
6506
|
_$insertNode(_el$3,_$createTextNode(`No matching subagents`))
|
|
6743
6507
|
_$effect((_$p)=>_$setProp(_el$3,"fg",props.api.theme.current.textMuted,_$p))
|
|
@@ -6778,13 +6542,36 @@ return _el$
|
|
|
6778
6542
|
|
|
6779
6543
|
|
|
6780
6544
|
|
|
6545
|
+
|
|
6546
|
+
|
|
6781
6547
|
function NativeTodoNotice(props){const icons=useIcons()
|
|
6782
|
-
|
|
6548
|
+
const state=()=>props.setup?.state(props.sessionID)
|
|
6549
|
+
const failed=()=>state()?.status==="error"
|
|
6550
|
+
const disabled=()=>state()?.enabled===false
|
|
6551
|
+
const message=()=>{if(failed())
|
|
6552
|
+
return state()?.error
|
|
6553
|
+
if(state()?.status==="loading"&&state()?.enabled===undefined)
|
|
6554
|
+
return "Checking native Todo configuration\u2026"
|
|
6555
|
+
if(disabled())
|
|
6556
|
+
return "Native OpenCode Todo is disabled. Enable it to let the built-in todowrite tool manage tasks."
|
|
6557
|
+
return "Native OpenCode Todo. Edit tasks through chat and todowrite."
|
|
6558
|
+
}
|
|
6559
|
+
return(()=>{var _el$=_$createElement("box"),_el$2=_$createElement("text"),_el$3=_$createTextNode(` `)
|
|
6783
6560
|
_$insertNode(_el$,_el$2)
|
|
6784
|
-
_$
|
|
6785
|
-
_$
|
|
6786
|
-
_$insert(_el
|
|
6787
|
-
_$
|
|
6561
|
+
_$insertNode(_el$2,_el$3)
|
|
6562
|
+
_$setProp(_el$2,"wrapMode","word")
|
|
6563
|
+
_$insert(_el$2,()=>icons.icon("info"),_el$3)
|
|
6564
|
+
_$insert(_el$2,message,null)
|
|
6565
|
+
_$insert(_el$,_$createComponent(Show34,{get when(){return _$memo(()=>!!props.setup)()&&(disabled()||failed())
|
|
6566
|
+
},get children(){return _$createComponent(SectionTab,{get api(){return props.api
|
|
6567
|
+
},get interaction(){return props.interaction
|
|
6568
|
+
},id:"opencode-navigator.todo.setup",get position(){return{section:props.navigationSection,row:2,column:0
|
|
6569
|
+
}},get label(){return failed()?"Retry Todo configuration":"Enable Todo\u2026"
|
|
6570
|
+
},selected:false,get disabled(){return state()?.status==="saving"
|
|
6571
|
+
},onActivate:()=>failed()?void props.setup?.refresh(props.sessionID):props.setup?.configure(props.sessionID)
|
|
6572
|
+
})
|
|
6573
|
+
}}),null)
|
|
6574
|
+
_$effect((_$p)=>_$setProp(_el$2,"fg",failed()?props.api.theme.current.warning:props.api.theme.current.textMuted,_$p))
|
|
6788
6575
|
return _el$
|
|
6789
6576
|
})()
|
|
6790
6577
|
}
|
|
@@ -6848,7 +6635,7 @@ _$insert(_el$5,priorityLabel,null)
|
|
|
6848
6635
|
_$effect((_$p)=>_$setProp(_el$4,"fg",priorityColor(),_$p))
|
|
6849
6636
|
return _el$4
|
|
6850
6637
|
}}),null)
|
|
6851
|
-
_$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()?
|
|
6638
|
+
_$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
|
|
6852
6639
|
_v$!==_p$.e&&(_p$.e=_$setProp(_el$2,"fg",_v$,_p$.e))
|
|
6853
6640
|
_v$2!==_p$.t&&(_p$.t=_$setProp(_el$3,"fg",_v$2,_p$.t))
|
|
6854
6641
|
_v$3!==_p$.a&&(_p$.a=_$setProp(_el$3,"attributes",_v$3,_p$.a))
|
|
@@ -6859,13 +6646,13 @@ return _el$
|
|
|
6859
6646
|
})()
|
|
6860
6647
|
}
|
|
6861
6648
|
function TodoContents(props){const navigationSection=()=>props.navigationSection??1
|
|
6862
|
-
const tabsRow=()=>props.managed?3:2
|
|
6649
|
+
const tabsRow=()=>(props.managed?3:2) + (props.navigationOffset??0)
|
|
6863
6650
|
return(()=>{var _el$=_$createElement("box"),_el$2=_$createElement("box")
|
|
6864
6651
|
_$insertNode(_el$,_el$2)
|
|
6865
6652
|
_$setProp(_el$,"gap",1)
|
|
6866
6653
|
_$setProp(_el$2,"flexDirection","row")
|
|
6867
6654
|
_$setProp(_el$2,"flexWrap","wrap")
|
|
6868
|
-
_$insert(_el$2,_$createComponent(
|
|
6655
|
+
_$insert(_el$2,_$createComponent(For19,{each:["all","active","finished"],children:(value,index)=>_$createComponent(SectionTab,{get api(){return props.api
|
|
6869
6656
|
},get interaction(){return props.interaction
|
|
6870
6657
|
},id:`${PLUGIN_ID}.todo.filter.${value}`,get position(){return{section:navigationSection(),row:tabsRow(),column:index()
|
|
6871
6658
|
}},get label(){return value[0].toUpperCase() + value.slice(1)
|
|
@@ -6881,7 +6668,7 @@ _$insert(_el$,_$createComponent(Show36,{get when(){return props.view.rows.length
|
|
|
6881
6668
|
},get children(){return _$createComponent(SidebarRowList,{get api(){return props.api
|
|
6882
6669
|
},get interaction(){return props.interaction
|
|
6883
6670
|
},get density(){return props.density
|
|
6884
|
-
},get children(){return _$createComponent(
|
|
6671
|
+
},get children(){return _$createComponent(For19,{get each(){return props.visibility.visible()
|
|
6885
6672
|
},children:(row,index)=>{const startsGroup=()=>index()===0||props.visibility.visible()[index()-1].group!==row.group
|
|
6886
6673
|
return(()=>{var _el$3=_$createElement("box")
|
|
6887
6674
|
_$insert(_el$3,_$createComponent(Show36,{get when(){return startsGroup()
|
|
@@ -6947,7 +6734,9 @@ const icons=useIcons()
|
|
|
6947
6734
|
const unavailable=()=>hostCapabilityUnavailable(props.api,"todo")
|
|
6948
6735
|
const managed=()=>("guidance" in props.controller)?props.controller:undefined
|
|
6949
6736
|
const native=()=>("source" in props.controller)&&props.controller.source==="native"
|
|
6950
|
-
const
|
|
6737
|
+
const setup=()=>("setup" in props.controller)?props.controller.setup:undefined
|
|
6738
|
+
const setupState=()=>setup()?.state(props.sessionID)
|
|
6739
|
+
const [mode,setMode]=createSignal38("all")
|
|
6951
6740
|
const targetKey=createMemo18(()=>props.controller.target?.(props.sessionID).key??props.sessionID)
|
|
6952
6741
|
createEffect21(()=>{targetKey()
|
|
6953
6742
|
setMode("all")
|
|
@@ -6961,8 +6750,9 @@ targetKey()
|
|
|
6961
6750
|
if(unavailable())
|
|
6962
6751
|
return
|
|
6963
6752
|
const deactivate=untrack10(()=>props.controller.activate?.(sessionID)??(()=>{}))
|
|
6964
|
-
|
|
6753
|
+
onCleanup25(deactivate)
|
|
6965
6754
|
untrack10(()=>void props.controller.refresh(sessionID).catch(()=>{}))
|
|
6755
|
+
untrack10(()=>void setup()?.refresh(sessionID).catch(()=>{}))
|
|
6966
6756
|
})
|
|
6967
6757
|
const navigationSection=()=>props.navigationSection??1
|
|
6968
6758
|
return _$createComponent(Section,{get api(){return props.api
|
|
@@ -6970,6 +6760,7 @@ return _$createComponent(Section,{get api(){return props.api
|
|
|
6970
6760
|
},sectionId:`${PLUGIN_ID}.section.todo`,get navigationSection(){return navigationSection()
|
|
6971
6761
|
},title:"TODO",section:"todo",get summary(){return _$memo(()=>!!(unavailable()||managed()?.missing(props.sessionID)))()?"\u2014":`${view().counts.completed}/${list().length}`
|
|
6972
6762
|
},get headerAction(){return native()?{id:`${PLUGIN_ID}.todo.refresh`,label:()=>`${icons.icon("retry")} Refresh`,disabled:()=>state().status==="loading"||state().status==="refreshing",onActivate:()=>{props.controller.refresh(props.sessionID).catch(()=>{})
|
|
6763
|
+
setup()?.refresh(props.sessionID).catch(()=>{})
|
|
6973
6764
|
}}:undefined
|
|
6974
6765
|
},get open(){return props.preferences.expanded().todo
|
|
6975
6766
|
},onToggle:()=>props.preferences.toggleSectionExpanded("todo"),get children(){return _$createComponent(Show38,{get when(){return unavailable()
|
|
@@ -6977,7 +6768,10 @@ return _$createComponent(Section,{get api(){return props.api
|
|
|
6977
6768
|
_$setProp(_el$,"gap",1)
|
|
6978
6769
|
_$insert(_el$,_$createComponent(Show38,{get when(){return native()
|
|
6979
6770
|
},get children(){return _$createComponent(NativeTodoNotice,{get api(){return props.api
|
|
6980
|
-
},get
|
|
6771
|
+
},get setup(){return setup()
|
|
6772
|
+
},get sessionID(){return props.sessionID
|
|
6773
|
+
},get interaction(){return props.interaction
|
|
6774
|
+
},get navigationSection(){return navigationSection()
|
|
6981
6775
|
}})
|
|
6982
6776
|
}}),null)
|
|
6983
6777
|
_$insert(_el$,_$createComponent(Show38,{get when(){return managed()?.guidance(props.sessionID).available
|
|
@@ -7001,6 +6795,7 @@ _$insert(_el$,_$createComponent(Show38,{get when(){return managed()?.missing(pro
|
|
|
7001
6795
|
},setMode,get view(){return view()
|
|
7002
6796
|
},visibility,get density(){return props.preferences.rowDensity?.()??"compact"
|
|
7003
6797
|
},get managed(){return Boolean(managed())
|
|
6798
|
+
},get navigationOffset(){return setupState()?.enabled===false||setupState()?.status==="error"?1:0
|
|
7004
6799
|
}})
|
|
7005
6800
|
}})
|
|
7006
6801
|
},get children(){var _el$2=_$createElement("text"),_el$3=_$createTextNode(` Navigator Todo needs a separate OpenCode 2 server plugin. See the README setup steps and restart OpenCode.`)
|
|
@@ -7025,7 +6820,7 @@ return _el$4
|
|
|
7025
6820
|
}
|
|
7026
6821
|
function SidebarContent(props){const sections=props.preferences.sections
|
|
7027
6822
|
const visibleSections=createMemo19(()=>props.preferences.sectionOrder().filter((section)=>sections()[section]&&supportsSidebarSection(props.api,section)))
|
|
7028
|
-
|
|
6823
|
+
onCleanup26(()=>props.interaction.setContentRoot(undefined))
|
|
7029
6824
|
return _$createComponent(ToolbarProvider,{get api(){return props.api
|
|
7030
6825
|
},get preferences(){return props.preferences
|
|
7031
6826
|
},get skills(){return props.skills
|
|
@@ -7041,7 +6836,7 @@ event.stopPropagation()
|
|
|
7041
6836
|
props.interaction.leave()
|
|
7042
6837
|
})
|
|
7043
6838
|
_$insert(_el$,_$createComponent(SidebarToolbar,props),null)
|
|
7044
|
-
_$insert(_el$,_$createComponent(
|
|
6839
|
+
_$insert(_el$,_$createComponent(For20,{get each(){return visibleSections()
|
|
7045
6840
|
},children:(section,index)=>_$createComponent(SectionBoundary,{get api(){return props.api
|
|
7046
6841
|
},get divided(){return index()<visibleSections().length-1
|
|
7047
6842
|
},get children(){return _$createComponent(Switch,{get children(){return [_$createComponent(Match,{when:section==="limits",get children(){return props.limitsSection(index() + 1)
|
|
@@ -7085,7 +6880,7 @@ const params="params" in route?route.params:undefined
|
|
|
7085
6880
|
if(typeof params?.sessionID!=="string")
|
|
7086
6881
|
return
|
|
7087
6882
|
const current=props.controller.target()
|
|
7088
|
-
|
|
6883
|
+
onCleanup27(()=>props.controller.deactivate(current))
|
|
7089
6884
|
untrack11(()=>void props.controller.activate(current).catch(()=>{}))
|
|
7090
6885
|
})
|
|
7091
6886
|
return _$createElement("box")
|
|
@@ -7125,7 +6920,7 @@ const settingsId=`${PLUGIN_ID}.settings`
|
|
|
7125
6920
|
const settings=useSidebarItem(props.api,props.interaction,{id:settingsId,position:{section:0,row:0,column:0
|
|
7126
6921
|
},activate:()=>openSettings(props.api,props.preferences,undefined,props.mcp,props.skills)
|
|
7127
6922
|
},()=>theme().textMuted,"control")
|
|
7128
|
-
|
|
6923
|
+
onCleanup28(()=>props.interaction.setTitleRoot(undefined))
|
|
7129
6924
|
return(()=>{var _el$=_$createElement("box"),_el$2=_$createElement("box"),_el$3=_$createElement("box")
|
|
7130
6925
|
_$insertNode(_el$,_el$2)
|
|
7131
6926
|
_$use((node)=>props.interaction.setTitleRoot(node),_el$)
|
|
@@ -7210,15 +7005,15 @@ await options.accountSource.refresh(model)
|
|
|
7210
7005
|
if(!disposed&&target===targetKey())
|
|
7211
7006
|
await options.controller.refresh()
|
|
7212
7007
|
}
|
|
7213
|
-
createEffect23(on2(interval,(milliseconds)=>{
|
|
7008
|
+
createEffect23(on2(interval,(milliseconds)=>{onCleanup29(schedule(()=>void refresh().catch(()=>{}),milliseconds))
|
|
7214
7009
|
}))
|
|
7215
|
-
|
|
7010
|
+
onCleanup29(()=>{disposed=true
|
|
7216
7011
|
})
|
|
7217
7012
|
}
|
|
7218
7013
|
function LimitsPersistence(props){createLimitsRefresh(props)
|
|
7219
7014
|
return _$createElement("box")
|
|
7220
7015
|
}
|
|
7221
|
-
function bindNavigatorAbout(api,status,updates,notes){const dispose=registerNavigatorAboutServices(api,{navigatorVersion:"0.
|
|
7016
|
+
function bindNavigatorAbout(api,status,updates,notes){const dispose=registerNavigatorAboutServices(api,{navigatorVersion:"0.26.0",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()
|
|
7222
7017
|
if(target)
|
|
7223
7018
|
updates.navigator(target,dialogs)
|
|
7224
7019
|
},changelog:async ()=>notes.parseChangelog(await notes.readBundledChangelog())
|
|
@@ -7241,11 +7036,11 @@ const candidates=context.data.location.skill.list({directory})?.filter((skill)=>
|
|
|
7241
7036
|
const id=candidates.length===1?candidates[0].id:undefined
|
|
7242
7037
|
if(route.type!=="session"||session?.location.directory!==directory||!id)
|
|
7243
7038
|
return{data:false}
|
|
7244
|
-
await context.client.session.skill({sessionID:route.sessionID,id},{signal:options.signal})
|
|
7039
|
+
await context.client.experimental.session.skill({sessionID:route.sessionID,id},{signal:options.signal})
|
|
7245
7040
|
return{data:true}}},mcp:{async status(input,options={}){const response=await context.client.mcp.list(location(input),{signal:options.signal})
|
|
7246
7041
|
const data=Object.fromEntries(response.data.map((server)=>[server.name,server.status]))
|
|
7247
|
-
return{data}},async connect(input,options={}){await context.client.mcp.connect({server:input.name,...location(input)},{signal:options.signal})
|
|
7248
|
-
return{data:undefined}},async disconnect(input,options={}){await context.client.mcp.disconnect({server:input.name,...location(input)},{signal:options.signal})
|
|
7042
|
+
return{data}},async connect(input,options={}){await context.client.experimental.mcp.connect({server:input.name,...location(input)},{signal:options.signal})
|
|
7043
|
+
return{data:undefined}},async disconnect(input,options={}){await context.client.experimental.mcp.disconnect({server:input.name,...location(input)},{signal:options.signal})
|
|
7249
7044
|
return{data:undefined}}}}}}
|
|
7250
7045
|
var TERMINAL_EVENTS=new Set(["session.execution.succeeded","session.execution.failed","session.execution.interrupted"])
|
|
7251
7046
|
function executionStatus(name,event){const sessionID=event.data.sessionID
|
|
@@ -7265,7 +7060,7 @@ return ["session.status","session.retry.scheduled",...executions]
|
|
|
7265
7060
|
if(name==="session.idle")
|
|
7266
7061
|
return ["session.idle",...executions.slice(1)]
|
|
7267
7062
|
if(name==="session.error")
|
|
7268
|
-
return ["session.execution.failed"]
|
|
7063
|
+
return ["session.execution.failed","session.execution.interrupted"]
|
|
7269
7064
|
if(name==="mcp.tools.changed")
|
|
7270
7065
|
return ["mcp.status.changed","mcp.resources.changed"]
|
|
7271
7066
|
if(["session.created","session.deleted","server.connected","installation.update-available"].includes(name))
|
|
@@ -7310,7 +7105,7 @@ if(name==="session.deleted"){emit({sessionID})
|
|
|
7310
7105
|
return
|
|
7311
7106
|
}
|
|
7312
7107
|
if(name==="session.error"){const error=data.error
|
|
7313
|
-
emit({sessionID,error:error&&{name:error.type??"Error",data:{message:error.message??"Session error"}}})
|
|
7108
|
+
emit({sessionID,error:event.type==="session.execution.interrupted"?{name:"MessageAbortedError",data:{message:"Session aborted"}}:error&&{name:error.type??"Error",data:{message:error.message??"Session error"}}})
|
|
7314
7109
|
return
|
|
7315
7110
|
}
|
|
7316
7111
|
const info=context.data.session.get(sessionID)
|
|
@@ -7354,7 +7149,7 @@ context.keymap.dispatch(command.id)
|
|
|
7354
7149
|
context.renderer.keyInput.on("keypress",onKeypress)
|
|
7355
7150
|
const keymap={registerLayer(layer){const id=++sequence
|
|
7356
7151
|
const owner=getOwner()
|
|
7357
|
-
const [active,setActive]=
|
|
7152
|
+
const [active,setActive]=createSignal39(true)
|
|
7358
7153
|
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)
|
|
7359
7154
|
}))
|
|
7360
7155
|
}
|
|
@@ -7399,7 +7194,7 @@ cleanups.clear()
|
|
|
7399
7194
|
context.renderer.keyInput.off("keypress",onKeypress)
|
|
7400
7195
|
}}}
|
|
7401
7196
|
|
|
7402
|
-
function createV2SessionAdapter(context){const [retryDetails,setRetryDetails]=
|
|
7197
|
+
function createV2SessionAdapter(context){const [retryDetails,setRetryDetails]=createSignal40({})
|
|
7403
7198
|
const projections=new WeakMap
|
|
7404
7199
|
function normalize(info){const directory=info.location.directory
|
|
7405
7200
|
const workspaceID=context.location?.directory===directory?context.location.workspaceID:undefined
|
|
@@ -7469,9 +7264,9 @@ function DialogPrompt(props){return _$createComponent(SingleLinePrompt,_$mergePr
|
|
|
7469
7264
|
}},props))
|
|
7470
7265
|
}
|
|
7471
7266
|
function DialogConfirm(props){let active=true
|
|
7472
|
-
|
|
7267
|
+
onCleanup30(()=>{active=false
|
|
7473
7268
|
})
|
|
7474
|
-
|
|
7269
|
+
async function confirm(){const confirmed=await context.ui.dialog.confirm({title:props.title,message:props.message
|
|
7475
7270
|
})
|
|
7476
7271
|
if(!active)
|
|
7477
7272
|
return
|
|
@@ -7479,6 +7274,10 @@ if(confirmed)
|
|
|
7479
7274
|
props.onConfirm?.()
|
|
7480
7275
|
else
|
|
7481
7276
|
props.onCancel?.()
|
|
7277
|
+
}
|
|
7278
|
+
onMount7(()=>{confirm().catch(()=>{if(active)
|
|
7279
|
+
props.onCancel?.()
|
|
7280
|
+
})
|
|
7482
7281
|
})
|
|
7483
7282
|
return _$createElement("box")
|
|
7484
7283
|
}
|
|
@@ -7534,7 +7333,7 @@ context.ui.router.navigate({type:"plugin",name,data:params})
|
|
|
7534
7333
|
},attention:context.attention,lifecycle:{signal:controller.signal,onDispose},slots:createV2Slots(context,(dispose)=>{onDispose(dispose)
|
|
7535
7334
|
})
|
|
7536
7335
|
}
|
|
7537
|
-
setHostCapabilities(api,{todo:true,lsp:false,titleVisibility:false,permissionMode:false,commandsReachableOnly:true
|
|
7336
|
+
setHostCapabilities(api,{todo:true,lsp:false,titleVisibility:false,permissionMode:false,commandsReachableOnly:true,nativeTodo:true
|
|
7538
7337
|
})
|
|
7539
7338
|
bindToolbarActionState(context,api)
|
|
7540
7339
|
return{api,async dispose(){controller.abort()
|
|
@@ -7648,12 +7447,18 @@ const session=route.type==="session"&&context.data.session.get(route.sessionID)
|
|
|
7648
7447
|
const actual=list(target).find((item)=>item.id===skill.id&&item.location===skill.location)
|
|
7649
7448
|
if(route.type!=="session"||!session||session.location.directory!==target.routing.directory||!actual?.id)
|
|
7650
7449
|
throw new Error("Skill target changed; select the source again")
|
|
7651
|
-
await context.client.session.skill({sessionID:route.sessionID,id:actual.id},{signal})
|
|
7450
|
+
await context.client.experimental.session.skill({sessionID:route.sessionID,id:actual.id},{signal})
|
|
7652
7451
|
return !signal.aborted
|
|
7653
7452
|
}}}
|
|
7654
7453
|
function createV2SubagentSource(context,api){return{list:(parentID)=>context.data.session.list().filter((item)=>item.parentID===parentID).flatMap((item)=>{const value=api.state.session.get(item.id)
|
|
7655
7454
|
return value?[value]:[]
|
|
7656
|
-
}),status:(id)=>api.state.session.status(id)??{type:"idle"},
|
|
7455
|
+
}),status:(id)=>api.state.session.status(id)??{type:"idle"},startedAt(id){if(context.data.session.status(id)!=="running")
|
|
7456
|
+
return
|
|
7457
|
+
const time=context.data.session.get(id)?.time
|
|
7458
|
+
if(!time?.busy||time.idle!==undefined&&time.idle>=time.busy)
|
|
7459
|
+
return
|
|
7460
|
+
return time.busy
|
|
7461
|
+
},async refresh(parentID,signal){signal.throwIfAborted()
|
|
7657
7462
|
let cursor
|
|
7658
7463
|
do{const page=await context.client.session.list(cursor?{cursor,limit:100}:{parentID,limit:100},{signal
|
|
7659
7464
|
})
|
|
@@ -7675,11 +7480,15 @@ const subagents=createSubagentController(api,{source:nativeSources?.subagents
|
|
|
7675
7480
|
})
|
|
7676
7481
|
const skills=createSkillController(api,nativeSources?.skills)
|
|
7677
7482
|
const preferences=createPreferencesController(api,config,createPreferencesStore(api.state.path.state),configured)
|
|
7483
|
+
if(hostContext){const setupPath=import.meta.url.includes("/dist/tui.js")?"./native-todo-setup.js":"../native-todo-setup"
|
|
7484
|
+
const setup=await import(setupPath)
|
|
7485
|
+
todo.setup=setup.createOpenCodeV2TodoSetup(hostContext,api,preferences,todo.target)
|
|
7486
|
+
}
|
|
7678
7487
|
const limitsPath=import.meta.url.includes("/dist/tui.js")?"./provider-limits.js":"../provider-limits"
|
|
7679
7488
|
const limitsModule=await import(limitsPath)
|
|
7680
7489
|
const LimitsSection=limitsModule.ProviderLimitsSection
|
|
7681
7490
|
const{controller:limits,codex,accountSource,selectModel,modelSelection
|
|
7682
|
-
}=limitsModule.createProviderQuotaIntegration(api,preferences,"0.
|
|
7491
|
+
}=limitsModule.createProviderQuotaIntegration(api,preferences,"0.26.0",hostContext)
|
|
7683
7492
|
const mcp=createMcpController(api,preferences.persistMcp,preferences,nativeSources?.mcp)
|
|
7684
7493
|
const interaction=createSidebarInteraction(api,()=>openKeyboardHelp(api,preferences.lspIconStyle,preferences.cornerFont,sidebarShortcutActions(api)))
|
|
7685
7494
|
const startup=createStartupSessionController(api,preferences)
|
|
@@ -7708,7 +7517,7 @@ api.slots.register({order:100,slots:{app(){return _$createComponent(IconProvider
|
|
|
7708
7517
|
},interaction,skills,subagents,mcp
|
|
7709
7518
|
}),_$createComponent(FirstRunWizardPersistence,{api,preferences
|
|
7710
7519
|
}),_$createComponent(StartupSessionBinding,{api,controller:startup
|
|
7711
|
-
}),_$createComponent(UpgradeNotesBinding,{api,preferences,version:"0.
|
|
7520
|
+
}),_$createComponent(UpgradeNotesBinding,{api,preferences,version:"0.26.0"
|
|
7712
7521
|
}),_$createComponent(McpPersistence,{api,controller:mcp
|
|
7713
7522
|
})]
|
|
7714
7523
|
}})
|
|
@@ -7742,13 +7551,13 @@ return result.data?.type==="text"?result.data.content:undefined
|
|
|
7742
7551
|
const updateServices=await loadNavigatorUpdates()
|
|
7743
7552
|
const{createVersionStatus,createVersionUpdateActions,createOpenCodeV1VersionUpdater
|
|
7744
7553
|
}=updateServices
|
|
7745
|
-
const versionStatus=createVersionStatus(api,"0.
|
|
7746
|
-
const versionUpdates=createVersionUpdateActions(api,versionStatus,createOpenCodeV1VersionUpdater(api,meta),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.
|
|
7554
|
+
const versionStatus=createVersionStatus(api,"0.26.0")
|
|
7555
|
+
const versionUpdates=createVersionUpdateActions(api,versionStatus,createOpenCodeV1VersionUpdater(api,meta),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.26.0"))
|
|
7747
7556
|
bindNavigatorAbout(api,versionStatus,versionUpdates,updateServices)
|
|
7748
7557
|
api.slots.register({order:90,slots:{sidebar_footer(_context,props){return _$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
|
|
7749
7558
|
},get multilineCorners(){return preferences.cornerFont
|
|
7750
7559
|
},get children(){return _$createComponent(VersionFooter,{api,get sessionID(){return props.session_id
|
|
7751
|
-
},navigatorVersion:"0.
|
|
7560
|
+
},navigatorVersion:"0.26.0",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
|
|
7752
7561
|
},get onNavigatorUpdate(){return versionUpdates.navigator
|
|
7753
7562
|
}})
|
|
7754
7563
|
}})
|
|
@@ -7765,8 +7574,8 @@ return new TextDecoder().decode(await context.client.file.read({location:context
|
|
|
7765
7574
|
const updateServices=await loadNavigatorUpdates()
|
|
7766
7575
|
const{createVersionStatus,createVersionUpdateActions,createOpenCodeV2VersionUpdater
|
|
7767
7576
|
}=updateServices
|
|
7768
|
-
const versionStatus=createVersionStatus(adapter.api,"0.
|
|
7769
|
-
const versionUpdates=createVersionUpdateActions(adapter.api,versionStatus,createOpenCodeV2VersionUpdater(context),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.
|
|
7577
|
+
const versionStatus=createVersionStatus(adapter.api,"0.26.0")
|
|
7578
|
+
const versionUpdates=createVersionUpdateActions(adapter.api,versionStatus,createOpenCodeV2VersionUpdater(context),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.26.0"))
|
|
7770
7579
|
bindNavigatorAbout(adapter.api,versionStatus,versionUpdates,updateServices)
|
|
7771
7580
|
const disposeFooter=context.ui.slot({append:"sidebar.footer",render:()=>_$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
|
|
7772
7581
|
},get multilineCorners(){return preferences.cornerFont
|
|
@@ -7774,7 +7583,7 @@ const disposeFooter=context.ui.slot({append:"sidebar.footer",render:()=>_$create
|
|
|
7774
7583
|
_$setProp(_el$,"flexDirection","row")
|
|
7775
7584
|
_$setProp(_el$,"justifyContent","space-between")
|
|
7776
7585
|
_$insert(_el$,_$createComponent(VersionSummary,{get api(){return adapter.api
|
|
7777
|
-
},navigatorVersion:"0.
|
|
7586
|
+
},navigatorVersion:"0.26.0",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
|
|
7778
7587
|
},get onNavigatorUpdate(){return versionUpdates.navigator
|
|
7779
7588
|
}}),null)
|
|
7780
7589
|
_$insert(_el$,_$createComponent(SettingsFooterButton,{get api(){return adapter.api
|