opencode-navigator 0.20.0 → 0.21.1
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 +14 -0
- package/PROVIDERS.md +92 -0
- package/README.md +56 -26
- package/dist/provider-limits.js +489 -187
- package/dist/rpc.js +6 -1
- package/dist/server.js +589 -1
- package/dist/tui.js +124 -79
- package/package.json +13 -10
- package/scripts/update-local-snapshot.mjs +14 -12
package/dist/tui.js
CHANGED
|
@@ -3,7 +3,7 @@ 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,useContext as useContext2,createEffect as createEffect2,splitProps,untrack,splitProps as splitProps2,For,createEffect as createEffect3,onCleanup as onCleanup2,createEffect as createEffect4,Show,splitProps as splitProps3,createSignal as createSignal4,createSignal as createSignal5,createSignal as createSignal6,onCleanup as onCleanup3,batch,createSignal as createSignal8,createSignal as createSignal7,createEffect as createEffect5,createSignal as createSignal9,onCleanup as onCleanup4,createSignal as createSignal10,createSignal as createSignal11,Index,createSignal as createSignal12,onCleanup as onCleanup5,createEffect as createEffect7,onCleanup as onCleanup7,batch as batch2,createEffect as createEffect6,createMemo,createSignal as createSignal13,onCleanup as onCleanup6,onMount,For as For2,For as For3,Show as Show2,createMemo as createMemo2,Show as Show3,createSignal as createSignal14,onCleanup as onCleanup8,For as For4,For as For5,For as For8,createMemo as createMemo4,onMount as onMount3,For as For7,createMemo as createMemo3,onMount as onMount2,Show as Show5,createEffect as createEffect8,createSignal as createSignal15,onCleanup as onCleanup9,Show as Show4,For as For6,For as For9,createEffect as createEffect9,createMemo as createMemo5,onCleanup as onCleanup10,createEffect as createEffect10,createMemo as createMemo6,untrack as untrack2,For as For10,createEffect as createEffect11,createMemo as createMemo8,onCleanup as onCleanup11,onMount as onMount4,createMemo as createMemo7,Show as Show6,onCleanup as onCleanup12,createEffect as createEffect12,onCleanup as onCleanup13,createSignal as createSignal16,createMemo as createMemo9,createEffect as createEffect13,onCleanup as onCleanup14,onMount as onMount5,onCleanup as onCleanup15,onMount as onMount6,For as For11,createSignal as createSignal17,createSignal as createSignal18,Show as Show7,createSignal as createSignal20,createSignal as createSignal19,onCleanup as onCleanup16,For as For12,Show as Show10,createMemo as createMemo11,createComputed,createMemo as createMemo10,createSignal as createSignal21,untrack as untrack3,Show as Show8,createComputed as createComputed2,untrack as untrack4,Show as Show9,createEffect as createEffect14,createSignal as createSignal22,createMemo as createMemo13,createSignal as createSignal25,createMemo as createMemo12,For as For13,Show as Show14,Show as Show11,Show as Show12,createSignal as createSignal23,createContext as createContext3,useContext as useContext3,Show as Show13,createSignal as createSignal24,onCleanup as onCleanup17,
|
|
6
|
+
import {createSignal as createSignal2,createSignal,createEffect,onCleanup,createContext,useContext,createContext as createContext2,createSignal as createSignal3,useContext as useContext2,createEffect as createEffect2,splitProps,untrack,splitProps as splitProps2,For,createEffect as createEffect3,onCleanup as onCleanup2,createEffect as createEffect4,Show,splitProps as splitProps3,createSignal as createSignal4,createSignal as createSignal5,createSignal as createSignal6,onCleanup as onCleanup3,batch,createSignal as createSignal8,createSignal as createSignal7,createEffect as createEffect5,createSignal as createSignal9,onCleanup as onCleanup4,createSignal as createSignal10,createSignal as createSignal11,Index,createSignal as createSignal12,onCleanup as onCleanup5,createEffect as createEffect7,onCleanup as onCleanup7,batch as batch2,createEffect as createEffect6,createMemo,createSignal as createSignal13,onCleanup as onCleanup6,onMount,For as For2,For as For3,Show as Show2,createMemo as createMemo2,Show as Show3,createSignal as createSignal14,onCleanup as onCleanup8,For as For4,For as For5,For as For8,createMemo as createMemo4,onMount as onMount3,For as For7,createMemo as createMemo3,onMount as onMount2,Show as Show5,createEffect as createEffect8,createSignal as createSignal15,onCleanup as onCleanup9,Show as Show4,For as For6,For as For9,createEffect as createEffect9,createMemo as createMemo5,onCleanup as onCleanup10,createEffect as createEffect10,createMemo as createMemo6,untrack as untrack2,For as For10,createEffect as createEffect11,createMemo as createMemo8,onCleanup as onCleanup11,onMount as onMount4,createMemo as createMemo7,Show as Show6,onCleanup as onCleanup12,createEffect as createEffect12,onCleanup as onCleanup13,createSignal as createSignal16,createMemo as createMemo9,createEffect as createEffect13,onCleanup as onCleanup14,onMount as onMount5,onCleanup as onCleanup15,onMount as onMount6,For as For11,createSignal as createSignal17,createSignal as createSignal18,Show as Show7,createSignal as createSignal20,createSignal as createSignal19,onCleanup as onCleanup16,For as For12,Show as Show10,createMemo as createMemo11,createComputed,createMemo as createMemo10,createSignal as createSignal21,untrack as untrack3,Show as Show8,createComputed as createComputed2,untrack as untrack4,Show as Show9,createEffect as createEffect14,createSignal as createSignal22,createMemo as createMemo13,createSignal as createSignal25,createMemo as createMemo12,For as For13,Show as Show14,Show as Show11,Show as Show12,createSignal as createSignal23,createContext as createContext3,useContext as useContext3,Show as Show13,createSignal as createSignal24,onCleanup as onCleanup17,Show as Show17,createSignal as createSignal26,untrack as untrack5,createSignal as createSignal27,createEffect as createEffect15,For as For14,createSignal as createSignal28,onMount as onMount7,Show as Show15,Show as Show16,For as For15,Show as Show19,createMemo as createMemo15,Show as Show18,createMemo as createMemo14,createSignal as createSignal29,createEffect as createEffect16,onCleanup as onCleanup18,For as For20,Match,Switch,createMemo as createMemo19,onCleanup as onCleanup22,For as For16,Show as Show20,createSignal as createSignal30,createEffect as createEffect17,createMemo as createMemo16,onCleanup as onCleanup19,untrack as untrack6,For as For18,Show as Show23,createEffect as createEffect18,createMemo as createMemo17,createSignal as createSignal31,onCleanup as onCleanup20,untrack as untrack7,For as For17,Show as Show22,Show as Show21,Show as Show27,createEffect as createEffect19,createMemo as createMemo18,createSignal as createSignal32,onCleanup as onCleanup21,untrack as untrack8,For as For19,Show as Show25,Show as Show24,Show as Show26,createEffect as createEffect20,createMemo as createMemo20,onCleanup as onCleanup23,untrack as untrack9,Show as Show28,createMemo as createMemo21,onCleanup as onCleanup24,createEffect as createEffect21,onCleanup as onCleanup25,untrack as untrack10,createSignal as createSignal33,onCleanup as onCleanup26,onMount as onMount8} 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"
|
|
@@ -1083,6 +1083,36 @@ function McpErrorDialog(props){return _$createComponent(SelectionMenu,{get api()
|
|
|
1083
1083
|
},onSelect:()=>{}})
|
|
1084
1084
|
}
|
|
1085
1085
|
|
|
1086
|
+
function codexBindingKey(target){return JSON.stringify([target.providerID,target.connectionID?{connectionID:target.connectionID}:null])
|
|
1087
|
+
}
|
|
1088
|
+
function legacyKey(key){try{const value=JSON.parse(key)
|
|
1089
|
+
return Array.isArray(value)&&value.length===2&&value.every((part)=>typeof part==="string"&&part)?value:undefined
|
|
1090
|
+
} catch{return
|
|
1091
|
+
}}
|
|
1092
|
+
function migrateCodexAccountBindings(value){if(!value||typeof value!=="object"||Array.isArray(value))
|
|
1093
|
+
return{}
|
|
1094
|
+
return Object.fromEntries(Object.entries(value).filter(([key,account])=>key&&typeof account==="string"&&account.trim()))
|
|
1095
|
+
}
|
|
1096
|
+
function codexBindingAccount(bindings,target,modelID){const confirmed=bindings[codexBindingKey(target)]
|
|
1097
|
+
if(confirmed||target.connectionID)
|
|
1098
|
+
return confirmed
|
|
1099
|
+
const legacy=Object.entries(bindings).filter(([key])=>legacyKey(key)?.[0]===target.providerID)
|
|
1100
|
+
const accounts=new Set(legacy.map(([,account])=>account))
|
|
1101
|
+
if(accounts.size===1)
|
|
1102
|
+
return [...accounts][0]
|
|
1103
|
+
return modelID?bindings[JSON.stringify([target.providerID,modelID])]:undefined
|
|
1104
|
+
}
|
|
1105
|
+
function changeCodexBinding(current,target,accountID){const next=migrateCodexAccountBindings(current)
|
|
1106
|
+
if(!target.connectionID){for(const key of Object.keys(next)){if(legacyKey(key)?.[0]===target.providerID)
|
|
1107
|
+
delete next[key]
|
|
1108
|
+
}}
|
|
1109
|
+
const key=codexBindingKey(target)
|
|
1110
|
+
if(accountID)
|
|
1111
|
+
next[key]=accountID
|
|
1112
|
+
else
|
|
1113
|
+
delete next[key]
|
|
1114
|
+
return next
|
|
1115
|
+
}
|
|
1086
1116
|
function assignGroup(groups,key,value){const next={...groups}
|
|
1087
1117
|
if(!key)
|
|
1088
1118
|
return next
|
|
@@ -1237,11 +1267,10 @@ return server.trim()&&group?[[server,group]]:[]
|
|
|
1237
1267
|
}))
|
|
1238
1268
|
}
|
|
1239
1269
|
var parseSkillGroups=parseMcpServerGroups
|
|
1240
|
-
var parseCodexAccountBindings=parseMcpServerGroups
|
|
1241
1270
|
function parsePendingResetAttempt(value){const input=record(value)
|
|
1242
|
-
if(!input||typeof input.providerID!=="string"||typeof input.modelID!=="string"||typeof input.accountID!=="string"||typeof input.idempotencyKey!=="string"||!/^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$/iu.test(input.idempotencyKey)||typeof input.createdAt!=="number"||!Number.isFinite(input.createdAt)||input.creditID!==undefined&&typeof input.creditID!=="string")
|
|
1271
|
+
if(!input||typeof input.providerID!=="string"||typeof input.modelID!=="string"||typeof input.accountID!=="string"||typeof input.idempotencyKey!=="string"||!/^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$/iu.test(input.idempotencyKey)||typeof input.createdAt!=="number"||!Number.isFinite(input.createdAt)||input.creditID!==undefined&&typeof input.creditID!=="string"||input.connectionID!==undefined&&(typeof input.connectionID!=="string"||!input.connectionID))
|
|
1243
1272
|
return
|
|
1244
|
-
return{providerID:input.providerID,modelID:input.modelID,accountID:input.accountID,idempotencyKey:input.idempotencyKey,createdAt:input.createdAt,...input.creditID&&{creditID:input.creditID}}}
|
|
1273
|
+
return{providerID:input.providerID,modelID:input.modelID,accountID:input.accountID,idempotencyKey:input.idempotencyKey,createdAt:input.createdAt,...input.creditID&&{creditID:input.creditID},...input.connectionID&&{connectionID:input.connectionID}}}
|
|
1245
1274
|
function parseWorkspaceProfiles(value){return Object.fromEntries(Object.entries(record(value)??{}).flatMap(([layout,rawMcp])=>{const layoutName=layout.trim().slice(0,64)
|
|
1246
1275
|
const mcpName=typeof rawMcp==="string"?rawMcp.trim().slice(0,64):""
|
|
1247
1276
|
return layoutName&&mcpName?[[layoutName,mcpName]]:[]
|
|
@@ -1276,7 +1305,7 @@ const recentSkills=parseRecentSkills(userInput?.recentSkills)
|
|
|
1276
1305
|
const recentQuickActions=parseRecentQuickActions(userInput?.recentQuickActions)
|
|
1277
1306
|
const mcpServerGroups=parseMcpServerGroups(userInput?.mcpServerGroups)
|
|
1278
1307
|
const skillGroups=parseSkillGroups(userInput?.skillGroups)
|
|
1279
|
-
const codexAccountBindings=
|
|
1308
|
+
const codexAccountBindings=migrateCodexAccountBindings(userInput?.codexAccountBindings)
|
|
1280
1309
|
const pendingResetAttempt=parsePendingResetAttempt(userInput?.pendingResetAttempt)
|
|
1281
1310
|
const workspaceProfiles=parseWorkspaceProfiles(userInput?.workspaceProfiles)
|
|
1282
1311
|
return{global:{...Object.keys(behavior).length>0&&{behavior},...layout&&{layout},...Object.keys(globalMcp).length>0&&{mcp:globalMcp}},worktrees,user:{...skippedSkillConfirmations&&{skippedSkillConfirmations},...typeof userInput?.onboardingCompleted==="boolean"&&{onboardingCompleted:userInput.onboardingCompleted
|
|
@@ -1431,7 +1460,8 @@ const recentQuickActions=parseRecentQuickActions([...update.user?.recentQuickAct
|
|
|
1431
1460
|
const mcpServerGroups=assignGroup(current.user.mcpServerGroups,update.user?.mcpServerGroup?.name,update.user?.mcpServerGroup?.group)
|
|
1432
1461
|
const skillGroups=assignGroup(current.user.skillGroups,update.user?.skillGroup?.location,update.user?.skillGroup?.group)
|
|
1433
1462
|
const binding=update.user?.codexAccountBinding
|
|
1434
|
-
const
|
|
1463
|
+
const legacyBindingKey=binding?.providerID&&binding.modelID?JSON.stringify([binding.providerID,binding.modelID]):undefined
|
|
1464
|
+
const codexAccountBindings=binding?.providerID&&!binding.modelID?changeCodexBinding(current.user.codexAccountBindings,binding,binding.accountID):assignGroup(current.user.codexAccountBindings,legacyBindingKey,binding?.accountID)
|
|
1435
1465
|
const pendingUpdate=update.user?.pendingResetAttempt
|
|
1436
1466
|
const currentAttempt=current.user.pendingResetAttempt
|
|
1437
1467
|
if(pendingUpdate&¤tAttempt&¤tAttempt.idempotencyKey!==pendingUpdate.idempotencyKey){throw new Error("Another reset attempt is still unresolved")
|
|
@@ -1454,7 +1484,7 @@ return{global:target.kind==="global"?scope:current.global,worktrees,user:{...ski
|
|
|
1454
1484
|
},...(update.user?.previousNavigatorVersion??current.user.previousNavigatorVersion)&&{previousNavigatorVersion:update.user?.previousNavigatorVersion??current.user.previousNavigatorVersion
|
|
1455
1485
|
},...Object.keys(parsedLayoutPresets).length>0&&{layoutPresets:parsedLayoutPresets},...Object.keys(parsedMcpPresets).length>0&&{mcpPresets:parsedMcpPresets},...Object.keys(workspaceProfiles).length>0&&{workspaceProfiles:parseWorkspaceProfiles(workspaceProfiles)
|
|
1456
1486
|
},...favoriteSkills.length>0&&{favoriteSkills},...favoriteMcpServers.size>0&&{favoriteMcpServers:[...favoriteMcpServers].sort()},...favoriteQuickActions.size>0&&{favoriteQuickActions:parseFavoriteQuickActions([...favoriteQuickActions])
|
|
1457
|
-
},...recentSkills.length>0&&{recentSkills},...recentQuickActions.length>0&&{recentQuickActions},...Object.keys(mcpServerGroups).length>0&&{mcpServerGroups:parseMcpServerGroups(mcpServerGroups)},...Object.keys(skillGroups).length>0&&{skillGroups:parseSkillGroups(skillGroups)},...Object.keys(codexAccountBindings).length>0&&{codexAccountBindings:
|
|
1487
|
+
},...recentSkills.length>0&&{recentSkills},...recentQuickActions.length>0&&{recentQuickActions},...Object.keys(mcpServerGroups).length>0&&{mcpServerGroups:parseMcpServerGroups(mcpServerGroups)},...Object.keys(skillGroups).length>0&&{skillGroups:parseSkillGroups(skillGroups)},...Object.keys(codexAccountBindings).length>0&&{codexAccountBindings:migrateCodexAccountBindings(codexAccountBindings)
|
|
1458
1488
|
},...pendingResetAttempt&&{pendingResetAttempt},...typeof (update.user?.autoApprovePermissions??current.user.autoApprovePermissions)==="boolean"&&{autoApprovePermissions:update.user?.autoApprovePermissions??current.user.autoApprovePermissions
|
|
1459
1489
|
}}}}
|
|
1460
1490
|
function targetForLegacyScope(scope){return scope==="global"?{kind:"global"}:{kind:"worktree",key:scope}}
|
|
@@ -1819,20 +1849,13 @@ return
|
|
|
1819
1849
|
setAutoApprovePermissions(value)
|
|
1820
1850
|
update({user:{autoApprovePermissions:value}})
|
|
1821
1851
|
}
|
|
1822
|
-
function
|
|
1852
|
+
function changeCodexConnectionBinding(providerID,connectionID,accountID){if(!isHydrated){load().then(()=>changeCodexConnectionBinding(providerID,connectionID,accountID))
|
|
1823
1853
|
return
|
|
1824
1854
|
}
|
|
1825
|
-
if(!providerID
|
|
1855
|
+
if(!providerID)
|
|
1826
1856
|
return
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
if(accountID)
|
|
1830
|
-
next[key]=accountID
|
|
1831
|
-
else
|
|
1832
|
-
delete next[key]
|
|
1833
|
-
return next
|
|
1834
|
-
})
|
|
1835
|
-
update({user:{codexAccountBinding:{providerID,modelID,accountID}}})
|
|
1857
|
+
setCodexAccountBindings((bindings)=>changeCodexBinding(bindings,{providerID,connectionID},accountID))
|
|
1858
|
+
update({user:{codexAccountBinding:{providerID,connectionID,accountID}}})
|
|
1836
1859
|
}
|
|
1837
1860
|
function toggleFavoriteMcpServer(name){if(!isHydrated){load().then(()=>toggleFavoriteMcpServer(name))
|
|
1838
1861
|
return
|
|
@@ -1904,7 +1927,7 @@ throw new Error("MCP preset no longer exists")
|
|
|
1904
1927
|
update({user:{workspaceProfile:{layout,mcp}}})
|
|
1905
1928
|
},favoriteSkills,favoriteMcpServers,favoriteQuickActions,toggleFavoriteMcpServer,toggleFavoriteQuickAction,recentSkills,recentQuickActions,mcpServerGroups,setMcpServerGroup(name,value){setMcpServerGroups(assignGroup(mcpServerGroups(),name,value))
|
|
1906
1929
|
update({user:{mcpServerGroup:{name,group:value}}})
|
|
1907
|
-
},skillGroups,setSkillGroup:changeSkillGroup,autoApprovePermissions,setAutoApprovePermissions:changeAutoApprovePermissions,codexAccountForModel:(providerID,modelID)=>codexAccountBindings()
|
|
1930
|
+
},skillGroups,setSkillGroup:changeSkillGroup,autoApprovePermissions,setAutoApprovePermissions:changeAutoApprovePermissions,codexAccountForModel:(providerID,modelID)=>codexBindingAccount(codexAccountBindings(),{providerID},modelID),setCodexAccountBinding:(providerID,_modelID,accountID)=>changeCodexConnectionBinding(providerID,undefined,accountID),codexAccountForConnection:(providerID,connectionID,modelID)=>codexBindingAccount(codexAccountBindings(),{providerID,connectionID},modelID),setCodexConnectionBinding:changeCodexConnectionBinding,pendingResetAttempt,async beginResetAttempt(attempt){await load()
|
|
1908
1931
|
await store.update({user:{pendingResetAttempt:attempt}})
|
|
1909
1932
|
const current=await store.load()
|
|
1910
1933
|
setPendingResetAttempt(current.user.pendingResetAttempt)
|
|
@@ -2073,8 +2096,7 @@ update({target:selectedTarget(),clearMcp:true})
|
|
|
2073
2096
|
},shouldConfirmSkill(skill){load()
|
|
2074
2097
|
return !skippedSkills().has(skillKey(skill))
|
|
2075
2098
|
},skipSkillConfirmation(skill){load()
|
|
2076
|
-
const next=new Set(skippedSkills())
|
|
2077
|
-
next.add(skillKey(skill))
|
|
2099
|
+
const next=new Set([...skippedSkills(),skillKey(skill)])
|
|
2078
2100
|
setSkippedSkills(next)
|
|
2079
2101
|
update({user:{skillConfirmation:{location:skillKey(skill),skipped:true}}})
|
|
2080
2102
|
},revokeSkillConfirmation(location){load()
|
|
@@ -6123,6 +6145,30 @@ return _$createComponent(SectionWithHeaderAction,{get api(){return props.api
|
|
|
6123
6145
|
|
|
6124
6146
|
|
|
6125
6147
|
|
|
6148
|
+
|
|
6149
|
+
|
|
6150
|
+
|
|
6151
|
+
|
|
6152
|
+
|
|
6153
|
+
|
|
6154
|
+
|
|
6155
|
+
|
|
6156
|
+
|
|
6157
|
+
|
|
6158
|
+
|
|
6159
|
+
|
|
6160
|
+
|
|
6161
|
+
|
|
6162
|
+
|
|
6163
|
+
|
|
6164
|
+
|
|
6165
|
+
|
|
6166
|
+
|
|
6167
|
+
|
|
6168
|
+
|
|
6169
|
+
|
|
6170
|
+
|
|
6171
|
+
|
|
6126
6172
|
|
|
6127
6173
|
|
|
6128
6174
|
|
|
@@ -6148,7 +6194,7 @@ function QuickActionRow(props){const{api,interaction
|
|
|
6148
6194
|
}=useSidebarList()
|
|
6149
6195
|
const icons=useIcons()
|
|
6150
6196
|
const theme=()=>api.theme.current
|
|
6151
|
-
const [width,setWidth]=
|
|
6197
|
+
const [width,setWidth]=createSignal29(0)
|
|
6152
6198
|
const shortcut=createMemo14(()=>{const bindings=api.keymap.getCommandBindings({visibility:"registered",commands:[props.action.command]
|
|
6153
6199
|
})
|
|
6154
6200
|
return api.keys.formatBindings(bindings.get(props.action.command))
|
|
@@ -6192,7 +6238,7 @@ _$insert(_el$2,()=>props.action.label)
|
|
|
6192
6238
|
_$effect((_$p)=>_$setProp(_el$2,"fg",row.foregroundColor(),_$p))
|
|
6193
6239
|
return _el$2
|
|
6194
6240
|
})()
|
|
6195
|
-
},get metadata(){return _$createComponent(
|
|
6241
|
+
},get metadata(){return _$createComponent(Show18,{get when(){return visibleShortcut()
|
|
6196
6242
|
},children:(value)=>(()=>{var _el$3=_$createElement("text")
|
|
6197
6243
|
_$setProp(_el$3,"flexShrink",0)
|
|
6198
6244
|
_$setProp(_el$3,"wrapMode","none")
|
|
@@ -6201,7 +6247,7 @@ _$effect((_$p)=>_$setProp(_el$3,"fg",row.focused()?row.foregroundColor():theme()
|
|
|
6201
6247
|
return _el$3
|
|
6202
6248
|
})()
|
|
6203
6249
|
})
|
|
6204
|
-
},get details(){return _$createComponent(
|
|
6250
|
+
},get details(){return _$createComponent(Show18,{get when(){return props.disabled
|
|
6205
6251
|
},children:(reason)=>(()=>{var _el$4=_$createElement("text")
|
|
6206
6252
|
_$setProp(_el$4,"wrapMode","word")
|
|
6207
6253
|
_$insert(_el$4,reason)
|
|
@@ -6229,7 +6275,7 @@ return _$createComponent(Section,{get api(){return props.api
|
|
|
6229
6275
|
},onToggle:()=>props.preferences.toggleSectionExpanded("quick_actions"),get children(){return [_$createComponent(SidebarRowList,{get api(){return props.api
|
|
6230
6276
|
},get interaction(){return props.interaction
|
|
6231
6277
|
},get density(){return props.preferences.rowDensity?.()??"compact"
|
|
6232
|
-
},get children(){return [_$createComponent(
|
|
6278
|
+
},get children(){return [_$createComponent(Show19,{get when(){return actions().length===0
|
|
6233
6279
|
},get children(){var _el$=_$createElement("text")
|
|
6234
6280
|
_$insertNode(_el$,_$createTextNode(`No quick actions selected`))
|
|
6235
6281
|
_$effect((_$p)=>_$setProp(_el$,"fg",props.api.theme.current.textMuted,_$p))
|
|
@@ -6443,7 +6489,7 @@ return _el$
|
|
|
6443
6489
|
}})
|
|
6444
6490
|
}
|
|
6445
6491
|
function SkillsSection(props){const dialogs=useDialogs(props.api)
|
|
6446
|
-
const [query,setQuery]=
|
|
6492
|
+
const [query,setQuery]=createSignal30("")
|
|
6447
6493
|
const model=createSkillSectionModel(props,query)
|
|
6448
6494
|
const navigationSection=()=>props.navigationSection??3
|
|
6449
6495
|
function selectSkill(item){if(!props.preferences.shouldConfirmSkill(item)){model.useSkill(item)
|
|
@@ -6476,7 +6522,7 @@ _$insert(_el$,_$createComponent(SectionFilter,{get api(){return props.api
|
|
|
6476
6522
|
}},get query(){return query()
|
|
6477
6523
|
},placeholder:"Filter skills...",onInput:setQuery
|
|
6478
6524
|
}),null)
|
|
6479
|
-
_$insert(_el$,_$createComponent(
|
|
6525
|
+
_$insert(_el$,_$createComponent(Show20,{get when(){return model.filtered().length>0
|
|
6480
6526
|
},get fallback(){return(()=>{var _el$2=_$createElement("text")
|
|
6481
6527
|
_$insertNode(_el$2,_$createTextNode(`No matching skills`))
|
|
6482
6528
|
_$effect((_$p)=>_$setProp(_el$2,"fg",props.api.theme.current.textMuted,_$p))
|
|
@@ -6487,7 +6533,7 @@ return _el$2
|
|
|
6487
6533
|
},get grouped(){return model.grouped
|
|
6488
6534
|
},get density(){return props.preferences.rowDensity?.()??"compact"
|
|
6489
6535
|
},get children(){return _$createComponent(For16,{get each(){return model.visibility.visible()
|
|
6490
|
-
},children:(item,index)=>[_$createComponent(
|
|
6536
|
+
},children:(item,index)=>[_$createComponent(Show20,{get when(){return _$memo(()=>!!model.grouped())()&&(index()===0||model.visibility.visible()[index()-1]?.bucket!==item.bucket)
|
|
6491
6537
|
},get children(){var _el$4=_$createElement("text")
|
|
6492
6538
|
_$setProp(_el$4,"height",1)
|
|
6493
6539
|
_$setProp(_el$4,"wrapMode","none")
|
|
@@ -6532,8 +6578,8 @@ return _el$
|
|
|
6532
6578
|
function createSubagentSectionModel(props){const list=createMemo17(()=>props.controller.list(props.sessionID))
|
|
6533
6579
|
const recent=createMemo17(()=>props.controller.recent?.(props.sessionID)??[])
|
|
6534
6580
|
const rows=createMemo17(()=>buildSubagentView(list(),recent()))
|
|
6535
|
-
const [query,setQuery]=
|
|
6536
|
-
const [mode,setMode]=
|
|
6581
|
+
const [query,setQuery]=createSignal31("")
|
|
6582
|
+
const [mode,setMode]=createSignal31("all")
|
|
6537
6583
|
const counts=createMemo17(()=>countSubagentView(rows(),query()))
|
|
6538
6584
|
const tabs=createMemo17(()=>["all","active","recent",...counts().errors>0?["errors"]:[]])
|
|
6539
6585
|
const filtered=createMemo17(()=>filterSubagentView(rows(),mode(),query()))
|
|
@@ -6614,7 +6660,7 @@ return()=>_c$()?`${props.item.run.startedBeforeObservation ? `${icons.icon("rece
|
|
|
6614
6660
|
_$effect((_$p)=>_$setProp(_el$3,"fg",row.focused()?row.foregroundColor():theme().textMuted,_$p))
|
|
6615
6661
|
return _el$3
|
|
6616
6662
|
})()
|
|
6617
|
-
},get details(){return [_$createComponent(
|
|
6663
|
+
},get details(){return [_$createComponent(Show21,{get when(){return props.item.run?.errorMessage
|
|
6618
6664
|
},get children(){var _el$4=_$createElement("text"),_el$5=_$createTextNode(`: `)
|
|
6619
6665
|
_$insertNode(_el$4,_el$5)
|
|
6620
6666
|
_$setProp(_el$4,"wrapMode","word")
|
|
@@ -6622,12 +6668,12 @@ _$insert(_el$4,()=>cancelled()?"Cancelled":"Error",_el$5)
|
|
|
6622
6668
|
_$insert(_el$4,()=>props.item.run?.errorMessage,null)
|
|
6623
6669
|
_$effect((_$p)=>_$setProp(_el$4,"fg",row.focused()?row.foregroundColor():failed()?theme().error:theme().textMuted,_$p))
|
|
6624
6670
|
return _el$4
|
|
6625
|
-
}}),_$createComponent(
|
|
6671
|
+
}}),_$createComponent(Show21,{get when(){return props.item.unavailable
|
|
6626
6672
|
},get children(){var _el$6=_$createElement("text")
|
|
6627
6673
|
_$insertNode(_el$6,_$createTextNode(`Worker status unavailable`))
|
|
6628
6674
|
_$effect((_$p)=>_$setProp(_el$6,"fg",theme().warning,_$p))
|
|
6629
6675
|
return _el$6
|
|
6630
|
-
}}),_$createComponent(
|
|
6676
|
+
}}),_$createComponent(Show21,{get when(){return _$memo(()=>props.item.status.type==="retry")()?props.item.status:undefined
|
|
6631
6677
|
},children:(status)=>(()=>{var _el$0=_$createElement("text"),_el$1=_$createTextNode(`Retry #`),_el$10=_$createTextNode(` \xB7 `),_el$11=_$createTextNode(`s \xB7 `)
|
|
6632
6678
|
_$insertNode(_el$0,_el$1)
|
|
6633
6679
|
_$insertNode(_el$0,_el$10)
|
|
@@ -6639,7 +6685,7 @@ _$insert(_el$0,()=>status().message,null)
|
|
|
6639
6685
|
_$effect((_$p)=>_$setProp(_el$0,"fg",row.focused()?row.foregroundColor():theme().warning,_$p))
|
|
6640
6686
|
return _el$0
|
|
6641
6687
|
})()
|
|
6642
|
-
}),_$createComponent(
|
|
6688
|
+
}),_$createComponent(Show21,{get when(){return _$memo(()=>!!idle())()&&!props.item.run?.errorMessage
|
|
6643
6689
|
},get children(){var _el$8=_$createElement("text")
|
|
6644
6690
|
_$insertNode(_el$8,_$createTextNode(`Finished`))
|
|
6645
6691
|
_$effect((_$p)=>_$setProp(_el$8,"fg",theme().textMuted,_$p))
|
|
@@ -6655,7 +6701,7 @@ function SubagentList(props){return _$createComponent(SidebarRowList,{get api(){
|
|
|
6655
6701
|
const item=()=>props.itemById(id)??initial
|
|
6656
6702
|
const startsGroup=()=>index()===0||props.visible[index()-1]?.group!==item().group
|
|
6657
6703
|
return(()=>{var _el$=_$createElement("box")
|
|
6658
|
-
_$insert(_el$,_$createComponent(
|
|
6704
|
+
_$insert(_el$,_$createComponent(Show22,{get when(){return startsGroup()
|
|
6659
6705
|
},get children(){var _el$2=_$createElement("text"),_el$3=_$createElement("b")
|
|
6660
6706
|
_$insertNode(_el$2,_el$3)
|
|
6661
6707
|
_$insert(_el$3,()=>item().group)
|
|
@@ -6681,7 +6727,7 @@ return _$createComponent(Section,{get api(){return props.api
|
|
|
6681
6727
|
},sectionId:`${PLUGIN_ID}.section.subagents`,get navigationSection(){return navigationSection()
|
|
6682
6728
|
},title:"SUBAGENTS",section:"subagents",get summary(){return `${model.list().length} active \xB7 ${model.recent().length} recent`
|
|
6683
6729
|
},get open(){return props.preferences.expanded().subagents
|
|
6684
|
-
},onToggle:()=>props.preferences.toggleSectionExpanded("subagents"),get children(){return [_$createComponent(
|
|
6730
|
+
},onToggle:()=>props.preferences.toggleSectionExpanded("subagents"),get children(){return [_$createComponent(Show23,{get when(){return model.parentID()
|
|
6685
6731
|
},children:(id)=>_$createComponent(McpBulkAction,{get api(){return props.api
|
|
6686
6732
|
},get interaction(){return props.interaction
|
|
6687
6733
|
},id:`${PLUGIN_ID}.subagents.parent`,get position(){return{section:navigationSection(),row:1,column:0
|
|
@@ -6715,7 +6761,7 @@ _$insert(_el$2,_$createComponent(For18,{get each(){return model.tabs()
|
|
|
6715
6761
|
},onActivate:()=>model.setMode(value)
|
|
6716
6762
|
})
|
|
6717
6763
|
}))
|
|
6718
|
-
_$insert(_el$,_$createComponent(
|
|
6764
|
+
_$insert(_el$,_$createComponent(Show23,{get when(){return model.filtered().length===0
|
|
6719
6765
|
},get children(){var _el$3=_$createElement("text")
|
|
6720
6766
|
_$insertNode(_el$3,_$createTextNode(`No matching subagents`))
|
|
6721
6767
|
_$effect((_$p)=>_$setProp(_el$3,"fg",props.api.theme.current.textMuted,_$p))
|
|
@@ -6799,7 +6845,7 @@ _$insert(_el$2,()=>icons.icon(done()?"done":active()?"busy":cancelled()?"close":
|
|
|
6799
6845
|
_$setProp(_el$3,"flexGrow",1)
|
|
6800
6846
|
_$setProp(_el$3,"wrapMode","word")
|
|
6801
6847
|
_$insert(_el$3,()=>props.item.content)
|
|
6802
|
-
_$insert(_el$,_$createComponent(
|
|
6848
|
+
_$insert(_el$,_$createComponent(Show24,{get when(){return props.item.priority==="high"||props.item.priority==="medium"||props.item.priority==="low"
|
|
6803
6849
|
},get children(){var _el$4=_$createElement("text"),_el$5=_$createElement("b"),_el$6=_$createTextNode(` `)
|
|
6804
6850
|
_$insertNode(_el$4,_el$5)
|
|
6805
6851
|
_$setProp(_el$4,"width",2)
|
|
@@ -6835,7 +6881,7 @@ _$insert(_el$2,_$createComponent(For19,{each:["all","active","finished"],childre
|
|
|
6835
6881
|
},onActivate:()=>props.setMode(value)
|
|
6836
6882
|
})
|
|
6837
6883
|
}))
|
|
6838
|
-
_$insert(_el$,_$createComponent(
|
|
6884
|
+
_$insert(_el$,_$createComponent(Show25,{get when(){return props.view.rows.length>0
|
|
6839
6885
|
},get fallback(){return _$createComponent(EmptyTodo,{get api(){return props.api
|
|
6840
6886
|
},get mode(){return props.mode
|
|
6841
6887
|
}})
|
|
@@ -6845,7 +6891,7 @@ _$insert(_el$,_$createComponent(Show24,{get when(){return props.view.rows.length
|
|
|
6845
6891
|
},get children(){return _$createComponent(For19,{get each(){return props.visibility.visible()
|
|
6846
6892
|
},children:(row,index)=>{const startsGroup=()=>index()===0||props.visibility.visible()[index()-1].group!==row.group
|
|
6847
6893
|
return(()=>{var _el$3=_$createElement("box")
|
|
6848
|
-
_$insert(_el$3,_$createComponent(
|
|
6894
|
+
_$insert(_el$3,_$createComponent(Show25,{get when(){return startsGroup()
|
|
6849
6895
|
},get children(){var _el$4=_$createElement("text"),_el$5=_$createElement("b")
|
|
6850
6896
|
_$insertNode(_el$4,_el$5)
|
|
6851
6897
|
_$insert(_el$5,()=>row.group)
|
|
@@ -6882,7 +6928,7 @@ return _el$6
|
|
|
6882
6928
|
|
|
6883
6929
|
|
|
6884
6930
|
function TodoGuidanceControl(props){const state=()=>props.controller.guidance(props.sessionID)
|
|
6885
|
-
return _$createComponent(
|
|
6931
|
+
return _$createComponent(Show26,{get when(){return state().available
|
|
6886
6932
|
},get children(){var _el$=_$createElement("box")
|
|
6887
6933
|
_$insert(_el$,_$createComponent(SectionTab,{get api(){return props.api
|
|
6888
6934
|
},get interaction(){return props.interaction
|
|
@@ -6892,7 +6938,7 @@ _$insert(_el$,_$createComponent(SectionTab,{get api(){return props.api
|
|
|
6892
6938
|
},get disabled(){return state().saving
|
|
6893
6939
|
},onActivate:()=>void props.controller.setGuidance(props.sessionID,!state().enabled)
|
|
6894
6940
|
}),null)
|
|
6895
|
-
_$insert(_el$,_$createComponent(
|
|
6941
|
+
_$insert(_el$,_$createComponent(Show26,{get when(){return state().error
|
|
6896
6942
|
},children:(message)=>(()=>{var _el$2=_$createElement("text")
|
|
6897
6943
|
_$setProp(_el$2,"wrapMode","word")
|
|
6898
6944
|
_$insert(_el$2,message)
|
|
@@ -6907,7 +6953,7 @@ function TodoSection(props){const list=createMemo18(()=>props.controller.list(pr
|
|
|
6907
6953
|
const icons=useIcons()
|
|
6908
6954
|
const unavailable=()=>hostCapabilityUnavailable(props.api,"todo")
|
|
6909
6955
|
const managed=()=>("guidance" in props.controller)?props.controller:undefined
|
|
6910
|
-
const [mode,setMode]=
|
|
6956
|
+
const [mode,setMode]=createSignal32("all")
|
|
6911
6957
|
const targetKey=createMemo18(()=>props.controller.target?.(props.sessionID).key??props.sessionID)
|
|
6912
6958
|
createEffect19(()=>{targetKey()
|
|
6913
6959
|
setMode("all")
|
|
@@ -6930,10 +6976,10 @@ return _$createComponent(Section,{get api(){return props.api
|
|
|
6930
6976
|
},sectionId:`${PLUGIN_ID}.section.todo`,get navigationSection(){return navigationSection()
|
|
6931
6977
|
},title:"TODO",section:"todo",get summary(){return _$memo(()=>!!(unavailable()||managed()?.missing(props.sessionID)))()?"\u2014":`${view().counts.completed}/${list().length}`
|
|
6932
6978
|
},get open(){return props.preferences.expanded().todo
|
|
6933
|
-
},onToggle:()=>props.preferences.toggleSectionExpanded("todo"),get children(){return _$createComponent(
|
|
6979
|
+
},onToggle:()=>props.preferences.toggleSectionExpanded("todo"),get children(){return _$createComponent(Show27,{get when(){return unavailable()
|
|
6934
6980
|
},get fallback(){return(()=>{var _el$=_$createElement("box")
|
|
6935
6981
|
_$setProp(_el$,"gap",1)
|
|
6936
|
-
_$insert(_el$,_$createComponent(
|
|
6982
|
+
_$insert(_el$,_$createComponent(Show27,{get when(){return managed()?.guidance(props.sessionID).available
|
|
6937
6983
|
},get children(){return _$createComponent(TodoGuidanceControl,{get api(){return props.api
|
|
6938
6984
|
},get controller(){return managed()
|
|
6939
6985
|
},get sessionID(){return props.sessionID
|
|
@@ -6941,7 +6987,7 @@ _$insert(_el$,_$createComponent(Show26,{get when(){return managed()?.guidance(pr
|
|
|
6941
6987
|
},get navigationSection(){return navigationSection()
|
|
6942
6988
|
}})
|
|
6943
6989
|
}}),null)
|
|
6944
|
-
_$insert(_el$,_$createComponent(
|
|
6990
|
+
_$insert(_el$,_$createComponent(Show27,{get when(){return managed()?.missing(props.sessionID)
|
|
6945
6991
|
},get fallback(){return _$createComponent(SectionRequestBody,{get api(){return props.api
|
|
6946
6992
|
},get interaction(){return props.interaction
|
|
6947
6993
|
},id:`${PLUGIN_ID}.retry.todo`,get position(){return{section:navigationSection(),row:1,column:0
|
|
@@ -7085,7 +7131,7 @@ _$setProp(_el$2,"flexDirection","row")
|
|
|
7085
7131
|
_$setProp(_el$2,"justifyContent","space-between")
|
|
7086
7132
|
_$setProp(_el$2,"gap",1)
|
|
7087
7133
|
_$setProp(_el$3,"flexGrow",1)
|
|
7088
|
-
_$insert(_el$3,_$createComponent(
|
|
7134
|
+
_$insert(_el$3,_$createComponent(Show28,{get when(){return props.preferences.showSessionTitle()
|
|
7089
7135
|
},get children(){var _el$4=_$createElement("text"),_el$5=_$createElement("b")
|
|
7090
7136
|
_$insertNode(_el$4,_el$5)
|
|
7091
7137
|
_$setProp(_el$4,"wrapMode","word")
|
|
@@ -7093,7 +7139,7 @@ _$insert(_el$5,()=>props.title)
|
|
|
7093
7139
|
_$effect((_$p)=>_$setProp(_el$4,"fg",theme().text,_$p))
|
|
7094
7140
|
return _el$4
|
|
7095
7141
|
}}),null)
|
|
7096
|
-
_$insert(_el$3,_$createComponent(
|
|
7142
|
+
_$insert(_el$3,_$createComponent(Show28,{get when(){return _$memo(()=>!!props.preferences.showSessionDate())()&&created()
|
|
7097
7143
|
},children:(value)=>(()=>{var _el$6=_$createElement("text")
|
|
7098
7144
|
_$insert(_el$6,value)
|
|
7099
7145
|
_$effect((_$p)=>_$setProp(_el$6,"fg",theme().textMuted,_$p))
|
|
@@ -7135,12 +7181,21 @@ return mergeConfiguredDefaults(configuredDefaultsFromPluginOptions(options),user
|
|
|
7135
7181
|
}
|
|
7136
7182
|
|
|
7137
7183
|
|
|
7138
|
-
function LimitsPersistence(props){createEffect21(()=>{const
|
|
7184
|
+
function LimitsPersistence(props){createEffect21(()=>{const model=props.selectedModel?.()
|
|
7185
|
+
if(model&&props.accountSource)
|
|
7186
|
+
untrack10(()=>void props.accountSource.refresh(model))
|
|
7187
|
+
})
|
|
7188
|
+
createEffect21(()=>{const{model,adapter
|
|
7139
7189
|
}=props.controller.current()
|
|
7140
7190
|
if(model&&adapter)
|
|
7141
7191
|
untrack10(()=>void props.controller.refresh(true))
|
|
7142
7192
|
})
|
|
7143
|
-
const timer=setInterval(()=>
|
|
7193
|
+
const timer=setInterval(()=>{const model=props.selectedModel?.()
|
|
7194
|
+
if(model&&props.accountSource)
|
|
7195
|
+
props.accountSource.refresh(model).then(()=>untrack10(()=>props.controller.refresh()))
|
|
7196
|
+
else
|
|
7197
|
+
props.controller.refresh()
|
|
7198
|
+
},5000)
|
|
7144
7199
|
onCleanup25(()=>clearInterval(timer))
|
|
7145
7200
|
return _$createElement("box")
|
|
7146
7201
|
}
|
|
@@ -7237,7 +7292,7 @@ return false
|
|
|
7237
7292
|
}
|
|
7238
7293
|
function enabled(value){return typeof value==="function"?value():value!==false
|
|
7239
7294
|
}
|
|
7240
|
-
function createV2Keymap(context){const [revision,setRevision]=
|
|
7295
|
+
function createV2Keymap(context){const [revision,setRevision]=createSignal33(0)
|
|
7241
7296
|
const layers=new Map
|
|
7242
7297
|
let sequence=0
|
|
7243
7298
|
function layerActive(layer){const mode=layer.mode??"base"
|
|
@@ -7350,7 +7405,7 @@ function createV2UI(context){let dialogOpen=false
|
|
|
7350
7405
|
function DialogPrompt(props){let active=true
|
|
7351
7406
|
onCleanup26(()=>{active=false
|
|
7352
7407
|
})
|
|
7353
|
-
|
|
7408
|
+
onMount8(async ()=>{const value=await context.ui.dialog.prompt({title:props.title,placeholder:props.placeholder,value:props.value
|
|
7354
7409
|
})
|
|
7355
7410
|
if(!active)
|
|
7356
7411
|
return
|
|
@@ -7364,7 +7419,7 @@ return _$createElement("box")
|
|
|
7364
7419
|
function DialogConfirm(props){let active=true
|
|
7365
7420
|
onCleanup26(()=>{active=false
|
|
7366
7421
|
})
|
|
7367
|
-
|
|
7422
|
+
onMount8(async ()=>{const confirmed=await context.ui.dialog.confirm({title:props.title,message:props.message
|
|
7368
7423
|
})
|
|
7369
7424
|
if(!active)
|
|
7370
7425
|
return
|
|
@@ -7424,9 +7479,9 @@ context.ui.router.navigate({type:"plugin",name,data:params})
|
|
|
7424
7479
|
},client:{...remote.client,session:sessions.client
|
|
7425
7480
|
},event:createV2EventAdapter(context,sessions),theme:{get current(){return legacyTheme(context.theme)
|
|
7426
7481
|
},ready:true,mode:()=>context.themeMode
|
|
7427
|
-
},attention:context.attention,lifecycle:{signal:controller.signal,onDispose}
|
|
7428
|
-
api.slots=createV2Slots(context,keymap,(dispose)=>{onDispose(dispose)
|
|
7482
|
+
},attention:context.attention,lifecycle:{signal:controller.signal,onDispose},slots:createV2Slots(context,keymap,(dispose)=>{onDispose(dispose)
|
|
7429
7483
|
})
|
|
7484
|
+
}
|
|
7430
7485
|
setHostCapabilities(api,{todo:true,lsp:false,titleVisibility:false,permissionMode:false
|
|
7431
7486
|
})
|
|
7432
7487
|
return{api,async dispose(){controller.abort()
|
|
@@ -7434,11 +7489,6 @@ for(let index=disposers.length-1;index>=0; index--)
|
|
|
7434
7489
|
await disposers[index]()
|
|
7435
7490
|
disposers.length=0
|
|
7436
7491
|
}}}
|
|
7437
|
-
function selectedV2Model(context){const route=context.ui.router.current()
|
|
7438
|
-
const model=context.ui.model.current()
|
|
7439
|
-
if(route.type!=="session"||!model)
|
|
7440
|
-
return
|
|
7441
|
-
return{sessionID:route.sessionID,providerID:model.providerID,modelID:model.modelID,...model.variant&&{variant:model.variant}}}
|
|
7442
7492
|
|
|
7443
7493
|
|
|
7444
7494
|
import {fileURLToPath} from "url"
|
|
@@ -7505,7 +7555,7 @@ if(item.source.target.startsWith("."))
|
|
|
7505
7555
|
throw new Error("Unrecognized local Navigator source")
|
|
7506
7556
|
await context.client.plugin.update({location:response.location,targets:[item.source.target]})
|
|
7507
7557
|
}}}
|
|
7508
|
-
async function setupNavigator(api,options,readProject,managedTodo,
|
|
7558
|
+
async function setupNavigator(api,options,readProject,managedTodo,hostContext){const config=pluginConfig(undefined)
|
|
7509
7559
|
const configured=await loadConfiguredDefaults(api,options,readProject)
|
|
7510
7560
|
const todo=managedTodo??createTodoController(api)
|
|
7511
7561
|
const subagents=createSubagentController(api)
|
|
@@ -7513,20 +7563,15 @@ const skills=createSkillController(api)
|
|
|
7513
7563
|
const preferences=createPreferencesController(api,config,createPreferencesStore(api.state.path.state),configured)
|
|
7514
7564
|
const limitsPath=import.meta.url.includes("/dist/tui.js")?"./provider-limits.js":"../provider-limits"
|
|
7515
7565
|
const limitsModule=await import(limitsPath)
|
|
7516
|
-
const codex=limitsModule.createCodexQuotaAdapter(limitsModule.createCodexAppServerClient({version:"0.20.0"
|
|
7517
|
-
}))
|
|
7518
7566
|
const LimitsSection=limitsModule.ProviderLimitsSection
|
|
7519
|
-
const
|
|
7520
|
-
|
|
7521
|
-
return
|
|
7522
|
-
const accountID=preferences.codexAccountForModel(model.providerID,model.modelID)
|
|
7523
|
-
return{...model,...accountID&&{accountID
|
|
7524
|
-
}}},api.lifecycle.signal)
|
|
7567
|
+
const{controller:limits,codex,accountSource,selectModel,capabilities
|
|
7568
|
+
}=limitsModule.createProviderQuotaIntegration(api,preferences,"0.21.1",hostContext)
|
|
7525
7569
|
const mcp=createMcpController(api,preferences.persistMcp,preferences)
|
|
7526
7570
|
const interaction=createSidebarInteraction(api,()=>openKeyboardHelp(api,preferences.lspIconStyle,preferences.cornerFont))
|
|
7527
7571
|
const startup=createStartupSessionController(api,preferences)
|
|
7528
7572
|
api.lifecycle.onDispose(()=>preferences.flush())
|
|
7529
7573
|
api.lifecycle.onDispose(()=>limits.dispose())
|
|
7574
|
+
api.lifecycle.onDispose(()=>accountSource?.dispose())
|
|
7530
7575
|
api.lifecycle.onDispose(()=>interaction.dispose())
|
|
7531
7576
|
const unsubscribeMcp=api.event.on("mcp.tools.changed",()=>{mcp.refresh().catch(()=>{})
|
|
7532
7577
|
})
|
|
@@ -7539,7 +7584,7 @@ api.lifecycle.onDispose(unsubscribeConnected)
|
|
|
7539
7584
|
api.slots.register({order:100,slots:{app(){return _$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
|
|
7540
7585
|
},get multilineCorners(){return preferences.cornerFont
|
|
7541
7586
|
},get children(){return [_$createComponent(PreferencesPersistence,{api,controller:preferences
|
|
7542
|
-
}),_$createComponent(LimitsPersistence,{controller:limits
|
|
7587
|
+
}),_$createComponent(LimitsPersistence,{controller:limits,accountSource,selectedModel:selectModel
|
|
7543
7588
|
}),_$memo(()=>_$memo(()=>!!supportsPermissionMode(api))()&&_$createComponent(PermissionModeBinding,{api,preferences
|
|
7544
7589
|
})),_$createComponent(SettingsBinding,{api,preferences,mcp,skills
|
|
7545
7590
|
}),_$createComponent(SidebarToggleBinding,{api,preferences
|
|
@@ -7548,7 +7593,7 @@ api.slots.register({order:100,slots:{app(){return _$createComponent(IconProvider
|
|
|
7548
7593
|
},interaction,skills,subagents,mcp
|
|
7549
7594
|
}),_$createComponent(FirstRunWizardPersistence,{api,preferences
|
|
7550
7595
|
}),_$createComponent(StartupSessionBinding,{api,controller:startup
|
|
7551
|
-
}),_$createComponent(UpgradeNotesBinding,{api,preferences,version:"0.
|
|
7596
|
+
}),_$createComponent(UpgradeNotesBinding,{api,preferences,version:"0.21.1"
|
|
7552
7597
|
}),_$createComponent(McpPersistence,{api,controller:mcp
|
|
7553
7598
|
})]
|
|
7554
7599
|
}})
|
|
@@ -7561,7 +7606,7 @@ api.slots.register({order:100,slots:{app(){return _$createComponent(IconProvider
|
|
|
7561
7606
|
},sidebar_content(_context,props){return _$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
|
|
7562
7607
|
},get multilineCorners(){return preferences.cornerFont
|
|
7563
7608
|
},get children(){return _$createComponent(SidebarContent,{api,get onNewSession(){return startup.handleNewSession
|
|
7564
|
-
},mcp,limitsSection:(navigationSection)=>_$createComponent(LimitsSection,{api,preferences,interaction,controller:limits,codex,navigationSection
|
|
7609
|
+
},mcp,limitsSection:(navigationSection)=>_$createComponent(LimitsSection,{api,preferences,interaction,controller:limits,codex,capabilities,navigationSection
|
|
7565
7610
|
}),todo,subagents,skills,preferences,interaction,get sessionID(){return props.session_id
|
|
7566
7611
|
}})
|
|
7567
7612
|
}})
|
|
@@ -7579,12 +7624,12 @@ throw result.error
|
|
|
7579
7624
|
}
|
|
7580
7625
|
return result.data?.type==="text"?result.data.content:undefined
|
|
7581
7626
|
})
|
|
7582
|
-
const versionStatus=createVersionStatus(api,"0.
|
|
7583
|
-
const versionUpdates=createVersionUpdateActions(api,versionStatus,createOpenCodeV1VersionUpdater(api,meta),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.
|
|
7627
|
+
const versionStatus=createVersionStatus(api,"0.21.1")
|
|
7628
|
+
const versionUpdates=createVersionUpdateActions(api,versionStatus,createOpenCodeV1VersionUpdater(api,meta),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.21.1"))
|
|
7584
7629
|
api.slots.register({order:90,slots:{sidebar_footer(_context,props){return _$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
|
|
7585
7630
|
},get multilineCorners(){return preferences.cornerFont
|
|
7586
7631
|
},get children(){return _$createComponent(VersionFooter,{api,get sessionID(){return props.session_id
|
|
7587
|
-
},navigatorVersion:"0.
|
|
7632
|
+
},navigatorVersion:"0.21.1",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
|
|
7588
7633
|
},get onNavigatorUpdate(){return versionUpdates.navigator
|
|
7589
7634
|
}})
|
|
7590
7635
|
}})
|
|
@@ -7597,16 +7642,16 @@ const{mcp,skills,preferences
|
|
|
7597
7642
|
return
|
|
7598
7643
|
return new TextDecoder().decode(await context.client.file.read({location:context.location,path:".opencode/navigator.json"
|
|
7599
7644
|
}))
|
|
7600
|
-
},todo,
|
|
7601
|
-
const versionStatus=createVersionStatus(adapter.api,"0.
|
|
7602
|
-
const versionUpdates=createVersionUpdateActions(adapter.api,versionStatus,createOpenCodeV2VersionUpdater(context),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.
|
|
7645
|
+
},todo,context)
|
|
7646
|
+
const versionStatus=createVersionStatus(adapter.api,"0.21.1")
|
|
7647
|
+
const versionUpdates=createVersionUpdateActions(adapter.api,versionStatus,createOpenCodeV2VersionUpdater(context),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.21.1"))
|
|
7603
7648
|
const disposeFooter=context.ui.slot({append:"sidebar.footer",render:()=>_$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
|
|
7604
7649
|
},get multilineCorners(){return preferences.cornerFont
|
|
7605
7650
|
},get children(){var _el$=_$createElement("box")
|
|
7606
7651
|
_$setProp(_el$,"flexDirection","row")
|
|
7607
7652
|
_$setProp(_el$,"justifyContent","space-between")
|
|
7608
7653
|
_$insert(_el$,_$createComponent(VersionSummary,{get api(){return adapter.api
|
|
7609
|
-
},navigatorVersion:"0.
|
|
7654
|
+
},navigatorVersion:"0.21.1",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
|
|
7610
7655
|
},get onNavigatorUpdate(){return versionUpdates.navigator
|
|
7611
7656
|
}}),null)
|
|
7612
7657
|
_$insert(_el$,_$createComponent(SettingsFooterButton,{get api(){return adapter.api
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "opencode-navigator",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.21.1",
|
|
5
5
|
"description": "Search, navigate, and manage OpenCode sessions from the TUI",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"packageManager": "bun@1.4.2",
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"scripts/update-local-snapshot.mjs",
|
|
35
35
|
"scripts/save-project-profile.mjs",
|
|
36
36
|
"README.md",
|
|
37
|
+
"PROVIDERS.md",
|
|
37
38
|
"CHANGELOG.md",
|
|
38
39
|
"LICENSE"
|
|
39
40
|
],
|
|
@@ -61,14 +62,13 @@
|
|
|
61
62
|
"scripts": {
|
|
62
63
|
"build": "bun run build.ts",
|
|
63
64
|
"bundle:size": "bun run build && bun run scripts/check-bundle-size.ts",
|
|
64
|
-
"format": "
|
|
65
|
-
"format:check": "
|
|
65
|
+
"format": "oxfmt --write .",
|
|
66
|
+
"format:check": "oxfmt --check .",
|
|
66
67
|
"font:install": "node scripts/install-font.mjs",
|
|
67
68
|
"font:build": "uv run scripts/generate-corner-font.py",
|
|
68
69
|
"font:check": "uv run scripts/generate-corner-font.py --check",
|
|
69
|
-
"lint": "
|
|
70
|
-
"lint:
|
|
71
|
-
"lint:fix": "eslint . --fix && bun run format",
|
|
70
|
+
"lint": "oxlint . --deny-warnings",
|
|
71
|
+
"lint:fix": "oxlint . --fix --deny-warnings && bun run format",
|
|
72
72
|
"prepublishOnly": "bun run check",
|
|
73
73
|
"screenshots": "bash scripts/capture-screenshots.sh",
|
|
74
74
|
"screenshots:verify": "bash scripts/capture-screenshots.sh --verify",
|
|
@@ -110,14 +110,17 @@
|
|
|
110
110
|
"@opentui/core": "0.5.12",
|
|
111
111
|
"@opentui/keymap": "0.5.12",
|
|
112
112
|
"@opentui/solid": "0.5.12",
|
|
113
|
-
"@st1ggy/linter-config": "
|
|
113
|
+
"@st1ggy/linter-config": "8.0.0",
|
|
114
114
|
"@types/bun": "1.4.2",
|
|
115
|
-
"eslint": "10.8.0",
|
|
116
|
-
"eslint-config-prettier": "10.1.8",
|
|
117
115
|
"eslint-plugin-solid": "0.18.0",
|
|
118
|
-
"
|
|
116
|
+
"oxfmt": "0.72.0",
|
|
117
|
+
"oxlint": "1.87.0",
|
|
118
|
+
"oxlint-tsgolint": "7.0.2003",
|
|
119
119
|
"solid-js": "1.9.15",
|
|
120
120
|
"typescript": "6.0.3",
|
|
121
121
|
"web-tree-sitter": "0.25.10"
|
|
122
|
+
},
|
|
123
|
+
"optionalDependencies": {
|
|
124
|
+
"@github/copilot-sdk": "1.0.16"
|
|
122
125
|
}
|
|
123
126
|
}
|