feat(frontend): integrate opencode plugin modal into preflight UI
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -85,6 +85,7 @@ import type {
|
|||||||
ModelProviderInfo,
|
ModelProviderInfo,
|
||||||
PreflightResult,
|
PreflightResult,
|
||||||
} from "@/lib/types"
|
} from "@/lib/types"
|
||||||
|
import { OpencodePluginsModal } from "./opencode-plugins-modal"
|
||||||
|
|
||||||
interface AgentCheckState {
|
interface AgentCheckState {
|
||||||
result?: PreflightResult
|
result?: PreflightResult
|
||||||
@@ -156,6 +157,7 @@ type UiFixAction =
|
|||||||
| "upgrade_npx"
|
| "upgrade_npx"
|
||||||
| "uninstall_binary"
|
| "uninstall_binary"
|
||||||
| "uninstall_npx"
|
| "uninstall_npx"
|
||||||
|
| "install_opencode_plugins"
|
||||||
payload: string
|
payload: string
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2584,6 +2586,10 @@ export function AcpAgentSettings() {
|
|||||||
const [modelProviders, setModelProviders] = useState<ModelProviderInfo[]>([])
|
const [modelProviders, setModelProviders] = useState<ModelProviderInfo[]>([])
|
||||||
const [uninstallConfirmAgent, setUninstallConfirmAgent] =
|
const [uninstallConfirmAgent, setUninstallConfirmAgent] =
|
||||||
useState<AcpAgentInfo | null>(null)
|
useState<AcpAgentInfo | null>(null)
|
||||||
|
const [pluginModalOpen, setPluginModalOpen] = useState(false)
|
||||||
|
const [pluginModalAgent, setPluginModalAgent] = useState<AgentType | null>(
|
||||||
|
null
|
||||||
|
)
|
||||||
const [expandedChecks, setExpandedChecks] = useState<Record<string, boolean>>(
|
const [expandedChecks, setExpandedChecks] = useState<Record<string, boolean>>(
|
||||||
{}
|
{}
|
||||||
)
|
)
|
||||||
@@ -3137,6 +3143,11 @@ export function AcpAgentSettings() {
|
|||||||
await runBinaryAction(agent, "upgrade", "redownload_binary")
|
await runBinaryAction(agent, "upgrade", "redownload_binary")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if (action.kind === "install_opencode_plugins") {
|
||||||
|
setPluginModalAgent(agent.agent_type)
|
||||||
|
setPluginModalOpen(true)
|
||||||
|
return
|
||||||
|
}
|
||||||
await runPreflight(agent.agent_type)
|
await runPreflight(agent.agent_type)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3238,6 +3249,7 @@ export function AcpAgentSettings() {
|
|||||||
"uninstall_binary",
|
"uninstall_binary",
|
||||||
"uninstall_npx",
|
"uninstall_npx",
|
||||||
"redownload_binary",
|
"redownload_binary",
|
||||||
|
"install_opencode_plugins",
|
||||||
].includes(fix.kind)
|
].includes(fix.kind)
|
||||||
}
|
}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
@@ -3258,6 +3270,8 @@ export function AcpAgentSettings() {
|
|||||||
) : fix.kind === "uninstall_binary" ||
|
) : fix.kind === "uninstall_binary" ||
|
||||||
fix.kind === "uninstall_npx" ? (
|
fix.kind === "uninstall_npx" ? (
|
||||||
<Trash2 className="h-3 w-3" />
|
<Trash2 className="h-3 w-3" />
|
||||||
|
) : fix.kind === "install_opencode_plugins" ? (
|
||||||
|
<Download className="h-3 w-3" />
|
||||||
) : null}
|
) : null}
|
||||||
{fix.label}
|
{fix.label}
|
||||||
</Button>
|
</Button>
|
||||||
@@ -7164,6 +7178,17 @@ supports_websockets = true`}
|
|||||||
</AlertDialogFooter>
|
</AlertDialogFooter>
|
||||||
</AlertDialogContent>
|
</AlertDialogContent>
|
||||||
</AlertDialog>
|
</AlertDialog>
|
||||||
|
|
||||||
|
<OpencodePluginsModal
|
||||||
|
open={pluginModalOpen}
|
||||||
|
onOpenChange={setPluginModalOpen}
|
||||||
|
onCompleted={() => {
|
||||||
|
if (pluginModalAgent) {
|
||||||
|
runPreflight(pluginModalAgent)
|
||||||
|
}
|
||||||
|
setPluginModalAgent(null)
|
||||||
|
}}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user