forked from farhoodlabs/paperclip
feat(adapters): add overriddenBuiltin flag to API and Adapter Manager UI
When an external plugin overrides a built-in adapter type, the GET /api/adapters response now includes overriddenBuiltin: true. The Adapter Manager shows an 'Overrides built-in' badge on such adapters.
This commit is contained in:
@@ -63,6 +63,8 @@ interface AdapterInfo {
|
||||
modelsCount: number;
|
||||
loaded: boolean;
|
||||
disabled: boolean;
|
||||
/** True when an external plugin has replaced a built-in adapter of the same type. */
|
||||
overriddenBuiltin?: boolean;
|
||||
version?: string;
|
||||
packageName?: string;
|
||||
isLocalPath?: boolean;
|
||||
@@ -105,6 +107,7 @@ function buildAdapterInfo(adapter: ServerAdapterModule, externalRecord: AdapterP
|
||||
modelsCount: (adapter.models ?? []).length,
|
||||
loaded: true, // If it's in the registry, it's loaded
|
||||
disabled: disabledSet.has(adapter.type),
|
||||
overriddenBuiltin: externalRecord ? BUILTIN_ADAPTER_TYPES.has(adapter.type) : undefined,
|
||||
// Prefer on-disk package.json so the UI reflects bumps without relying on store-only fields.
|
||||
version: fromDisk ?? externalRecord?.version,
|
||||
packageName: externalRecord?.packageName,
|
||||
|
||||
@@ -17,6 +17,8 @@ export interface AdapterInfo {
|
||||
packageName?: string;
|
||||
/** Whether the adapter was installed from a local path (vs npm). */
|
||||
isLocalPath?: boolean;
|
||||
/** True when an external plugin has replaced a built-in adapter of the same type. */
|
||||
overriddenBuiltin?: boolean;
|
||||
}
|
||||
|
||||
export interface AdapterInstallResult {
|
||||
|
||||
@@ -63,6 +63,11 @@ function AdapterRow({
|
||||
{adapter.label || getAdapterLabel(adapter.type)}
|
||||
</span>
|
||||
<Badge variant="outline">{adapter.source === "external" ? "External" : "Built-in"}</Badge>
|
||||
{adapter.overriddenBuiltin && (
|
||||
<Badge variant="secondary" className="text-blue-600 border-blue-400">
|
||||
Overrides built-in
|
||||
</Badge>
|
||||
)}
|
||||
{adapter.source === "external" && (
|
||||
adapter.isLocalPath
|
||||
? <FolderOpen className="h-4 w-4 text-amber-500" title="Installed from local path" />
|
||||
|
||||
Reference in New Issue
Block a user