mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-31 14:16:39 +01:00
Land the approved Cloud configuration and release-image package stack.
Includes the separately reviewed adapter settings (#18335), external adapters (#18333), bundled plugins (#18336), startup configuration (#18339), and migration/package checks (#18341).
Includes the final image-owned loader and linked-dependency inventory corrections.
Verified stack head: 462716170d.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
32 lines
1.2 KiB
TypeScript
32 lines
1.2 KiB
TypeScript
import type { AdapterRegistryEntryParsed } from "@paperclipai/shared";
|
|
import { logger } from "../middleware/logger.js";
|
|
import { listServerAdapters } from "../adapters/registry.js";
|
|
export { parseAdapterRegistryEnv, type AdapterRegistryEnv } from "./adapter-registry-config.js";
|
|
|
|
export function reconcileAdapterAvailability(
|
|
registry: AdapterRegistryEntryParsed[] | null,
|
|
): { enabled: string[]; disabled: string[] } {
|
|
if (!registry) return { enabled: [], disabled: [] };
|
|
|
|
const knownTypes = new Set(listServerAdapters().map((a) => a.type));
|
|
const declared = new Map(registry.map((e) => [e.adapterType, e]));
|
|
|
|
const missing = [...declared.keys()].filter((t) => !knownTypes.has(t));
|
|
if (missing.length > 0) {
|
|
throw new Error(
|
|
`PAPERCLIP_ADAPTERS declares adapter type(s) with no installed adapter: ${missing.join(", ")}`,
|
|
);
|
|
}
|
|
|
|
const enabled: string[] = [];
|
|
const disabled: string[] = [];
|
|
for (const type of knownTypes) {
|
|
const entry = declared.get(type);
|
|
const shouldEnable = entry !== undefined && entry.enabled !== false;
|
|
(shouldEnable ? enabled : disabled).push(type);
|
|
}
|
|
|
|
logger.info({ enabled, disabled }, "validated adapter availability from PAPERCLIP_ADAPTERS");
|
|
return { enabled, disabled };
|
|
}
|