mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-08-12 10:38:58 +08:00
Complete type defined. (#1200)
This commit is contained in:
parent
1367f34398
commit
e65f9cb17a
@ -1,9 +1,10 @@
|
|||||||
'use client'
|
'use client'
|
||||||
import React from 'react'
|
import { useRef, useState } from 'react'
|
||||||
import { t } from 'i18next'
|
import { t } from 'i18next'
|
||||||
import copy from 'copy-to-clipboard'
|
import copy from 'copy-to-clipboard'
|
||||||
import s from './style.module.css'
|
import s from './style.module.css'
|
||||||
import Tooltip from '@/app/components/base/tooltip'
|
import Tooltip from '@/app/components/base/tooltip'
|
||||||
|
import { randomString } from '@/utils'
|
||||||
|
|
||||||
type ICopyBtnProps = {
|
type ICopyBtnProps = {
|
||||||
value: string
|
value: string
|
||||||
@ -16,12 +17,13 @@ const CopyBtn = ({
|
|||||||
className,
|
className,
|
||||||
isPlain,
|
isPlain,
|
||||||
}: ICopyBtnProps) => {
|
}: ICopyBtnProps) => {
|
||||||
const [isCopied, setIsCopied] = React.useState(false)
|
const [isCopied, setIsCopied] = useState(false)
|
||||||
|
const selector = useRef(`copy-tooltip-${randomString(4)}`)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={`${className}`}>
|
<div className={`${className}`}>
|
||||||
<Tooltip
|
<Tooltip
|
||||||
selector={`copy-btn-tooltip-${value}`}
|
selector={selector.current}
|
||||||
content={(isCopied ? t('appApi.copied') : t('appApi.copy')) as string}
|
content={(isCopied ? t('appApi.copied') : t('appApi.copy')) as string}
|
||||||
className='z-10'
|
className='z-10'
|
||||||
>
|
>
|
||||||
|
@ -14,6 +14,8 @@ import OpeningStatement from '@/app/components/app/configuration/features/chat-g
|
|||||||
import GroupName from '@/app/components/app/configuration/base/group-name'
|
import GroupName from '@/app/components/app/configuration/base/group-name'
|
||||||
import Loading from '@/app/components/base/loading'
|
import Loading from '@/app/components/base/loading'
|
||||||
import Confirm from '@/app/components/base/confirm'
|
import Confirm from '@/app/components/base/confirm'
|
||||||
|
// type
|
||||||
|
import type { AutomaticRes } from '@/service/debug'
|
||||||
|
|
||||||
const noDataIcon = (
|
const noDataIcon = (
|
||||||
<svg width="56" height="56" viewBox="0 0 56 56" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="56" height="56" viewBox="0 0 56 56" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
@ -21,12 +23,6 @@ const noDataIcon = (
|
|||||||
</svg>
|
</svg>
|
||||||
)
|
)
|
||||||
|
|
||||||
export type AutomaticRes = {
|
|
||||||
prompt: string
|
|
||||||
variables: string[]
|
|
||||||
opening_statement: string
|
|
||||||
}
|
|
||||||
|
|
||||||
export type IGetAutomaticResProps = {
|
export type IGetAutomaticResProps = {
|
||||||
mode: AppType
|
mode: AppType
|
||||||
isShow: boolean
|
isShow: boolean
|
||||||
@ -98,7 +94,7 @@ const GetAutomaticRes: FC<IGetAutomaticResProps> = ({
|
|||||||
audiences,
|
audiences,
|
||||||
hoping_to_solve: hopingToSolve,
|
hoping_to_solve: hopingToSolve,
|
||||||
})
|
})
|
||||||
setRes(res as AutomaticRes)
|
setRes(res)
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
setLoadingFalse()
|
setLoadingFalse()
|
||||||
@ -193,7 +189,7 @@ const GetAutomaticRes: FC<IGetAutomaticResProps> = ({
|
|||||||
onClose={() => setShowConfirmOverwrite(false)}
|
onClose={() => setShowConfirmOverwrite(false)}
|
||||||
onConfirm={() => {
|
onConfirm={() => {
|
||||||
setShowConfirmOverwrite(false)
|
setShowConfirmOverwrite(false)
|
||||||
onFinished(res as AutomaticRes)
|
onFinished(res!)
|
||||||
}}
|
}}
|
||||||
onCancel={() => setShowConfirmOverwrite(false)}
|
onCancel={() => setShowConfirmOverwrite(false)}
|
||||||
/>
|
/>
|
||||||
|
@ -77,18 +77,18 @@ export function format(text: string) {
|
|||||||
return res.replaceAll('\n', '<br/>').replaceAll('```', '')
|
return res.replaceAll('\n', '<br/>').replaceAll('```', '')
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleStream = (response: any, onData: IOnData, onCompleted?: IOnCompleted, onThought?: IOnThought, onMessageEnd?: IOnMessageEnd) => {
|
const handleStream = (response: Response, onData: IOnData, onCompleted?: IOnCompleted, onThought?: IOnThought, onMessageEnd?: IOnMessageEnd) => {
|
||||||
if (!response.ok)
|
if (!response.ok)
|
||||||
throw new Error('Network response was not ok')
|
throw new Error('Network response was not ok')
|
||||||
|
|
||||||
const reader = response.body.getReader()
|
const reader = response.body?.getReader()
|
||||||
const decoder = new TextDecoder('utf-8')
|
const decoder = new TextDecoder('utf-8')
|
||||||
let buffer = ''
|
let buffer = ''
|
||||||
let bufferObj: any
|
let bufferObj: Record<string, any>
|
||||||
let isFirstMessage = true
|
let isFirstMessage = true
|
||||||
function read() {
|
function read() {
|
||||||
let hasError = false
|
let hasError = false
|
||||||
reader.read().then((result: any) => {
|
reader?.read().then((result: any) => {
|
||||||
if (result.done) {
|
if (result.done) {
|
||||||
onCompleted && onCompleted()
|
onCompleted && onCompleted()
|
||||||
return
|
return
|
||||||
@ -99,7 +99,7 @@ const handleStream = (response: any, onData: IOnData, onCompleted?: IOnCompleted
|
|||||||
lines.forEach((message) => {
|
lines.forEach((message) => {
|
||||||
if (message.startsWith('data: ')) { // check if it starts with data:
|
if (message.startsWith('data: ')) { // check if it starts with data:
|
||||||
try {
|
try {
|
||||||
bufferObj = JSON.parse(message.substring(6)) // remove data: and parse as json
|
bufferObj = JSON.parse(message.substring(6)) as Record<string, any>// remove data: and parse as json
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
// mute handle message cut off
|
// mute handle message cut off
|
||||||
@ -113,11 +113,11 @@ const handleStream = (response: any, onData: IOnData, onCompleted?: IOnCompleted
|
|||||||
onData('', false, {
|
onData('', false, {
|
||||||
conversationId: undefined,
|
conversationId: undefined,
|
||||||
messageId: '',
|
messageId: '',
|
||||||
errorMessage: bufferObj.message,
|
errorMessage: bufferObj?.message,
|
||||||
errorCode: bufferObj.code,
|
errorCode: bufferObj?.code,
|
||||||
})
|
})
|
||||||
hasError = true
|
hasError = true
|
||||||
onCompleted && onCompleted(true)
|
onCompleted?.(true)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (bufferObj.event === 'message') {
|
if (bufferObj.event === 'message') {
|
||||||
@ -130,10 +130,10 @@ const handleStream = (response: any, onData: IOnData, onCompleted?: IOnCompleted
|
|||||||
isFirstMessage = false
|
isFirstMessage = false
|
||||||
}
|
}
|
||||||
else if (bufferObj.event === 'agent_thought') {
|
else if (bufferObj.event === 'agent_thought') {
|
||||||
onThought?.(bufferObj as any)
|
onThought?.(bufferObj as ThoughtItem)
|
||||||
}
|
}
|
||||||
else if (bufferObj.event === 'message_end') {
|
else if (bufferObj.event === 'message_end') {
|
||||||
onMessageEnd?.(bufferObj as any)
|
onMessageEnd?.(bufferObj as MessageEnd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -146,7 +146,7 @@ const handleStream = (response: any, onData: IOnData, onCompleted?: IOnCompleted
|
|||||||
errorMessage: `${e}`,
|
errorMessage: `${e}`,
|
||||||
})
|
})
|
||||||
hasError = true
|
hasError = true
|
||||||
onCompleted && onCompleted(true)
|
onCompleted?.(true)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (!hasError)
|
if (!hasError)
|
||||||
|
@ -1,6 +1,12 @@
|
|||||||
import type { IOnCompleted, IOnData, IOnError, IOnMessageEnd } from './base'
|
import type { IOnCompleted, IOnData, IOnError, IOnMessageEnd } from './base'
|
||||||
import { get, post, ssePost } from './base'
|
import { get, post, ssePost } from './base'
|
||||||
|
|
||||||
|
export type AutomaticRes = {
|
||||||
|
prompt: string
|
||||||
|
variables: string[]
|
||||||
|
opening_statement: string
|
||||||
|
}
|
||||||
|
|
||||||
export const sendChatMessage = async (appId: string, body: Record<string, any>, { onData, onCompleted, onError, getAbortController, onMessageEnd }: {
|
export const sendChatMessage = async (appId: string, body: Record<string, any>, { onData, onCompleted, onError, getAbortController, onMessageEnd }: {
|
||||||
onData: IOnData
|
onData: IOnData
|
||||||
onCompleted: IOnCompleted
|
onCompleted: IOnCompleted
|
||||||
@ -46,7 +52,7 @@ export const fetchConvesationMessages = (appId: string, conversation_id: string)
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const generateRule = (body: Record<string, any>) => {
|
export const generateRule = (body: Record<string, any>) => {
|
||||||
return post('/rule-generate', {
|
return post<AutomaticRes>('/rule-generate', {
|
||||||
body,
|
body,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user