diff --git a/.env.example b/.env.example index 21f84188..32ee4583 100644 --- a/.env.example +++ b/.env.example @@ -45,3 +45,6 @@ EMBEDDING_PROVIDER=local # Fast code editing/search via Morph # MORPH_API_KEY=your_morph_key_here + +# Web scraping via Firecrawl +# FIRECRAWL_API_KEY=your_firecrawl_key_here diff --git a/opc/scripts/setup/wizard.py b/opc/scripts/setup/wizard.py index 8eadc696..9544a221 100644 --- a/opc/scripts/setup/wizard.py +++ b/opc/scripts/setup/wizard.py @@ -407,7 +407,7 @@ async def prompt_api_keys() -> dict[str, str]: """Prompt user for optional API keys. Returns: - dict with keys: perplexity, nia, braintrust, morph + dict with keys: perplexity, nia, braintrust, morph, firecrawl """ console.print("\n[bold]API Keys (optional)[/bold]") console.print("Press Enter to skip any key you don't have.\n") @@ -416,12 +416,14 @@ async def prompt_api_keys() -> dict[str, str]: nia = Prompt.ask("Nia API key (documentation search)", default="") braintrust = Prompt.ask("Braintrust API key (observability)", default="") morph = Prompt.ask("Morph API key (fast code editing/search)", default="") + firecrawl = Prompt.ask("Firecrawl API key (web scraping)", default="") return { "perplexity": perplexity, "nia": nia, "braintrust": braintrust, "morph": morph, + "firecrawl": firecrawl, } @@ -504,6 +506,8 @@ def generate_env_file(config: dict[str, Any], env_path: Path) -> None: lines.append(f"BRAINTRUST_API_KEY={api_keys['braintrust']}") if api_keys.get("morph"): lines.append(f"MORPH_API_KEY={api_keys['morph']}") + if api_keys.get("firecrawl"): + lines.append(f"FIRECRAWL_API_KEY={api_keys['firecrawl']}") lines.append("") # Write file @@ -639,7 +643,7 @@ async def run_setup_wizard() -> None: if Confirm.ask("Configure API keys?", default=False): api_keys = await prompt_api_keys() else: - api_keys = {"perplexity": "", "nia": "", "braintrust": "", "morph": ""} + api_keys = {"perplexity": "", "nia": "", "braintrust": "", "morph": "", "firecrawl": ""} # Step 5: Generate .env console.print("\n[bold]Step 5/13: Generating configuration...[/bold]")