firecrawl-cli 1.19.13 → 1.19.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -53,7 +53,7 @@ firecrawl setup mcp
53
53
  To make Firecrawl the default web provider for supported AI agents:
54
54
 
55
55
  ```bash
56
- firecrawl setup defaults
56
+ firecrawl setup defaults # or: firecrawl make default
57
57
  ```
58
58
 
59
59
  This disables native web fetch/search where supported so agents route web work
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=launch.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/commands/launch.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const child_process_1 = require("child_process");
4
+ const vitest_1 = require("vitest");
5
+ const launch_1 = require("../../commands/launch");
6
+ const setup_1 = require("../../commands/setup");
7
+ vitest_1.vi.mock('child_process', () => ({
8
+ spawnSync: vitest_1.vi.fn(),
9
+ }));
10
+ vitest_1.vi.mock('../../commands/setup', () => ({
11
+ installHermesMcp: vitest_1.vi.fn(async () => undefined),
12
+ installMcp: vitest_1.vi.fn(async () => undefined),
13
+ installOpenClawMcp: vitest_1.vi.fn(async () => undefined),
14
+ installSkillsForAgent: vitest_1.vi.fn(async () => undefined),
15
+ }));
16
+ (0, vitest_1.describe)('handleLaunchCommand', () => {
17
+ (0, vitest_1.beforeEach)(() => {
18
+ vitest_1.vi.clearAllMocks();
19
+ vitest_1.vi.mocked(child_process_1.spawnSync).mockReturnValue({ status: 0 });
20
+ });
21
+ (0, vitest_1.it)('installs Claude Code MCP without launching in install mode', async () => {
22
+ await (0, launch_1.handleLaunchCommand)('claude', { install: true });
23
+ (0, vitest_1.expect)(setup_1.installMcp).toHaveBeenCalledWith({
24
+ agent: 'claude-code',
25
+ global: true,
26
+ yes: true,
27
+ });
28
+ (0, vitest_1.expect)(setup_1.installSkillsForAgent).toHaveBeenCalledWith('claude-code', {
29
+ global: true,
30
+ yes: true,
31
+ });
32
+ (0, vitest_1.expect)(child_process_1.spawnSync).not.toHaveBeenCalled();
33
+ });
34
+ (0, vitest_1.it)('supports setup and config as install-mode aliases', async () => {
35
+ await (0, launch_1.handleLaunchCommand)('claude', { setup: true });
36
+ await (0, launch_1.handleLaunchCommand)('codex', { config: true });
37
+ (0, vitest_1.expect)(setup_1.installMcp).toHaveBeenCalledTimes(2);
38
+ (0, vitest_1.expect)(setup_1.installSkillsForAgent).toHaveBeenCalledTimes(2);
39
+ (0, vitest_1.expect)(child_process_1.spawnSync).not.toHaveBeenCalled();
40
+ });
41
+ (0, vitest_1.it)('configures VS Code MCP and launches code with the current workspace', async () => {
42
+ await (0, launch_1.handleLaunchCommand)('code');
43
+ (0, vitest_1.expect)(setup_1.installMcp).toHaveBeenCalledWith({
44
+ agent: 'vscode',
45
+ global: true,
46
+ yes: true,
47
+ });
48
+ (0, vitest_1.expect)(setup_1.installSkillsForAgent).not.toHaveBeenCalled();
49
+ (0, vitest_1.expect)(child_process_1.spawnSync).toHaveBeenNthCalledWith(1, 'code', ['--version'], {
50
+ stdio: 'ignore',
51
+ });
52
+ (0, vitest_1.expect)(child_process_1.spawnSync).toHaveBeenNthCalledWith(2, 'code', ['.'], vitest_1.expect.objectContaining({ stdio: 'inherit' }));
53
+ });
54
+ (0, vitest_1.it)('passes extra arguments through to Codex', async () => {
55
+ await (0, launch_1.handleLaunchCommand)('codex', {}, ['--sandbox', 'workspace-write']);
56
+ (0, vitest_1.expect)(setup_1.installMcp).toHaveBeenCalledWith({
57
+ agent: 'codex',
58
+ global: true,
59
+ yes: true,
60
+ });
61
+ (0, vitest_1.expect)(setup_1.installSkillsForAgent).toHaveBeenCalledWith('codex', {
62
+ global: true,
63
+ yes: true,
64
+ });
65
+ (0, vitest_1.expect)(child_process_1.spawnSync).toHaveBeenNthCalledWith(2, 'codex', ['--sandbox', 'workspace-write'], vitest_1.expect.objectContaining({ stdio: 'inherit' }));
66
+ });
67
+ (0, vitest_1.it)('configures Codex MCP and opens Codex App separately from the CLI', async () => {
68
+ await (0, launch_1.handleLaunchCommand)('codex-app');
69
+ (0, vitest_1.expect)(setup_1.installMcp).toHaveBeenCalledWith({
70
+ agent: 'codex',
71
+ global: true,
72
+ yes: true,
73
+ });
74
+ (0, vitest_1.expect)(setup_1.installSkillsForAgent).toHaveBeenCalledWith('codex', {
75
+ global: true,
76
+ yes: true,
77
+ });
78
+ (0, vitest_1.expect)(child_process_1.spawnSync).toHaveBeenNthCalledWith(1, 'open', ['--version'], {
79
+ stdio: 'ignore',
80
+ });
81
+ (0, vitest_1.expect)(child_process_1.spawnSync).toHaveBeenNthCalledWith(2, 'open', ['-b', 'com.openai.codex'], vitest_1.expect.objectContaining({ stdio: 'inherit' }));
82
+ });
83
+ (0, vitest_1.it)('does not pass extra arguments to Codex App', async () => {
84
+ await (0, vitest_1.expect)((0, launch_1.handleLaunchCommand)('codex-app', {}, ['--foo'])).rejects.toThrow('Codex App does not accept extra arguments');
85
+ });
86
+ (0, vitest_1.it)('can launch without touching MCP', async () => {
87
+ await (0, launch_1.handleLaunchCommand)('opencode', { skipMcp: true });
88
+ (0, vitest_1.expect)(setup_1.installMcp).not.toHaveBeenCalled();
89
+ (0, vitest_1.expect)(setup_1.installSkillsForAgent).toHaveBeenCalledWith('opencode', {
90
+ global: true,
91
+ yes: true,
92
+ });
93
+ (0, vitest_1.expect)(child_process_1.spawnSync).toHaveBeenNthCalledWith(1, 'opencode', ['--version'], {
94
+ stdio: 'ignore',
95
+ });
96
+ });
97
+ (0, vitest_1.it)('can skip skills for a launch target that normally supports them', async () => {
98
+ await (0, launch_1.handleLaunchCommand)('opencode', { skipMcp: true, skipSkills: true });
99
+ (0, vitest_1.expect)(setup_1.installMcp).not.toHaveBeenCalled();
100
+ (0, vitest_1.expect)(setup_1.installSkillsForAgent).not.toHaveBeenCalled();
101
+ });
102
+ (0, vitest_1.it)('configures Hermes MCP and skills, then launches Hermes Agent', async () => {
103
+ await (0, launch_1.handleLaunchCommand)('hermes');
104
+ (0, vitest_1.expect)(setup_1.installHermesMcp).toHaveBeenCalled();
105
+ (0, vitest_1.expect)(setup_1.installSkillsForAgent).toHaveBeenCalledWith('hermes-agent', {
106
+ global: true,
107
+ yes: true,
108
+ });
109
+ (0, vitest_1.expect)(child_process_1.spawnSync).toHaveBeenNthCalledWith(1, 'hermes', ['--version'], {
110
+ stdio: 'ignore',
111
+ });
112
+ (0, vitest_1.expect)(child_process_1.spawnSync).toHaveBeenNthCalledWith(2, 'hermes', [], vitest_1.expect.objectContaining({ stdio: 'inherit' }));
113
+ });
114
+ (0, vitest_1.it)('configures OpenClaw MCP and skills, then launches the TUI', async () => {
115
+ await (0, launch_1.handleLaunchCommand)('openclaw');
116
+ (0, vitest_1.expect)(setup_1.installOpenClawMcp).toHaveBeenCalled();
117
+ (0, vitest_1.expect)(setup_1.installSkillsForAgent).toHaveBeenCalledWith('openclaw', {
118
+ global: true,
119
+ yes: true,
120
+ });
121
+ (0, vitest_1.expect)(child_process_1.spawnSync).toHaveBeenNthCalledWith(1, 'openclaw', ['--version'], {
122
+ stdio: 'ignore',
123
+ });
124
+ (0, vitest_1.expect)(child_process_1.spawnSync).toHaveBeenNthCalledWith(2, 'openclaw', ['tui'], vitest_1.expect.objectContaining({ stdio: 'inherit' }));
125
+ });
126
+ (0, vitest_1.it)('can skip skills for Hermes and OpenClaw launch targets', async () => {
127
+ await (0, launch_1.handleLaunchCommand)('hermes', { skipSkills: true });
128
+ (0, vitest_1.expect)(setup_1.installHermesMcp).toHaveBeenCalled();
129
+ (0, vitest_1.expect)(setup_1.installSkillsForAgent).not.toHaveBeenCalled();
130
+ });
131
+ (0, vitest_1.it)('requires an explicit target in non-interactive mode', async () => {
132
+ const originalIsTty = process.stdin.isTTY;
133
+ Object.defineProperty(process.stdin, 'isTTY', {
134
+ configurable: true,
135
+ value: false,
136
+ });
137
+ try {
138
+ await (0, vitest_1.expect)((0, launch_1.handleLaunchCommand)()).rejects.toThrow('Launch target is required in non-interactive mode');
139
+ }
140
+ finally {
141
+ Object.defineProperty(process.stdin, 'isTTY', {
142
+ configurable: true,
143
+ value: originalIsTty,
144
+ });
145
+ }
146
+ });
147
+ });
148
+ //# sourceMappingURL=launch.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.test.js","sourceRoot":"","sources":["../../../src/__tests__/commands/launch.test.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,37 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  const vitest_1 = require("vitest");
4
7
  const child_process_1 = require("child_process");
8
+ const fs_1 = require("fs");
9
+ const os_1 = __importDefault(require("os"));
10
+ const path_1 = __importDefault(require("path"));
5
11
  const setup_1 = require("../../commands/setup");
6
12
  const web_defaults_1 = require("../../utils/web-defaults");
13
+ const config_1 = require("../../utils/config");
7
14
  vitest_1.vi.mock('child_process', () => ({
8
15
  execSync: vitest_1.vi.fn(),
9
16
  }));
10
17
  vitest_1.vi.mock('../../utils/web-defaults', () => ({
11
18
  configureWebDefaults: vitest_1.vi.fn(async () => []),
12
19
  }));
20
+ vitest_1.vi.mock('../../utils/config', () => ({
21
+ getApiKey: vitest_1.vi.fn(() => 'fc-test-key'),
22
+ }));
13
23
  (0, vitest_1.describe)('handleSetupCommand', () => {
24
+ let originalHome;
14
25
  (0, vitest_1.beforeEach)(() => {
15
26
  vitest_1.vi.clearAllMocks();
27
+ vitest_1.vi.mocked(config_1.getApiKey).mockReturnValue('fc-test-key');
28
+ originalHome = process.env.HOME;
16
29
  });
17
30
  (0, vitest_1.afterEach)(() => {
31
+ if (originalHome === undefined)
32
+ delete process.env.HOME;
33
+ else
34
+ process.env.HOME = originalHome;
18
35
  vitest_1.vi.restoreAllMocks();
19
36
  });
20
37
  (0, vitest_1.it)('installs core and build skills globally across all detected agents by default', async () => {
@@ -31,6 +48,37 @@ vitest_1.vi.mock('../../utils/web-defaults', () => ({
31
48
  await (0, setup_1.handleSetupCommand)('workflows', {});
32
49
  (0, vitest_1.expect)(child_process_1.execSync).toHaveBeenCalledWith('npx -y skills add firecrawl/firecrawl-workflows --full-depth --global --all', vitest_1.expect.objectContaining({ stdio: 'inherit' }));
33
50
  });
51
+ (0, vitest_1.it)('configures Firecrawl as the default web provider via make default', async () => {
52
+ await (0, setup_1.handleMakeDefaultCommand)({ yes: true });
53
+ (0, vitest_1.expect)(web_defaults_1.configureWebDefaults).toHaveBeenCalledWith({
54
+ undo: false,
55
+ agents: undefined,
56
+ });
57
+ });
58
+ (0, vitest_1.it)('installs the default setup bundle with --yes', async () => {
59
+ await (0, setup_1.handleSetupCommand)(undefined, { yes: true });
60
+ (0, vitest_1.expect)(child_process_1.execSync).toHaveBeenCalledWith('npx -y skills add firecrawl/cli --full-depth --global --all', vitest_1.expect.objectContaining({ stdio: 'inherit' }));
61
+ (0, vitest_1.expect)(child_process_1.execSync).toHaveBeenCalledWith('npx -y skills add firecrawl/skills --full-depth --global --all', vitest_1.expect.objectContaining({ stdio: 'inherit' }));
62
+ (0, vitest_1.expect)(child_process_1.execSync).toHaveBeenCalledWith('npx -y add-mcp "https://mcp.firecrawl.dev/fc-test-key/v2/mcp" --name firecrawl --transport http --global --yes', vitest_1.expect.objectContaining({
63
+ stdio: 'inherit',
64
+ }));
65
+ });
66
+ (0, vitest_1.it)('requires a subcommand for bare setup in non-interactive mode', async () => {
67
+ const originalIsTty = process.stdin.isTTY;
68
+ Object.defineProperty(process.stdin, 'isTTY', {
69
+ configurable: true,
70
+ value: false,
71
+ });
72
+ try {
73
+ await (0, vitest_1.expect)((0, setup_1.handleSetupCommand)()).rejects.toThrow('Setup subcommand is required in non-interactive mode');
74
+ }
75
+ finally {
76
+ Object.defineProperty(process.stdin, 'isTTY', {
77
+ configurable: true,
78
+ value: originalIsTty,
79
+ });
80
+ }
81
+ });
34
82
  (0, vitest_1.it)('configures Firecrawl as the default web provider', async () => {
35
83
  await (0, setup_1.handleSetupCommand)('defaults', { yes: true });
36
84
  (0, vitest_1.expect)(web_defaults_1.configureWebDefaults).toHaveBeenCalledWith({
@@ -52,6 +100,70 @@ vitest_1.vi.mock('../../utils/web-defaults', () => ({
52
100
  agents: ['Codex'],
53
101
  });
54
102
  });
103
+ (0, vitest_1.it)('installs MCP with the hosted Firecrawl URL when credentials exist', async () => {
104
+ await (0, setup_1.handleSetupCommand)('mcp', {
105
+ agent: 'claude-code',
106
+ global: true,
107
+ yes: true,
108
+ });
109
+ (0, vitest_1.expect)(child_process_1.execSync).toHaveBeenCalledWith('npx -y add-mcp "https://mcp.firecrawl.dev/fc-test-key/v2/mcp" --name firecrawl --transport http --global --agent claude-code --yes', vitest_1.expect.objectContaining({
110
+ stdio: 'inherit',
111
+ }));
112
+ });
113
+ (0, vitest_1.it)('normalizes launch aliases when reinstalling MCP after auth changes', async () => {
114
+ await (0, setup_1.handleSetupCommand)('mcp', {
115
+ agent: 'codex-app',
116
+ global: true,
117
+ yes: true,
118
+ });
119
+ (0, vitest_1.expect)(child_process_1.execSync).toHaveBeenCalledWith('npx -y add-mcp "https://mcp.firecrawl.dev/fc-test-key/v2/mcp" --name firecrawl --transport http --global --agent codex --yes', vitest_1.expect.objectContaining({ stdio: 'inherit' }));
120
+ });
121
+ (0, vitest_1.it)('installs MCP with the keyless hosted Firecrawl URL without credentials', async () => {
122
+ vitest_1.vi.mocked(config_1.getApiKey).mockReturnValue(undefined);
123
+ await (0, setup_1.handleSetupCommand)('mcp', {
124
+ agent: 'claude-code',
125
+ global: true,
126
+ yes: true,
127
+ });
128
+ (0, vitest_1.expect)(child_process_1.execSync).toHaveBeenCalledWith('npx -y add-mcp "https://mcp.firecrawl.dev/v2/mcp" --name firecrawl --transport http --global --agent claude-code --yes', vitest_1.expect.objectContaining({ stdio: 'inherit' }));
129
+ });
130
+ (0, vitest_1.it)('writes Hermes MCP config with Firecrawl credentials', async () => {
131
+ const home = (0, fs_1.mkdtempSync)(path_1.default.join(os_1.default.tmpdir(), 'firecrawl-hermes-test-'));
132
+ process.env.HOME = home;
133
+ try {
134
+ await (0, setup_1.installHermesMcp)();
135
+ const config = (0, fs_1.readFileSync)(path_1.default.join(home, '.hermes', 'config.yaml'), 'utf-8');
136
+ (0, vitest_1.expect)(config).toContain('mcp_servers:');
137
+ (0, vitest_1.expect)(config).toContain('firecrawl:');
138
+ (0, vitest_1.expect)(config).toContain('url: https://mcp.firecrawl.dev/fc-test-key/v2/mcp');
139
+ }
140
+ finally {
141
+ (0, fs_1.rmSync)(home, { recursive: true, force: true });
142
+ }
143
+ });
144
+ (0, vitest_1.it)('configures OpenClaw MCP with its native CLI command', async () => {
145
+ await (0, setup_1.installOpenClawMcp)();
146
+ (0, vitest_1.expect)(child_process_1.execSync).toHaveBeenCalledWith('openclaw mcp set firecrawl "{\\"url\\":\\"https://mcp.firecrawl.dev/fc-test-key/v2/mcp\\",\\"transport\\":\\"streamable-http\\"}"', vitest_1.expect.objectContaining({
147
+ stdio: 'inherit',
148
+ }));
149
+ });
150
+ (0, vitest_1.it)('reinstalls MCP for all launch integrations with --agent all', async () => {
151
+ const home = (0, fs_1.mkdtempSync)(path_1.default.join(os_1.default.tmpdir(), 'firecrawl-all-mcp-test-'));
152
+ process.env.HOME = home;
153
+ try {
154
+ await (0, setup_1.handleSetupCommand)('mcp', {
155
+ agent: 'all',
156
+ global: true,
157
+ yes: true,
158
+ });
159
+ (0, vitest_1.expect)(child_process_1.execSync).toHaveBeenCalledWith('npx -y add-mcp "https://mcp.firecrawl.dev/fc-test-key/v2/mcp" --name firecrawl --transport http --global --all --yes', vitest_1.expect.objectContaining({ stdio: 'inherit' }));
160
+ (0, vitest_1.expect)((0, fs_1.readFileSync)(path_1.default.join(home, '.hermes', 'config.yaml'), 'utf-8')).toContain('url: https://mcp.firecrawl.dev/fc-test-key/v2/mcp');
161
+ (0, vitest_1.expect)(child_process_1.execSync).toHaveBeenCalledWith('openclaw mcp set firecrawl "{\\"url\\":\\"https://mcp.firecrawl.dev/fc-test-key/v2/mcp\\",\\"transport\\":\\"streamable-http\\"}"', vitest_1.expect.objectContaining({ stdio: 'inherit' }));
162
+ }
163
+ finally {
164
+ (0, fs_1.rmSync)(home, { recursive: true, force: true });
165
+ }
166
+ });
55
167
  (0, vitest_1.it)('strips inherited npm_* env vars before nested npx calls', async () => {
56
168
  // Reproduces the bug where running this CLI under `npx -y firecrawl-cli@VERSION`
57
169
  // leaks npm_command/npm_lifecycle_event/npm_execpath into nested
@@ -1 +1 @@
1
- {"version":3,"file":"setup.test.js","sourceRoot":"","sources":["../../../src/__tests__/commands/setup.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.test.js","sourceRoot":"","sources":["../../../src/__tests__/commands/setup.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=update-notice.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-notice.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/utils/update-notice.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const vitest_1 = require("vitest");
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const os_1 = __importDefault(require("os"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const package_json_1 = __importDefault(require("../../../package.json"));
11
+ const update_notice_1 = require("../../utils/update-notice");
12
+ const npm_registry_1 = require("../../utils/npm-registry");
13
+ vitest_1.vi.mock('../../utils/npm-registry', async () => {
14
+ const actual = await vitest_1.vi.importActual('../../utils/npm-registry');
15
+ return {
16
+ ...actual,
17
+ getLatestVersion: vitest_1.vi.fn(),
18
+ };
19
+ });
20
+ (0, vitest_1.describe)('update notice', () => {
21
+ let tmpDir;
22
+ let originalNoUpdateCheck;
23
+ let write;
24
+ (0, vitest_1.beforeEach)(() => {
25
+ tmpDir = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'firecrawl-update-test-'));
26
+ originalNoUpdateCheck = process.env.FIRECRAWL_NO_UPDATE_CHECK;
27
+ delete process.env.FIRECRAWL_NO_UPDATE_CHECK;
28
+ vitest_1.vi.mocked(npm_registry_1.getLatestVersion).mockReset();
29
+ write = vitest_1.vi.fn();
30
+ });
31
+ (0, vitest_1.afterEach)(() => {
32
+ fs_1.default.rmSync(tmpDir, { recursive: true, force: true });
33
+ if (originalNoUpdateCheck === undefined) {
34
+ delete process.env.FIRECRAWL_NO_UPDATE_CHECK;
35
+ }
36
+ else {
37
+ process.env.FIRECRAWL_NO_UPDATE_CHECK = originalNoUpdateCheck;
38
+ }
39
+ vitest_1.vi.restoreAllMocks();
40
+ });
41
+ function stderr(isTTY = true) {
42
+ return { isTTY, write: write };
43
+ }
44
+ (0, vitest_1.it)('formats a bordered update notice', () => {
45
+ const notice = (0, update_notice_1.formatUpdateNotice)('99.99.99');
46
+ (0, vitest_1.expect)(notice).toContain(`✨ Update available! ${package_json_1.default.version} -> 99.99.99`);
47
+ (0, vitest_1.expect)(notice).toContain('Run npm install -g firecrawl-cli to update.');
48
+ (0, vitest_1.expect)(notice).toContain('https://github.com/firecrawl/cli/releases/latest');
49
+ (0, vitest_1.expect)(notice.startsWith('╭')).toBe(true);
50
+ (0, vitest_1.expect)(notice.endsWith('╯')).toBe(true);
51
+ });
52
+ (0, vitest_1.it)('does not check or print outside a TTY', async () => {
53
+ await (0, update_notice_1.maybeShowUpdateNotice)({ cacheDir: tmpDir, stderr: stderr(false) });
54
+ (0, vitest_1.expect)(npm_registry_1.getLatestVersion).not.toHaveBeenCalled();
55
+ (0, vitest_1.expect)(write).not.toHaveBeenCalled();
56
+ });
57
+ (0, vitest_1.it)('prints a cached newer version', async () => {
58
+ fs_1.default.writeFileSync(path_1.default.join(tmpDir, 'update-check.json'), JSON.stringify({
59
+ latestVersion: '99.99.99',
60
+ checkedAt: new Date('2026-06-04T12:00:00.000Z').toISOString(),
61
+ }));
62
+ await (0, update_notice_1.maybeShowUpdateNotice)({
63
+ cacheDir: tmpDir,
64
+ now: new Date('2026-06-04T13:00:00.000Z'),
65
+ stderr: stderr(),
66
+ });
67
+ (0, vitest_1.expect)(npm_registry_1.getLatestVersion).not.toHaveBeenCalled();
68
+ // The notice colorizes "Update available!" with ANSI codes on a TTY, so
69
+ // assert on the (uncolorized) version portion that survives formatting.
70
+ (0, vitest_1.expect)(write).toHaveBeenCalledWith(vitest_1.expect.stringContaining(`${package_json_1.default.version} -> 99.99.99`));
71
+ });
72
+ (0, vitest_1.it)('does not print the same update twice within 12 hours', async () => {
73
+ fs_1.default.writeFileSync(path_1.default.join(tmpDir, 'update-check.json'), JSON.stringify({
74
+ latestVersion: '99.99.99',
75
+ checkedAt: new Date('2026-06-04T12:00:00.000Z').toISOString(),
76
+ lastShownVersion: '99.99.99',
77
+ lastShownAt: new Date('2026-06-04T12:30:00.000Z').toISOString(),
78
+ }));
79
+ await (0, update_notice_1.maybeShowUpdateNotice)({
80
+ cacheDir: tmpDir,
81
+ now: new Date('2026-06-04T13:00:00.000Z'),
82
+ stderr: stderr(),
83
+ });
84
+ (0, vitest_1.expect)(npm_registry_1.getLatestVersion).not.toHaveBeenCalled();
85
+ (0, vitest_1.expect)(write).not.toHaveBeenCalled();
86
+ });
87
+ (0, vitest_1.it)('prints the same update again after 12 hours', async () => {
88
+ fs_1.default.writeFileSync(path_1.default.join(tmpDir, 'update-check.json'), JSON.stringify({
89
+ latestVersion: '99.99.99',
90
+ checkedAt: new Date('2026-06-04T12:00:00.000Z').toISOString(),
91
+ lastShownVersion: '99.99.99',
92
+ lastShownAt: new Date('2026-06-04T00:00:00.000Z').toISOString(),
93
+ }));
94
+ await (0, update_notice_1.maybeShowUpdateNotice)({
95
+ cacheDir: tmpDir,
96
+ now: new Date('2026-06-04T13:00:00.000Z'),
97
+ stderr: stderr(),
98
+ });
99
+ (0, vitest_1.expect)(write).toHaveBeenCalledWith(vitest_1.expect.stringContaining('99.99.99'));
100
+ });
101
+ (0, vitest_1.it)('prints a different newer version even inside the cooldown', async () => {
102
+ fs_1.default.writeFileSync(path_1.default.join(tmpDir, 'update-check.json'), JSON.stringify({
103
+ latestVersion: '100.0.0',
104
+ checkedAt: new Date('2026-06-04T12:00:00.000Z').toISOString(),
105
+ lastShownVersion: '99.99.99',
106
+ lastShownAt: new Date('2026-06-04T12:30:00.000Z').toISOString(),
107
+ }));
108
+ await (0, update_notice_1.maybeShowUpdateNotice)({
109
+ cacheDir: tmpDir,
110
+ now: new Date('2026-06-04T13:00:00.000Z'),
111
+ stderr: stderr(),
112
+ });
113
+ (0, vitest_1.expect)(write).toHaveBeenCalledWith(vitest_1.expect.stringContaining('100.0.0'));
114
+ });
115
+ (0, vitest_1.it)('refreshes a stale cache from npm', async () => {
116
+ vitest_1.vi.mocked(npm_registry_1.getLatestVersion).mockResolvedValue({
117
+ version: '99.99.99',
118
+ unreachable: false,
119
+ });
120
+ await (0, update_notice_1.maybeShowUpdateNotice)({
121
+ cacheDir: tmpDir,
122
+ now: new Date('2026-06-04T13:00:00.000Z'),
123
+ stderr: stderr(),
124
+ });
125
+ (0, vitest_1.expect)(npm_registry_1.getLatestVersion).toHaveBeenCalledWith('firecrawl-cli', 750);
126
+ (0, vitest_1.expect)(write).toHaveBeenCalledWith(vitest_1.expect.stringContaining('99.99.99'));
127
+ const cached = JSON.parse(fs_1.default.readFileSync(path_1.default.join(tmpDir, 'update-check.json'), 'utf-8'));
128
+ (0, vitest_1.expect)(cached.latestVersion).toBe('99.99.99');
129
+ });
130
+ (0, vitest_1.it)('respects FIRECRAWL_NO_UPDATE_CHECK', async () => {
131
+ process.env.FIRECRAWL_NO_UPDATE_CHECK = '1';
132
+ await (0, update_notice_1.maybeShowUpdateNotice)({ cacheDir: tmpDir, stderr: stderr() });
133
+ (0, vitest_1.expect)(npm_registry_1.getLatestVersion).not.toHaveBeenCalled();
134
+ (0, vitest_1.expect)(write).not.toHaveBeenCalled();
135
+ });
136
+ });
137
+ //# sourceMappingURL=update-notice.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-notice.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/update-notice.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoBH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAUD,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,SAAS,EAAE,aAAa,EAsDpC,CAAC;AAoKF,wBAAsB,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAoErE;AAiVD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAMpE;AAED,wBAAsB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC1E;AAED,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CA2Cf"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoBH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAUD,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,SAAS,EAAE,aAAa,EAsDpC,CAAC;AAuKF,wBAAsB,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAoErE;AAiVD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAMpE;AAED,wBAAsB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC1E;AAED,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CA2Cf"}
@@ -205,6 +205,7 @@ function printNextSteps(skillCount, defaultsHandled = false) {
205
205
  if (!defaultsHandled) {
206
206
  console.log(` ${arrow} ${dim}Default web:${reset} ${bold}firecrawl setup defaults${reset}`);
207
207
  }
208
+ console.log(` ${arrow} ${dim}Make default:${reset} ${bold}firecrawl make default${reset}`);
208
209
  console.log(` ${arrow} ${dim}All commands:${reset} ${bold}firecrawl --help${reset}`);
209
210
  console.log('');
210
211
  console.log(` ${dim}Building with firecrawl? Just describe what you want to build or integrate.${reset}`);