diff --git a/src/components/MessageItem.vue b/src/components/MessageItem.vue
index 23c9ff8..b23bff2 100644
--- a/src/components/MessageItem.vue
+++ b/src/components/MessageItem.vue
@@ -13,7 +13,7 @@
-
+
diff --git a/src/components/MessageItemBody.vue b/src/components/MessageItemBody.vue
index 76ad865..d92d3e7 100644
--- a/src/components/MessageItemBody.vue
+++ b/src/components/MessageItemBody.vue
@@ -2,7 +2,7 @@
@@ -37,16 +37,19 @@ const blocks = computed(() => {
if (!imageUrl.startsWith('http') && !imageUrl.startsWith('file://')) {
imageUrl = `file://${imageUrl}`
}
- blocks.push({ type: 'image', content: imageUrl })
+ blocks.push({ type: 'image', url: imageUrl, desc: match[1]})
// continue
lastIndex = regex.lastIndex
}
// add last block
- blocks.push({ type: 'text', content: props.message.content.substring(lastIndex) })
+ if (lastIndex != props.message.content.length) {
+ blocks.push({ type: 'text', content: props.message.content.substring(lastIndex) })
+ }
// done
+ //console.log(blocks)
return blocks
})
diff --git a/src/components/MessageItemImage.vue b/src/components/MessageItemImage.vue
index e7ad1a4..c4a2589 100644
--- a/src/components/MessageItemImage.vue
+++ b/src/components/MessageItemImage.vue
@@ -1,6 +1,6 @@
-
+
@@ -13,7 +13,8 @@ import useEventBus from '../composables/useEventBus'
const { emitEvent } = useEventBus()
const props = defineProps({
- imageUrl: String,
+ url: String,
+ desc: String
})
const emits = defineEmits(['image-loaded'])
@@ -23,13 +24,12 @@ const onImageLoaded = () => {
}
const onFullscreen = (url) => {
- emitEvent('fullScreen', url)
+ emitEvent('fullScreen', props.url)
}
const onDownload = () => {
- console.log('download', props.imageUrl)
window.api.file.download({
- url: props.imageUrl,
+ url: props.url,
properties: {
filename: 'image.png',
}
diff --git a/src/plugins/dalle.ts b/src/plugins/dalle.ts
index 603e712..46d286a 100644
--- a/src/plugins/dalle.ts
+++ b/src/plugins/dalle.ts
@@ -21,7 +21,7 @@ export default class extends Plugin {
}
getDescription(): string {
- return 'Generate an image based on a prompt. Returns the path of the image saved on disk.'
+ return 'Generate an image based on a prompt. Returns the path of the image saved on disk and a description of the image.'
}
getPreparationDescription(): string {
@@ -33,32 +33,58 @@ export default class extends Plugin {
}
getParameters(): PluginParameter[] {
- return [
+
+ const parameters: PluginParameter[] = [
{
name: 'prompt',
type: 'string',
description: 'The description of the image',
required: true
- },
- // {
- // name: 'size',
- // type: 'string',
- // description: 'The size of the image',
- // required: false
- // },
- // {
- // name: 'style',
- // type: 'string',
- // description: 'The style of the image',
- // required: false
- // },
- // {
- // name: 'n',
- // type: 'number',
- // description: 'Number of images to generate',
- // required: false
- // },
+ }
]
+
+ // rest depends on model
+ if (store.config.engines.openai.model.image === 'dall-e-2') {
+
+ parameters.push({
+ name: 'size',
+ type: 'string',
+ enum: [ '256x256', '512x512', '1024x1024' ],
+ description: 'The size of the image',
+ required: false
+ })
+
+ } else if (store.config.engines.openai.model.image === 'dall-e-3') {
+
+ parameters.push({
+ name: 'quality',
+ type: 'string',
+ enum: [ 'standard', 'hd' ],
+ description: 'The quality of the image',
+ required: false
+ })
+
+ parameters.push({
+ name: 'size',
+ type: 'string',
+ enum: [ '1024x1024', '1792x1024', '1024x1792' ],
+ description: 'The size of the image',
+ required: false
+ })
+
+ parameters.push({
+ name: 'style',
+ type: 'string',
+ enum: ['vivid', 'natural'],
+ description: 'The style of the image',
+ required: false
+ })
+
+ }
+
+ // done
+ return parameters
+
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -79,16 +105,17 @@ export default class extends Plugin {
response_format: 'b64_json',
size: parameters?.size,
style: parameters?.style,
+ quality: parameters?.quality,
n: parameters?.n || 1,
})
// save the content on disk
const filename = saveFileContents('png', response.data[0].b64_json)
-
// return an object
return {
- path: `file://${filename}`
+ path: `file://${filename}`,
+ description: parameters?.prompt
}
}