mirror of
https://github.com/Jerryplusy/crystelf-plugin.git
synced 2026-01-29 09:17:27 +00:00
140 lines
2.9 KiB
JavaScript
140 lines
2.9 KiB
JavaScript
import BaseTool from './baseTool.js';
|
||
import Renderer from '../renderer.js';
|
||
|
||
/**
|
||
* 渲染代码工具
|
||
*/
|
||
class RenderCodeTool extends BaseTool {
|
||
constructor() {
|
||
super(
|
||
'render_code',
|
||
'将代码渲染为高亮图片',
|
||
{
|
||
type: 'object',
|
||
properties: {
|
||
code: {
|
||
type: 'string',
|
||
description: '要渲染的代码内容'
|
||
},
|
||
language: {
|
||
type: 'string',
|
||
description: '编程语言类型,如javascript、python、java等'
|
||
}
|
||
},
|
||
required: ['code', 'language']
|
||
}
|
||
);
|
||
}
|
||
|
||
async execute(params, context) {
|
||
const { code, language } = params;
|
||
const { responseQueue } = context;
|
||
|
||
const codeObj = {
|
||
type: 'code',
|
||
data: code,
|
||
language: language
|
||
};
|
||
|
||
responseQueue.push(codeObj);
|
||
|
||
return {
|
||
success: true,
|
||
message: `已渲染${language}代码块`
|
||
};
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 渲染Markdown工具
|
||
*/
|
||
class RenderMarkdownTool extends BaseTool {
|
||
constructor() {
|
||
super(
|
||
'render_markdown',
|
||
'将Markdown内容渲染为图片',
|
||
{
|
||
type: 'object',
|
||
properties: {
|
||
markdown: {
|
||
type: 'string',
|
||
description: '要渲染的Markdown内容'
|
||
}
|
||
},
|
||
required: ['markdown']
|
||
}
|
||
);
|
||
}
|
||
|
||
async execute(params, context) {
|
||
const { markdown } = params;
|
||
const { responseQueue } = context;
|
||
|
||
const markdownObj = {
|
||
type: 'markdown',
|
||
data: markdown
|
||
};
|
||
|
||
responseQueue.push(markdownObj);
|
||
|
||
return {
|
||
success: true,
|
||
message: '已渲染Markdown内容'
|
||
};
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 生成图片工具
|
||
*/
|
||
class GenerateImageTool extends BaseTool {
|
||
constructor() {
|
||
super(
|
||
'generate_image',
|
||
'根据描述生成图片',
|
||
{
|
||
type: 'object',
|
||
properties: {
|
||
prompt: {
|
||
type: 'string',
|
||
description: '图片生成的描述文本'
|
||
},
|
||
style: {
|
||
type: 'string',
|
||
enum: ['natural', 'vivid'],
|
||
description: '图片风格,默认natural',
|
||
default: 'natural'
|
||
},
|
||
size: {
|
||
type: 'string',
|
||
enum: ['1024x1024', '1792x1024', '1024x1792'],
|
||
description: '图片尺寸,默认1024x1024',
|
||
default: '1024x1024'
|
||
}
|
||
},
|
||
required: ['prompt']
|
||
}
|
||
);
|
||
}
|
||
|
||
async execute(params, context) {
|
||
const { prompt, style = 'natural', size = '1024x1024' } = params;
|
||
const { responseQueue } = context;
|
||
|
||
const imageObj = {
|
||
type: 'image',
|
||
data: prompt,
|
||
style: style,
|
||
size: size
|
||
};
|
||
|
||
responseQueue.push(imageObj);
|
||
|
||
return {
|
||
success: true,
|
||
message: `已生成图片: ${prompt.substring(0, 30)}...`
|
||
};
|
||
}
|
||
}
|
||
|
||
export { RenderCodeTool, RenderMarkdownTool, GenerateImageTool }; |