|
|
@@ -4,8 +4,10 @@ import { useParams } from "@solidjs/router"
|
|
|
import { batch, createEffect, createMemo, startTransition } from "solid-js"
|
|
|
import { createStore } from "solid-js/store"
|
|
|
import { useModels } from "@/context/models"
|
|
|
+import { useSettings } from "@/context/settings"
|
|
|
import { useProviders } from "@/hooks/use-providers"
|
|
|
import { Persist, persisted } from "@/utils/persist"
|
|
|
+import { hasCustomAgent, resolveAgent } from "./local-agent"
|
|
|
import { cycleModelVariant, getConfiguredAgentVariant, resolveModelVariant } from "./model-variant"
|
|
|
import { useSDK } from "./sdk"
|
|
|
import { useSync } from "./sync"
|
|
|
@@ -62,9 +64,11 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
|
|
|
const serverSDK = useServerSDK()
|
|
|
const providers = useProviders(() => sdk().directory)
|
|
|
const models = useModels()
|
|
|
+ const settings = useSettings()
|
|
|
|
|
|
const id = createMemo(() => params.id || undefined)
|
|
|
const list = createMemo(() => sync().data.agent.filter((item) => item.mode !== "subagent" && !item.hidden))
|
|
|
+ const agentsVisible = createMemo(() => settings.visibility.customAgents() || hasCustomAgent(list()))
|
|
|
const connected = createMemo(() => new Set(providers.connected().map((item) => item.id)))
|
|
|
|
|
|
const [saved, setSaved, , savedReady] = persisted(
|
|
|
@@ -107,9 +111,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
|
|
|
}
|
|
|
|
|
|
const pickAgent = (name: string | undefined) => {
|
|
|
- const items = list()
|
|
|
- if (items.length === 0) return
|
|
|
- return items.find((item) => item.name === name) ?? items[0]
|
|
|
+ return resolveAgent(list(), name)
|
|
|
}
|
|
|
|
|
|
createEffect(() => {
|
|
|
@@ -180,8 +182,9 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
|
|
|
|
|
|
const agent = {
|
|
|
list,
|
|
|
+ visible: agentsVisible,
|
|
|
current() {
|
|
|
- return pickAgent(scope()?.agent ?? store.current)
|
|
|
+ return pickAgent(agentsVisible() ? (scope()?.agent ?? store.current) : "build")
|
|
|
},
|
|
|
set(name: string | undefined) {
|
|
|
const item = pickAgent(name)
|