mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-17 12:11:20 +00:00
fix(check): repair plugin and secret type drift
This commit is contained in:
@@ -46,8 +46,8 @@ export function resolvePluginSnapshotCacheTtlMs(env: NodeJS.ProcessEnv): number
|
||||
return Math.min(discoveryCacheMs, manifestCacheMs);
|
||||
}
|
||||
|
||||
export function buildPluginSnapshotCacheEnvKey(env: NodeJS.ProcessEnv) {
|
||||
return {
|
||||
export function buildPluginSnapshotCacheEnvKey(env: NodeJS.ProcessEnv): string {
|
||||
return JSON.stringify({
|
||||
OPENCLAW_BUNDLED_PLUGINS_DIR: env.OPENCLAW_BUNDLED_PLUGINS_DIR ?? "",
|
||||
OPENCLAW_DISABLE_PLUGIN_DISCOVERY_CACHE: env.OPENCLAW_DISABLE_PLUGIN_DISCOVERY_CACHE ?? "",
|
||||
OPENCLAW_DISABLE_PLUGIN_MANIFEST_CACHE: env.OPENCLAW_DISABLE_PLUGIN_MANIFEST_CACHE ?? "",
|
||||
@@ -59,5 +59,5 @@ export function buildPluginSnapshotCacheEnvKey(env: NodeJS.ProcessEnv) {
|
||||
HOME: env.HOME ?? "",
|
||||
USERPROFILE: env.USERPROFILE ?? "",
|
||||
VITEST: env.VITEST ?? "",
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,22 +1,25 @@
|
||||
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
const resolveRuntimePluginRegistryMock = vi.fn();
|
||||
const applyPluginAutoEnableMock = vi.fn();
|
||||
const resolveRuntimePluginRegistryMock = vi.fn((_options: unknown): unknown => undefined);
|
||||
const applyPluginAutoEnableMock = vi.fn((_params: { config: unknown }): unknown => undefined);
|
||||
const getMemoryRuntimeMock = vi.fn();
|
||||
const resolveAgentWorkspaceDirMock = vi.fn();
|
||||
const resolveDefaultAgentIdMock = vi.fn(() => "default");
|
||||
const resolveAgentWorkspaceDirMock = vi.fn(
|
||||
(_config: unknown, _agentId: unknown): unknown => undefined,
|
||||
);
|
||||
const resolveDefaultAgentIdMock = vi.fn((_config: unknown) => "default");
|
||||
|
||||
vi.mock("../config/plugin-auto-enable.js", () => ({
|
||||
applyPluginAutoEnable: (...args: unknown[]) => applyPluginAutoEnableMock(...args),
|
||||
applyPluginAutoEnable: (params: { config: unknown }) => applyPluginAutoEnableMock(params),
|
||||
}));
|
||||
|
||||
vi.mock("../agents/agent-scope.js", () => ({
|
||||
resolveAgentWorkspaceDir: (...args: unknown[]) => resolveAgentWorkspaceDirMock(...args),
|
||||
resolveDefaultAgentId: (...args: unknown[]) => resolveDefaultAgentIdMock(...args),
|
||||
resolveAgentWorkspaceDir: (config: unknown, agentId: unknown) =>
|
||||
resolveAgentWorkspaceDirMock(config, agentId),
|
||||
resolveDefaultAgentId: (config: unknown) => resolveDefaultAgentIdMock(config),
|
||||
}));
|
||||
|
||||
vi.mock("./loader.js", () => ({
|
||||
resolveRuntimePluginRegistry: (...args: unknown[]) => resolveRuntimePluginRegistryMock(...args),
|
||||
resolveRuntimePluginRegistry: (options: unknown) => resolveRuntimePluginRegistryMock(options),
|
||||
}));
|
||||
|
||||
vi.mock("./memory-state.js", () => ({
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
const loadConfigMock = vi.fn();
|
||||
const applyPluginAutoEnableMock = vi.fn();
|
||||
const resolveAgentWorkspaceDirMock = vi.fn(() => "/resolved-workspace");
|
||||
const resolveDefaultAgentIdMock = vi.fn(() => "default");
|
||||
const applyPluginAutoEnableMock = vi.fn((_params: { config: unknown }): unknown => undefined);
|
||||
const resolveAgentWorkspaceDirMock = vi.fn(
|
||||
(_config: unknown, _agentId: unknown): string => "/resolved-workspace",
|
||||
);
|
||||
const resolveDefaultAgentIdMock = vi.fn((_config: unknown): string => "default");
|
||||
|
||||
let resolvePluginRuntimeLoadContext: typeof import("./load-context.js").resolvePluginRuntimeLoadContext;
|
||||
let buildPluginRuntimeLoadOptions: typeof import("./load-context.js").buildPluginRuntimeLoadOptions;
|
||||
@@ -13,12 +15,13 @@ vi.mock("../../config/config.js", () => ({
|
||||
}));
|
||||
|
||||
vi.mock("../../config/plugin-auto-enable.js", () => ({
|
||||
applyPluginAutoEnable: (...args: unknown[]) => applyPluginAutoEnableMock(...args),
|
||||
applyPluginAutoEnable: (params: { config: unknown }) => applyPluginAutoEnableMock(params),
|
||||
}));
|
||||
|
||||
vi.mock("../../agents/agent-scope.js", () => ({
|
||||
resolveAgentWorkspaceDir: (...args: unknown[]) => resolveAgentWorkspaceDirMock(...args),
|
||||
resolveDefaultAgentId: (...args: unknown[]) => resolveDefaultAgentIdMock(...args),
|
||||
resolveAgentWorkspaceDir: (config: unknown, agentId: unknown) =>
|
||||
resolveAgentWorkspaceDirMock(config, agentId),
|
||||
resolveDefaultAgentId: (config: unknown) => resolveDefaultAgentIdMock(config),
|
||||
}));
|
||||
|
||||
describe("resolvePluginRuntimeLoadContext", () => {
|
||||
|
||||
@@ -1,37 +1,42 @@
|
||||
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
const loadOpenClawPluginsMock = vi.fn();
|
||||
const loadOpenClawPluginsMock = vi.fn((_options: unknown): unknown => undefined);
|
||||
const getActivePluginRegistryMock = vi.fn();
|
||||
const resolveConfiguredChannelPluginIdsMock = vi.fn();
|
||||
const resolveChannelPluginIdsMock = vi.fn();
|
||||
const applyPluginAutoEnableMock = vi.fn();
|
||||
const resolveAgentWorkspaceDirMock = vi.fn(() => "/resolved-workspace");
|
||||
const resolveDefaultAgentIdMock = vi.fn(() => "default");
|
||||
const resolveConfiguredChannelPluginIdsMock = vi.fn(
|
||||
(_options: unknown): string[] | undefined => undefined,
|
||||
);
|
||||
const resolveChannelPluginIdsMock = vi.fn((_options: unknown): string[] | undefined => undefined);
|
||||
const applyPluginAutoEnableMock = vi.fn((_params: { config: unknown }): unknown => undefined);
|
||||
const resolveAgentWorkspaceDirMock = vi.fn(
|
||||
(_config: unknown, _agentId: unknown): string => "/resolved-workspace",
|
||||
);
|
||||
const resolveDefaultAgentIdMock = vi.fn((_config: unknown): string => "default");
|
||||
|
||||
let ensurePluginRegistryLoaded: typeof import("./runtime-registry-loader.js").ensurePluginRegistryLoaded;
|
||||
let resetPluginRegistryLoadedForTests: typeof import("./runtime-registry-loader.js").__testing.resetPluginRegistryLoadedForTests;
|
||||
|
||||
vi.mock("../loader.js", () => ({
|
||||
loadOpenClawPlugins: (...args: unknown[]) => loadOpenClawPluginsMock(...args),
|
||||
loadOpenClawPlugins: (options: unknown) => loadOpenClawPluginsMock(options),
|
||||
}));
|
||||
|
||||
vi.mock("../runtime.js", () => ({
|
||||
getActivePluginRegistry: (...args: unknown[]) => getActivePluginRegistryMock(...args),
|
||||
getActivePluginRegistry: () => getActivePluginRegistryMock(),
|
||||
}));
|
||||
|
||||
vi.mock("../channel-plugin-ids.js", () => ({
|
||||
resolveConfiguredChannelPluginIds: (...args: unknown[]) =>
|
||||
resolveConfiguredChannelPluginIdsMock(...args),
|
||||
resolveChannelPluginIds: (...args: unknown[]) => resolveChannelPluginIdsMock(...args),
|
||||
resolveConfiguredChannelPluginIds: (options: unknown) =>
|
||||
resolveConfiguredChannelPluginIdsMock(options),
|
||||
resolveChannelPluginIds: (options: unknown) => resolveChannelPluginIdsMock(options),
|
||||
}));
|
||||
|
||||
vi.mock("../../config/plugin-auto-enable.js", () => ({
|
||||
applyPluginAutoEnable: (...args: unknown[]) => applyPluginAutoEnableMock(...args),
|
||||
applyPluginAutoEnable: (params: { config: unknown }) => applyPluginAutoEnableMock(params),
|
||||
}));
|
||||
|
||||
vi.mock("../../agents/agent-scope.js", () => ({
|
||||
resolveAgentWorkspaceDir: (...args: unknown[]) => resolveAgentWorkspaceDirMock(...args),
|
||||
resolveDefaultAgentId: (...args: unknown[]) => resolveDefaultAgentIdMock(...args),
|
||||
resolveAgentWorkspaceDir: (config: unknown, agentId: unknown) =>
|
||||
resolveAgentWorkspaceDirMock(config, agentId),
|
||||
resolveDefaultAgentId: (config: unknown) => resolveDefaultAgentIdMock(config),
|
||||
}));
|
||||
|
||||
describe("ensurePluginRegistryLoaded", () => {
|
||||
|
||||
@@ -202,7 +202,6 @@ function buildPluginReport(
|
||||
: loadPluginMetadataRegistrySnapshot({
|
||||
config: runtimeCompatConfig,
|
||||
activationSourceConfig: rawConfig,
|
||||
activate: false,
|
||||
workspaceDir,
|
||||
env: params?.env,
|
||||
loadModules: false,
|
||||
|
||||
@@ -136,7 +136,7 @@ export function resolvePluginTools(params: {
|
||||
}
|
||||
if (!resolved) {
|
||||
if (entry.names.length > 0) {
|
||||
context.logger.debug(
|
||||
context.logger.debug?.(
|
||||
`plugin tool factory returned null (${entry.pluginId}): [${entry.names.join(", ")}]`,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -9,9 +9,11 @@ export type SecretResolverWarningCode =
|
||||
| "SECRETS_REF_OVERRIDES_PLAINTEXT"
|
||||
| "SECRETS_REF_IGNORED_INACTIVE_SURFACE"
|
||||
| "WEB_SEARCH_PROVIDER_INVALID_AUTODETECT"
|
||||
| "WEB_SEARCH_AUTODETECT_SELECTED"
|
||||
| "WEB_SEARCH_KEY_UNRESOLVED_FALLBACK_USED"
|
||||
| "WEB_SEARCH_KEY_UNRESOLVED_NO_FALLBACK"
|
||||
| "WEB_FETCH_PROVIDER_INVALID_AUTODETECT"
|
||||
| "WEB_FETCH_AUTODETECT_SELECTED"
|
||||
| "WEB_FETCH_PROVIDER_KEY_UNRESOLVED_FALLBACK_USED"
|
||||
| "WEB_FETCH_PROVIDER_KEY_UNRESOLVED_NO_FALLBACK";
|
||||
|
||||
|
||||
@@ -1,10 +1,16 @@
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import { resolveSecretInputRef } from "../config/types.secrets.js";
|
||||
import { resolveManifestContractOwnerPluginId } from "../plugins/manifest-registry.js";
|
||||
import type { ResolverContext, SecretDefaults } from "./runtime-shared.js";
|
||||
import type {
|
||||
ResolverContext,
|
||||
SecretDefaults,
|
||||
SecretResolverWarningCode,
|
||||
} from "./runtime-shared.js";
|
||||
import { pushInactiveSurfaceWarning, pushWarning } from "./runtime-shared.js";
|
||||
import type { RuntimeWebDiagnostic, RuntimeWebDiagnosticCode } from "./runtime-web-tools.types.js";
|
||||
|
||||
type RuntimeWebWarningDiagnosticCode = Extract<RuntimeWebDiagnosticCode, SecretResolverWarningCode>;
|
||||
|
||||
export type SecretResolutionResult<TSource extends string> = {
|
||||
value?: string;
|
||||
source: TSource;
|
||||
@@ -43,9 +49,9 @@ export type RuntimeWebProviderSelectionParams<
|
||||
context: ResolverContext;
|
||||
defaults: SecretDefaults | undefined;
|
||||
deferKeylessFallback: boolean;
|
||||
fallbackUsedCode: string;
|
||||
noFallbackCode: string;
|
||||
autoDetectSelectedCode: string;
|
||||
fallbackUsedCode: RuntimeWebWarningDiagnosticCode;
|
||||
noFallbackCode: RuntimeWebWarningDiagnosticCode;
|
||||
autoDetectSelectedCode: RuntimeWebDiagnosticCode;
|
||||
readConfiguredCredential: (params: {
|
||||
provider: TProvider;
|
||||
config: OpenClawConfig;
|
||||
@@ -134,7 +140,7 @@ export type ResolveRuntimeWebProviderSurfaceParams<
|
||||
toolConfig: TToolConfig;
|
||||
diagnostics: RuntimeWebDiagnostic[];
|
||||
metadataDiagnostics: RuntimeWebDiagnostic[];
|
||||
invalidAutoDetectCode: RuntimeWebDiagnosticCode;
|
||||
invalidAutoDetectCode: RuntimeWebWarningDiagnosticCode;
|
||||
sourceConfig: OpenClawConfig;
|
||||
context: ResolverContext;
|
||||
resolveProviders: (params: { configuredBundledPluginId?: string }) => TProvider[];
|
||||
|
||||
Reference in New Issue
Block a user