Improve imported agent adapter selection

This commit is contained in:
Dotta
2026-03-16 12:17:28 -05:00
parent 0763e2eb20
commit fed94d18f3
7 changed files with 95 additions and 20 deletions

View File

@@ -17,7 +17,9 @@ export function GeminiLocalConfigFields({
config,
eff,
mark,
hideInstructionsFile,
}: AdapterConfigFieldsProps) {
if (hideInstructionsFile) return null;
return (
<>
<Field label="Agent instructions file" hint={instructionsFileHint}>

View File

@@ -1,4 +1,4 @@
export { getUIAdapter } from "./registry";
export { getUIAdapter, listUIAdapters } from "./registry";
export { buildTranscript } from "./transcript";
export type {
TranscriptEntry,

View File

@@ -17,7 +17,9 @@ export function PiLocalConfigFields({
config,
eff,
mark,
hideInstructionsFile,
}: AdapterConfigFieldsProps) {
if (hideInstructionsFile) return null;
return (
<Field label="Agent instructions file" hint={instructionsFileHint}>
<div className="flex items-center gap-2">

View File

@@ -9,20 +9,26 @@ import { openClawGatewayUIAdapter } from "./openclaw-gateway";
import { processUIAdapter } from "./process";
import { httpUIAdapter } from "./http";
const uiAdapters: UIAdapterModule[] = [
claudeLocalUIAdapter,
codexLocalUIAdapter,
geminiLocalUIAdapter,
openCodeLocalUIAdapter,
piLocalUIAdapter,
cursorLocalUIAdapter,
openClawGatewayUIAdapter,
processUIAdapter,
httpUIAdapter,
];
const adaptersByType = new Map<string, UIAdapterModule>(
[
claudeLocalUIAdapter,
codexLocalUIAdapter,
geminiLocalUIAdapter,
openCodeLocalUIAdapter,
piLocalUIAdapter,
cursorLocalUIAdapter,
openClawGatewayUIAdapter,
processUIAdapter,
httpUIAdapter,
].map((a) => [a.type, a]),
uiAdapters.map((a) => [a.type, a]),
);
export function getUIAdapter(type: string): UIAdapterModule {
return adaptersByType.get(type) ?? processUIAdapter;
}
export function listUIAdapters(): UIAdapterModule[] {
return [...uiAdapters];
}

View File

@@ -26,7 +26,7 @@ import {
} from "lucide-react";
import { Field, adapterLabels } from "../components/agent-config-primitives";
import { defaultCreateValues } from "../components/agent-config-defaults";
import { getUIAdapter } from "../adapters";
import { getUIAdapter, listUIAdapters } from "../adapters";
import { ClaudeLocalAdvancedFields } from "../adapters/claude-local/config-fields";
import type { CreateConfigValues } from "@paperclipai/adapter-utils";
import {
@@ -443,12 +443,10 @@ function ConflictResolutionList({
// ── Adapter type options for import ───────────────────────────────────
const IMPORT_ADAPTER_OPTIONS: { value: string; label: string }[] = [
{ value: "claude_local", label: adapterLabels.claude_local ?? "Claude (local)" },
{ value: "codex_local", label: adapterLabels.codex_local ?? "Codex (local)" },
{ value: "opencode_local", label: adapterLabels.opencode_local ?? "OpenCode (local)" },
{ value: "cursor", label: adapterLabels.cursor ?? "Cursor (local)" },
];
const IMPORT_ADAPTER_OPTIONS: { value: string; label: string }[] = listUIAdapters().map((adapter) => ({
value: adapter.type,
label: adapterLabels[adapter.type] ?? adapter.label,
}));
// ── Adapter picker for imported agents ───────────────────────────────