firecrawl-cli 1.9.4 → 1.9.6

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.
Files changed (62) hide show
  1. package/README.md +129 -0
  2. package/dist/commands/browser.d.ts.map +1 -1
  3. package/dist/commands/browser.js +3 -2
  4. package/dist/commands/browser.js.map +1 -1
  5. package/dist/commands/experimental/backends.d.ts +19 -0
  6. package/dist/commands/experimental/backends.d.ts.map +1 -0
  7. package/dist/commands/experimental/backends.js +74 -0
  8. package/dist/commands/experimental/backends.js.map +1 -0
  9. package/dist/commands/experimental/index.d.ts +13 -0
  10. package/dist/commands/experimental/index.d.ts.map +1 -0
  11. package/dist/commands/experimental/index.js +227 -0
  12. package/dist/commands/experimental/index.js.map +1 -0
  13. package/dist/commands/experimental/shared.d.ts +17 -0
  14. package/dist/commands/experimental/shared.d.ts.map +1 -0
  15. package/dist/commands/experimental/shared.js +154 -0
  16. package/dist/commands/experimental/shared.js.map +1 -0
  17. package/dist/commands/experimental/workflows/competitor-analysis.d.ts +10 -0
  18. package/dist/commands/experimental/workflows/competitor-analysis.d.ts.map +1 -0
  19. package/dist/commands/experimental/workflows/competitor-analysis.js +196 -0
  20. package/dist/commands/experimental/workflows/competitor-analysis.js.map +1 -0
  21. package/dist/commands/experimental/workflows/deep-research.d.ts +11 -0
  22. package/dist/commands/experimental/workflows/deep-research.d.ts.map +1 -0
  23. package/dist/commands/experimental/workflows/deep-research.js +159 -0
  24. package/dist/commands/experimental/workflows/deep-research.js.map +1 -0
  25. package/dist/commands/experimental/workflows/demo.d.ts +11 -0
  26. package/dist/commands/experimental/workflows/demo.d.ts.map +1 -0
  27. package/dist/commands/experimental/workflows/demo.js +190 -0
  28. package/dist/commands/experimental/workflows/demo.js.map +1 -0
  29. package/dist/commands/experimental/workflows/knowledge-base.d.ts +11 -0
  30. package/dist/commands/experimental/workflows/knowledge-base.d.ts.map +1 -0
  31. package/dist/commands/experimental/workflows/knowledge-base.js +319 -0
  32. package/dist/commands/experimental/workflows/knowledge-base.js.map +1 -0
  33. package/dist/commands/experimental/workflows/lead-research.d.ts +11 -0
  34. package/dist/commands/experimental/workflows/lead-research.d.ts.map +1 -0
  35. package/dist/commands/experimental/workflows/lead-research.js +146 -0
  36. package/dist/commands/experimental/workflows/lead-research.js.map +1 -0
  37. package/dist/commands/experimental/workflows/qa.d.ts +11 -0
  38. package/dist/commands/experimental/workflows/qa.d.ts.map +1 -0
  39. package/dist/commands/experimental/workflows/qa.js +184 -0
  40. package/dist/commands/experimental/workflows/qa.js.map +1 -0
  41. package/dist/commands/experimental/workflows/research-papers.d.ts +11 -0
  42. package/dist/commands/experimental/workflows/research-papers.d.ts.map +1 -0
  43. package/dist/commands/experimental/workflows/research-papers.js +151 -0
  44. package/dist/commands/experimental/workflows/research-papers.js.map +1 -0
  45. package/dist/commands/experimental/workflows/seo-audit.d.ts +11 -0
  46. package/dist/commands/experimental/workflows/seo-audit.d.ts.map +1 -0
  47. package/dist/commands/experimental/workflows/seo-audit.js +155 -0
  48. package/dist/commands/experimental/workflows/seo-audit.js.map +1 -0
  49. package/dist/commands/experimental/workflows/shop.d.ts +11 -0
  50. package/dist/commands/experimental/workflows/shop.d.ts.map +1 -0
  51. package/dist/commands/experimental/workflows/shop.js +155 -0
  52. package/dist/commands/experimental/workflows/shop.js.map +1 -0
  53. package/dist/commands/init.d.ts +11 -1
  54. package/dist/commands/init.d.ts.map +1 -1
  55. package/dist/commands/init.js +474 -36
  56. package/dist/commands/init.js.map +1 -1
  57. package/dist/commands/login.d.ts.map +1 -1
  58. package/dist/commands/login.js +18 -0
  59. package/dist/commands/login.js.map +1 -1
  60. package/dist/index.js +17 -4
  61. package/dist/index.js.map +1 -1
  62. package/package.json +2 -2
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ /**
3
+ * Workflow: SEO Audit
4
+ *
5
+ * Maps the site, then spawns parallel agents for site structure, on-page SEO,
6
+ * and keyword/competitor analysis. Produces a prioritized audit with specific
7
+ * (not generic) recommendations.
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.register = register;
44
+ const backends_1 = require("../backends");
45
+ const shared_1 = require("../shared");
46
+ // ─── Input gathering ────────────────────────────────────────────────────────
47
+ async function gatherInputs(prefill) {
48
+ const { input, select } = await Promise.resolve().then(() => __importStar(require('@inquirer/prompts')));
49
+ const rawUrl = prefill?.url ||
50
+ (await input({
51
+ message: 'What site do you want to audit?',
52
+ validate: shared_1.validateUrl,
53
+ }));
54
+ const keywords = await input({
55
+ message: 'Target keywords? (comma-separated, leave blank to auto-detect)',
56
+ default: '',
57
+ });
58
+ const output = await select({
59
+ message: 'How should the audit be delivered?',
60
+ choices: [
61
+ { name: 'Print to terminal', value: 'terminal' },
62
+ { name: 'Save as Markdown file', value: 'markdown' },
63
+ ],
64
+ });
65
+ return { url: (0, shared_1.normalizeUrl)(rawUrl), keywords, output };
66
+ }
67
+ // ─── System prompt ──────────────────────────────────────────────────────────
68
+ function buildSystemPrompt(opts) {
69
+ const outputInstructions = opts.output === 'markdown'
70
+ ? 'Save the audit to a file called `seo-audit.md` in the current directory. Tell the user the file path when done.'
71
+ : 'Print the full audit to the terminal in well-formatted markdown.';
72
+ return `You are an SEO audit team lead powered by Firecrawl. You orchestrate parallel agents to thoroughly audit a website's search engine optimization.
73
+
74
+ ${shared_1.FIRECRAWL_TOOLS_BLOCK}
75
+
76
+ ## Your Strategy
77
+
78
+ You are a **team lead**, not a solo auditor. Your job is to:
79
+
80
+ 1. **Map the site first** -- Run \`firecrawl map\` yourself to discover all pages and understand the site structure.
81
+ 2. **Spawn parallel subagents** -- Launch agents to audit different aspects simultaneously.
82
+ 3. **Collect results** -- Each agent reports back findings.
83
+ 4. **Synthesize** -- Build the prioritized audit with specific recommendations.
84
+
85
+ ## Agent Assignments
86
+
87
+ Spawn these agents in parallel:
88
+ 1. **Site Structure Agent** -- Analyze URL structure, check sitemap.xml, evaluate internal linking patterns. Use the sitemap from the map step. Check for orphan pages, redirect chains, broken internal links.
89
+ 2. **On-Page SEO Agent** -- Scrape key pages (homepage, top product/service pages, blog, about). For each page: check title tag, meta description, heading hierarchy (H1/H2/H3), content length, image alt tags, schema markup.
90
+ 3. **Keyword & Competitor Agent** -- Search for the site's target keywords. Find who's ranking above them. Scrape top competitors' pages and compare their on-page SEO tactics (titles, headings, content structure, meta).
91
+
92
+ ${shared_1.SUBAGENT_INSTRUCTIONS}
93
+
94
+ ## Output Format
95
+
96
+ ${outputInstructions}
97
+
98
+ Structure the audit as:
99
+
100
+ ### Site Structure
101
+ - Total pages found
102
+ - URL structure quality
103
+ - Sitemap health
104
+
105
+ ### On-Page SEO
106
+ For each key page:
107
+ - Title tag, meta description
108
+ - Heading hierarchy (H1, H2, etc.)
109
+ - Content length and quality
110
+ - Internal linking
111
+
112
+ ### Keyword Analysis
113
+ - Current keyword targeting
114
+ - Missing keyword opportunities
115
+ - Competitor keyword comparison
116
+
117
+ ### Technical Issues
118
+ - Broken links, redirects
119
+ - Missing meta tags
120
+ - Duplicate content concerns
121
+
122
+ ### Competitor Comparison
123
+ Who's outranking them and why.
124
+
125
+ ### Recommendations
126
+ Prioritized list of fixes (high/medium/low impact).
127
+
128
+ ### Sources
129
+ Every URL scraped.
130
+
131
+ ---
132
+
133
+ Be specific with recommendations. Don't just say "improve meta descriptions" -- say exactly what to change.
134
+
135
+ Start working immediately.`;
136
+ }
137
+ // ─── Command registration ───────────────────────────────────────────────────
138
+ function register(parentCmd, backend) {
139
+ const config = backends_1.BACKENDS[backend];
140
+ parentCmd
141
+ .command('seo-audit')
142
+ .description('Run an SEO audit on a website')
143
+ .argument('[url]', 'URL to audit')
144
+ .option('-y, --yes', 'Auto-approve all tool permissions')
145
+ .action(async (url, options) => {
146
+ const inputs = await gatherInputs(url ? { url } : undefined);
147
+ const skipPermissions = options.yes || (await (0, shared_1.askPermissionMode)(backend));
148
+ console.log(`\nLaunching ${config.displayName}...\n`);
149
+ (0, backends_1.launchAgent)(backend, buildSystemPrompt({ output: inputs.output }), (0, shared_1.buildMessage)([
150
+ `Audit ${inputs.url}`,
151
+ inputs.keywords && `Target keywords: ${inputs.keywords}`,
152
+ ]), skipPermissions);
153
+ });
154
+ }
155
+ //# sourceMappingURL=seo-audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seo-audit.js","sourceRoot":"","sources":["../../../../src/commands/experimental/workflows/seo-audit.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6HH,4BAwBC;AAlJD,0CAAkE;AAClE,sCAOmB;AAUnB,+EAA+E;AAE/E,KAAK,UAAU,YAAY,CAAC,OAA0B;IACpD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;IAE5D,MAAM,MAAM,GACV,OAAO,EAAE,GAAG;QACZ,CAAC,MAAM,KAAK,CAAC;YACX,OAAO,EAAE,iCAAiC;YAC1C,QAAQ,EAAE,oBAAW;SACtB,CAAC,CAAC,CAAC;IAEN,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC;QAC3B,OAAO,EAAE,gEAAgE;QACzE,OAAO,EAAE,EAAE;KACZ,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;QAC1B,OAAO,EAAE,oCAAoC;QAC7C,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,UAAU,EAAE;YAChD,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,UAAU,EAAE;SACrD;KACF,CAAC,CAAC;IAEH,OAAO,EAAE,GAAG,EAAE,IAAA,qBAAY,EAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AACzD,CAAC;AAED,+EAA+E;AAE/E,SAAS,iBAAiB,CAAC,IAAwB;IACjD,MAAM,kBAAkB,GACtB,IAAI,CAAC,MAAM,KAAK,UAAU;QACxB,CAAC,CAAC,iHAAiH;QACnH,CAAC,CAAC,kEAAkE,CAAC;IAEzE,OAAO;;EAEP,8BAAqB;;;;;;;;;;;;;;;;;;EAkBrB,8BAAqB;;;;EAIrB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAuCO,CAAC;AAC5B,CAAC;AAED,+EAA+E;AAE/E,SAAgB,QAAQ,CAAC,SAAkB,EAAE,OAAgB;IAC3D,MAAM,MAAM,GAAG,mBAAQ,CAAC,OAAO,CAAC,CAAC;IAEjC,SAAS;SACN,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;SACjC,MAAM,CAAC,WAAW,EAAE,mCAAmC,CAAC;SACxD,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAE7D,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,IAAA,0BAAiB,EAAC,OAAO,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,WAAW,OAAO,CAAC,CAAC;QAEtD,IAAA,sBAAW,EACT,OAAO,EACP,iBAAiB,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAC5C,IAAA,qBAAY,EAAC;YACX,SAAS,MAAM,CAAC,GAAG,EAAE;YACrB,MAAM,CAAC,QAAQ,IAAI,oBAAoB,MAAM,CAAC,QAAQ,EAAE;SACzD,CAAC,EACF,eAAe,CAChB,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Workflow: Shop
3
+ *
4
+ * Researches a product across the web (reviews, Reddit, Wirecutter, etc.),
5
+ * finds the best option, then uses a saved Amazon browser profile to
6
+ * add it to cart. Demonstrates persistent browser profiles in action.
7
+ */
8
+ import { Command } from 'commander';
9
+ import { type Backend } from '../backends';
10
+ export declare function register(parentCmd: Command, backend: Backend): void;
11
+ //# sourceMappingURL=shop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shop.d.ts","sourceRoot":"","sources":["../../../../src/commands/experimental/workflows/shop.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,OAAO,EAAyB,MAAM,aAAa,CAAC;AA+GlE,wBAAgB,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CA4BnE"}
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ /**
3
+ * Workflow: Shop
4
+ *
5
+ * Researches a product across the web (reviews, Reddit, Wirecutter, etc.),
6
+ * finds the best option, then uses a saved Amazon browser profile to
7
+ * add it to cart. Demonstrates persistent browser profiles in action.
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.register = register;
44
+ const backends_1 = require("../backends");
45
+ const shared_1 = require("../shared");
46
+ // ─── Input gathering ────────────────────────────────────────────────────────
47
+ async function gatherInputs(prefill) {
48
+ // If query is prefilled, skip interactive prompts entirely
49
+ if (prefill?.query) {
50
+ return { query: prefill.query, budget: '', sites: '', context: '' };
51
+ }
52
+ const { input } = await Promise.resolve().then(() => __importStar(require('@inquirer/prompts')));
53
+ const query = await input({
54
+ message: 'What are you looking to buy?',
55
+ validate: (0, shared_1.validateRequired)('Product'),
56
+ });
57
+ const budget = await input({
58
+ message: 'Budget? (leave blank for no limit)',
59
+ default: '',
60
+ });
61
+ const sites = await input({
62
+ message: 'Preferred site(s)? (e.g. amazon, bestbuy, newegg -- leave blank for any)',
63
+ default: '',
64
+ });
65
+ const context = await input({
66
+ message: 'Any other preferences? (brand, features, delivery location, etc.)',
67
+ default: '',
68
+ });
69
+ return { query, budget, sites, context };
70
+ }
71
+ // ─── System prompt ──────────────────────────────────────────────────────────
72
+ function buildSystemPrompt() {
73
+ return `You are a personal shopping assistant powered by Firecrawl. You shop for products using a real cloud browser -- browsing sites, comparing options, and adding items to cart visually.
74
+
75
+ ## STEP 1: Launch Browser and Open Live View
76
+
77
+ Before anything else, launch a browser session and open the live view so the user can watch you shop:
78
+
79
+ \`\`\`bash
80
+ firecrawl browser launch-session --json
81
+ \`\`\`
82
+
83
+ Extract the \`liveViewUrl\` from the JSON output and open it for the user:
84
+
85
+ \`\`\`bash
86
+ open "<liveViewUrl>" # macOS
87
+ xdg-open "<liveViewUrl>" # Linux
88
+ \`\`\`
89
+
90
+ If the \`open\` command fails, print the URL clearly so the user can copy-paste it. Make sure the user sees the live view URL before you start shopping.
91
+
92
+ ## STEP 2: Shop Using the Browser
93
+
94
+ Use \`firecrawl browser\` commands to browse, search, compare, and shop. Do everything in the browser -- this is a visual shopping experience.
95
+
96
+ \`\`\`bash
97
+ firecrawl browser "open <url>" # Navigate to a site
98
+ firecrawl browser "snapshot" # See what's on screen
99
+ firecrawl browser "click @<ref>" # Click an element
100
+ firecrawl browser "type @<ref> <text>" # Type into search/fields
101
+ firecrawl browser "scroll down" # Scroll to see more
102
+ firecrawl browser "scrape" # Get page content as markdown
103
+ \`\`\`
104
+
105
+ ### How to shop:
106
+ 1. Go to the user's preferred site (or Amazon by default)
107
+ 2. Search for the product
108
+ 3. Browse results, click into listings, compare specs and prices
109
+ 4. Pick the best option based on reviews, price, and the user's requirements
110
+ 5. Add to cart
111
+ 6. Go to cart and snapshot to confirm
112
+
113
+ If you need to research reviews or comparisons outside the shopping site, you can use \`firecrawl search\` or \`firecrawl scrape\`, but **always come back to the browser for the actual shopping**.
114
+
115
+ Do everything sequentially -- do NOT spawn parallel subagents. Work through each step yourself, one at a time.
116
+
117
+ ## Output
118
+
119
+ Print a summary to the terminal:
120
+
121
+ ### What I Found
122
+ - Products compared, your pick, and why
123
+
124
+ ### Cart
125
+ - Items added (name, price, seller)
126
+ - Total estimated cost
127
+ - Cart confirmation
128
+
129
+ Be specific with product names, model numbers, and prices. Start immediately.`;
130
+ }
131
+ // ─── Command registration ───────────────────────────────────────────────────
132
+ function register(parentCmd, backend) {
133
+ const config = backends_1.BACKENDS[backend];
134
+ parentCmd
135
+ .command('shop')
136
+ .description('Research products across the web, then buy using your saved Amazon session')
137
+ .argument('[query...]', 'What to shop for')
138
+ .option('-y, --yes', 'Auto-approve all tool permissions')
139
+ .action(async (queryParts, options) => {
140
+ const prefillQuery = queryParts.length > 0 ? queryParts.join(' ') : undefined;
141
+ const inputs = await gatherInputs(prefillQuery ? { query: prefillQuery } : undefined);
142
+ const parts = [inputs.query];
143
+ if (inputs.budget)
144
+ parts.push(`Budget: ${inputs.budget}`);
145
+ if (inputs.sites)
146
+ parts.push(`Shop on: ${inputs.sites}`);
147
+ if (inputs.context)
148
+ parts.push(inputs.context);
149
+ const userMessage = parts.join('. ') + '.';
150
+ const skipPermissions = true;
151
+ console.log(`\nLaunching ${config.displayName}...\n`);
152
+ (0, backends_1.launchAgent)(backend, buildSystemPrompt(), userMessage, skipPermissions);
153
+ });
154
+ }
155
+ //# sourceMappingURL=shop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shop.js","sourceRoot":"","sources":["../../../../src/commands/experimental/workflows/shop.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkHH,4BA4BC;AA3ID,0CAAkE;AAClE,sCAA6C;AAW7C,+EAA+E;AAE/E,KAAK,UAAU,YAAY,CAAC,OAA4B;IACtD,2DAA2D;IAC3D,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACtE,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;IAEpD,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC;QACxB,OAAO,EAAE,8BAA8B;QACvC,QAAQ,EAAE,IAAA,yBAAgB,EAAC,SAAS,CAAC;KACtC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC;QACzB,OAAO,EAAE,oCAAoC;QAC7C,OAAO,EAAE,EAAE;KACZ,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC;QACxB,OAAO,EACL,0EAA0E;QAC5E,OAAO,EAAE,EAAE;KACZ,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC;QAC1B,OAAO,EACL,mEAAmE;QACrE,OAAO,EAAE,EAAE;KACZ,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC3C,CAAC;AAED,+EAA+E;AAE/E,SAAS,iBAAiB;IACxB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8EAwDqE,CAAC;AAC/E,CAAC;AAED,+EAA+E;AAE/E,SAAgB,QAAQ,CAAC,SAAkB,EAAE,OAAgB;IAC3D,MAAM,MAAM,GAAG,mBAAQ,CAAC,OAAO,CAAC,CAAC;IAEjC,SAAS;SACN,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,4EAA4E,CAC7E;SACA,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;SAC1C,MAAM,CAAC,WAAW,EAAE,mCAAmC,CAAC;SACxD,MAAM,CAAC,KAAK,EAAE,UAAoB,EAAE,OAAO,EAAE,EAAE;QAC9C,MAAM,YAAY,GAChB,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,YAAY,CAC/B,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS,CACnD,CAAC;QAEF,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,MAAM,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACzD,IAAI,MAAM,CAAC,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QAE3C,MAAM,eAAe,GAAG,IAAI,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,WAAW,OAAO,CAAC,CAAC;QAEtD,IAAA,sBAAW,EAAC,OAAO,EAAE,iBAAiB,EAAE,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Init command — single command to install the CLI, authenticate, and add skills.
2
+ * Init command — interactive step-by-step wizard to set up Firecrawl.
3
3
  *
4
4
  * Usage: npx -y firecrawl-cli init
5
5
  */
@@ -13,6 +13,16 @@ export interface InitOptions {
13
13
  skipAuth?: boolean;
14
14
  apiKey?: string;
15
15
  browser?: boolean;
16
+ template?: string;
16
17
  }
18
+ interface TemplateEntry {
19
+ name: string;
20
+ description: string;
21
+ path: string;
22
+ }
23
+ export declare const TEMPLATES: TemplateEntry[];
24
+ export declare function findTemplate(name: string): TemplateEntry | undefined;
25
+ export declare function scaffoldTemplate(templatePath: string): Promise<void>;
17
26
  export declare function handleInitCommand(options?: InitOptions): Promise<void>;
27
+ export {};
18
28
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,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;CACnB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAoIf"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,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;AAuWF,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,CAyCf"}