needware-cli 1.5.15 → 1.5.19
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 +49 -1
- package/dist/commands/agent.d.ts +12 -0
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +133 -7
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/index.d.ts +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/skill.d.ts +34 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +307 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/system-prompt.d.ts +2 -1
- package/dist/commands/system-prompt.d.ts.map +1 -1
- package/dist/commands/system-prompt.js +12 -9
- package/dist/commands/system-prompt.js.map +1 -1
- package/dist/core/cli.d.ts.map +1 -1
- package/dist/core/cli.js +8 -1
- package/dist/core/cli.js.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/sdk/firecrawl-sdk.d.ts +85 -0
- package/dist/sdk/firecrawl-sdk.d.ts.map +1 -0
- package/dist/sdk/firecrawl-sdk.js +207 -0
- package/dist/sdk/firecrawl-sdk.js.map +1 -0
- package/dist/tools/ai-gateway-enable-tool.d.ts +12 -0
- package/dist/tools/ai-gateway-enable-tool.d.ts.map +1 -0
- package/dist/tools/ai-gateway-enable-tool.js +33 -0
- package/dist/tools/ai-gateway-enable-tool.js.map +1 -0
- package/dist/tools/base-tool.d.ts +76 -0
- package/dist/tools/base-tool.d.ts.map +1 -0
- package/dist/tools/base-tool.js +119 -0
- package/dist/tools/base-tool.js.map +1 -0
- package/dist/tools/example-tool.d.ts +16 -0
- package/dist/tools/example-tool.d.ts.map +1 -0
- package/dist/tools/example-tool.js +67 -0
- package/dist/tools/example-tool.js.map +1 -0
- package/dist/tools/index.d.ts +9 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +9 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/supabase-deploy-functions-tool.d.ts +18 -0
- package/dist/tools/supabase-deploy-functions-tool.d.ts.map +1 -0
- package/dist/tools/supabase-deploy-functions-tool.js +127 -0
- package/dist/tools/supabase-deploy-functions-tool.js.map +1 -0
- package/dist/tools/supabase-enable-tool.d.ts +12 -0
- package/dist/tools/supabase-enable-tool.d.ts.map +1 -0
- package/dist/tools/supabase-enable-tool.js +89 -0
- package/dist/tools/supabase-enable-tool.js.map +1 -0
- package/dist/tools/tool-registry.d.ts +51 -0
- package/dist/tools/tool-registry.d.ts.map +1 -0
- package/dist/tools/tool-registry.js +81 -0
- package/dist/tools/tool-registry.js.map +1 -0
- package/dist/tools/user-registration-tool.d.ts +17 -0
- package/dist/tools/user-registration-tool.d.ts.map +1 -0
- package/dist/tools/user-registration-tool.js +63 -0
- package/dist/tools/user-registration-tool.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/tool.d.ts +60 -0
- package/dist/types/tool.d.ts.map +1 -0
- package/dist/types/tool.js +5 -0
- package/dist/types/tool.js.map +1 -0
- package/examples/gateway-config-usage.sh +71 -0
- package/examples/tool-usage-example.sh +44 -0
- package/package.json +2 -2
- package/skills/ai-integration/SKILL.md +793 -0
- package/skills/supabase-integration/SKILL.md +556 -0
- package/CHANGELOG_DB_CONFIG.md +0 -142
- package/IMPLEMENTATION_SUMMARY.md +0 -303
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill 命令 - 管理和添加技能到 .claude/skills
|
|
3
|
+
*/
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import ora from 'ora';
|
|
6
|
+
import * as fs from 'fs';
|
|
7
|
+
import * as path from 'path';
|
|
8
|
+
import { Command } from '../core/command.js';
|
|
9
|
+
import { fileURLToPath } from 'url';
|
|
10
|
+
import { dirname } from 'path';
|
|
11
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
12
|
+
const __dirname = dirname(__filename);
|
|
13
|
+
export class SkillCommand extends Command {
|
|
14
|
+
name = 'skill';
|
|
15
|
+
description = '管理和添加技能到 .claude/skills';
|
|
16
|
+
aliases = ['sk'];
|
|
17
|
+
constructor(logger) {
|
|
18
|
+
super(logger);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 获取 CLI 工具自带的 skills 目录路径
|
|
22
|
+
*/
|
|
23
|
+
getCliSkillsDir() {
|
|
24
|
+
// __dirname 是 dist/commands/ (编译后)
|
|
25
|
+
// 需要回到项目根目录,然后进入 skills
|
|
26
|
+
const distDir = __dirname; // dist/commands
|
|
27
|
+
const projectRoot = path.resolve(distDir, '..', '..'); // 回到 needware-cli 根目录
|
|
28
|
+
return path.join(projectRoot, 'skills');
|
|
29
|
+
}
|
|
30
|
+
async execute(options) {
|
|
31
|
+
try {
|
|
32
|
+
const skillName = options.args?.[0];
|
|
33
|
+
// 如果没有提供技能名称,显示可用技能列表
|
|
34
|
+
if (!skillName) {
|
|
35
|
+
return this.listAvailableSkills();
|
|
36
|
+
}
|
|
37
|
+
// 如果是 "all",添加所有技能
|
|
38
|
+
if (skillName === 'all') {
|
|
39
|
+
return await this.addAllSkills(options);
|
|
40
|
+
}
|
|
41
|
+
// 添加指定的技能
|
|
42
|
+
return await this.addSkill(skillName, options);
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
const message = error instanceof Error ? error.message : 'Skill command failed';
|
|
46
|
+
return this.error(message, error);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* 列出所有可用的技能
|
|
51
|
+
*/
|
|
52
|
+
listAvailableSkills() {
|
|
53
|
+
// 从 CLI 工具自带的 skills 目录读取
|
|
54
|
+
const skillsDir = this.getCliSkillsDir();
|
|
55
|
+
// 检查 skills 目录是否存在
|
|
56
|
+
if (!fs.existsSync(skillsDir)) {
|
|
57
|
+
console.log(chalk.yellow('\n⚠️ 未找到 needware-cli 的 skills 目录\n'));
|
|
58
|
+
console.log(chalk.gray(`路径: ${skillsDir}\n`));
|
|
59
|
+
return this.error('Skills 目录不存在');
|
|
60
|
+
}
|
|
61
|
+
// 读取 skills 目录
|
|
62
|
+
const entries = fs.readdirSync(skillsDir, { withFileTypes: true });
|
|
63
|
+
const skills = entries
|
|
64
|
+
.filter(entry => entry.isDirectory())
|
|
65
|
+
.filter(dir => {
|
|
66
|
+
// 检查目录中是否有 SKILL.md 文件
|
|
67
|
+
const skillFile = path.join(skillsDir, dir.name, 'SKILL.md');
|
|
68
|
+
return fs.existsSync(skillFile);
|
|
69
|
+
})
|
|
70
|
+
.map(dir => dir.name);
|
|
71
|
+
if (skills.length === 0) {
|
|
72
|
+
console.log(chalk.yellow('\n⚠️ 没有找到可用的技能\n'));
|
|
73
|
+
return this.success('No skills found');
|
|
74
|
+
}
|
|
75
|
+
console.log(chalk.blue('\n📚 可用的技能:\n'));
|
|
76
|
+
console.log(chalk.gray('─'.repeat(70)));
|
|
77
|
+
skills.forEach(skill => {
|
|
78
|
+
const skillFile = path.join(skillsDir, skill, 'SKILL.md');
|
|
79
|
+
const content = fs.readFileSync(skillFile, 'utf-8');
|
|
80
|
+
// 尝试从 SKILL.md 中提取描述
|
|
81
|
+
const descMatch = content.match(/^description:\s*(.+)$/m);
|
|
82
|
+
const description = descMatch ? descMatch[1] : '无描述';
|
|
83
|
+
console.log(chalk.cyan(` ${skill}`));
|
|
84
|
+
console.log(chalk.gray(` ${description}`));
|
|
85
|
+
console.log();
|
|
86
|
+
});
|
|
87
|
+
console.log(chalk.gray('─'.repeat(70)));
|
|
88
|
+
console.log(chalk.cyan('\n用法:'));
|
|
89
|
+
console.log(chalk.gray(' needware-cli skill <skill-name> 添加指定技能'));
|
|
90
|
+
console.log(chalk.gray(' needware-cli skill all 添加所有可用技能'));
|
|
91
|
+
console.log(chalk.gray(' needware-cli skill <skill-name> --force 强制覆盖已存在的技能\n'));
|
|
92
|
+
console.log(chalk.cyan('示例:'));
|
|
93
|
+
console.log(chalk.gray(' needware-cli skill ai-integration'));
|
|
94
|
+
console.log(chalk.gray(' needware-cli skill all'));
|
|
95
|
+
console.log(chalk.gray(' needware-cli skill all --force\n'));
|
|
96
|
+
return this.success('Skills listed successfully');
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* 获取所有可用的技能列表
|
|
100
|
+
*/
|
|
101
|
+
getAllSkills() {
|
|
102
|
+
const skillsDir = this.getCliSkillsDir();
|
|
103
|
+
if (!fs.existsSync(skillsDir)) {
|
|
104
|
+
return [];
|
|
105
|
+
}
|
|
106
|
+
const entries = fs.readdirSync(skillsDir, { withFileTypes: true });
|
|
107
|
+
const skills = entries
|
|
108
|
+
.filter(entry => entry.isDirectory())
|
|
109
|
+
.filter(dir => {
|
|
110
|
+
const skillFile = path.join(skillsDir, dir.name, 'SKILL.md');
|
|
111
|
+
return fs.existsSync(skillFile);
|
|
112
|
+
})
|
|
113
|
+
.map(dir => dir.name);
|
|
114
|
+
return skills;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* 添加所有技能到 .claude/skills
|
|
118
|
+
*/
|
|
119
|
+
async addAllSkills(options) {
|
|
120
|
+
const spinner = ora('正在获取所有可用技能...').start();
|
|
121
|
+
try {
|
|
122
|
+
const skills = this.getAllSkills();
|
|
123
|
+
if (skills.length === 0) {
|
|
124
|
+
spinner.warn(chalk.yellow('没有找到可用的技能'));
|
|
125
|
+
return this.error('没有可用的技能');
|
|
126
|
+
}
|
|
127
|
+
spinner.text = `找到 ${skills.length} 个技能,开始添加...`;
|
|
128
|
+
const results = {
|
|
129
|
+
success: [],
|
|
130
|
+
failed: [],
|
|
131
|
+
skipped: []
|
|
132
|
+
};
|
|
133
|
+
for (const skillName of skills) {
|
|
134
|
+
spinner.text = `正在添加 ${skillName}...`;
|
|
135
|
+
try {
|
|
136
|
+
// 从 CLI 工具自带的 skills 目录读取技能
|
|
137
|
+
const cliSkillsDir = this.getCliSkillsDir();
|
|
138
|
+
const skillFilePath = path.join(cliSkillsDir, skillName, 'SKILL.md');
|
|
139
|
+
if (!fs.existsSync(skillFilePath)) {
|
|
140
|
+
results.failed.push(skillName);
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
// 读取技能文件内容
|
|
144
|
+
const skillContent = fs.readFileSync(skillFilePath, 'utf-8');
|
|
145
|
+
// 确定用户项目的 .claude/skills 路径
|
|
146
|
+
const userProjectRoot = process.cwd();
|
|
147
|
+
const claudeDir = path.join(userProjectRoot, '.claude');
|
|
148
|
+
const skillsPath = path.join(claudeDir, 'skills');
|
|
149
|
+
// 确保 .claude 目录存在
|
|
150
|
+
if (!fs.existsSync(claudeDir)) {
|
|
151
|
+
fs.mkdirSync(claudeDir, { recursive: true });
|
|
152
|
+
}
|
|
153
|
+
// 检查 skills 是文件还是目录,如果不存在则默认创建为目录
|
|
154
|
+
let isDirectory = false;
|
|
155
|
+
if (fs.existsSync(skillsPath)) {
|
|
156
|
+
const stats = fs.statSync(skillsPath);
|
|
157
|
+
isDirectory = stats.isDirectory();
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
// 如果 skills 不存在,创建为目录
|
|
161
|
+
fs.mkdirSync(skillsPath, { recursive: true });
|
|
162
|
+
isDirectory = true;
|
|
163
|
+
}
|
|
164
|
+
if (isDirectory) {
|
|
165
|
+
// 如果是目录,创建技能子目录并复制 SKILL.md
|
|
166
|
+
const targetDir = path.join(skillsPath, skillName);
|
|
167
|
+
const targetFile = path.join(targetDir, 'SKILL.md');
|
|
168
|
+
if (fs.existsSync(targetFile) && !options.force) {
|
|
169
|
+
results.skipped.push(skillName);
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
// 创建技能目录(如果不存在)
|
|
173
|
+
if (!fs.existsSync(targetDir)) {
|
|
174
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
175
|
+
}
|
|
176
|
+
// 写入技能文件
|
|
177
|
+
fs.writeFileSync(targetFile, skillContent, 'utf-8');
|
|
178
|
+
results.success.push(skillName);
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
// 如果是文件,追加到 skills 文件
|
|
182
|
+
const separator = '\n\n' + '='.repeat(80) + '\n\n';
|
|
183
|
+
const contentToAppend = fs.existsSync(skillsPath) ? separator + skillContent : skillContent;
|
|
184
|
+
fs.appendFileSync(skillsPath, contentToAppend, 'utf-8');
|
|
185
|
+
results.success.push(skillName);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
results.failed.push(skillName);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
spinner.succeed(chalk.green('✅ 批量添加完成'));
|
|
193
|
+
// 显示结果统计
|
|
194
|
+
console.log(chalk.blue('\n📊 添加结果:\n'));
|
|
195
|
+
console.log(chalk.gray('─'.repeat(70)));
|
|
196
|
+
if (results.success.length > 0) {
|
|
197
|
+
console.log(chalk.green(`\n✅ 成功添加 (${results.success.length}):`));
|
|
198
|
+
results.success.forEach(skill => {
|
|
199
|
+
console.log(chalk.gray(` • ${skill}`));
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
if (results.skipped.length > 0) {
|
|
203
|
+
console.log(chalk.yellow(`\n⚠️ 跳过已存在 (${results.skipped.length}):`));
|
|
204
|
+
results.skipped.forEach(skill => {
|
|
205
|
+
console.log(chalk.gray(` • ${skill}`));
|
|
206
|
+
});
|
|
207
|
+
console.log(chalk.gray('\n 💡 使用 --force 选项可以覆盖已存在的技能'));
|
|
208
|
+
}
|
|
209
|
+
if (results.failed.length > 0) {
|
|
210
|
+
console.log(chalk.red(`\n❌ 添加失败 (${results.failed.length}):`));
|
|
211
|
+
results.failed.forEach(skill => {
|
|
212
|
+
console.log(chalk.gray(` • ${skill}`));
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
console.log(chalk.gray('\n' + '─'.repeat(70)));
|
|
216
|
+
console.log(chalk.cyan('\n📄 技能已添加到:'), path.join(process.cwd(), '.claude', 'skills'));
|
|
217
|
+
console.log(chalk.gray('💡 提示: 你可以在 Cursor 或 Claude 中使用这些技能\n'));
|
|
218
|
+
return this.success(`成功添加 ${results.success.length} 个技能`);
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
spinner.fail(chalk.red('批量添加失败'));
|
|
222
|
+
throw error;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* 添加指定的技能到 .claude/skills
|
|
227
|
+
*/
|
|
228
|
+
async addSkill(skillName, options) {
|
|
229
|
+
const spinner = ora(`正在处理 ${skillName} 技能...`).start();
|
|
230
|
+
try {
|
|
231
|
+
// 从 CLI 工具自带的 skills 目录读取技能
|
|
232
|
+
const cliSkillsDir = this.getCliSkillsDir();
|
|
233
|
+
const skillFilePath = path.join(cliSkillsDir, skillName, 'SKILL.md');
|
|
234
|
+
// 检查技能文件是否存在
|
|
235
|
+
if (!fs.existsSync(skillFilePath)) {
|
|
236
|
+
spinner.fail(chalk.red(`技能不存在: ${skillName}`));
|
|
237
|
+
console.log(chalk.yellow('\n💡 提示: 运行 "needware-cli skill" 查看可用的技能\n'));
|
|
238
|
+
return this.error(`技能文件不存在: ${skillFilePath}`);
|
|
239
|
+
}
|
|
240
|
+
// 读取技能文件内容
|
|
241
|
+
const skillContent = fs.readFileSync(skillFilePath, 'utf-8');
|
|
242
|
+
// 确定用户项目的 .claude/skills 路径
|
|
243
|
+
const userProjectRoot = process.cwd();
|
|
244
|
+
const claudeDir = path.join(userProjectRoot, '.claude');
|
|
245
|
+
const skillsPath = path.join(claudeDir, 'skills');
|
|
246
|
+
// 确保 .claude 目录存在
|
|
247
|
+
if (!fs.existsSync(claudeDir)) {
|
|
248
|
+
fs.mkdirSync(claudeDir, { recursive: true });
|
|
249
|
+
spinner.text = `创建了 .claude 目录`;
|
|
250
|
+
}
|
|
251
|
+
// 检查 skills 是文件还是目录,如果不存在则默认创建为目录
|
|
252
|
+
let isDirectory = false;
|
|
253
|
+
if (fs.existsSync(skillsPath)) {
|
|
254
|
+
const stats = fs.statSync(skillsPath);
|
|
255
|
+
isDirectory = stats.isDirectory();
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
// 如果 skills 不存在,创建为目录
|
|
259
|
+
fs.mkdirSync(skillsPath, { recursive: true });
|
|
260
|
+
isDirectory = true;
|
|
261
|
+
spinner.text = `创建了 .claude/skills 目录`;
|
|
262
|
+
}
|
|
263
|
+
if (isDirectory) {
|
|
264
|
+
// 如果是目录,创建技能子目录并复制 SKILL.md
|
|
265
|
+
const targetDir = path.join(skillsPath, skillName);
|
|
266
|
+
const targetFile = path.join(targetDir, 'SKILL.md');
|
|
267
|
+
if (fs.existsSync(targetFile)) {
|
|
268
|
+
// 如果文件已存在,检查是否使用 force 选项
|
|
269
|
+
spinner.warn(chalk.yellow('目标技能已存在'));
|
|
270
|
+
if (options.force) {
|
|
271
|
+
fs.writeFileSync(targetFile, skillContent, 'utf-8');
|
|
272
|
+
spinner.succeed(chalk.green(`✅ ${skillName} 技能已更新到 .claude/skills/${skillName}/SKILL.md`));
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
spinner.info(chalk.blue('使用 --force 选项可以覆盖现有技能'));
|
|
276
|
+
return this.success(`${skillName} 技能已存在`, { path: targetFile });
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
// 创建技能目录(如果不存在)
|
|
281
|
+
if (!fs.existsSync(targetDir)) {
|
|
282
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
283
|
+
}
|
|
284
|
+
// 写入技能文件
|
|
285
|
+
fs.writeFileSync(targetFile, skillContent, 'utf-8');
|
|
286
|
+
spinner.succeed(chalk.green(`✅ ${skillName} 技能已添加到 .claude/skills/${skillName}/SKILL.md`));
|
|
287
|
+
}
|
|
288
|
+
console.log(chalk.cyan('\n📄 文件路径:'), targetFile);
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
// 如果是文件或不存在,追加到 skills 文件
|
|
292
|
+
const separator = '\n\n' + '='.repeat(80) + '\n\n';
|
|
293
|
+
const contentToAppend = fs.existsSync(skillsPath) ? separator + skillContent : skillContent;
|
|
294
|
+
fs.appendFileSync(skillsPath, contentToAppend, 'utf-8');
|
|
295
|
+
spinner.succeed(chalk.green(`✅ ${skillName} 技能已追加到 .claude/skills`));
|
|
296
|
+
console.log(chalk.cyan('\n📄 文件路径:'), skillsPath);
|
|
297
|
+
}
|
|
298
|
+
console.log(chalk.gray(`\n💡 提示: 你可以在 Cursor 或 Claude 中使用这个技能\n`));
|
|
299
|
+
return this.success(`${skillName} 技能已成功添加`);
|
|
300
|
+
}
|
|
301
|
+
catch (error) {
|
|
302
|
+
spinner.fail(chalk.red('处理失败'));
|
|
303
|
+
throw error;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
//# sourceMappingURL=skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,MAAM,OAAO,YAAa,SAAQ,OAAO;IAC9B,IAAI,GAAG,OAAO,CAAC;IACf,WAAW,GAAG,yBAAyB,CAAC;IACxC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;IAE1B,YAAY,MAAc;QACxB,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,mCAAmC;QACnC,wBAAwB;QACxB,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,gBAAgB;QAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,sBAAsB;QAC7E,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAuB;QACnC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAEpC,sBAAsB;YACtB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACpC,CAAC;YAED,mBAAmB;YACnB,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;gBACxB,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;YAED,UAAU;YACV,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC;YAChF,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAc,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;OAEG;IACK,mBAAmB;QACzB,0BAA0B;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAEzC,mBAAmB;QACnB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,SAAS,IAAI,CAAC,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACpC,CAAC;QAED,eAAe;QACf,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,OAAO;aACnB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;aACpC,MAAM,CAAC,GAAG,CAAC,EAAE;YACZ,uBAAuB;YACvB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC7D,OAAO,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC,CAAC;aACD,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAExB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAExC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YAC1D,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAEpD,qBAAqB;YACrB,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC1D,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAErD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,WAAW,EAAE,CAAC,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC,CAAC;QAEnF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAE9D,OAAO,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAEzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,OAAO;aACnB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;aACpC,MAAM,CAAC,GAAG,CAAC,EAAE;YACZ,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC7D,OAAO,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC,CAAC;aACD,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAExB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CAAC,OAAuB;QAChD,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,CAAC;QAE7C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAEnC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;gBACxC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC/B,CAAC;YAED,OAAO,CAAC,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,cAAc,CAAC;YAEjD,MAAM,OAAO,GAAG;gBACd,OAAO,EAAE,EAAc;gBACvB,MAAM,EAAE,EAAc;gBACtB,OAAO,EAAE,EAAc;aACxB,CAAC;YAEF,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;gBAC/B,OAAO,CAAC,IAAI,GAAG,QAAQ,SAAS,KAAK,CAAC;gBAEtC,IAAI,CAAC;oBACH,4BAA4B;oBAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;oBAErE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;wBAClC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBAC/B,SAAS;oBACX,CAAC;oBAED,WAAW;oBACX,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;oBAE7D,4BAA4B;oBAC5B,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;oBACtC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;oBACxD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;oBAElD,kBAAkB;oBAClB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC/C,CAAC;oBAED,kCAAkC;oBAClC,IAAI,WAAW,GAAG,KAAK,CAAC;oBACxB,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC9B,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;wBACtC,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;oBACpC,CAAC;yBAAM,CAAC;wBACN,sBAAsB;wBACtB,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC9C,WAAW,GAAG,IAAI,CAAC;oBACrB,CAAC;oBAED,IAAI,WAAW,EAAE,CAAC;wBAChB,4BAA4B;wBAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;wBACnD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;wBAEpD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;4BAChD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;4BAChC,SAAS;wBACX,CAAC;wBAED,gBAAgB;wBAChB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;4BAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC/C,CAAC;wBAED,SAAS;wBACT,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;wBACpD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAClC,CAAC;yBAAM,CAAC;wBACN,sBAAsB;wBACtB,MAAM,SAAS,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;wBACnD,MAAM,eAAe,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;wBAC5F,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;wBACxD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAClC,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;YAEzC,SAAS;YACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAExC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;gBAClE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC1C,CAAC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;gBACtE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC1C,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;YAC5D,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;gBAC/D,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC1C,CAAC,CAAC,CAAC;YACL,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;YACvF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;YAEjE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,OAAO,CAAC,OAAO,CAAC,MAAM,MAAM,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,OAAuB;QAC/D,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,SAAS,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;QAEvD,IAAI,CAAC;YACH,4BAA4B;YAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YAErE,aAAa;YACb,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAClC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4CAA4C,CAAC,CAAC,CAAC;gBACxE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,aAAa,EAAE,CAAC,CAAC;YACjD,CAAC;YAED,WAAW;YACX,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAE7D,4BAA4B;YAC5B,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;YACxD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAElD,kBAAkB;YAClB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7C,OAAO,CAAC,IAAI,GAAG,gBAAgB,CAAC;YAClC,CAAC;YAED,kCAAkC;YAClC,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACtC,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,sBAAsB;gBACtB,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9C,WAAW,GAAG,IAAI,CAAC;gBACnB,OAAO,CAAC,IAAI,GAAG,uBAAuB,CAAC;YACzC,CAAC;YAED,IAAI,WAAW,EAAE,CAAC;gBAChB,4BAA4B;gBAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;gBACnD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;gBAEpD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC9B,0BAA0B;oBAC1B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;oBAEtC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;wBAClB,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;wBACpD,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,0BAA0B,SAAS,WAAW,CAAC,CAAC,CAAC;oBAC7F,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;wBAClD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,SAAS,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;oBAClE,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,gBAAgB;oBAChB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC/C,CAAC;oBACD,SAAS;oBACT,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;oBACpD,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,0BAA0B,SAAS,WAAW,CAAC,CAAC,CAAC;gBAC7F,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,0BAA0B;gBAC1B,MAAM,SAAS,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;gBACnD,MAAM,eAAe,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;gBAE5F,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;gBACxD,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,wBAAwB,CAAC,CAAC,CAAC;gBAErE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,CAAC;YACpD,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;YAEnE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,SAAS,UAAU,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAChC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* System prompt for Agent command
|
|
3
3
|
*/
|
|
4
|
-
|
|
4
|
+
interface SupabaseConfig {
|
|
5
5
|
hasSelectedProject?: boolean;
|
|
6
6
|
projectId?: string;
|
|
7
7
|
publishableKey?: string;
|
|
8
8
|
url?: string;
|
|
9
9
|
}
|
|
10
10
|
export declare function getSystemPrompt(workingDir: string, supabase?: SupabaseConfig): string;
|
|
11
|
+
export {};
|
|
11
12
|
//# sourceMappingURL=system-prompt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/commands/system-prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,
|
|
1
|
+
{"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/commands/system-prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,UAAU,cAAc;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAoKD,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,cAAc,GACxB,MAAM,CA+YR"}
|
|
@@ -413,16 +413,19 @@ const buttonVariants = cva(
|
|
|
413
413
|
|
|
414
414
|
## Design Guidelines
|
|
415
415
|
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
-
|
|
419
|
-
-
|
|
420
|
-
-
|
|
421
|
-
-
|
|
422
|
-
-
|
|
416
|
+
CRITICAL: The design system is everything. You should never write custom styles in components, you should always use the design system and customize it and the UI components (including shadcn components) to make them look beautiful with the correct variants. You never use classes like text-white, bg-white, etc. You always use the design system tokens.
|
|
417
|
+
|
|
418
|
+
- Maximize reusability of components.
|
|
419
|
+
- Leverage the index.css and tailwind.config.ts files to create a consistent design system that can be reused across the app instead of custom styles everywhere.
|
|
420
|
+
- Create variants in the components you'll use. Shadcn components are made to be customized!
|
|
421
|
+
- You review and customize the shadcn components to make them look beautiful with the correct variants.
|
|
422
|
+
- CRITICAL: USE SEMANTIC TOKENS FOR COLORS, GRADIENTS, FONTS, ETC. It's important you follow best practices. DO NOT use direct colors like text-white, text-black, bg-white, bg-black, etc. Everything must be themed via the design system defined in the index.css and tailwind.config.ts files!
|
|
423
|
+
- Always consider the design system when making changes.
|
|
424
|
+
- Pay attention to contrast, color, and typography.
|
|
425
|
+
- Always generate responsive designs.
|
|
426
|
+
- Beautiful designs are your top priority, so make sure to edit the index.css and tailwind.config.ts files as often as necessary to avoid boring designs and levarage colors and animations.
|
|
427
|
+
- Pay attention to dark vs light mode styles of components. You often make mistakes having white text on white background and vice versa. You should make sure to use the correct styles for each mode.
|
|
423
428
|
- **Image placeholders**: If no image URL is provided, use an Unsplash image as a substitute
|
|
424
|
-
- Always consider the design system when making changes
|
|
425
|
-
- Edit index.css and tailwind.config.ts as often as necessary to avoid boring designs
|
|
426
429
|
|
|
427
430
|
## Response Format
|
|
428
431
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/commands/system-prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,SAAS,uBAAuB,CAAC,QAAyB;IACxD,MAAM,kBAAkB,GAAG,QAAQ,EAAE,kBAAkB,IAAI,QAAQ,EAAE,SAAS,IAAI,QAAQ,EAAE,cAAc,CAAC;IAE3G,IAAI,CAAC,kBAAkB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrC,OAAO;;;;;;CAMV,CAAC;IACA,CAAC;IAED,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QAC7C,OAAO;;;;;;CAMV,CAAC;IACA,CAAC;IAED,MAAM,SAAS,GAAG,kBAAkB,IAAI,QAAQ,CAAC,GAAG;QAClD,CAAC,CAAC;8BACwB,QAAQ,CAAC,SAAS;mCACb,QAAQ,CAAC,cAAc;uBACnC,QAAQ,CAAC,GAAG,GAAG;QAClC,CAAC,CAAC,GAAG,CAAC;IAER,OAAO;;;;;sCAK6B,SAAS;;;;;;;;;;;8BAWjB,QAAQ,CAAC,SAAS;mCACb,QAAQ,CAAC,cAAc;uBACnC,QAAQ,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+GlC,CAAC;AACF,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,UAAkB,EAClB,QAAyB;
|
|
1
|
+
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/commands/system-prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,SAAS,uBAAuB,CAAC,QAAyB;IACxD,MAAM,kBAAkB,GAAG,QAAQ,EAAE,kBAAkB,IAAI,QAAQ,EAAE,SAAS,IAAI,QAAQ,EAAE,cAAc,CAAC;IAE3G,IAAI,CAAC,kBAAkB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrC,OAAO;;;;;;CAMV,CAAC;IACA,CAAC;IAED,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QAC7C,OAAO;;;;;;CAMV,CAAC;IACA,CAAC;IAED,MAAM,SAAS,GAAG,kBAAkB,IAAI,QAAQ,CAAC,GAAG;QAClD,CAAC,CAAC;8BACwB,QAAQ,CAAC,SAAS;mCACb,QAAQ,CAAC,cAAc;uBACnC,QAAQ,CAAC,GAAG,GAAG;QAClC,CAAC,CAAC,GAAG,CAAC;IAER,OAAO;;;;;sCAK6B,SAAS;;;;;;;;;;;8BAWjB,QAAQ,CAAC,SAAS;mCACb,QAAQ,CAAC,cAAc;uBACnC,QAAQ,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+GlC,CAAC;AACF,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,UAAkB,EAClB,QAAyB;IAEzB,OAAO;;;+CAGsC,UAAU;;wEAEe,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BhF,uBAAuB,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA0WxB,CAAC,IAAI,EAAE,CAAC;AACnB,CAAC"}
|
package/dist/core/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/core/cli.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAY,MAAM,aAAa,CAAC;AAI/C,qBAAa,GAAG;IACd,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAS5C;;OAEG;IACH,OAAO,CAAC,YAAY;IAqBpB;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/core/cli.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAY,MAAM,aAAa,CAAC;AAI/C,qBAAa,GAAG;IACd,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAS5C;;OAEG;IACH,OAAO,CAAC,YAAY;IAqBpB;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IA0EvC;;OAEG;IACG,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IASzC;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAmCjC;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;CAGpC"}
|
package/dist/core/cli.js
CHANGED
|
@@ -60,7 +60,8 @@ export class CLI {
|
|
|
60
60
|
.option('--model <model>', 'AI model name (default: claude-sonnet-4-5)')
|
|
61
61
|
.option('--claude-code-path <path>', 'Path to Claude Code executable (optional)')
|
|
62
62
|
.option('--resume <session-id>', 'Resume from a previous session by session ID')
|
|
63
|
-
.option('--db-config <json>', 'Database configuration in JSON format (e.g., Supabase config)')
|
|
63
|
+
.option('--db-config <json>', 'Database configuration in JSON format (e.g., Supabase config)')
|
|
64
|
+
.option('--gateway-config <json>', 'Gateway configuration in JSON format (apiKey, chatId, workspaceId)');
|
|
64
65
|
}
|
|
65
66
|
// 为 code-snapshot 命令添加特定选项
|
|
66
67
|
if (command.name === 'code-snapshot') {
|
|
@@ -69,6 +70,12 @@ export class CLI {
|
|
|
69
70
|
.option('--directory <path>', 'Alias for --dir')
|
|
70
71
|
.option('-o, --output <path>', 'Save snapshot to file (default: stdout)');
|
|
71
72
|
}
|
|
73
|
+
// 为 skill 命令添加特定选项
|
|
74
|
+
if (command.name === 'skill') {
|
|
75
|
+
commandInstance
|
|
76
|
+
.argument('[skill-name]', 'Name of the skill to add (optional, list all if not provided)')
|
|
77
|
+
.option('--force', 'Force overwrite existing skill file');
|
|
78
|
+
}
|
|
72
79
|
commandInstance.action(async (...args) => {
|
|
73
80
|
try {
|
|
74
81
|
const commandObject = args[args.length - 1];
|
package/dist/core/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/core/cli.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,OAAO,GAAG;IACN,OAAO,CAAmB;IAC1B,MAAM,CAAS;IACf,QAAQ,CAAuB;IAC/B,OAAO,CAAS;IAExB,YAAY,OAAe,EAAE,MAAe;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QAE1B,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,CAAC,OAAO;aACT,IAAI,CAAC,cAAc,CAAC;aACpB,WAAW,CAAC,uBAAuB,CAAC;aACpC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,CAAC;aAChD,MAAM,CAAC,eAAe,EAAE,QAAQ,CAAC;aACjC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC;aAC7B,MAAM,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC;QAE7C,SAAS;QACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,WAA6B,EAAE,EAAE;YAC/D,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;YAEhC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,OAAgB;QAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEzC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3D,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAEjD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;QAED,mBAAmB;QACnB,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC7B,eAAe;iBACZ,QAAQ,CAAC,UAAU,EAAE,8DAA8D,CAAC;iBACpF,MAAM,CAAC,sBAAsB,EAAE,+BAA+B,CAAC;iBAC/D,MAAM,CAAC,2BAA2B,EAAE,kDAAkD,CAAC;iBACvF,MAAM,CAAC,iBAAiB,EAAE,yDAAyD,CAAC;iBACpF,MAAM,CAAC,kBAAkB,EAAE,+DAA+D,CAAC;iBAC3F,MAAM,CAAC,iBAAiB,EAAE,4CAA4C,CAAC;iBACvE,MAAM,CAAC,2BAA2B,EAAE,2CAA2C,CAAC;iBAChF,MAAM,CAAC,uBAAuB,EAAE,8CAA8C,CAAC;iBAC/E,MAAM,CAAC,oBAAoB,EAAE,+DAA+D,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/core/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import { CLI } from './core/cli.js';
|
|
|
6
6
|
import { Logger } from './core/logger.js';
|
|
7
7
|
import { ConfigManager } from './utils/config.js';
|
|
8
8
|
import { SDKManager, ExampleSDK } from './sdk/index.js';
|
|
9
|
-
import { InitCommand, ConfigCommand,
|
|
9
|
+
import { InitCommand, ConfigCommand, AgentCommand, CodeSnapshotCommand, SkillCommand } from './commands/index.js';
|
|
10
10
|
import { FileUtils } from './utils/file.js';
|
|
11
11
|
import { createRequire } from 'module';
|
|
12
12
|
import { fileURLToPath } from 'url';
|
|
@@ -49,15 +49,15 @@ function registerCommands(cli, logger, configManager, sdkManager) {
|
|
|
49
49
|
// 配置命令
|
|
50
50
|
const configCommand = new ConfigCommand(logger, configManager);
|
|
51
51
|
cli.registerCommand(configCommand);
|
|
52
|
-
// 示例命令
|
|
53
|
-
const exampleCommand = new ExampleCommand(logger, sdkManager);
|
|
54
|
-
cli.registerCommand(exampleCommand);
|
|
55
52
|
// Agent 命令
|
|
56
53
|
const agentCommand = new AgentCommand(logger);
|
|
57
54
|
cli.registerCommand(agentCommand);
|
|
58
55
|
// Code Snapshot 命令
|
|
59
56
|
const codeSnapshotCommand = new CodeSnapshotCommand(logger);
|
|
60
57
|
cli.registerCommand(codeSnapshotCommand);
|
|
58
|
+
// Skill 命令
|
|
59
|
+
const skillCommand = new SkillCommand(logger);
|
|
60
|
+
cli.registerCommand(skillCommand);
|
|
61
61
|
}
|
|
62
62
|
/**
|
|
63
63
|
* 主函数
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,MAAM,EAAY,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Firecrawl SDK - 网站抓取服务
|
|
3
|
+
*
|
|
4
|
+
* 用于获取网站截图和 HTML 内容,供 AI 克隆应用使用
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Firecrawl 配置接口
|
|
8
|
+
*/
|
|
9
|
+
export interface FirecrawlConfig {
|
|
10
|
+
apiKey: string;
|
|
11
|
+
baseUrl?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 网站抓取结果
|
|
15
|
+
*/
|
|
16
|
+
export interface WebsiteScrapedData {
|
|
17
|
+
url: string;
|
|
18
|
+
title?: string;
|
|
19
|
+
description?: string;
|
|
20
|
+
html?: string;
|
|
21
|
+
markdown?: string;
|
|
22
|
+
screenshot?: string;
|
|
23
|
+
screenshotUrl?: string;
|
|
24
|
+
links?: string[];
|
|
25
|
+
metadata?: Record<string, any>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Firecrawl 抓取选项
|
|
29
|
+
*/
|
|
30
|
+
export interface ScrapeOptions {
|
|
31
|
+
formats?: ('markdown' | 'html' | 'screenshot' | 'links')[];
|
|
32
|
+
onlyMainContent?: boolean;
|
|
33
|
+
includeTags?: string[];
|
|
34
|
+
excludeTags?: string[];
|
|
35
|
+
waitFor?: number;
|
|
36
|
+
timeout?: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Firecrawl SDK 类
|
|
40
|
+
*/
|
|
41
|
+
export declare class FirecrawlSDK {
|
|
42
|
+
private apiKey;
|
|
43
|
+
private baseUrl;
|
|
44
|
+
constructor(config: FirecrawlConfig);
|
|
45
|
+
/**
|
|
46
|
+
* 抓取单个网页
|
|
47
|
+
*/
|
|
48
|
+
scrapeUrl(url: string, options?: ScrapeOptions): Promise<WebsiteScrapedData>;
|
|
49
|
+
/**
|
|
50
|
+
* 抓取网站用于克隆(获取截图和 HTML)
|
|
51
|
+
*/
|
|
52
|
+
scrapeForClone(url: string): Promise<WebsiteScrapedData>;
|
|
53
|
+
/**
|
|
54
|
+
* 仅获取网站截图
|
|
55
|
+
*/
|
|
56
|
+
getScreenshot(url: string): Promise<string>;
|
|
57
|
+
/**
|
|
58
|
+
* 仅获取网站 HTML
|
|
59
|
+
*/
|
|
60
|
+
getHtml(url: string): Promise<string>;
|
|
61
|
+
/**
|
|
62
|
+
* 将截图保存到本地文件
|
|
63
|
+
*/
|
|
64
|
+
saveScreenshotToFile(base64Screenshot: string, outputPath: string): Promise<string>;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 创建 Firecrawl SDK 实例
|
|
68
|
+
*/
|
|
69
|
+
export declare function createFirecrawlSDK(apiKeyOrConfig?: string | FirecrawlConfig): FirecrawlSDK;
|
|
70
|
+
/**
|
|
71
|
+
* 格式化网站数据为 Agent 可用的上下文
|
|
72
|
+
*/
|
|
73
|
+
export declare function formatWebsiteDataForAgent(data: WebsiteScrapedData): {
|
|
74
|
+
textContent: string;
|
|
75
|
+
imageContent?: {
|
|
76
|
+
type: 'image';
|
|
77
|
+
source: {
|
|
78
|
+
type: 'base64';
|
|
79
|
+
media_type: 'image/png' | 'image/jpeg';
|
|
80
|
+
data: string;
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
export default FirecrawlSDK;
|
|
85
|
+
//# sourceMappingURL=firecrawl-sdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firecrawl-sdk.d.ts","sourceRoot":"","sources":["../../src/sdk/firecrawl-sdk.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,CAAC,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC,EAAE,CAAC;IAC3D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,eAAe;IAKnC;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmDtF;;OAEG;IACG,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAQ9D;;OAEG;IACG,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAajD;;OAEG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAa3C;;OAEG;IACG,oBAAoB,CACxB,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC;CAanB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,YAAY,CAuB1F;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,kBAAkB,GAAG;IACnE,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE;QACb,IAAI,EAAE,OAAO,CAAC;QACd,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ,CAAC;YACf,UAAU,EAAE,WAAW,GAAG,YAAY,CAAC;YACvC,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;KACH,CAAC;CACH,CA0EA;AAED,eAAe,YAAY,CAAC"}
|