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 +1 -1
- package/dist/__tests__/commands/launch.test.d.ts +2 -0
- package/dist/__tests__/commands/launch.test.d.ts.map +1 -0
- package/dist/__tests__/commands/launch.test.js +148 -0
- package/dist/__tests__/commands/launch.test.js.map +1 -0
- package/dist/__tests__/commands/setup.test.js +112 -0
- package/dist/__tests__/commands/setup.test.js.map +1 -1
- package/dist/__tests__/utils/update-notice.test.d.ts +2 -0
- package/dist/__tests__/utils/update-notice.test.d.ts.map +1 -0
- package/dist/__tests__/utils/update-notice.test.js +137 -0
- package/dist/__tests__/utils/update-notice.test.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +1 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/launch.d.ts +11 -0
- package/dist/commands/launch.d.ts.map +1 -0
- package/dist/commands/launch.js +198 -0
- package/dist/commands/launch.js.map +1 -0
- package/dist/commands/setup.d.ts +5 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +215 -8
- package/dist/commands/setup.js.map +1 -1
- package/dist/index.js +37 -3
- package/dist/index.js.map +1 -1
- package/dist/utils/update-notice.d.ts +8 -0
- package/dist/utils/update-notice.d.ts.map +1 -0
- package/dist/utils/update-notice.js +131 -0
- package/dist/utils/update-notice.js.map +1 -0
- package/dist/utils/web-defaults.js +2 -2
- package/dist/utils/web-defaults.js.map +1 -1
- package/package.json +3 -2
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 @@
|
|
|
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":"
|
|
1
|
+
{"version":3,"file":"setup.test.js","sourceRoot":"","sources":["../../../src/__tests__/commands/setup.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -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}`);
|