mirror of
https://github.com/langgenius/webapp-conversation.git
synced 2025-12-08 17:32:27 +08:00
- Replace .eslintrc.json with eslint.config.mjs - Simplify configuration using @antfu/eslint-config - Add necessary ESLint plugin dependencies - Disable overly strict style rules - Set package.json type to module for ESM support - Fix ESLint disable comment format 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
61 lines
1.4 KiB
TypeScript
61 lines
1.4 KiB
TypeScript
'use client'
|
|
import type { FC } from 'react'
|
|
import React from 'react'
|
|
import type { ThoughtItem, ToolInfoInThought } from '../type'
|
|
import Tool from './tool'
|
|
import type { Emoji } from '@/types/tools'
|
|
|
|
export interface IThoughtProps {
|
|
thought: ThoughtItem
|
|
allToolIcons: Record<string, string | Emoji>
|
|
isFinished: boolean
|
|
}
|
|
|
|
function getValue(value: string, isValueArray: boolean, index: number) {
|
|
if (isValueArray) {
|
|
try {
|
|
return JSON.parse(value)[index]
|
|
}
|
|
catch (e) {
|
|
}
|
|
}
|
|
return value
|
|
}
|
|
|
|
const Thought: FC<IThoughtProps> = ({
|
|
thought,
|
|
allToolIcons,
|
|
isFinished,
|
|
}) => {
|
|
const [toolNames, isValueArray]: [string[], boolean] = (() => {
|
|
try {
|
|
if (Array.isArray(JSON.parse(thought.tool))) { return [JSON.parse(thought.tool), true] }
|
|
}
|
|
catch (e) {
|
|
}
|
|
return [[thought.tool], false]
|
|
})()
|
|
|
|
const toolThoughtList = toolNames.map((toolName, index) => {
|
|
return {
|
|
name: toolName,
|
|
input: getValue(thought.tool_input, isValueArray, index),
|
|
output: getValue(thought.observation, isValueArray, index),
|
|
isFinished,
|
|
}
|
|
})
|
|
|
|
return (
|
|
<div className='my-2 space-y-2'>
|
|
{toolThoughtList.map((item: ToolInfoInThought, index) => (
|
|
<Tool
|
|
key={index}
|
|
payload={item}
|
|
allToolIcons={allToolIcons}
|
|
/>
|
|
))}
|
|
</div>
|
|
)
|
|
}
|
|
export default React.memo(Thought)
|