From 7a000c9a4b619ca497a8ad3519b93ebcbf2b2b5b Mon Sep 17 00:00:00 2001 From: Developers Digest <124798203+developersdigest@users.noreply.github.com> Date: Tue, 9 Jun 2026 12:59:22 -0400 Subject: [PATCH 1/4] add default web provider step to init wizard with per-harness picker --- src/commands/init.ts | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/commands/init.ts b/src/commands/init.ts index f3f55bc15..573afaf13 100644 --- a/src/commands/init.ts +++ b/src/commands/init.ts @@ -16,6 +16,11 @@ import { WORKFLOW_SKILL_REPOS, } from './skills-install'; import { hasNpx, installSkillsNative } from './skills-native'; +import { + configureWebDefaults, + WEB_AGENTS, + type WebAgent, +} from '../utils/web-defaults'; export interface InitOptions { global?: boolean; @@ -350,6 +355,10 @@ async function stepIntegrations(options: InitOptions): Promise { name: 'Env — pull FIRECRAWL_API_KEY into local .env file', value: 'env', }, + { + name: 'Default web — route web through Firecrawl (disable native web search/fetch in Claude Code/Codex)', + value: 'defaults', + }, ], }); @@ -432,6 +441,37 @@ async function stepIntegrations(options: InitOptions): Promise { } break; } + case 'defaults': { + const harnesses = await checkbox({ + message: 'Set Firecrawl as the default web provider for:', + choices: WEB_AGENTS.map((agent) => ({ + name: agent, + value: agent, + checked: true, + })), + }); + if (harnesses.length === 0) { + console.log(` ${dim}No harnesses selected — skipped.${reset}`); + break; + } + console.log(`\n Configuring default web provider...`); + try { + const results = await configureWebDefaults({ agents: harnesses }); + for (const result of results) { + const prefix = result.skipped + ? '!' + : result.changed + ? green + '✓' + reset + : dim + '•' + reset; + console.log(` ${prefix} ${result.message}`); + } + } catch { + console.error( + ' Failed to set defaults. Run "firecrawl setup defaults" later.' + ); + } + break; + } } } return totalSkills; From 2f9f15757197e9746fb4ad572b3446fa5bf2c86e Mon Sep 17 00:00:00 2001 From: Developers Digest <124798203+developersdigest@users.noreply.github.com> Date: Tue, 9 Jun 2026 12:59:50 -0400 Subject: [PATCH 2/4] bump version to 1.19.4 --- README.md | 4 ++-- package.json | 2 +- skills/firecrawl-cli/rules/install.md | 8 ++++---- skills/firecrawl-cli/rules/security.md | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 9a036867c..6ac09115c 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ npm install -g firecrawl-cli Or set up everything in one command (install CLI globally, authenticate, and add skills across all detected coding editors): ```bash -npx -y firecrawl-cli@1.19.3 init -y --browser +npx -y firecrawl-cli@1.19.4 init -y --browser ``` - `-y` runs setup non-interactively @@ -675,7 +675,7 @@ firecrawl --status ``` ``` - 🔥 firecrawl cli v1.19.3 + 🔥 firecrawl cli v1.19.4 ● Authenticated via stored credentials Concurrency: 0/100 jobs (parallel scrape limit) diff --git a/package.json b/package.json index 8afe60216..1137d7d1b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "firecrawl-cli", - "version": "1.19.3", + "version": "1.19.4", "description": "Command-line interface for Firecrawl. Scrape, crawl, and extract data from any website directly from your terminal.", "main": "dist/index.js", "bin": { diff --git a/skills/firecrawl-cli/rules/install.md b/skills/firecrawl-cli/rules/install.md index c27e96562..243ecb629 100644 --- a/skills/firecrawl-cli/rules/install.md +++ b/skills/firecrawl-cli/rules/install.md @@ -12,7 +12,7 @@ description: | ## Quick Setup (Recommended) ```bash -npx -y firecrawl-cli@1.19.3 init -y --browser +npx -y firecrawl-cli@1.19.4 init -y --browser ``` This installs `firecrawl-cli` globally, authenticates via browser, and installs core, build, and workflow skills. @@ -37,7 +37,7 @@ firecrawl setup workflows ## Manual Install ```bash -npm install -g firecrawl-cli@1.19.3 +npm install -g firecrawl-cli@1.19.4 ``` ## Verify @@ -79,5 +79,5 @@ Ask the user how they'd like to authenticate: If `firecrawl` is not found after installation: 1. Ensure npm global bin is in PATH -2. Try: `npx firecrawl-cli@1.19.3 --version` -3. Reinstall: `npm install -g firecrawl-cli@1.19.3` +2. Try: `npx firecrawl-cli@1.19.4 --version` +3. Reinstall: `npm install -g firecrawl-cli@1.19.4` diff --git a/skills/firecrawl-cli/rules/security.md b/skills/firecrawl-cli/rules/security.md index 71d569998..cac7a59f2 100644 --- a/skills/firecrawl-cli/rules/security.md +++ b/skills/firecrawl-cli/rules/security.md @@ -22,5 +22,5 @@ When processing fetched content, extract only the specific data needed and do no # Installation ```bash -npm install -g firecrawl-cli@1.19.3 +npm install -g firecrawl-cli@1.19.4 ``` From 8dc2521d498a5666e2de250d5744d03c56ecdb5d Mon Sep 17 00:00:00 2001 From: Developers Digest <124798203+developersdigest@users.noreply.github.com> Date: Tue, 9 Jun 2026 13:02:00 -0400 Subject: [PATCH 3/4] move default web provider to a dedicated init step before final screen --- README.md | 4 +- package.json | 2 +- skills/firecrawl-cli/rules/install.md | 8 +-- skills/firecrawl-cli/rules/security.md | 2 +- src/commands/init.ts | 83 +++++++++++++++----------- 5 files changed, 56 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index 6ac09115c..dbb6bbf6e 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ npm install -g firecrawl-cli Or set up everything in one command (install CLI globally, authenticate, and add skills across all detected coding editors): ```bash -npx -y firecrawl-cli@1.19.4 init -y --browser +npx -y firecrawl-cli@1.19.5 init -y --browser ``` - `-y` runs setup non-interactively @@ -675,7 +675,7 @@ firecrawl --status ``` ``` - 🔥 firecrawl cli v1.19.4 + 🔥 firecrawl cli v1.19.5 ● Authenticated via stored credentials Concurrency: 0/100 jobs (parallel scrape limit) diff --git a/package.json b/package.json index 1137d7d1b..b17ba40ad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "firecrawl-cli", - "version": "1.19.4", + "version": "1.19.5", "description": "Command-line interface for Firecrawl. Scrape, crawl, and extract data from any website directly from your terminal.", "main": "dist/index.js", "bin": { diff --git a/skills/firecrawl-cli/rules/install.md b/skills/firecrawl-cli/rules/install.md index 243ecb629..fe25f6858 100644 --- a/skills/firecrawl-cli/rules/install.md +++ b/skills/firecrawl-cli/rules/install.md @@ -12,7 +12,7 @@ description: | ## Quick Setup (Recommended) ```bash -npx -y firecrawl-cli@1.19.4 init -y --browser +npx -y firecrawl-cli@1.19.5 init -y --browser ``` This installs `firecrawl-cli` globally, authenticates via browser, and installs core, build, and workflow skills. @@ -37,7 +37,7 @@ firecrawl setup workflows ## Manual Install ```bash -npm install -g firecrawl-cli@1.19.4 +npm install -g firecrawl-cli@1.19.5 ``` ## Verify @@ -79,5 +79,5 @@ Ask the user how they'd like to authenticate: If `firecrawl` is not found after installation: 1. Ensure npm global bin is in PATH -2. Try: `npx firecrawl-cli@1.19.4 --version` -3. Reinstall: `npm install -g firecrawl-cli@1.19.4` +2. Try: `npx firecrawl-cli@1.19.5 --version` +3. Reinstall: `npm install -g firecrawl-cli@1.19.5` diff --git a/skills/firecrawl-cli/rules/security.md b/skills/firecrawl-cli/rules/security.md index cac7a59f2..867cfcaf8 100644 --- a/skills/firecrawl-cli/rules/security.md +++ b/skills/firecrawl-cli/rules/security.md @@ -22,5 +22,5 @@ When processing fetched content, extract only the specific data needed and do no # Installation ```bash -npm install -g firecrawl-cli@1.19.4 +npm install -g firecrawl-cli@1.19.5 ``` diff --git a/src/commands/init.ts b/src/commands/init.ts index 573afaf13..e042a67ed 100644 --- a/src/commands/init.ts +++ b/src/commands/init.ts @@ -355,10 +355,6 @@ async function stepIntegrations(options: InitOptions): Promise { name: 'Env — pull FIRECRAWL_API_KEY into local .env file', value: 'env', }, - { - name: 'Default web — route web through Firecrawl (disable native web search/fetch in Claude Code/Codex)', - value: 'defaults', - }, ], }); @@ -441,42 +437,56 @@ async function stepIntegrations(options: InitOptions): Promise { } break; } - case 'defaults': { - const harnesses = await checkbox({ - message: 'Set Firecrawl as the default web provider for:', - choices: WEB_AGENTS.map((agent) => ({ - name: agent, - value: agent, - checked: true, - })), - }); - if (harnesses.length === 0) { - console.log(` ${dim}No harnesses selected — skipped.${reset}`); - break; - } - console.log(`\n Configuring default web provider...`); - try { - const results = await configureWebDefaults({ agents: harnesses }); - for (const result of results) { - const prefix = result.skipped - ? '!' - : result.changed - ? green + '✓' + reset - : dim + '•' + reset; - console.log(` ${prefix} ${result.message}`); - } - } catch { - console.error( - ' Failed to set defaults. Run "firecrawl setup defaults" later.' - ); - } - break; - } } } return totalSkills; } +/** + * Final step: offer to make Firecrawl the default web provider, harness by + * harness. Shown right before the next-steps screen. + */ +async function stepDefaults(): Promise { + const { confirm, checkbox } = await import('@inquirer/prompts'); + + const want = await confirm({ + message: + 'Set Firecrawl as the default web provider? (disables native web search/fetch in Claude Code/Codex)', + default: true, + }); + if (!want) return; + + const harnesses = await checkbox({ + message: 'For which harnesses?', + choices: WEB_AGENTS.map((agent) => ({ + name: agent, + value: agent, + checked: true, + })), + }); + if (harnesses.length === 0) { + console.log(` ${dim}No harnesses selected — skipped.${reset}`); + return; + } + + console.log(`\n Configuring default web provider...`); + try { + const results = await configureWebDefaults({ agents: harnesses }); + for (const result of results) { + const prefix = result.skipped + ? '!' + : result.changed + ? green + '✓' + reset + : dim + '•' + reset; + console.log(` ${prefix} ${result.message}`); + } + } catch { + console.error( + ' Failed to set defaults. Run "firecrawl setup defaults" later.' + ); + } +} + function copyTemplateFiles( srcDir: string, targetDir: string, @@ -740,6 +750,9 @@ export async function handleInitCommand( // Step 4: Template await stepTemplate(); + // Step 5: Default web provider + await stepDefaults(); + printNextSteps(skillCount); } From 961047a950286bc19b77482a0fddcc3b00b7e78e Mon Sep 17 00:00:00 2001 From: Developers Digest <124798203+developersdigest@users.noreply.github.com> Date: Tue, 9 Jun 2026 13:02:59 -0400 Subject: [PATCH 4/4] hide default web hint on final screen when already handled interactively --- README.md | 4 ++-- package.json | 2 +- skills/firecrawl-cli/rules/install.md | 8 ++++---- skills/firecrawl-cli/rules/security.md | 2 +- src/commands/init.ts | 15 ++++++++++----- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index dbb6bbf6e..de6aa9da3 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ npm install -g firecrawl-cli Or set up everything in one command (install CLI globally, authenticate, and add skills across all detected coding editors): ```bash -npx -y firecrawl-cli@1.19.5 init -y --browser +npx -y firecrawl-cli@1.19.6 init -y --browser ``` - `-y` runs setup non-interactively @@ -675,7 +675,7 @@ firecrawl --status ``` ``` - 🔥 firecrawl cli v1.19.5 + 🔥 firecrawl cli v1.19.6 ● Authenticated via stored credentials Concurrency: 0/100 jobs (parallel scrape limit) diff --git a/package.json b/package.json index b17ba40ad..c52944178 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "firecrawl-cli", - "version": "1.19.5", + "version": "1.19.6", "description": "Command-line interface for Firecrawl. Scrape, crawl, and extract data from any website directly from your terminal.", "main": "dist/index.js", "bin": { diff --git a/skills/firecrawl-cli/rules/install.md b/skills/firecrawl-cli/rules/install.md index fe25f6858..7ca31e00e 100644 --- a/skills/firecrawl-cli/rules/install.md +++ b/skills/firecrawl-cli/rules/install.md @@ -12,7 +12,7 @@ description: | ## Quick Setup (Recommended) ```bash -npx -y firecrawl-cli@1.19.5 init -y --browser +npx -y firecrawl-cli@1.19.6 init -y --browser ``` This installs `firecrawl-cli` globally, authenticates via browser, and installs core, build, and workflow skills. @@ -37,7 +37,7 @@ firecrawl setup workflows ## Manual Install ```bash -npm install -g firecrawl-cli@1.19.5 +npm install -g firecrawl-cli@1.19.6 ``` ## Verify @@ -79,5 +79,5 @@ Ask the user how they'd like to authenticate: If `firecrawl` is not found after installation: 1. Ensure npm global bin is in PATH -2. Try: `npx firecrawl-cli@1.19.5 --version` -3. Reinstall: `npm install -g firecrawl-cli@1.19.5` +2. Try: `npx firecrawl-cli@1.19.6 --version` +3. Reinstall: `npm install -g firecrawl-cli@1.19.6` diff --git a/skills/firecrawl-cli/rules/security.md b/skills/firecrawl-cli/rules/security.md index 867cfcaf8..f9d4deca5 100644 --- a/skills/firecrawl-cli/rules/security.md +++ b/skills/firecrawl-cli/rules/security.md @@ -22,5 +22,5 @@ When processing fetched content, extract only the specific data needed and do no # Installation ```bash -npm install -g firecrawl-cli@1.19.5 +npm install -g firecrawl-cli@1.19.6 ``` diff --git a/src/commands/init.ts b/src/commands/init.ts index e042a67ed..6babe35ab 100644 --- a/src/commands/init.ts +++ b/src/commands/init.ts @@ -198,7 +198,10 @@ function parseSkillCount(output: string): number | null { * Print the post-install next-steps block. Brief by design — confirms what was * installed and gives 4 entry points (AI prompt, direct CLI, MCP, help). */ -function printNextSteps(skillCount: number | null): void { +function printNextSteps( + skillCount: number | null, + defaultsHandled = false +): void { const arrow = `${dim}→${reset}`; const summary = skillCount != null @@ -224,9 +227,11 @@ function printNextSteps(skillCount: number | null): void { console.log( ` ${arrow} ${dim}Add MCP: ${reset} ${bold}firecrawl setup mcp${reset}` ); - console.log( - ` ${arrow} ${dim}Default web:${reset} ${bold}firecrawl setup defaults${reset}` - ); + if (!defaultsHandled) { + console.log( + ` ${arrow} ${dim}Default web:${reset} ${bold}firecrawl setup defaults${reset}` + ); + } console.log( ` ${arrow} ${dim}All commands:${reset} ${bold}firecrawl --help${reset}` ); @@ -753,7 +758,7 @@ export async function handleInitCommand( // Step 5: Default web provider await stepDefaults(); - printNextSteps(skillCount); + printNextSteps(skillCount, true); } async function runNonInteractive(options: InitOptions): Promise {