Files
openclaw/src/plugin-sdk/plugin-test-runtime.ts
T
Peter Steinberger 5c2e099374 fix(codex): restore promoted approval regression coverage (#122861)
* test(codex): align projector fixtures with verbose policy

* test(codex): supply admitted host context to hook relay fixtures
2026-08-12 16:30:30 -07:00

157 lines
6.0 KiB
TypeScript

// Focused public test helpers for plugin runtime, registry, and setup fixtures.
import {
createOperationalRunInstanceRef,
prepareAgentRunAdmission,
} from "../agents/admitted-run-context.js";
import type { EmbeddedRunAttemptParams } from "../agents/embedded-agent-runner/run/types.js";
import { createAgentHarnessHostCapabilities } from "../agents/harness/host-capability.js";
type AgentHarnessHostTestAttempt = Omit<
EmbeddedRunAttemptParams,
"admittedRunContext" | "hostCapabilities"
>;
/** Builds the production admitted-run host boundary for plugin integration tests. */
export async function createAgentHarnessHostCapabilitiesForTest(params: {
attempt: AgentHarnessHostTestAttempt;
pluginId: string;
}) {
const admission = prepareAgentRunAdmission({
cfg: params.attempt.config ?? {},
facts: {
runId: params.attempt.runId,
agentId: params.attempt.agentId ?? "main",
ingress: { kind: "system", boundary: "plugin-test-runtime", state: "present" },
},
operationalRunInstance: createOperationalRunInstanceRef(params.attempt.runId),
});
const admittedRunContext = await admission.admit("plugin-harness", params.pluginId);
const host = createAgentHarnessHostCapabilities({
attempt: { ...params.attempt, admittedRunContext },
pluginId: params.pluginId,
});
return {
capabilities: host.capabilities,
close: () => {
host.close();
admission.close();
},
};
}
export { setDefaultChannelPluginRegistryForTests } from "../commands/channel-test-registry.js";
export {
createEmptyPluginRegistry,
createPluginRegistry,
type PluginRecord,
} from "../plugins/registry.js";
export {
providerContractLoadError,
pluginRegistrationContractRegistry,
resolveProviderContractProvidersForPluginIds,
resolveWebFetchProviderContractEntriesForPluginId,
resolveWebSearchProviderContractEntriesForPluginId,
} from "../plugins/contracts/registry.js";
export { loadPluginManifestRegistryCore } from "../plugins/manifest-registry.js";
export {
emitDiagnosticEventWithTrustedTraceContext,
emitInternalDiagnosticEvent as emitInternalDiagnosticEventForTest,
emitTrustedSecurityEvent,
} from "../infra/diagnostic-events.js";
export { registerDiagnosticTracePropagationBridge } from "../infra/diagnostic-trace-propagation.js";
export { runWithDiagnosticTraceContext } from "../infra/diagnostic-trace-context.js";
export { logMessageDispatchStarted, logMessageProcessed } from "../logging/diagnostic.js";
export { resolveBundledExplicitProviderContractsFromPublicArtifacts } from "../plugins/provider-contract-public-artifacts.js";
export {
initializeGlobalHookRunner,
resetGlobalHookRunner,
} from "../plugins/hook-runner-global.js";
export { addTestHook } from "../plugins/hooks.test-helpers.js";
export { createPluginRecord } from "../plugins/status.test-helpers.js";
export {
resolveBundledExplicitWebFetchProvidersFromPublicArtifacts,
resolveBundledExplicitWebSearchProvidersFromPublicArtifacts,
} from "../plugins/web-provider-public-artifacts.explicit.js";
export {
getActivePluginRegistry,
resetPluginRuntimeStateForTest,
setActivePluginRegistry,
} from "../plugins/runtime.js";
export {
listImportedBundledPluginFacadeIds,
resetFacadeRuntimeStateForTest,
} from "./facade-runtime.js";
export { capturePluginRegistration } from "../plugins/captured-registration.js";
export { clearHealthChecksForTest } from "../flows/health-check-registry.js";
export { runProviderCatalog } from "../plugins/provider-discovery.js";
export { onTrustedInternalDiagnosticEvent } from "../infra/diagnostic-events.js";
export {
buildProviderPluginMethodChoice,
resolveProviderModelPickerEntries,
resolveProviderWizardOptions,
setProviderWizardProvidersResolverForTest,
} from "../plugins/provider-wizard.js";
export { resolveProviderPluginChoice } from "../plugins/provider-auth-choice.runtime.js";
export {
clearEmbeddingProviders,
getRegisteredEmbeddingProvider,
listRegisteredEmbeddingProviders,
registerEmbeddingProvider,
restoreRegisteredEmbeddingProviders,
type RegisteredEmbeddingProvider,
} from "../plugins/embedding-providers.js";
export {
clearMemoryEmbeddingProviders,
listRegisteredMemoryEmbeddingProviders,
restoreRegisteredMemoryEmbeddingProviders,
type RegisteredMemoryEmbeddingProvider,
} from "../plugins/memory-embedding-providers.js";
export type { PluginRuntime } from "../plugins/runtime/types.js";
export type { PluginHookRegistration } from "../plugins/hook-types.js";
export type { RuntimeEnv } from "../runtime.js";
export type { MockFn } from "../test-utils/vitest-mock-fn.js";
export { createOutboundTestPlugin, createTestRegistry } from "../test-utils/channel-plugins.js";
export { readQueuedEntries as readQueuedDeliveryEntriesForTest } from "../infra/outbound/delivery-queue.test-helpers.js";
export {
registerProviderPlugin,
registerProviderPlugins,
registerSingleProviderPlugin,
requireRegisteredProvider,
type RegisteredProviderCollections,
} from "../test-utils/plugin-registration.js";
export {
createNonExitingRuntimeEnv,
createNonExitingTypedRuntimeEnv,
createRuntimeEnv,
createTypedRuntimeEnv,
} from "../test-utils/plugin-runtime-env.js";
export {
createPluginSetupWizardAdapter,
createPluginSetupWizardConfigure,
createPluginSetupWizardStatus,
createQueuedWizardPrompter,
createSetupWizardAdapter,
createTestWizardPrompter,
promptSetupWizardAllowFrom,
resolveSetupWizardAllowFromEntries,
resolveSetupWizardGroupAllowlist,
runSetupWizardConfigure,
runSetupWizardFinalize,
runSetupWizardPrepare,
selectFirstWizardOption,
type WizardPrompter,
} from "../test-utils/plugin-setup-wizard.js";
export { createMockPluginRegistry } from "../plugins/hooks.test-helpers.js";
export { buildPluginApi } from "../plugins/api-builder.js";
export {
createCapturedPluginRegistration,
type CapturedPluginRegistration,
} from "../plugins/captured-registration.js";
export { createRuntimeTaskFlow } from "../plugins/runtime/runtime-taskflow.js";
export {
createPluginRuntimeMediaMock,
createPluginRuntimeMock,
type PluginRuntimeMediaMock,
} from "./test-helpers/plugin-runtime-mock.js";