UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

134 lines (133 loc) 6.09 kB
import { t as safeParseJson } from "./json-coercion-AulM0PZ6.js"; import { At as boolean, Et as array, Nn as record, Rn as string, Tn as object, Xn as union, Zn as unknown, dn as literal, wn as number } from "./schemas-zxit8y5H.js"; import { f as extractPluginInstallRecordsFromInstalledPluginIndex } from "./installed-plugin-index-wrDsjyMD.js"; import { n as recordInstalledPluginIndexInstallOwner } from "./installed-plugin-index-install-owner-Bd-Byre8.js"; import { s as parsePluginInstallRecordMap, t as PluginInstallRecordSchema } from "./plugin-install-record-map-B44vZyl2.js"; import { c as getPersistedInstalledPluginIndexCacheEntry } from "./installed-plugin-index-record-reader-SXWwf_BU.js"; import { n as safeParseWithSchema } from "./zod-parse-Bip-sZi_.js"; //#region src/plugins/installed-plugin-index-store.ts const StringArraySchema = array(string()); const INSTALLED_PLUGIN_INDEX_STATE_KEY = "plugins.installedIndex"; const InstalledPluginIndexStartupSchema = object({ sidecar: boolean(), memory: boolean(), agentHarnesses: StringArraySchema, configPaths: StringArraySchema.optional() }); const InstalledPluginIndexContributionSchema = object({ channels: StringArraySchema, channelConfigs: StringArraySchema, providers: StringArraySchema, modelCatalogProviders: StringArraySchema, modelSupportPrefixes: StringArraySchema, modelSupportPatterns: StringArraySchema, autoEnableProviderIds: StringArraySchema, commandAliases: StringArraySchema, contracts: record(string(), StringArraySchema) }); const InstalledPluginFileSignatureSchema = object({ size: number(), mtimeMs: number(), ctimeMs: number().optional() }); const InstalledPluginIndexRecordSchema = object({ pluginId: string(), installOwner: string().optional(), installOwnerAmbiguous: literal(true).optional(), packageName: string().optional(), packageVersion: string().optional(), installRecord: PluginInstallRecordSchema.optional(), installRecordHash: string().optional(), packageInstall: unknown().optional(), packageChannel: unknown().optional(), packageBuild: object({ bundledDist: boolean().optional() }).optional(), manifestPath: string(), manifestHash: string(), doctorContractHash: string().optional(), doctorContractFile: InstalledPluginFileSignatureSchema.optional(), manifestFile: InstalledPluginFileSignatureSchema.optional(), format: string().optional(), bundleFormat: string().optional(), source: string().optional(), setupSource: string().optional(), packageJson: object({ path: string(), hash: string(), fileSignature: InstalledPluginFileSignatureSchema.optional() }).optional(), rootDir: string(), origin: string(), enabled: boolean(), enabledByDefault: boolean().optional(), enabledByDefaultOnPlatforms: StringArraySchema.optional(), syntheticAuthRefs: StringArraySchema.optional(), startup: InstalledPluginIndexStartupSchema, contributions: InstalledPluginIndexContributionSchema.optional(), compat: array(string()) }); const PluginDiagnosticSchema = object({ level: union([literal("warn"), literal("error")]), message: string(), pluginId: string().optional(), source: string().optional(), code: string().optional() }); const InstalledPluginIndexSchema = object({ version: literal(1), warning: string().optional(), hostContractVersion: string(), compatRegistryVersion: string(), migrationVersion: literal(1), policyHash: string(), generatedAtMs: number(), workspaceDir: string().optional(), refreshReason: string().optional(), installRecords: unknown().optional(), plugins: array(InstalledPluginIndexRecordSchema), diagnostics: array(PluginDiagnosticSchema) }); function parseInstalledPluginIndex(value) { const parsed = safeParseWithSchema(InstalledPluginIndexSchema, value); if (!parsed) return null; const installRecords = Object.hasOwn(parsed, "installRecords") ? parsePluginInstallRecordMap(parsed.installRecords) : extractPluginInstallRecordsFromInstalledPluginIndex(parsed); if (!installRecords) return null; return { version: parsed.version, ...parsed.warning ? { warning: parsed.warning } : {}, hostContractVersion: parsed.hostContractVersion, compatRegistryVersion: parsed.compatRegistryVersion, migrationVersion: parsed.migrationVersion, policyHash: parsed.policyHash, generatedAtMs: parsed.generatedAtMs, ...parsed.workspaceDir !== void 0 ? { workspaceDir: parsed.workspaceDir } : {}, ...parsed.refreshReason ? { refreshReason: parsed.refreshReason } : {}, installRecords, plugins: parsed.plugins.map(({ installOwner, installOwnerAmbiguous, ...plugin }) => recordInstalledPluginIndexInstallOwner(plugin, installOwner, installOwnerAmbiguous === true)), diagnostics: parsed.diagnostics }; } function parseInstalledPluginIndexSqliteRow(value) { return value ? parseInstalledPluginIndex(value.index) : null; } function readInstalledPluginIndexRow(database) { return parsePersistedInstalledPluginIndexRow(database.prepare("SELECT value_json FROM config_machine_state WHERE state_key = ?").get(INSTALLED_PLUGIN_INDEX_STATE_KEY)); } function parsePersistedInstalledPluginIndexRow(row) { if (!row) return; const value = safeParseJson(row.value_json); if (!value || typeof value !== "object" || typeof value.revision !== "number") return; return value; } async function readPersistedInstalledPluginIndex(options = {}) { return readPersistedInstalledPluginIndexSync(options); } function readPersistedInstalledPluginIndexSync(options = {}) { const entry = getPersistedInstalledPluginIndexCacheEntry(options); if (entry.index === void 0) { const value = entry.state.status === "present" ? entry.state.value : void 0; entry.index = value && typeof value === "object" && "revision" in value && typeof value.revision === "number" ? parseInstalledPluginIndex("index" in value ? value.index : void 0) : null; } return entry.index; } //#endregion export { readPersistedInstalledPluginIndex as a, readInstalledPluginIndexRow as i, parseInstalledPluginIndex as n, readPersistedInstalledPluginIndexSync as o, parseInstalledPluginIndexSqliteRow as r, INSTALLED_PLUGIN_INDEX_STATE_KEY as t };