chore: import upstream snapshot with attribution

This commit is contained in:
wehub-resource-sync
2026-07-13 13:34:48 +08:00
commit 77bb5bf71f
3762 changed files with 353249 additions and 0 deletions
+13
View File
@@ -0,0 +1,13 @@
import rootConfig from '../../eslint.config.mjs'
export default [
...rootConfig,
{
languageOptions: {
parserOptions: {
project: ['./tsconfig.json'],
tsconfigRootDir: import.meta.dirname,
},
},
},
]
+3
View File
@@ -0,0 +1,3 @@
# Dalle (Deprecated)
**Note:** This integration is deprecated in favor of [this one](https://app.botpress.cloud/hub/integrations/intver_01HX9TS0ZX98NAE1AR3D2QBPKM), maintained by _[Simply Great Bots](https://app.botpress.cloud/simplygreatbots)_. We encourage you to install it for better maintenance.
+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg fill="#000000" width="800px" height="800px" viewBox="0 0 24 24" role="img" xmlns="http://www.w3.org/2000/svg"><title>OpenAI icon</title><path d="M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z"/></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@@ -0,0 +1,46 @@
import { z, IntegrationDefinition } from '@botpress/sdk'
const sizeDescription =
'Size of the image to generate. Can be "1024x1024", "1792x1024", or "1024x1792". Defaults to 1024x1024.'
const qualityDescription = 'Quality of the image to generate. Can be "standard" or "hd". Defaults to "standard".'
const modelDescription = 'Model to use for image generation. Defaults to "dall-e-3".'
export default new IntegrationDefinition({
name: 'dalle',
version: '0.3.8',
icon: 'icon.svg',
title: 'DALL-E (Deprecated)',
description: 'Integrate DALL-E to generate images directly within your chatbot conversations.',
readme: 'hub.md',
configuration: {
schema: z.object({
apiKey: z.string().title('OpenAI API Key').describe('An API Key for the OpenAI DALL-E service'),
}),
},
channels: {},
actions: {
generateImage: {
title: 'generate Image',
description: 'Generate an image',
input: {
schema: z.object({
prompt: z.string().describe('Prompt for image generation.').title('Prompt'),
size: z.string().optional().describe(sizeDescription).title('Size'),
quality: z.string().optional().describe(qualityDescription).title('Quality'),
model: z.string().optional().describe(modelDescription).title('Model'),
user: z.string().optional().describe('User ID').title('User'),
}),
},
output: {
schema: z.object({
url: z.string().url().describe('The url of the generated image').title('Url'),
createdDate: z.string().describe('The date the image was created').title('Created Date'),
}),
},
},
},
attributes: {
category: 'AI Models',
repo: 'botpress',
},
})
+21
View File
@@ -0,0 +1,21 @@
{
"name": "@botpresshub/dalle",
"scripts": {
"check:type": "tsc --noEmit",
"check:bplint": "bp lint",
"version": "bp --version",
"build": "bp add -y && bp build",
"test": "vitest --run"
},
"private": true,
"dependencies": {
"@botpress/client": "workspace:*",
"@botpress/sdk": "workspace:*",
"axios": "^1.6.7"
},
"devDependencies": {
"@botpress/cli": "workspace:*",
"@botpress/common": "workspace:*",
"@botpress/sdk": "workspace:*"
}
}
+33
View File
@@ -0,0 +1,33 @@
import { AxiosResponse } from 'axios'
import * as schemas from './schemas'
import { ActionArgs } from './types'
export function buildApiData(args: ActionArgs) {
const size = schemas.sizeConfig.safeParse(args, args.input.size)
const quality = schemas.qualityConfig.safeParse(args, args.input.quality)
const model = schemas.modelConfig.safeParse(args, args.input.model)
return {
prompt: args.input.prompt,
n: 1,
model,
size,
quality,
user: args.input.user,
}
}
export function getApiConfig(args: ActionArgs) {
const apiKey = args.ctx.configuration.apiKey
const apiUrl = 'https://api.openai.com/v1/images/generations'
const headers = {
'Content-Type': 'application/json',
Authorization: `Bearer ${apiKey}`,
}
return { apiUrl, headers }
}
export function validateResponse(response: AxiosResponse<any, any>) {
if (!response.data || !response.data.data || !response.data.data[0] || !response.data.data[0].url) {
throw new Error('Invalid response format from API')
}
}
+33
View File
@@ -0,0 +1,33 @@
import axios from 'axios'
import { buildApiData, validateResponse, getApiConfig } from './client'
import * as bp from '.botpress'
type GenerateImageOutput = bp.actions.generateImage.output.Output
export default new bp.Integration({
register: async () => {},
unregister: async () => {},
actions: {
generateImage: async (args): Promise<GenerateImageOutput> => {
args.logger.forBot().info('Generating Image')
const { apiUrl, headers } = getApiConfig(args)
const data = buildApiData(args)
try {
const response = await axios.post(apiUrl, data, { headers })
validateResponse(response)
const image = response.data.data[0].url
const createdDate = response.data.created.toString()
return { url: image, createdDate }
} catch (error) {
args.logger.forBot().error('Error creating image:', error)
return { url: '', createdDate: Date.now().toString() }
}
},
},
channels: {},
handler: async () => {},
})
+41
View File
@@ -0,0 +1,41 @@
import { z } from '@botpress/sdk'
import { ActionArgs } from './types'
type ConfigFieldProps<Z extends z.ZodTypeAny> = {
name: string
schema: Z
default: z.infer<Z>
}
class ConfigField<Z extends z.ZodTypeAny> {
public constructor(private _props: ConfigFieldProps<Z>) {}
public safeParse(args: ActionArgs, value: unknown): z.infer<Z> {
const { default: defaultValue, name, schema } = this._props
const parseResult = schema.safeParse(value)
if (parseResult.success) {
return parseResult.data
}
args.logger
.forBot()
.warn(`Invalid value for action input "${name}": "${value}". Falling back on default value: "${defaultValue}".`)
return defaultValue
}
}
export const sizeConfig = new ConfigField({
name: 'size',
schema: z.union([z.literal('1024x1024'), z.literal('1792x1024'), z.literal('1024x1792')]),
default: '1024x1024',
})
export const qualityConfig = new ConfigField({
name: 'quality',
schema: z.union([z.literal('standard'), z.literal('hd')]),
default: 'standard',
})
export const modelConfig = new ConfigField({
name: 'model',
schema: z.literal('dall-e-3'),
default: 'dall-e-3',
})
+5
View File
@@ -0,0 +1,5 @@
import * as bp from '.botpress'
type ValueOf<T> = T[keyof T]
export type ActionArgs = Parameters<ValueOf<bp.IntegrationProps['actions']>>[0]
+8
View File
@@ -0,0 +1,8 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"paths": { "*": ["./*"] },
"outDir": "dist"
},
"include": [".botpress/**/*", "definitions/**/*", "src/**/*", "*.ts"]
}
+2
View File
@@ -0,0 +1,2 @@
import config from '../../vitest.config'
export default config