Skip to content

Commit b3e26b1

Browse files
committed
perf(secrets): lazy-load web-tools manifest owner lookup
1 parent 9b0f7e0 commit b3e26b1

3 files changed

Lines changed: 25 additions & 8 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { resolveManifestContractOwnerPluginId } from "../plugins/manifest-registry.js";

src/secrets/runtime-web-tools.shared.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { OpenClawConfig } from "../config/config.js";
22
import { resolveSecretInputRef } from "../config/types.secrets.js";
3-
import { resolveManifestContractOwnerPluginId } from "../plugins/manifest-registry.js";
3+
import { createLazyRuntimeNamedExport } from "../shared/lazy-runtime.js";
44
import { normalizeOptionalLowercaseString } from "../shared/string-coerce.js";
55
import type {
66
ResolverContext,
@@ -12,6 +12,11 @@ import type { RuntimeWebDiagnostic, RuntimeWebDiagnosticCode } from "./runtime-w
1212
export { isRecord } from "./shared.js";
1313
import { isRecord } from "./shared.js";
1414

15+
const loadResolveManifestContractOwnerPluginId = createLazyRuntimeNamedExport(
16+
() => import("./runtime-web-tools-manifest.runtime.js"),
17+
"resolveManifestContractOwnerPluginId",
18+
);
19+
1520
type RuntimeWebWarningCode = Extract<RuntimeWebDiagnosticCode, SecretResolverWarningCode>;
1621
export type SecretResolutionResult<TSource extends string> = {
1722
value?: string;
@@ -165,6 +170,7 @@ export async function resolveRuntimeWebProviderSurface<
165170
): Promise<RuntimeWebProviderSurface<TProvider>> {
166171
let configuredBundledPluginId = params.configuredBundledPluginIdHint;
167172
if (!configuredBundledPluginId && params.rawProvider) {
173+
const resolveManifestContractOwnerPluginId = await loadResolveManifestContractOwnerPluginId();
168174
configuredBundledPluginId = resolveManifestContractOwnerPluginId({
169175
contract: params.contract,
170176
value: params.rawProvider,
@@ -187,6 +193,7 @@ export async function resolveRuntimeWebProviderSurface<
187193
configuredBundledPluginId = undefined;
188194
}
189195
if (params.rawProvider && !configuredBundledPluginId) {
196+
const resolveManifestContractOwnerPluginId = await loadResolveManifestContractOwnerPluginId();
190197
configuredBundledPluginId = resolveManifestContractOwnerPluginId({
191198
contract: params.contract,
192199
value: params.rawProvider,

src/secrets/runtime-web-tools.test.ts

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@ const {
3737
const { resolveManifestContractPluginIdsByCompatibilityRuntimePathMock } = vi.hoisted(() => ({
3838
resolveManifestContractPluginIdsByCompatibilityRuntimePathMock: vi.fn(() => ["brave"]),
3939
}));
40-
const { resolveManifestContractOwnerPluginIdMock, manifestRegistryActual } = vi.hoisted(() => ({
40+
const { resolveManifestContractOwnerPluginIdMock, runtimeManifestActual } = vi.hoisted(() => ({
4141
resolveManifestContractOwnerPluginIdMock: vi.fn(),
42-
manifestRegistryActual: {
42+
runtimeManifestActual: {
4343
resolveManifestContractOwnerPluginId: undefined as
44-
| typeof import("../plugins/manifest-registry.js").resolveManifestContractOwnerPluginId
44+
| typeof import("./runtime-web-tools-manifest.runtime.js").resolveManifestContractOwnerPluginId
4545
| undefined,
4646
},
4747
}));
@@ -81,16 +81,25 @@ vi.mock("../plugins/manifest-registry.js", async () => {
8181
const actual = await vi.importActual<typeof import("../plugins/manifest-registry.js")>(
8282
"../plugins/manifest-registry.js",
8383
);
84-
manifestRegistryActual.resolveManifestContractOwnerPluginId =
84+
return {
85+
...actual,
86+
resolveManifestContractPluginIdsByCompatibilityRuntimePath:
87+
resolveManifestContractPluginIdsByCompatibilityRuntimePathMock,
88+
};
89+
});
90+
91+
vi.mock("./runtime-web-tools-manifest.runtime.js", async () => {
92+
const actual = await vi.importActual<typeof import("./runtime-web-tools-manifest.runtime.js")>(
93+
"./runtime-web-tools-manifest.runtime.js",
94+
);
95+
runtimeManifestActual.resolveManifestContractOwnerPluginId =
8596
actual.resolveManifestContractOwnerPluginId;
8697
resolveManifestContractOwnerPluginIdMock.mockImplementation(
8798
actual.resolveManifestContractOwnerPluginId,
8899
);
89100
return {
90101
...actual,
91102
resolveManifestContractOwnerPluginId: resolveManifestContractOwnerPluginIdMock,
92-
resolveManifestContractPluginIdsByCompatibilityRuntimePath:
93-
resolveManifestContractPluginIdsByCompatibilityRuntimePathMock,
94103
};
95104
});
96105

@@ -313,7 +322,7 @@ describe("runtime web tools resolution", () => {
313322
resolveBundledWebFetchProvidersFromPublicArtifactsMock.mockClear();
314323
resolveManifestContractOwnerPluginIdMock.mockReset();
315324
resolveManifestContractOwnerPluginIdMock.mockImplementation(
316-
manifestRegistryActual.resolveManifestContractOwnerPluginId!,
325+
runtimeManifestActual.resolveManifestContractOwnerPluginId!,
317326
);
318327
resolveManifestContractOwnerPluginIdMock.mockClear();
319328
resolveManifestContractPluginIdsByCompatibilityRuntimePathMock.mockClear();

0 commit comments

Comments
 (0)