fix(slack): trim DM reply overhead and restore Codex auto transport (#53957)

* perf(slack): instrument runtime and trim DM overhead

* perf(slack): lazy-init draft previews

* perf(slack): add turn summary diagnostics

* perf(core): trim repeated runtime setup noise

* perf(core): preselect default web search providers

* perf(agent): restore OpenAI auto transport defaults

* refactor(slack): drop temporary perf wiring

* fix(slack): address follow-up review notes

* fix(security): tighten slack and runtime defaults

* style(web-search): fix import ordering

* style(agent): remove useless spread fallback

* docs(changelog): note slack runtime hardening
This commit is contained in:
Vincent Koc
2026-03-24 15:03:40 -07:00
committed by GitHub
parent 47dc7fe816
commit e28b516fb5
15 changed files with 684 additions and 87 deletions

View File

@@ -225,8 +225,11 @@ describe("runtime web tools resolution", () => {
}
});
it("skips loading web search providers when search config is absent", async () => {
const providerSpy = vi.mocked(runtimeWebSearchProviders.resolvePluginWebSearchProviders);
it("keeps web search disabled when search config is absent", async () => {
const bundledProviderSpy = vi.mocked(
bundledWebSearchProviders.resolveBundledPluginWebSearchProviders,
);
const runtimeProviderSpy = vi.mocked(runtimeWebSearchProviders.resolvePluginWebSearchProviders);
const { metadata } = await runRuntimeWebTools({
config: asConfig({
@@ -245,7 +248,9 @@ describe("runtime web tools resolution", () => {
},
});
expect(providerSpy).not.toHaveBeenCalled();
expect(bundledProviderSpy).not.toHaveBeenCalled();
expect(runtimeProviderSpy).not.toHaveBeenCalled();
expect(metadata.search.selectedProvider).toBeUndefined();
expect(metadata.search.providerSource).toBe("none");
expect(metadata.fetch.firecrawl.active).toBe(true);
expect(metadata.fetch.firecrawl.apiKeySource).toBe("env");
@@ -681,6 +686,53 @@ describe("runtime web tools resolution", () => {
expectInactiveFirecrawlSecretRef({ resolveSpy, metadata, context });
});
it("keeps configured provider metadata and inactive warnings when search is disabled", async () => {
const { metadata, context } = await runRuntimeWebTools({
config: asConfig({
tools: {
web: {
search: {
enabled: false,
provider: "gemini",
},
},
},
plugins: {
entries: {
google: {
enabled: true,
config: {
webSearch: {
apiKey: { source: "env", provider: "default", id: "GEMINI_PROVIDER_REF" },
},
},
},
},
},
}),
});
expect(metadata.search.providerConfigured).toBe("gemini");
expect(metadata.search.providerSource).toBe("configured");
expect(context.warnings).toEqual(
expect.arrayContaining([
expect.objectContaining({
code: "SECRETS_REF_IGNORED_INACTIVE_SURFACE",
path: "plugins.entries.google.config.webSearch.apiKey",
}),
]),
);
});
it("does not auto-enable search when tools.web.search is absent", async () => {
const { metadata } = await runRuntimeWebTools({
config: asConfig({}),
});
expect(metadata.search.providerSource).toBe("none");
expect(metadata.search.selectedProvider).toBeUndefined();
});
it("uses env fallback for unresolved Firecrawl SecretRef when active", async () => {
const { metadata, resolvedConfig, context } = await runRuntimeWebTools({
config: asConfig({

View File

@@ -298,8 +298,16 @@ export async function resolveRuntimeWebTools(params: {
const rawProvider =
typeof search?.provider === "string" ? search.provider.trim().toLowerCase() : "";
const configuredBundledPluginId = resolveBundledWebSearchPluginId(rawProvider);
const searchMetadata: RuntimeWebSearchMetadata = {
providerSource: "none",
diagnostics: [],
};
const searchConfigured = Boolean(search);
const searchEnabled = searchConfigured && search?.enabled !== false;
const providers = sortWebSearchProvidersForAutoDetect(
search
searchConfigured
? configuredBundledPluginId
? resolveBundledPluginWebSearchProviders({
config: params.sourceConfig,
@@ -320,13 +328,6 @@ export async function resolveRuntimeWebTools(params: {
})
: [],
);
const searchMetadata: RuntimeWebSearchMetadata = {
providerSource: "none",
diagnostics: [],
};
const searchEnabled = search?.enabled !== false;
const configuredProvider = normalizeProvider(rawProvider, providers);
if (rawProvider && !configuredProvider) {
@@ -349,7 +350,7 @@ export async function resolveRuntimeWebTools(params: {
searchMetadata.providerSource = "configured";
}
if (searchEnabled && search) {
if (searchEnabled) {
const candidates = configuredProvider
? providers.filter((provider) => provider.id === configuredProvider)
: providers;
@@ -515,7 +516,7 @@ export async function resolveRuntimeWebTools(params: {
}
}
if (searchEnabled && search && !configuredProvider && searchMetadata.selectedProvider) {
if (searchEnabled && !configuredProvider && searchMetadata.selectedProvider) {
for (const provider of providers) {
if (provider.id === searchMetadata.selectedProvider) {
continue;