From 77eb08b9097148bc64927aaceb29d4bc6c5fd873 Mon Sep 17 00:00:00 2001 From: ketan0 Date: Tue, 6 Oct 2026 10:20:21 -0700 Subject: [PATCH] Turn the summarizer off, not diffr, when it has no API key With the summarizer on and no key in the config or environment, its constructor failed and diffr exited 2 before writing a single record, so every diff failed. Without a key the summarizer is now made off for the run: it says why on stderr and leaves every file as it is. Co-Authored-By: Claude Opus 5.5 --- plugins/shape/summarize/plugin.toml | 3 +- plugins/shape/summarize/plugin.wasm | Bin 608559 -> 611954 bytes plugins/shape/summarize/rust/src/lib.rs | 52 ++++++++++++++++-------- src/plugin/tests/mod.rs | 32 --------------- tests/cli.rs | 12 ++---- 5 files changed, 39 insertions(+), 60 deletions(-) diff --git a/plugins/shape/summarize/plugin.toml b/plugins/shape/summarize/plugin.toml index 61bb773d7..7669a9408 100644 --- a/plugins/shape/summarize/plugin.toml +++ b/plugins/shape/summarize/plugin.toml @@ -2,8 +2,7 @@ name = "summarize" title = "Summaries" description = "Pseudocode summaries for large new function bodies and tests." -# Off by default: the summarizer needs an API key, and diffr stops at -# startup when a plugin that is on cannot be made. +# Off by default: the summarizer needs an API key. [enabled] title = "Summarize functions and tests" description = "Summarize large new function bodies and new tests as pseudocode. Needs an API key: `api_key`, or the provider's variable in the environment: `GEMINI_API_KEY` or `GOOGLE_API_KEY`, `OPENAI_API_KEY`, or `ANTHROPIC_API_KEY`." diff --git a/plugins/shape/summarize/plugin.wasm b/plugins/shape/summarize/plugin.wasm index aeb86c4314ac20f5790aa9f7749a6ac766acc96e..5bd94436391d30b2bf8085dea7be0303b6326f71 100644 GIT binary patch delta 101796 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, + api_key: Key, endpoint: String, } +enum Key { + Present(String), + /// A custom endpoint that takes no key. + NotRequired, + /// The summarizer does nothing. + Missing, +} + impl Summarize { /// One request per selected body: its lines, numbered from `first_line` /// (1-based). Retried on transient failures; any other failure is a @@ -67,7 +74,11 @@ impl Summarize { 800, ); let url = provider.url(&self.endpoint, &self.options.model); - let headers = provider.headers(self.api_key.as_deref()); + let key = match &self.api_key { + Key::Present(key) => Some(key.as_str()), + Key::NotRequired | Key::Missing => None, + }; + let headers = provider.headers(key); let failed = |message: String| anyhow!("{}: {message}", self.options.model); let text: serde_json::Value = { let mut attempt = 0; @@ -112,31 +123,33 @@ impl Summarize { } /// The API key: the `api_key` option, or else the first of the provider's -/// environment variables that is set and not empty. `None` only where the -/// provider can go without one. -fn resolve_key(config: &Options, custom_endpoint: bool) -> anyhow::Result> { +/// environment variables that is set and not empty. `Missing` says why on +/// stderr. +fn resolve_key(config: &Options, custom_endpoint: bool) -> Key { let set = |key: &String| !key.is_empty(); if let Some(key) = config.api_key.clone().filter(set) { - return Ok(Some(key)); + return Key::Present(key); } let variables = &config.provider_details.key_variables; for variable in variables { if let Some(key) = std::env::var_os(variable) { - let key = key - .into_string() - .map_err(|_| anyhow!("{variable} is not valid UTF-8"))?; + let Ok(key) = key.into_string() else { + eprintln!("summarize: off for this run: {variable} is not valid UTF-8"); + return Key::Missing; + }; if set(&key) { - return Ok(Some(key)); + return Key::Present(key); } } } if config.provider_details.keyless_custom_endpoint && custom_endpoint { - return Ok(None); + return Key::NotRequired; } - anyhow::bail!( - "no API key: set plugins.bundled.summarize.api_key, or {} in the environment, or turn the summarizer off with plugins.bundled.summarize.enabled = false", + eprintln!( + "summarize: off for this run: no API key: set plugins.bundled.summarize.api_key, or {} in the environment, or turn the summarizer off with plugins.bundled.summarize.enabled = false", variables.join(" or ") - ) + ); + Key::Missing } impl Guest for Summarize { @@ -151,7 +164,7 @@ impl GuestPlugin for Summarize { .endpoint .clone() .filter(|endpoint| !endpoint.is_empty()); - let api_key = resolve_key(&options, endpoint.is_some()).map_err(|e| format!("{e:#}"))?; + let api_key = resolve_key(&options, endpoint.is_some()); Ok(Self { api_key, endpoint: endpoint.unwrap_or_else(|| options.provider_details.endpoint.clone()), @@ -160,6 +173,9 @@ impl GuestPlugin for Summarize { } async fn visit(&self, cursor: &Cursor, phase: Visit) -> Result { + if matches!(self.api_key, Key::Missing) { + return Ok(false); + } if phase == Visit::Post { return Ok(true); } diff --git a/src/plugin/tests/mod.rs b/src/plugin/tests/mod.rs index f987e8bcb..de2e88961 100644 --- a/src/plugin/tests/mod.rs +++ b/src/plugin/tests/mod.rs @@ -258,38 +258,6 @@ fn the_default_pipeline_makes_every_plugin_that_is_on() { ); } -#[test] -fn a_plugin_that_cannot_be_made_is_a_setup_error() { - let config = - Config::from_toml("[plugins.bundled.summarize]\nenabled = true\napi_key = ''\n").unwrap(); - // Only meaningful when the environment carries no key. - if std::env::var_os("GEMINI_API_KEY").is_some() || std::env::var_os("GOOGLE_API_KEY").is_some() - { - return; - } - let error = Pipeline::from_config(&config, Path::new("."), NonZeroUsize::MIN) - .err() - .expect("a summarizer without a key cannot be made"); - assert_eq!( - format!("{error:#}"), - "plugins.bundled.summarize: no API key: set plugins.bundled.summarize.api_key, or GEMINI_API_KEY or GOOGLE_API_KEY in the environment, or turn the summarizer off with plugins.bundled.summarize.enabled = false" - ); - if std::env::var_os("OPENAI_API_KEY").is_some() { - return; - } - let config = Config::from_toml( - "[plugins.bundled.summarize]\nenabled = true\nprovider = 'openai'\nmodel = 'm'\napi_key = ''\nendpoint = ''\n", - ) - .unwrap(); - let error = Pipeline::from_config(&config, Path::new("."), NonZeroUsize::MIN) - .err() - .expect("OpenAI at its default endpoint needs a key"); - assert_eq!( - format!("{error:#}"), - "plugins.bundled.summarize: no API key: set plugins.bundled.summarize.api_key, or OPENAI_API_KEY in the environment, or turn the summarizer off with plugins.bundled.summarize.enabled = false" - ); -} - /// The manifest can accept an option the component itself rejects: the /// component's constructor has the last word, and fails setup. #[test] diff --git a/tests/cli.rs b/tests/cli.rs index 038065523..64fdeb55c 100644 --- a/tests/cli.rs +++ b/tests/cli.rs @@ -71,7 +71,7 @@ fn text_output_is_gone() { } #[test] -fn a_plugin_that_cannot_be_made_stops_diffr_before_any_record() { +fn a_summarizer_without_a_key_still_diffs() { let dir = tempfile::tempdir().unwrap(); let config = dir.path().join("diffr/config.toml"); std::fs::create_dir_all(config.parent().unwrap()).unwrap(); @@ -88,13 +88,9 @@ fn a_plugin_that_cannot_be_made_stops_diffr_before_any_record() { .env("XDG_CONFIG_HOME", dir.path()) .env_remove("GEMINI_API_KEY") .env_remove("GOOGLE_API_KEY"); - cmd.assert() - .failure() - .code(2) - .stdout(predicate::str::is_empty()) - .stderr(predicate::str::contains( - "plugins.bundled.summarize: no API key: set plugins.bundled.summarize.api_key", - )); + cmd.assert().success().stderr(predicate::str::contains( + "summarize: off for this run: no API key", + )); } #[test]