feat: build and preview chat

This commit is contained in:
Joel 2026-06-24 15:53:03 +08:00
parent 63e91b40ae
commit fe274fc28c
33 changed files with 552 additions and 124 deletions

View File

@ -20,9 +20,14 @@ import { useCheckInputsForms } from '../check-input-forms-hooks'
import { useTextAreaHeight } from './hooks'
import Operation from './operation'
type AudioRecorderWithPermission = typeof Recorder & {
getPermission: () => Promise<void>
}
type ChatInputAreaProps = {
readonly?: boolean
botName?: string
placeholder?: string
showFeatureBar?: boolean
showFileUpload?: boolean
featureBarReadonly?: boolean
@ -31,7 +36,7 @@ type ChatInputAreaProps = {
visionConfig?: FileUpload
speechToTextConfig?: EnableType
onSend?: OnSend
inputs?: Record<string, any>
inputs?: Record<string, unknown>
inputsForm?: InputForm[]
theme?: Theme | null
isResponding?: boolean
@ -44,7 +49,7 @@ type ChatInputAreaProps = {
*/
sendOnEnter?: boolean
}
const ChatInputArea = ({ readonly, botName, showFeatureBar, showFileUpload, featureBarReadonly = readonly, featureBarDisabled, onFeatureBarClick, visionConfig, speechToTextConfig = { enabled: true }, onSend, inputs = {}, inputsForm = [], theme, isResponding, disabled, sendOnEnter = true }: ChatInputAreaProps) => {
const ChatInputArea = ({ readonly, botName, placeholder, showFeatureBar, showFileUpload, featureBarReadonly = readonly, featureBarDisabled, onFeatureBarClick, visionConfig, speechToTextConfig = { enabled: true }, onSend, inputs = {}, inputsForm = [], theme, isResponding, disabled, sendOnEnter = true }: ChatInputAreaProps) => {
const { t } = useTranslation()
const { wrapperRef, textareaRef, textValueRef, holdSpaceRef, handleTextareaResize, isMultipleLine } = useTextAreaHeight()
const [query, setQuery] = useState('')
@ -130,7 +135,7 @@ const ChatInputArea = ({ readonly, botName, showFeatureBar, showFileUpload, feat
}
}
const handleShowVoiceInput = useCallback(() => {
(Recorder as any).getPermission().then(() => {
;(Recorder as AudioRecorderWithPermission).getPermission().then(() => {
setShowVoiceInput(true)
}, () => {
toast.error(t('voiceInput.notAllow', { ns: 'common' }))
@ -147,7 +152,28 @@ const ChatInputArea = ({ readonly, botName, showFeatureBar, showFileUpload, feat
<div ref={textValueRef} className="pointer-events-none invisible absolute size-auto p-1 body-lg-regular leading-6 whitespace-pre">
{query}
</div>
<Textarea ref={ref => textareaRef.current = ref as any} className={cn('w-full resize-none bg-transparent p-1 body-lg-regular leading-6 text-text-primary outline-hidden')} placeholder={decode(t(readonly ? 'chat.inputDisabledPlaceholder' : 'chat.inputPlaceholder', { ns: 'common', botName }) || '')} autoFocus minRows={1} value={query} onChange={e => handleQueryChange(e.target.value)} onKeyDown={handleKeyDown} onCompositionStart={handleCompositionStart} onCompositionEnd={handleCompositionEnd} onPaste={handleClipboardPasteFile} onDragEnter={handleDragFileEnter} onDragLeave={handleDragFileLeave} onDragOver={handleDragFileOver} onDrop={handleDropFile} readOnly={readonly} />
<Textarea
ref={(ref) => {
textareaRef.current = ref ?? undefined
}}
className={cn('w-full resize-none bg-transparent p-1 body-lg-regular leading-6 text-text-primary outline-hidden')}
placeholder={placeholder ?? decode(t(readonly ? 'chat.inputDisabledPlaceholder' : 'chat.inputPlaceholder', { ns: 'common', botName }) || '')}
// Existing chat behavior focuses the composer as soon as it opens.
// eslint-disable-next-line jsx-a11y/no-autofocus
autoFocus
minRows={1}
value={query}
onChange={e => handleQueryChange(e.target.value)}
onKeyDown={handleKeyDown}
onCompositionStart={handleCompositionStart}
onCompositionEnd={handleCompositionEnd}
onPaste={handleClipboardPasteFile}
onDragEnter={handleDragFileEnter}
onDragLeave={handleDragFileLeave}
onDragOver={handleDragFileOver}
onDrop={handleDropFile}
readOnly={readonly}
/>
</div>
{!isMultipleLine && operation}
</div>

View File

@ -13,6 +13,8 @@ import type {
import type { HumanInputFormSubmitData } from './answer/human-input-content/type'
import type { InputForm } from './type'
import type { Emoji } from '@/app/components/tools/types'
import type { HumanInputNodeType } from '@/app/components/workflow/nodes/human-input/types'
import type { Node } from '@/app/components/workflow/types'
import type { AppData } from '@/models/share'
import { Button } from '@langgenius/dify-ui/button'
import { cn } from '@langgenius/dify-ui/cn'
@ -39,7 +41,7 @@ export type ChatProps = {
onStopResponding?: () => void
noChatInput?: boolean
onSend?: OnSend
inputs?: Record<string, any>
inputs?: Record<string, unknown>
inputsForm?: InputForm[]
onRegenerate?: OnRegenerate
chatContainerClassName?: string
@ -68,11 +70,13 @@ export type ChatProps = {
onFeatureBarClick?: (state: boolean) => void
noSpacing?: boolean
inputDisabled?: boolean
inputPlaceholder?: string
inputPlaceholderBotName?: string
sidebarCollapseState?: boolean
hideAvatar?: boolean
sendOnEnter?: boolean
onHumanInputFormSubmit?: (formToken: string, formData: HumanInputFormSubmitData) => Promise<void>
getHumanInputNodeData?: (nodeID: string) => any
getHumanInputNodeData?: (nodeID: string) => Node<HumanInputNodeType> | undefined
}
const Chat: FC<ChatProps> = ({
@ -114,6 +118,8 @@ const Chat: FC<ChatProps> = ({
onFeatureBarClick,
noSpacing,
inputDisabled,
inputPlaceholder,
inputPlaceholderBotName,
sidebarCollapseState,
hideAvatar,
sendOnEnter,
@ -180,7 +186,7 @@ const Chat: FC<ChatProps> = ({
appData={appData}
key={item.id}
item={item}
question={chatList[index - 1]?.content!}
question={chatList[index - 1]?.content ?? ''}
index={index}
config={config}
answerIcon={answerIcon}
@ -240,7 +246,8 @@ const Chat: FC<ChatProps> = ({
{
!noChatInput && (
<ChatInputArea
botName={appData?.site?.title || 'Bot'}
botName={inputPlaceholderBotName || appData?.site?.title || 'Bot'}
placeholder={inputPlaceholder}
disabled={inputDisabled}
showFeatureBar={showFeatureBar}
showFileUpload={showFileUpload}

View File

@ -1,5 +1,6 @@
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import { render, screen } from '@testing-library/react'
import userEvent from '@testing-library/user-event'
import { AgentConfigurePage } from '../page'
const mocks = vi.hoisted(() => ({
@ -99,8 +100,20 @@ vi.mock('../components/orchestrate', () => ({
AgentOrchestratePanel: () => <div role="region" aria-label="orchestrate-panel" />,
}))
vi.mock('../components/preview/chat', () => ({
AgentPreviewChat: () => <div role="region" aria-label="preview-chat" />,
vi.mock('../components/preview/build-chat', () => ({
AgentBuildChat: () => (
<div role="region" aria-label="preview-chat">
build
</div>
),
}))
vi.mock('../components/preview/preview-chat', () => ({
AgentPreviewChat: () => (
<div role="region" aria-label="preview-chat">
preview
</div>
),
}))
vi.mock('../components/preview/chat-features-panel', () => ({
@ -109,11 +122,19 @@ vi.mock('../components/preview/chat-features-panel', () => ({
vi.mock('../components/preview/header', () => ({
AgentPreviewHeader: (props: {
mode: 'build' | 'preview'
onModeChange: (mode: 'build' | 'preview') => void
onRestart: () => void
}) => (
<button type="button" onClick={props.onRestart}>
restart preview
</button>
<div>
<div>{props.mode}</div>
<button type="button" onClick={() => props.onModeChange('preview')}>
preview mode
</button>
<button type="button" onClick={props.onRestart}>
restart preview
</button>
</div>
),
}))
@ -166,4 +187,29 @@ describe('AgentConfigurePage', () => {
expect(screen.queryByRole('region', { name: 'orchestrate-panel' })).not.toBeInTheDocument()
})
})
describe('Right panel mode', () => {
it('should render build mode by default and switch to preview mode', async () => {
const user = userEvent.setup()
const queryClient = new QueryClient()
mocks.queryState.composer = {
data: {},
isFetching: false,
isPending: false,
isSuccess: true,
}
render(
<QueryClientProvider client={queryClient}>
<AgentConfigurePage agentId="agent-1" />
</QueryClientProvider>,
)
expect(screen.getByRole('region', { name: 'preview-chat' })).toHaveTextContent('build')
await user.click(screen.getByRole('button', { name: 'preview mode' }))
expect(screen.getByRole('region', { name: 'preview-chat' })).toHaveTextContent('preview')
})
})
})

View File

@ -4,7 +4,7 @@ import { fireEvent, render, screen, waitFor } from '@testing-library/react'
import { createStore, Provider as JotaiProvider } from 'jotai'
import { agentComposerModelAtom } from '@/features/agent-v2/agent-composer/store-modules/model'
import { agentComposerPromptAtom } from '@/features/agent-v2/agent-composer/store-modules/prompt'
import { AgentPreviewChat } from '../chat'
import { AgentChatRuntime } from '../chat-runtime'
const useChatMock = vi.hoisted(() => vi.fn())
const handleSendMock = vi.hoisted(() => vi.fn())
@ -103,7 +103,7 @@ vi.mock('@/service/client', () => ({
},
}))
function renderPreviewChat(props?: Partial<ComponentProps<typeof AgentPreviewChat>>) {
function renderPreviewChat(props?: Partial<ComponentProps<typeof AgentChatRuntime>>) {
const store = createStore()
const queryClient = new QueryClient({
defaultOptions: {
@ -121,9 +121,11 @@ function renderPreviewChat(props?: Partial<ComponentProps<typeof AgentPreviewCha
return render(
<QueryClientProvider client={queryClient}>
<JotaiProvider store={store}>
<AgentPreviewChat
<AgentChatRuntime
agentId="agent-1"
clearChatList={false}
inputPlaceholder="Message agent"
renderEmptyState={() => null}
onClearChatListChange={vi.fn()}
{...props}
/>

View File

@ -29,8 +29,14 @@ vi.mock('@/service/client', () => ({
}))
function renderHeader({
mode = 'preview',
onModeChange = vi.fn(),
onOpenVersions = vi.fn(),
onRestart = vi.fn(),
}: {
mode?: 'build' | 'preview'
onModeChange?: (mode: 'build' | 'preview') => void
onOpenVersions?: () => void
onRestart?: () => void
} = {}) {
const queryClient = new QueryClient()
@ -43,8 +49,11 @@ function renderHeader({
<QueryClientProvider client={queryClient}>
<AgentPreviewHeader
agentId="agent-1"
mode={mode}
isChatFeaturesOpen={false}
onModeChange={onModeChange}
onToggleChatFeatures={vi.fn()}
onOpenVersions={onOpenVersions}
onRestart={onRestart}
/>
</QueryClientProvider>,

View File

@ -0,0 +1,48 @@
'use client'
import type { AgentChatRuntimeEmptyStateProps, AgentChatRuntimeProps } from './chat-runtime'
import { useTranslation } from 'react-i18next'
import { AgentChatRuntime } from './chat-runtime'
const buildIconGridCells = Array.from({ length: 16 }, (_, index) => `build-icon-cell-${index}`)
type AgentBuildChatProps = Omit<AgentChatRuntimeProps, 'inputPlaceholder' | 'renderEmptyState'>
function AgentBuildChatEmptyState() {
const { t } = useTranslation('agentV2')
return (
<div className="pointer-events-none absolute inset-x-12 bottom-[calc(27%+84px)] flex justify-center">
<div className="flex w-full max-w-150 flex-col items-start p-3 text-left">
<div className="relative flex size-12 items-center justify-center overflow-hidden rounded-xl border-[0.5px] border-components-panel-border-subtle bg-background-default-dimmed text-text-tertiary">
<div className="grid size-full grid-cols-4 grid-rows-4 gap-px p-1">
{buildIconGridCells.map(cell => (
<span key={cell} className="rounded-[1px] bg-divider-subtle" />
))}
</div>
<span aria-hidden className="absolute i-ri-hammer-line size-5 text-text-tertiary" />
</div>
<div className="mt-3 max-w-full truncate system-md-medium text-text-secondary">
{t('agentDetail.configure.build.empty.title')}
</div>
<p className="mt-1 max-w-full body-md-regular text-text-tertiary">
{t('agentDetail.configure.build.empty.description')}
</p>
</div>
</div>
)
}
export function AgentBuildChat(props: AgentBuildChatProps) {
const { t } = useTranslation('agentV2')
return (
<AgentChatRuntime
{...props}
inputPlaceholder={t('agentDetail.configure.build.inputPlaceholder')}
renderEmptyState={(_emptyStateProps: AgentChatRuntimeEmptyStateProps) => (
<AgentBuildChatEmptyState />
)}
/>
)
}

View File

@ -8,6 +8,9 @@ import type {
AgentThought,
MessageDetailResponse,
} from '@dify/contracts/api/console/agent/types.gen'
import type {
ReactNode,
} from 'react'
import type { FeedbackType, IChatItem, ThoughtItem } from '@/app/components/base/chat/chat/type'
import type { ChatConfig, ChatItem, ChatItemInTree, OnSend } from '@/app/components/base/chat/types'
import type { FileEntity } from '@/app/components/base/file-uploader/types'
@ -20,8 +23,6 @@ import { cn } from '@langgenius/dify-ui/cn'
import { useQuery } from '@tanstack/react-query'
import { useAtomValue } from 'jotai'
import { useCallback, useMemo } from 'react'
import { useTranslation } from 'react-i18next'
import AppIcon from '@/app/components/base/app-icon'
import { useChat } from '@/app/components/base/chat/chat/hooks'
import { buildChatItemTree, getLastAnswer, isValidGeneratedAnswer } from '@/app/components/base/chat/utils'
import { getProcessedFilesFromResponse } from '@/app/components/base/file-uploader/utils'
@ -388,60 +389,15 @@ const buildChatConfig = ({
}
}
function AgentPreviewChatEmptyState({
agentIcon,
agentIconBackground,
agentIconType,
agentName,
hasInstructions,
}: {
export type AgentChatRuntimeEmptyStateProps = {
agentIcon?: string | null
agentIconBackground?: string | null
agentIconType?: AgentIconType | null
agentName?: string
hasInstructions: boolean
}) {
const { t } = useTranslation('agentV2')
const imageUrl = (agentIconType === 'image' || agentIconType === 'link') ? agentIcon : undefined
const iconType = imageUrl ? 'image' : agentIconType
return (
<div className="pointer-events-none absolute inset-x-12 bottom-[calc(27%+84px)] flex flex-col items-center text-center">
<AppIcon
size="xxl"
rounded
iconType={iconType}
icon={agentIcon ?? undefined}
background={agentIconBackground}
imageUrl={imageUrl}
className="bg-background-default"
/>
<div className="mt-3 max-w-full truncate system-md-semibold text-text-secondary">
{agentName || t('agentDetail.configure.preview.empty.defaultAgentName')}
</div>
<div className="mt-4 h-px w-73 max-w-full bg-divider-subtle" />
<div className="mt-5 max-w-91 body-md-regular text-text-tertiary">
<p>{t('agentDetail.configure.preview.empty.description')}</p>
{!hasInstructions && (
<p>{t('agentDetail.configure.preview.empty.noInstructionsDescription')}</p>
)}
</div>
</div>
)
}
export function AgentPreviewChat({
agentId,
agentIcon,
agentIconBackground,
agentIconType,
agentName,
agentSoulConfig,
clearChatList,
debugConversationId,
onClearChatListChange,
onSaveDraftBeforeRun,
}: {
export type AgentChatRuntimeProps = {
agentId: string
agentIcon?: string | null
agentIconBackground?: string | null
@ -450,9 +406,26 @@ export function AgentPreviewChat({
agentSoulConfig?: AgentSoulConfig
clearChatList: boolean
debugConversationId?: string | null
inputPlaceholder: string
renderEmptyState: (props: AgentChatRuntimeEmptyStateProps) => ReactNode
onClearChatListChange: (clearChatList: boolean) => void
onSaveDraftBeforeRun?: () => Promise<void>
}) {
}
export function AgentChatRuntime({
agentId,
agentIcon,
agentIconBackground,
agentIconType,
agentName,
agentSoulConfig,
clearChatList,
debugConversationId,
inputPlaceholder,
renderEmptyState,
onClearChatListChange,
onSaveDraftBeforeRun,
}: AgentChatRuntimeProps) {
const historyQuery = useQuery({
queryKey: ['agent-preview-debug-conversation', agentId, debugConversationId],
queryFn: () => fetchAgentConversationMessages(agentId, debugConversationId!),
@ -483,6 +456,8 @@ export function AgentPreviewChat({
clearChatList={clearChatList}
debugConversationId={debugConversationId}
initialChatTree={initialChatTree}
inputPlaceholder={inputPlaceholder}
renderEmptyState={renderEmptyState}
onClearChatListChange={onClearChatListChange}
onSaveDraftBeforeRun={onSaveDraftBeforeRun}
/>
@ -499,6 +474,8 @@ function AgentPreviewChatSession({
clearChatList,
debugConversationId,
initialChatTree,
inputPlaceholder,
renderEmptyState,
onClearChatListChange,
onSaveDraftBeforeRun,
}: {
@ -511,6 +488,8 @@ function AgentPreviewChatSession({
clearChatList: boolean
debugConversationId?: string | null
initialChatTree: ChatItemInTree[]
inputPlaceholder: string
renderEmptyState: (props: AgentChatRuntimeEmptyStateProps) => ReactNode
onClearChatListChange: (clearChatList: boolean) => void
onSaveDraftBeforeRun?: () => Promise<void>
}) {
@ -608,20 +587,21 @@ function AgentPreviewChatSession({
config={config}
chatList={chatList}
isResponding={isResponding}
chatNode={isEmptyChat && (
<AgentPreviewChatEmptyState
agentIcon={agentIcon}
agentIconBackground={agentIconBackground}
agentIconType={agentIconType}
agentName={agentName}
hasInstructions={hasInstructions}
/>
)}
chatNode={isEmptyChat
? renderEmptyState({
agentIcon,
agentIconBackground,
agentIconType,
agentName,
hasInstructions,
})
: null}
chatContainerClassName={cn('pt-6', isEmptyChat ? 'px-12' : 'px-3')}
chatFooterClassName={cn(
'pb-0',
isEmptyChat ? '!bottom-[27%] px-12 pt-3' : 'px-3 pt-10',
)}
inputPlaceholder={inputPlaceholder}
showFileUpload={false}
suggestedQuestions={suggestedQuestions}
onSend={doSend}

View File

@ -2,19 +2,28 @@
import type { AgentAppDetailWithSite } from '@dify/contracts/api/console/agent/types.gen'
import { cn } from '@langgenius/dify-ui/cn'
import { SegmentedControl, SegmentedControlDivider, SegmentedControlItem } from '@langgenius/dify-ui/segmented-control'
import { useMutation, useQueryClient } from '@tanstack/react-query'
import { useTranslation } from 'react-i18next'
import { consoleQuery } from '@/service/client'
type AgentConfigureRightPanelMode = 'build' | 'preview'
export function AgentPreviewHeader({
agentId,
mode,
isChatFeaturesOpen,
onModeChange,
onToggleChatFeatures,
onOpenVersions,
onRestart,
}: {
agentId: string
mode: AgentConfigureRightPanelMode
isChatFeaturesOpen: boolean
onModeChange: (mode: AgentConfigureRightPanelMode) => void
onToggleChatFeatures: () => void
onOpenVersions: () => void
onRestart: () => void
}) {
const { t } = useTranslation('agentV2')
@ -38,10 +47,28 @@ export function AgentPreviewHeader({
}))
return (
<div className="flex h-12 shrink-0 items-center gap-3 py-3 pr-3 pl-6">
<h2 className="min-w-0 flex-1 truncate title-xl-semi-bold text-text-primary">
{t('agentDetail.configure.preview.title')}
</h2>
<div className="flex h-12 shrink-0 items-center gap-3 py-2 pr-3 pl-4">
<div className="flex min-w-0 flex-1 items-center gap-2">
<SegmentedControl<AgentConfigureRightPanelMode>
value={[mode]}
onValueChange={(value) => {
const nextMode = value[0]
if (nextMode)
onModeChange(nextMode)
}}
aria-label={t('agentDetail.configure.rightPanel.modeLabel')}
>
<SegmentedControlItem<AgentConfigureRightPanelMode> value="build" className="uppercase">
<span aria-hidden className="i-ri-hammer-line size-4" />
{t('agentDetail.configure.rightPanel.build')}
</SegmentedControlItem>
<SegmentedControlItem<AgentConfigureRightPanelMode> value="preview" className="uppercase">
<span aria-hidden className="i-custom-vender-other-replay-line size-4" />
{t('agentDetail.configure.rightPanel.preview')}
</SegmentedControlItem>
</SegmentedControl>
<span aria-hidden className="i-ri-question-line size-4 shrink-0 text-text-quaternary" />
</div>
<div className="flex shrink-0 items-center gap-1">
<button
type="button"
@ -56,19 +83,35 @@ export function AgentPreviewHeader({
>
<span aria-hidden className="i-custom-vender-other-replay-line size-4" />
</button>
<button
type="button"
aria-pressed={isChatFeaturesOpen}
onClick={onToggleChatFeatures}
className={cn(
'flex h-8 items-center justify-center gap-0.5 rounded-lg px-3 py-2 text-text-tertiary hover:bg-state-base-hover hover:text-text-secondary focus-visible:ring-2 focus-visible:ring-state-accent-solid focus-visible:outline-hidden',
isChatFeaturesOpen && 'bg-state-base-hover text-text-secondary',
)}
aria-label={t('agentDetail.configure.preview.chatFeatures')}
>
<span aria-hidden className="i-ri-apps-2-add-line size-4" />
<span className="px-0.5 system-sm-medium">{t('agentDetail.configure.preview.chatFeatures')}</span>
</button>
{mode === 'build'
? (
<button
type="button"
onClick={onOpenVersions}
className="flex size-6 items-center justify-center rounded-md p-0.5 text-text-tertiary hover:bg-state-base-hover hover:text-text-secondary focus-visible:ring-2 focus-visible:ring-state-accent-solid focus-visible:outline-hidden"
aria-label={t('agentDetail.configure.publishBar.versionHistory')}
>
<span aria-hidden className="i-ri-folder-3-line size-4" />
</button>
)
: (
<>
<SegmentedControlDivider className="mx-1" />
<button
type="button"
aria-pressed={isChatFeaturesOpen}
onClick={onToggleChatFeatures}
className={cn(
'flex h-8 items-center justify-center gap-0.5 rounded-lg px-3 py-2 text-text-tertiary hover:bg-state-base-hover hover:text-text-secondary focus-visible:ring-2 focus-visible:ring-state-accent-solid focus-visible:outline-hidden',
isChatFeaturesOpen && 'bg-state-base-hover text-text-secondary',
)}
aria-label={t('agentDetail.configure.preview.chatFeatures')}
>
<span aria-hidden className="i-ri-apps-2-add-line size-4" />
<span className="px-0.5 system-sm-medium">{t('agentDetail.configure.preview.chatFeatures')}</span>
</button>
</>
)}
</div>
</div>
)

View File

@ -0,0 +1,66 @@
'use client'
import type { AgentChatRuntimeEmptyStateProps, AgentChatRuntimeProps } from './chat-runtime'
import { useTranslation } from 'react-i18next'
import AppIcon from '@/app/components/base/app-icon'
import { AgentChatRuntime } from './chat-runtime'
type AgentPreviewChatProps = Omit<AgentChatRuntimeProps, 'inputPlaceholder' | 'renderEmptyState'>
function AgentPreviewChatEmptyState({
agentIcon,
agentIconBackground,
agentIconType,
agentName,
hasInstructions,
}: AgentChatRuntimeEmptyStateProps) {
const { t } = useTranslation('agentV2')
const imageUrl = (agentIconType === 'image' || agentIconType === 'link') ? agentIcon : undefined
const iconType = imageUrl ? 'image' : agentIconType
return (
<div className="pointer-events-none absolute inset-x-12 bottom-[calc(27%+84px)] flex justify-center">
<div className="flex w-full max-w-150 flex-col items-start p-3 text-left">
<AppIcon
size="xxl"
rounded
iconType={iconType}
icon={agentIcon ?? undefined}
background={agentIconBackground}
imageUrl={imageUrl}
className="bg-background-default"
/>
<div className="mt-3 max-w-full truncate system-md-medium text-text-secondary">
{t('agentDetail.configure.preview.empty.title', {
name: agentName || t('agentDetail.configure.preview.empty.defaultAgentName'),
})}
</div>
<p className="mt-1 max-w-full body-md-regular text-text-tertiary">
{t('agentDetail.configure.preview.empty.description')}
</p>
{!hasInstructions && (
<p className="mt-1 max-w-full body-md-regular text-text-tertiary">
{t('agentDetail.configure.preview.empty.noInstructionsDescription')}
</p>
)}
</div>
</div>
)
}
export function AgentPreviewChat(props: AgentPreviewChatProps) {
const { t } = useTranslation('agentV2')
const agentName = props.agentName || t('agentDetail.configure.preview.empty.defaultAgentName')
return (
<AgentChatRuntime
{...props}
inputPlaceholder={t('agentDetail.configure.preview.inputPlaceholder', {
name: agentName,
})}
renderEmptyState={emptyStateProps => (
<AgentPreviewChatEmptyState {...emptyStateProps} />
)}
/>
)
}

View File

@ -7,9 +7,10 @@ import Loading from '@/app/components/base/loading'
import { AgentComposerProvider } from '@/features/agent-v2/agent-composer/provider'
import { useHydrateAgentSoulConfigDraft } from '@/features/agent-v2/agent-composer/store'
import { AgentOrchestratePanel } from './components/orchestrate'
import { AgentPreviewChat } from './components/preview/chat'
import { AgentBuildChat } from './components/preview/build-chat'
import { AgentChatFeaturesPanel } from './components/preview/chat-features-panel'
import { AgentPreviewHeader } from './components/preview/header'
import { AgentPreviewChat } from './components/preview/preview-chat'
import { AgentPreviewVersionsPanel } from './components/preview/versions-panel'
import { useAgentConfigureData, useAgentConfigureModelOptions, useAgentPreviewSoulConfig } from './hooks'
import { useAgentConfigureSync } from './use-agent-configure-sync'
@ -18,6 +19,8 @@ type AgentConfigurePageProps = {
agentId: string
}
type AgentConfigureRightPanelMode = 'build' | 'preview'
export function AgentConfigurePage({
agentId,
}: AgentConfigurePageProps) {
@ -71,6 +74,7 @@ function AgentConfigurePageLoadedContent({
const [showChatFeatures, setShowChatFeatures] = useState(false)
const [showPreviewVersions, setShowPreviewVersions] = useState(false)
const [clearPreviewChat, setClearPreviewChat] = useState(false)
const [rightPanelMode, setRightPanelMode] = useState<AgentConfigureRightPanelMode>('build')
const {
agentQuery,
composerQuery,
@ -134,13 +138,16 @@ function AgentConfigurePageLoadedContent({
<div className="flex min-w-105 flex-1 flex-col overflow-hidden rounded-lg bg-background-gradient-bg-fill-chat-bg-2 shadow-xl shadow-shadow-shadow-5">
<AgentPreviewHeader
agentId={agentId}
mode={rightPanelMode}
isChatFeaturesOpen={showChatFeatures}
onModeChange={setRightPanelMode}
onToggleChatFeatures={() => setShowChatFeatures(open => !open)}
onOpenVersions={() => setShowPreviewVersions(true)}
onRestart={() => setClearPreviewChat(true)}
/>
<div className="min-h-0 flex-1">
<AgentPreviewChatWithDraftConfig
<AgentRightPanelChatWithDraftConfig
agentId={agentId}
agentIcon={agentQuery.data?.icon}
agentIconBackground={agentQuery.data?.icon_background}
@ -149,6 +156,7 @@ function AgentConfigurePageLoadedContent({
agentSoulConfig={agentSoulConfig}
clearChatList={clearPreviewChat}
debugConversationId={agentQuery.data?.debug_conversation_id}
mode={rightPanelMode}
onClearChatListChange={setClearPreviewChat}
onSaveDraftBeforeRun={saveDraft}
/>
@ -174,18 +182,27 @@ function AgentConfigurePageLoadedContent({
)
}
function AgentPreviewChatWithDraftConfig({
function AgentRightPanelChatWithDraftConfig({
agentSoulConfig,
mode,
...props
}: Omit<Parameters<typeof AgentPreviewChat>[0], 'agentSoulConfig'> & {
agentSoulConfig?: AgentSoulConfig
mode: AgentConfigureRightPanelMode
}) {
const previewAgentSoulConfig = useAgentPreviewSoulConfig(agentSoulConfig)
return (
<AgentPreviewChat
{...props}
agentSoulConfig={previewAgentSoulConfig}
/>
)
return mode === 'build'
? (
<AgentBuildChat
{...props}
agentSoulConfig={previewAgentSoulConfig}
/>
)
: (
<AgentPreviewChat
{...props}
agentSoulConfig={previewAgentSoulConfig}
/>
)
}

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "الإعدادات المتقدمة",
"agentDetail.configure.advancedSettings.toggle": "تبديل الإعدادات المتقدمة",
"agentDetail.configure.build.empty.description": "صِف ما تريده وسيتم ملء النموذج على اليسار أثناء المحادثة.",
"agentDetail.configure.build.empty.title": "ابنِ وكيلك عبر الدردشة",
"agentDetail.configure.build.inputPlaceholder": "صِف ما يجب أن يفعله وكيلك",
"agentDetail.configure.chatFeatures.description": "شكّل تجربة الدردشة للمستخدم النهائي على Web app وأسطح الدردشة.",
"agentDetail.configure.chatFeatures.title": "ميزات الدردشة",
"agentDetail.configure.files.add": "إضافة ملف",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "تنسيق",
"agentDetail.configure.preview.chatFeatures": "ميزات الدردشة",
"agentDetail.configure.preview.empty.defaultAgentName": "وكيل",
"agentDetail.configure.preview.empty.description": "أرسل رسالة لاختبار المسودة الحالية.",
"agentDetail.configure.preview.empty.description": "شغّل الوكيل كمحادثة مكتملة، تمامًا كما سيختبرها المستخدمون بعد النشر.",
"agentDetail.configure.preview.empty.noInstructionsDescription": "لا توجد تعليمات بعد، لذلك تأتي الردود من النموذج البسيط.",
"agentDetail.configure.preview.empty.title": "معاينة {{name}}",
"agentDetail.configure.preview.endUserAuth": "مصادقة المستخدم النهائي",
"agentDetail.configure.preview.inputPlaceholder": "إرسال رسالة إلى {{name}}",
"agentDetail.configure.preview.restart": "إعادة تشغيل المعاينة",
"agentDetail.configure.preview.title": "معاينة",
"agentDetail.configure.prompt.copied": "تم نسخ المطالبة",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{action}} إلى {{name}}",
"agentDetail.configure.publishImpact.workflowCount_one": "{{count}} سير عمل",
"agentDetail.configure.publishImpact.workflowCount_other": "{{count}} سير عمل",
"agentDetail.configure.rightPanel.build": "بناء",
"agentDetail.configure.rightPanel.modeLabel": "وضع تكوين الوكيل",
"agentDetail.configure.rightPanel.preview": "معاينة",
"agentDetail.configure.skills.add": "إضافة مهارة",
"agentDetail.configure.skills.detail.contentRegion": "محتوى تفاصيل المهارة",
"agentDetail.configure.skills.detail.fileCount": "{{count}} ملفات",

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "Erweiterte Einstellungen",
"agentDetail.configure.advancedSettings.toggle": "Erweiterte Einstellungen umschalten",
"agentDetail.configure.build.empty.description": "Beschreiben Sie, was Sie möchten, und das Formular links wird während des Chats ausgefüllt.",
"agentDetail.configure.build.empty.title": "Agent per Chat erstellen",
"agentDetail.configure.build.inputPlaceholder": "Beschreiben Sie, was Ihr Agent tun soll",
"agentDetail.configure.chatFeatures.description": "Gestalten Sie das Chat-Erlebnis für Endnutzer in Ihrer Webapp und in Chat-Oberflächen.",
"agentDetail.configure.chatFeatures.title": "Chat-Funktionen",
"agentDetail.configure.files.add": "Datei hinzufügen",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "Orchestrieren",
"agentDetail.configure.preview.chatFeatures": "Chat-Funktionen",
"agentDetail.configure.preview.empty.defaultAgentName": "Agent",
"agentDetail.configure.preview.empty.description": "Senden Sie eine Nachricht, um den aktuellen Entwurf zu testen.",
"agentDetail.configure.preview.empty.description": "Führen Sie den Agenten als fertigen Chat aus, genau wie Benutzer ihn nach der Veröffentlichung erleben.",
"agentDetail.configure.preview.empty.noInstructionsDescription": "Noch keine Anweisungen, daher kommen die Antworten vom reinen Modell.",
"agentDetail.configure.preview.empty.title": "{{name}} in der Vorschau anzeigen",
"agentDetail.configure.preview.endUserAuth": "Endbenutzer-Authentifizierung",
"agentDetail.configure.preview.inputPlaceholder": "Nachricht an {{name}}",
"agentDetail.configure.preview.restart": "Vorschau neu starten",
"agentDetail.configure.preview.title": "Vorschau",
"agentDetail.configure.prompt.copied": "Prompt kopiert",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{action}} für {{name}}",
"agentDetail.configure.publishImpact.workflowCount_one": "{{count}} Workflow",
"agentDetail.configure.publishImpact.workflowCount_other": "{{count}} Workflows",
"agentDetail.configure.rightPanel.build": "Erstellen",
"agentDetail.configure.rightPanel.modeLabel": "Agent-Konfigurationsmodus",
"agentDetail.configure.rightPanel.preview": "Vorschau",
"agentDetail.configure.skills.add": "Skill hinzufügen",
"agentDetail.configure.skills.detail.contentRegion": "Skill-Detailinhalt",
"agentDetail.configure.skills.detail.fileCount": "{{count}} DATEIEN",

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "Advanced Settings",
"agentDetail.configure.advancedSettings.toggle": "Toggle advanced settings",
"agentDetail.configure.build.empty.description": "Describe what you want and it fills in the form on the left as you go.",
"agentDetail.configure.build.empty.title": "Build your agent by chatting",
"agentDetail.configure.build.inputPlaceholder": "Describe what your agent should do",
"agentDetail.configure.chatFeatures.description": "Shape the end-user chat experience on your web app and chat surfaces.",
"agentDetail.configure.chatFeatures.title": "Chat Features",
"agentDetail.configure.files.add": "Add file",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "Orchestrate",
"agentDetail.configure.preview.chatFeatures": "Chat Features",
"agentDetail.configure.preview.empty.defaultAgentName": "Agent",
"agentDetail.configure.preview.empty.description": "Send a message to test the current draft.",
"agentDetail.configure.preview.empty.description": "Run the agent as a finished chat, exactly how people will experience it once published.",
"agentDetail.configure.preview.empty.noInstructionsDescription": "No instructions yet, so replies come from the plain model.",
"agentDetail.configure.preview.empty.title": "Preview {{name}}",
"agentDetail.configure.preview.endUserAuth": "End-user authentication",
"agentDetail.configure.preview.inputPlaceholder": "Message {{name}}",
"agentDetail.configure.preview.restart": "Restart preview",
"agentDetail.configure.preview.title": "Preview",
"agentDetail.configure.prompt.copied": "Prompt copied",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{action}} to {{name}}",
"agentDetail.configure.publishImpact.workflowCount_one": "{{count}} workflow",
"agentDetail.configure.publishImpact.workflowCount_other": "{{count}} workflows",
"agentDetail.configure.rightPanel.build": "Build",
"agentDetail.configure.rightPanel.modeLabel": "Agent configuration mode",
"agentDetail.configure.rightPanel.preview": "Preview",
"agentDetail.configure.skills.add": "Add skill",
"agentDetail.configure.skills.detail.contentRegion": "Skill detail content",
"agentDetail.configure.skills.detail.fileCount": "{{count}} FILES",

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "Configuración avanzada",
"agentDetail.configure.advancedSettings.toggle": "Alternar configuración avanzada",
"agentDetail.configure.build.empty.description": "Describe lo que quieres y se irá completando el formulario de la izquierda mientras avanzas.",
"agentDetail.configure.build.empty.title": "Crea tu agente chateando",
"agentDetail.configure.build.inputPlaceholder": "Describe qué debe hacer tu agente",
"agentDetail.configure.chatFeatures.description": "Da forma a la experiencia de chat del usuario final en tu webapp y superficies de chat.",
"agentDetail.configure.chatFeatures.title": "Funciones de chat",
"agentDetail.configure.files.add": "Agregar archivo",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "Orquestar",
"agentDetail.configure.preview.chatFeatures": "Funciones de chat",
"agentDetail.configure.preview.empty.defaultAgentName": "Agente",
"agentDetail.configure.preview.empty.description": "Envía un mensaje para probar el borrador actual.",
"agentDetail.configure.preview.empty.description": "Ejecuta el agente como un chat terminado, exactamente como lo verán las personas cuando se publique.",
"agentDetail.configure.preview.empty.noInstructionsDescription": "Aún no hay instrucciones, así que las respuestas vendrán del modelo sin configurar.",
"agentDetail.configure.preview.empty.title": "Vista previa de {{name}}",
"agentDetail.configure.preview.endUserAuth": "Autenticación de usuario final",
"agentDetail.configure.preview.inputPlaceholder": "Enviar mensaje a {{name}}",
"agentDetail.configure.preview.restart": "Reiniciar vista previa",
"agentDetail.configure.preview.title": "Vista previa",
"agentDetail.configure.prompt.copied": "Prompt copiado",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{action}} en {{name}}",
"agentDetail.configure.publishImpact.workflowCount_one": "{{count}} flujo de trabajo",
"agentDetail.configure.publishImpact.workflowCount_other": "{{count}} flujos de trabajo",
"agentDetail.configure.rightPanel.build": "Crear",
"agentDetail.configure.rightPanel.modeLabel": "Modo de configuración del agente",
"agentDetail.configure.rightPanel.preview": "Vista previa",
"agentDetail.configure.skills.add": "Agregar habilidad",
"agentDetail.configure.skills.detail.contentRegion": "Contenido de los detalles de la habilidad",
"agentDetail.configure.skills.detail.fileCount": "{{count}} ARCHIVOS",

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "تنظیمات پیشرفته",
"agentDetail.configure.advancedSettings.toggle": "تغییر تنظیمات پیشرفته",
"agentDetail.configure.build.empty.description": "آنچه می‌خواهید را توضیح دهید تا فرم سمت چپ در طول گفتگو تکمیل شود.",
"agentDetail.configure.build.empty.title": "عامل خود را با چت بسازید",
"agentDetail.configure.build.inputPlaceholder": "توضیح دهید عامل شما باید چه کاری انجام دهد",
"agentDetail.configure.chatFeatures.description": "تجربه چت کاربر نهایی را در Web app و سطوح چت خود شکل دهید.",
"agentDetail.configure.chatFeatures.title": "ویژگی‌های چت",
"agentDetail.configure.files.add": "افزودن فایل",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "هماهنگ‌سازی",
"agentDetail.configure.preview.chatFeatures": "ویژگی‌های چت",
"agentDetail.configure.preview.empty.defaultAgentName": "عامل",
"agentDetail.configure.preview.empty.description": "برای آزمایش پیش‌نویس فعلی یک پیام ارسال کنید.",
"agentDetail.configure.preview.empty.description": "عامل را مثل یک چت نهایی اجرا کنید، دقیقاً همان‌طور که کاربران پس از انتشار تجربه می‌کنند.",
"agentDetail.configure.preview.empty.noInstructionsDescription": "هنوز دستورالعملی وجود ندارد، بنابراین پاسخ‌ها از مدل ساده می‌آیند.",
"agentDetail.configure.preview.empty.title": "پیش‌نمایش {{name}}",
"agentDetail.configure.preview.endUserAuth": "احراز هویت کاربر نهایی",
"agentDetail.configure.preview.inputPlaceholder": "ارسال پیام به {{name}}",
"agentDetail.configure.preview.restart": "راه‌اندازی مجدد پیش‌نمایش",
"agentDetail.configure.preview.title": "پیش‌نمایش",
"agentDetail.configure.prompt.copied": "پرامپت کپی شد",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{action}} به {{name}}",
"agentDetail.configure.publishImpact.workflowCount_one": "{{count}} گردش کار",
"agentDetail.configure.publishImpact.workflowCount_other": "{{count}} گردش کار",
"agentDetail.configure.rightPanel.build": "ساخت",
"agentDetail.configure.rightPanel.modeLabel": "حالت پیکربندی عامل",
"agentDetail.configure.rightPanel.preview": "پیش‌نمایش",
"agentDetail.configure.skills.add": "افزودن مهارت",
"agentDetail.configure.skills.detail.contentRegion": "محتوای جزئیات مهارت",
"agentDetail.configure.skills.detail.fileCount": "{{count}} فایل",

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "Paramètres avancés",
"agentDetail.configure.advancedSettings.toggle": "Basculer les paramètres avancés",
"agentDetail.configure.build.empty.description": "Décrivez ce que vous voulez et le formulaire de gauche se remplit au fil de la conversation.",
"agentDetail.configure.build.empty.title": "Créez votre agent par chat",
"agentDetail.configure.build.inputPlaceholder": "Décrivez ce que votre agent doit faire",
"agentDetail.configure.chatFeatures.description": "Façonnez lexpérience de chat de lutilisateur final sur votre webapp et vos surfaces de chat.",
"agentDetail.configure.chatFeatures.title": "Fonctionnalités de chat",
"agentDetail.configure.files.add": "Ajouter un fichier",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "Orchestrer",
"agentDetail.configure.preview.chatFeatures": "Fonctionnalités de chat",
"agentDetail.configure.preview.empty.defaultAgentName": "Agent",
"agentDetail.configure.preview.empty.description": "Envoyez un message pour tester le brouillon actuel.",
"agentDetail.configure.preview.empty.description": "Exécutez lagent comme un chat finalisé, exactement comme les utilisateurs le verront une fois publié.",
"agentDetail.configure.preview.empty.noInstructionsDescription": "Pas encore dinstructions, donc les réponses proviennent du modèle brut.",
"agentDetail.configure.preview.empty.title": "Aperçu de {{name}}",
"agentDetail.configure.preview.endUserAuth": "Authentification de lutilisateur final",
"agentDetail.configure.preview.inputPlaceholder": "Envoyer un message à {{name}}",
"agentDetail.configure.preview.restart": "Redémarrer laperçu",
"agentDetail.configure.preview.title": "Aperçu",
"agentDetail.configure.prompt.copied": "Prompt copié",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{action}} pour {{name}}",
"agentDetail.configure.publishImpact.workflowCount_one": "{{count}} workflow",
"agentDetail.configure.publishImpact.workflowCount_other": "{{count}} workflows",
"agentDetail.configure.rightPanel.build": "Créer",
"agentDetail.configure.rightPanel.modeLabel": "Mode de configuration de lagent",
"agentDetail.configure.rightPanel.preview": "Aperçu",
"agentDetail.configure.skills.add": "Ajouter une compétence",
"agentDetail.configure.skills.detail.contentRegion": "Contenu des détails de la compétence",
"agentDetail.configure.skills.detail.fileCount": "{{count}} FICHIERS",

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "उन्नत सेटिंग्स",
"agentDetail.configure.advancedSettings.toggle": "उन्नत सेटिंग्स टॉगल करें",
"agentDetail.configure.build.empty.description": "आप जो चाहते हैं उसका वर्णन करें और बाईं ओर का फ़ॉर्म बातचीत के साथ भरता जाएगा।",
"agentDetail.configure.build.empty.title": "चैट करके अपना एजेंट बनाएं",
"agentDetail.configure.build.inputPlaceholder": "बताएं कि आपका एजेंट क्या करे",
"agentDetail.configure.chatFeatures.description": "अपने Web app और चैट सतहों पर अंतिम-उपयोगकर्ता चैट अनुभव को आकार दें।",
"agentDetail.configure.chatFeatures.title": "चैट सुविधाएँ",
"agentDetail.configure.files.add": "फ़ाइल जोड़ें",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "व्यवस्थित करें",
"agentDetail.configure.preview.chatFeatures": "चैट सुविधाएँ",
"agentDetail.configure.preview.empty.defaultAgentName": "एजेंट",
"agentDetail.configure.preview.empty.description": "वर्तमान ड्राफ्ट का परीक्षण करने के लिए एक संदेश भेजें।",
"agentDetail.configure.preview.empty.description": "एजेंट को तैयार चैट की तरह चलाएं, ठीक वैसे जैसे लोग प्रकाशित होने के बाद अनुभव करेंगे।",
"agentDetail.configure.preview.empty.noInstructionsDescription": "अभी तक कोई निर्देश नहीं, इसलिए उत्तर सामान्य मॉडल से आते हैं।",
"agentDetail.configure.preview.empty.title": "{{name}} का पूर्वावलोकन",
"agentDetail.configure.preview.endUserAuth": "अंतिम-उपयोगकर्ता प्रमाणीकरण",
"agentDetail.configure.preview.inputPlaceholder": "{{name}} को संदेश भेजें",
"agentDetail.configure.preview.restart": "पूर्वावलोकन पुनः आरंभ करें",
"agentDetail.configure.preview.title": "पूर्वावलोकन",
"agentDetail.configure.prompt.copied": "प्रॉम्प्ट कॉपी हो गया",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{name}} पर {{action}}",
"agentDetail.configure.publishImpact.workflowCount_one": "{{count}} वर्कफ़्लो",
"agentDetail.configure.publishImpact.workflowCount_other": "{{count}} वर्कफ़्लो",
"agentDetail.configure.rightPanel.build": "बिल्ड",
"agentDetail.configure.rightPanel.modeLabel": "एजेंट कॉन्फ़िगरेशन मोड",
"agentDetail.configure.rightPanel.preview": "पूर्वावलोकन",
"agentDetail.configure.skills.add": "कौशल जोड़ें",
"agentDetail.configure.skills.detail.contentRegion": "कौशल विवरण सामग्री",
"agentDetail.configure.skills.detail.fileCount": "{{count}} फ़ाइलें",

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "Pengaturan Lanjutan",
"agentDetail.configure.advancedSettings.toggle": "Alihkan pengaturan lanjutan",
"agentDetail.configure.build.empty.description": "Jelaskan yang Anda inginkan dan formulir di kiri akan terisi seiring percakapan.",
"agentDetail.configure.build.empty.title": "Bangun agen Anda lewat chat",
"agentDetail.configure.build.inputPlaceholder": "Jelaskan apa yang harus dilakukan agen Anda",
"agentDetail.configure.chatFeatures.description": "Bentuk pengalaman chat pengguna akhir di Web app dan permukaan chat Anda.",
"agentDetail.configure.chatFeatures.title": "Fitur Chat",
"agentDetail.configure.files.add": "Tambahkan file",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "Orkestrasi",
"agentDetail.configure.preview.chatFeatures": "Fitur Chat",
"agentDetail.configure.preview.empty.defaultAgentName": "Agen",
"agentDetail.configure.preview.empty.description": "Kirim pesan untuk menguji draf saat ini.",
"agentDetail.configure.preview.empty.description": "Jalankan agen sebagai chat final, persis seperti yang akan dialami orang setelah diterbitkan.",
"agentDetail.configure.preview.empty.noInstructionsDescription": "Belum ada instruksi, jadi balasan datang dari model polos.",
"agentDetail.configure.preview.empty.title": "Pratinjau {{name}}",
"agentDetail.configure.preview.endUserAuth": "Autentikasi pengguna akhir",
"agentDetail.configure.preview.inputPlaceholder": "Kirim pesan ke {{name}}",
"agentDetail.configure.preview.restart": "Mulai ulang pratinjau",
"agentDetail.configure.preview.title": "Pratinjau",
"agentDetail.configure.prompt.copied": "Prompt disalin",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{action}} ke {{name}}",
"agentDetail.configure.publishImpact.workflowCount_one": "{{count}} alur kerja",
"agentDetail.configure.publishImpact.workflowCount_other": "{{count}} alur kerja",
"agentDetail.configure.rightPanel.build": "Bangun",
"agentDetail.configure.rightPanel.modeLabel": "Mode konfigurasi agen",
"agentDetail.configure.rightPanel.preview": "Pratinjau",
"agentDetail.configure.skills.add": "Tambahkan keterampilan",
"agentDetail.configure.skills.detail.contentRegion": "Konten detail keterampilan",
"agentDetail.configure.skills.detail.fileCount": "{{count}} FILE",

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "Impostazioni avanzate",
"agentDetail.configure.advancedSettings.toggle": "Attiva/disattiva impostazioni avanzate",
"agentDetail.configure.build.empty.description": "Descrivi ciò che vuoi e il modulo a sinistra verrà compilato man mano.",
"agentDetail.configure.build.empty.title": "Crea il tuo agente con la chat",
"agentDetail.configure.build.inputPlaceholder": "Descrivi cosa dovrebbe fare il tuo agente",
"agentDetail.configure.chatFeatures.description": "Definisci lesperienza di chat per lutente finale sulla tua webapp e sulle superfici di chat.",
"agentDetail.configure.chatFeatures.title": "Funzionalità chat",
"agentDetail.configure.files.add": "Aggiungi file",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "Orchestra",
"agentDetail.configure.preview.chatFeatures": "Funzionalità chat",
"agentDetail.configure.preview.empty.defaultAgentName": "Agente",
"agentDetail.configure.preview.empty.description": "Invia un messaggio per testare la bozza corrente.",
"agentDetail.configure.preview.empty.description": "Esegui lagente come una chat completa, esattamente come verrà vissuta dopo la pubblicazione.",
"agentDetail.configure.preview.empty.noInstructionsDescription": "Nessuna istruzione ancora, quindi le risposte arrivano dal modello puro.",
"agentDetail.configure.preview.empty.title": "Anteprima di {{name}}",
"agentDetail.configure.preview.endUserAuth": "Autenticazione utente finale",
"agentDetail.configure.preview.inputPlaceholder": "Invia un messaggio a {{name}}",
"agentDetail.configure.preview.restart": "Riavvia anteprima",
"agentDetail.configure.preview.title": "Anteprima",
"agentDetail.configure.prompt.copied": "Prompt copiato",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{action}} in {{name}}",
"agentDetail.configure.publishImpact.workflowCount_one": "{{count}} workflow",
"agentDetail.configure.publishImpact.workflowCount_other": "{{count}} workflow",
"agentDetail.configure.rightPanel.build": "Crea",
"agentDetail.configure.rightPanel.modeLabel": "Modalità di configurazione agente",
"agentDetail.configure.rightPanel.preview": "Anteprima",
"agentDetail.configure.skills.add": "Aggiungi abilità",
"agentDetail.configure.skills.detail.contentRegion": "Contenuto dei dettagli dellabilità",
"agentDetail.configure.skills.detail.fileCount": "{{count}} FILE",

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "詳細設定",
"agentDetail.configure.advancedSettings.toggle": "詳細設定の表示を切り替え",
"agentDetail.configure.build.empty.description": "やりたいことを説明すると、左側のフォームが会話に合わせて入力されます。",
"agentDetail.configure.build.empty.title": "チャットでエージェントを作成",
"agentDetail.configure.build.inputPlaceholder": "エージェントに実行させたいことを説明",
"agentDetail.configure.chatFeatures.description": "Web app やチャット画面でのエンドユーザー向けチャット体験を設定します。",
"agentDetail.configure.chatFeatures.title": "チャット機能",
"agentDetail.configure.files.add": "ファイルを追加",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "オーケストレーション",
"agentDetail.configure.preview.chatFeatures": "チャット機能",
"agentDetail.configure.preview.empty.defaultAgentName": "エージェント",
"agentDetail.configure.preview.empty.description": "メッセージを送信して現在のドラフトをテストします。",
"agentDetail.configure.preview.empty.description": "公開後にユーザーが体験する完成版のチャットとしてエージェントを実行します。",
"agentDetail.configure.preview.empty.noInstructionsDescription": "指示が設定されていないため、応答はプレーンなモデルから返ります。",
"agentDetail.configure.preview.empty.title": "{{name}} をプレビュー",
"agentDetail.configure.preview.endUserAuth": "エンドユーザー認証",
"agentDetail.configure.preview.inputPlaceholder": "{{name}} にメッセージを送信",
"agentDetail.configure.preview.restart": "プレビューを再開",
"agentDetail.configure.preview.title": "プレビュー",
"agentDetail.configure.prompt.copied": "プロンプトをコピーしました",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{name}} に{{action}}",
"agentDetail.configure.publishImpact.workflowCount_one": "{{count}} 個のワークフロー",
"agentDetail.configure.publishImpact.workflowCount_other": "{{count}} 個のワークフロー",
"agentDetail.configure.rightPanel.build": "ビルド",
"agentDetail.configure.rightPanel.modeLabel": "エージェント設定モード",
"agentDetail.configure.rightPanel.preview": "プレビュー",
"agentDetail.configure.skills.add": "スキルを追加",
"agentDetail.configure.skills.detail.contentRegion": "スキル詳細コンテンツ",
"agentDetail.configure.skills.detail.fileCount": "{{count}} 個のファイル",

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "고급 설정",
"agentDetail.configure.advancedSettings.toggle": "고급 설정 전환",
"agentDetail.configure.build.empty.description": "원하는 내용을 설명하면 대화에 맞춰 왼쪽 양식이 채워집니다.",
"agentDetail.configure.build.empty.title": "채팅으로 에이전트 만들기",
"agentDetail.configure.build.inputPlaceholder": "에이전트가 해야 할 일을 설명하세요",
"agentDetail.configure.chatFeatures.description": "Web app 및 채팅 화면에서의 최종 사용자 채팅 경험을 구성합니다.",
"agentDetail.configure.chatFeatures.title": "채팅 기능",
"agentDetail.configure.files.add": "파일 추가",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "오케스트레이션",
"agentDetail.configure.preview.chatFeatures": "채팅 기능",
"agentDetail.configure.preview.empty.defaultAgentName": "에이전트",
"agentDetail.configure.preview.empty.description": "현재 초안을 테스트하려면 메시지를 보내세요.",
"agentDetail.configure.preview.empty.description": "게시 후 사용자가 경험할 완성된 채팅처럼 에이전트를 실행합니다.",
"agentDetail.configure.preview.empty.noInstructionsDescription": "아직 지시 사항이 없어 답변은 기본 모델에서 제공됩니다.",
"agentDetail.configure.preview.empty.title": "{{name}} 미리보기",
"agentDetail.configure.preview.endUserAuth": "최종 사용자 인증",
"agentDetail.configure.preview.inputPlaceholder": "{{name}}에게 메시지 보내기",
"agentDetail.configure.preview.restart": "미리보기 다시 시작",
"agentDetail.configure.preview.title": "미리보기",
"agentDetail.configure.prompt.copied": "프롬프트를 복사했습니다",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{name}}에 {{action}}",
"agentDetail.configure.publishImpact.workflowCount_one": "워크플로 {{count}}개",
"agentDetail.configure.publishImpact.workflowCount_other": "워크플로 {{count}}개",
"agentDetail.configure.rightPanel.build": "빌드",
"agentDetail.configure.rightPanel.modeLabel": "에이전트 구성 모드",
"agentDetail.configure.rightPanel.preview": "미리보기",
"agentDetail.configure.skills.add": "스킬 추가",
"agentDetail.configure.skills.detail.contentRegion": "스킬 상세 내용",
"agentDetail.configure.skills.detail.fileCount": "파일 {{count}}개",

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "Geavanceerde instellingen",
"agentDetail.configure.advancedSettings.toggle": "Geavanceerde instellingen in/uit",
"agentDetail.configure.build.empty.description": "Beschrijf wat je wilt en het formulier links wordt gaandeweg ingevuld.",
"agentDetail.configure.build.empty.title": "Bouw je agent via chat",
"agentDetail.configure.build.inputPlaceholder": "Beschrijf wat je agent moet doen",
"agentDetail.configure.chatFeatures.description": "Geef vorm aan de chatervaring voor eindgebruikers in je webapp en chatoppervlakken.",
"agentDetail.configure.chatFeatures.title": "Chatfuncties",
"agentDetail.configure.files.add": "Bestand toevoegen",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "Orkestreren",
"agentDetail.configure.preview.chatFeatures": "Chatfuncties",
"agentDetail.configure.preview.empty.defaultAgentName": "Agent",
"agentDetail.configure.preview.empty.description": "Stuur een bericht om het huidige concept te testen.",
"agentDetail.configure.preview.empty.description": "Voer de agent uit als een afgeronde chat, precies zoals mensen die na publicatie ervaren.",
"agentDetail.configure.preview.empty.noInstructionsDescription": "Nog geen instructies, dus antwoorden komen van het kale model.",
"agentDetail.configure.preview.empty.title": "Voorbeeld van {{name}}",
"agentDetail.configure.preview.endUserAuth": "Authenticatie eindgebruiker",
"agentDetail.configure.preview.inputPlaceholder": "Bericht sturen naar {{name}}",
"agentDetail.configure.preview.restart": "Voorbeeld opnieuw starten",
"agentDetail.configure.preview.title": "Voorbeeld",
"agentDetail.configure.prompt.copied": "Prompt gekopieerd",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{action}} naar {{name}}",
"agentDetail.configure.publishImpact.workflowCount_one": "{{count}} workflow",
"agentDetail.configure.publishImpact.workflowCount_other": "{{count}} workflows",
"agentDetail.configure.rightPanel.build": "Bouwen",
"agentDetail.configure.rightPanel.modeLabel": "Agentconfiguratiemodus",
"agentDetail.configure.rightPanel.preview": "Voorbeeld",
"agentDetail.configure.skills.add": "Skill toevoegen",
"agentDetail.configure.skills.detail.contentRegion": "Skill-detailinhoud",
"agentDetail.configure.skills.detail.fileCount": "{{count}} BESTANDEN",

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "Ustawienia zaawansowane",
"agentDetail.configure.advancedSettings.toggle": "Przełącz ustawienia zaawansowane",
"agentDetail.configure.build.empty.description": "Opisz, czego chcesz, a formularz po lewej będzie wypełniany w trakcie rozmowy.",
"agentDetail.configure.build.empty.title": "Buduj agenta przez czat",
"agentDetail.configure.build.inputPlaceholder": "Opisz, co agent ma robić",
"agentDetail.configure.chatFeatures.description": "Ukształtuj doświadczenie czatu użytkownika końcowego w aplikacji webowej i powierzchniach czatu.",
"agentDetail.configure.chatFeatures.title": "Funkcje czatu",
"agentDetail.configure.files.add": "Dodaj plik",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "Orkiestracja",
"agentDetail.configure.preview.chatFeatures": "Funkcje czatu",
"agentDetail.configure.preview.empty.defaultAgentName": "Agent",
"agentDetail.configure.preview.empty.description": "Wyślij wiadomość, aby przetestować bieżącą wersję roboczą.",
"agentDetail.configure.preview.empty.description": "Uruchom agenta jako gotowy czat, dokładnie tak, jak zobaczą go użytkownicy po publikacji.",
"agentDetail.configure.preview.empty.noInstructionsDescription": "Brak instrukcji, więc odpowiedzi pochodzą z podstawowego modelu.",
"agentDetail.configure.preview.empty.title": "Podgląd {{name}}",
"agentDetail.configure.preview.endUserAuth": "Uwierzytelnianie użytkownika końcowego",
"agentDetail.configure.preview.inputPlaceholder": "Wyślij wiadomość do {{name}}",
"agentDetail.configure.preview.restart": "Uruchom podgląd ponownie",
"agentDetail.configure.preview.title": "Podgląd",
"agentDetail.configure.prompt.copied": "Prompt skopiowany",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{action}} do {{name}}",
"agentDetail.configure.publishImpact.workflowCount_one": "{{count}} workflow",
"agentDetail.configure.publishImpact.workflowCount_other": "{{count}} workflow",
"agentDetail.configure.rightPanel.build": "Buduj",
"agentDetail.configure.rightPanel.modeLabel": "Tryb konfiguracji agenta",
"agentDetail.configure.rightPanel.preview": "Podgląd",
"agentDetail.configure.skills.add": "Dodaj umiejętność",
"agentDetail.configure.skills.detail.contentRegion": "Zawartość szczegółów umiejętności",
"agentDetail.configure.skills.detail.fileCount": "{{count}} PLIKÓW",

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "Configurações avançadas",
"agentDetail.configure.advancedSettings.toggle": "Alternar configurações avançadas",
"agentDetail.configure.build.empty.description": "Descreva o que você quer e o formulário à esquerda será preenchido conforme a conversa avança.",
"agentDetail.configure.build.empty.title": "Crie seu agente conversando",
"agentDetail.configure.build.inputPlaceholder": "Descreva o que seu agente deve fazer",
"agentDetail.configure.chatFeatures.description": "Modele a experiência de chat do usuário final no seu webapp e superfícies de chat.",
"agentDetail.configure.chatFeatures.title": "Recursos de chat",
"agentDetail.configure.files.add": "Adicionar arquivo",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "Orquestrar",
"agentDetail.configure.preview.chatFeatures": "Recursos de chat",
"agentDetail.configure.preview.empty.defaultAgentName": "Agente",
"agentDetail.configure.preview.empty.description": "Envie uma mensagem para testar o rascunho atual.",
"agentDetail.configure.preview.empty.description": "Execute o agente como um chat finalizado, exatamente como as pessoas verão após a publicação.",
"agentDetail.configure.preview.empty.noInstructionsDescription": "Ainda não há instruções, então as respostas virão do modelo puro.",
"agentDetail.configure.preview.empty.title": "Pré-visualizar {{name}}",
"agentDetail.configure.preview.endUserAuth": "Autenticação do usuário final",
"agentDetail.configure.preview.inputPlaceholder": "Enviar mensagem para {{name}}",
"agentDetail.configure.preview.restart": "Reiniciar pré-visualização",
"agentDetail.configure.preview.title": "Pré-visualização",
"agentDetail.configure.prompt.copied": "Prompt copiado",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{action}} em {{name}}",
"agentDetail.configure.publishImpact.workflowCount_one": "{{count}} workflow",
"agentDetail.configure.publishImpact.workflowCount_other": "{{count}} workflows",
"agentDetail.configure.rightPanel.build": "Criar",
"agentDetail.configure.rightPanel.modeLabel": "Modo de configuração do agente",
"agentDetail.configure.rightPanel.preview": "Pré-visualização",
"agentDetail.configure.skills.add": "Adicionar habilidade",
"agentDetail.configure.skills.detail.contentRegion": "Conteúdo dos detalhes da habilidade",
"agentDetail.configure.skills.detail.fileCount": "{{count}} ARQUIVOS",

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "Setări avansate",
"agentDetail.configure.advancedSettings.toggle": "Comută setările avansate",
"agentDetail.configure.build.empty.description": "Descrie ce dorești, iar formularul din stânga se completează pe măsură ce avansezi.",
"agentDetail.configure.build.empty.title": "Construiește agentul prin chat",
"agentDetail.configure.build.inputPlaceholder": "Descrie ce ar trebui să facă agentul tău",
"agentDetail.configure.chatFeatures.description": "Modelează experiența de chat a utilizatorului final pe webapp-ul tău și pe suprafețele de chat.",
"agentDetail.configure.chatFeatures.title": "Funcții de chat",
"agentDetail.configure.files.add": "Adaugă fișier",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "Orchestrare",
"agentDetail.configure.preview.chatFeatures": "Funcții de chat",
"agentDetail.configure.preview.empty.defaultAgentName": "Agent",
"agentDetail.configure.preview.empty.description": "Trimiteți un mesaj pentru a testa ciorna curentă.",
"agentDetail.configure.preview.empty.description": "Rulează agentul ca un chat finalizat, exact cum îl vor experimenta utilizatorii după publicare.",
"agentDetail.configure.preview.empty.noInstructionsDescription": "Nu există încă instrucțiuni, așa că răspunsurile vin de la modelul de bază.",
"agentDetail.configure.preview.empty.title": "Previzualizează {{name}}",
"agentDetail.configure.preview.endUserAuth": "Autentificare utilizator final",
"agentDetail.configure.preview.inputPlaceholder": "Trimite mesaj către {{name}}",
"agentDetail.configure.preview.restart": "Reporniți previzualizarea",
"agentDetail.configure.preview.title": "Previzualizare",
"agentDetail.configure.prompt.copied": "Prompt copiat",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{action}} pentru {{name}}",
"agentDetail.configure.publishImpact.workflowCount_one": "{{count}} workflow",
"agentDetail.configure.publishImpact.workflowCount_other": "{{count}} workflow-uri",
"agentDetail.configure.rightPanel.build": "Construire",
"agentDetail.configure.rightPanel.modeLabel": "Mod de configurare agent",
"agentDetail.configure.rightPanel.preview": "Previzualizare",
"agentDetail.configure.skills.add": "Adaugă abilitate",
"agentDetail.configure.skills.detail.contentRegion": "Conținutul detaliilor abilității",
"agentDetail.configure.skills.detail.fileCount": "{{count}} FIȘIERE",

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "Расширенные настройки",
"agentDetail.configure.advancedSettings.toggle": "Переключить расширенные настройки",
"agentDetail.configure.build.empty.description": "Опишите, что вам нужно, и форма слева будет заполняться по ходу диалога.",
"agentDetail.configure.build.empty.title": "Создайте агента в чате",
"agentDetail.configure.build.inputPlaceholder": "Опишите, что должен делать агент",
"agentDetail.configure.chatFeatures.description": "Настройте чат-опыт конечного пользователя в вашем веб-приложении и чат-поверхностях.",
"agentDetail.configure.chatFeatures.title": "Функции чата",
"agentDetail.configure.files.add": "Добавить файл",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "Оркестрация",
"agentDetail.configure.preview.chatFeatures": "Функции чата",
"agentDetail.configure.preview.empty.defaultAgentName": "Агент",
"agentDetail.configure.preview.empty.description": "Отправьте сообщение, чтобы протестировать текущий черновик.",
"agentDetail.configure.preview.empty.description": "Запустите агента как готовый чат, именно так, как его увидят пользователи после публикации.",
"agentDetail.configure.preview.empty.noInstructionsDescription": "Инструкций пока нет, поэтому ответы приходят от базовой модели.",
"agentDetail.configure.preview.empty.title": "Предпросмотр {{name}}",
"agentDetail.configure.preview.endUserAuth": "Аутентификация конечного пользователя",
"agentDetail.configure.preview.inputPlaceholder": "Написать {{name}}",
"agentDetail.configure.preview.restart": "Перезапустить предпросмотр",
"agentDetail.configure.preview.title": "Предпросмотр",
"agentDetail.configure.prompt.copied": "Промпт скопирован",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{action}} в {{name}}",
"agentDetail.configure.publishImpact.workflowCount_one": "{{count}} рабочий процесс",
"agentDetail.configure.publishImpact.workflowCount_other": "{{count}} рабочих процессов",
"agentDetail.configure.rightPanel.build": "Сборка",
"agentDetail.configure.rightPanel.modeLabel": "Режим настройки агента",
"agentDetail.configure.rightPanel.preview": "Предпросмотр",
"agentDetail.configure.skills.add": "Добавить навык",
"agentDetail.configure.skills.detail.contentRegion": "Содержимое деталей навыка",
"agentDetail.configure.skills.detail.fileCount": "{{count}} ФАЙЛОВ",

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "Napredne nastavitve",
"agentDetail.configure.advancedSettings.toggle": "Preklopi napredne nastavitve",
"agentDetail.configure.build.empty.description": "Opišite, kaj želite, in obrazec na levi se bo sproti izpolnjeval.",
"agentDetail.configure.build.empty.title": "Izdelajte agenta s klepetom",
"agentDetail.configure.build.inputPlaceholder": "Opišite, kaj naj vaš agent počne",
"agentDetail.configure.chatFeatures.description": "Oblikujte uporabniško izkušnjo klepeta v vaši spletni aplikaciji in klepetalnih površinah.",
"agentDetail.configure.chatFeatures.title": "Funkcije klepeta",
"agentDetail.configure.files.add": "Dodaj datoteko",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "Orkestracija",
"agentDetail.configure.preview.chatFeatures": "Funkcije klepeta",
"agentDetail.configure.preview.empty.defaultAgentName": "Agent",
"agentDetail.configure.preview.empty.description": "Pošljite sporočilo, da preizkusite trenutni osnutek.",
"agentDetail.configure.preview.empty.description": "Zaženite agenta kot dokončan klepet, natanko tako, kot ga bodo uporabniki doživeli po objavi.",
"agentDetail.configure.preview.empty.noInstructionsDescription": "Ni še navodil, zato odgovori prihajajo iz osnovnega modela.",
"agentDetail.configure.preview.empty.title": "Predogled {{name}}",
"agentDetail.configure.preview.endUserAuth": "Preverjanje pristnosti končnega uporabnika",
"agentDetail.configure.preview.inputPlaceholder": "Pošlji sporočilo za {{name}}",
"agentDetail.configure.preview.restart": "Znova zaženi predogled",
"agentDetail.configure.preview.title": "Predogled",
"agentDetail.configure.prompt.copied": "Poziv kopiran",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{action}} v {{name}}",
"agentDetail.configure.publishImpact.workflowCount_one": "{{count}} potek dela",
"agentDetail.configure.publishImpact.workflowCount_other": "{{count}} potekov dela",
"agentDetail.configure.rightPanel.build": "Izdelaj",
"agentDetail.configure.rightPanel.modeLabel": "Način konfiguracije agenta",
"agentDetail.configure.rightPanel.preview": "Predogled",
"agentDetail.configure.skills.add": "Dodaj veščino",
"agentDetail.configure.skills.detail.contentRegion": "Vsebina podrobnosti veščine",
"agentDetail.configure.skills.detail.fileCount": "{{count}} DATOTEK",

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "การตั้งค่าขั้นสูง",
"agentDetail.configure.advancedSettings.toggle": "สลับการตั้งค่าขั้นสูง",
"agentDetail.configure.build.empty.description": "อธิบายสิ่งที่คุณต้องการ แล้วแบบฟอร์มด้านซ้ายจะถูกกรอกไปพร้อมกับการสนทนา",
"agentDetail.configure.build.empty.title": "สร้างเอเจนต์ของคุณด้วยการแชท",
"agentDetail.configure.build.inputPlaceholder": "อธิบายว่าเอเจนต์ของคุณควรทำอะไร",
"agentDetail.configure.chatFeatures.description": "กำหนดประสบการณ์การแชทของผู้ใช้ปลายทางบน Web app และหน้าจอแชท",
"agentDetail.configure.chatFeatures.title": "ฟีเจอร์แชท",
"agentDetail.configure.files.add": "เพิ่มไฟล์",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "การจัดการ",
"agentDetail.configure.preview.chatFeatures": "ฟีเจอร์แชท",
"agentDetail.configure.preview.empty.defaultAgentName": "ตัวแทน",
"agentDetail.configure.preview.empty.description": "ส่งข้อความเพื่อทดสอบฉบับร่างปัจจุบัน",
"agentDetail.configure.preview.empty.description": "เรียกใช้เอเจนต์เป็นแชทที่เสร็จสมบูรณ์ เหมือนที่ผู้ใช้จะได้รับหลังเผยแพร่",
"agentDetail.configure.preview.empty.noInstructionsDescription": "ยังไม่มีคำสั่ง ดังนั้นการตอบกลับจะมาจากโมเดลพื้นฐาน",
"agentDetail.configure.preview.empty.title": "แสดงตัวอย่าง {{name}}",
"agentDetail.configure.preview.endUserAuth": "การยืนยันตัวตนของผู้ใช้ปลายทาง",
"agentDetail.configure.preview.inputPlaceholder": "ส่งข้อความถึง {{name}}",
"agentDetail.configure.preview.restart": "เริ่มการแสดงตัวอย่างใหม่",
"agentDetail.configure.preview.title": "แสดงตัวอย่าง",
"agentDetail.configure.prompt.copied": "คัดลอกพรอมต์แล้ว",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{action}}ไปยัง {{name}}",
"agentDetail.configure.publishImpact.workflowCount_one": "เวิร์กโฟลว์ {{count}} รายการ",
"agentDetail.configure.publishImpact.workflowCount_other": "เวิร์กโฟลว์ {{count}} รายการ",
"agentDetail.configure.rightPanel.build": "สร้าง",
"agentDetail.configure.rightPanel.modeLabel": "โหมดการกำหนดค่าเอเจนต์",
"agentDetail.configure.rightPanel.preview": "แสดงตัวอย่าง",
"agentDetail.configure.skills.add": "เพิ่มทักษะ",
"agentDetail.configure.skills.detail.contentRegion": "เนื้อหารายละเอียดทักษะ",
"agentDetail.configure.skills.detail.fileCount": "{{count}} ไฟล์",

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "Gelişmiş Ayarlar",
"agentDetail.configure.advancedSettings.toggle": "Gelişmiş ayarları değiştir",
"agentDetail.configure.build.empty.description": "Ne istediğinizi açıklayın; soldaki form ilerledikçe doldurulur.",
"agentDetail.configure.build.empty.title": "Aracınızı sohbet ederek oluşturun",
"agentDetail.configure.build.inputPlaceholder": "Aracınızın ne yapması gerektiğini açıklayın",
"agentDetail.configure.chatFeatures.description": "Web app ve sohbet yüzeylerinizde son kullanıcı sohbet deneyimini şekillendirin.",
"agentDetail.configure.chatFeatures.title": "Sohbet Özellikleri",
"agentDetail.configure.files.add": "Dosya ekle",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "Koordine Et",
"agentDetail.configure.preview.chatFeatures": "Sohbet Özellikleri",
"agentDetail.configure.preview.empty.defaultAgentName": "Ajan",
"agentDetail.configure.preview.empty.description": "Mevcut taslağı test etmek için bir mesaj gönderin.",
"agentDetail.configure.preview.empty.description": "Aracıyı yayınlandıktan sonra kullanıcıların deneyimleyeceği tamamlanmış sohbet olarak çalıştırın.",
"agentDetail.configure.preview.empty.noInstructionsDescription": "Henüz talimat yok, bu yüzden yanıtlar düz modelden geliyor.",
"agentDetail.configure.preview.empty.title": "{{name}} önizlemesi",
"agentDetail.configure.preview.endUserAuth": "Son kullanıcı kimlik doğrulaması",
"agentDetail.configure.preview.inputPlaceholder": "{{name}} ile mesajlaş",
"agentDetail.configure.preview.restart": "Önizlemeyi yeniden başlat",
"agentDetail.configure.preview.title": "Önizleme",
"agentDetail.configure.prompt.copied": "İstem kopyalandı",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{name}} için {{action}}",
"agentDetail.configure.publishImpact.workflowCount_one": "{{count}} iş akışı",
"agentDetail.configure.publishImpact.workflowCount_other": "{{count}} iş akışı",
"agentDetail.configure.rightPanel.build": "Oluştur",
"agentDetail.configure.rightPanel.modeLabel": "Aracı yapılandırma modu",
"agentDetail.configure.rightPanel.preview": "Önizleme",
"agentDetail.configure.skills.add": "Beceri ekle",
"agentDetail.configure.skills.detail.contentRegion": "Beceri detay içeriği",
"agentDetail.configure.skills.detail.fileCount": "{{count}} DOSYA",

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "Розширені налаштування",
"agentDetail.configure.advancedSettings.toggle": "Перемкнути розширені налаштування",
"agentDetail.configure.build.empty.description": "Опишіть, що вам потрібно, і форма ліворуч заповнюватиметься під час розмови.",
"agentDetail.configure.build.empty.title": "Створіть агента через чат",
"agentDetail.configure.build.inputPlaceholder": "Опишіть, що має робити ваш агент",
"agentDetail.configure.chatFeatures.description": "Налаштуйте чат-досвід кінцевого користувача у вашому веб-застосунку та чат-поверхнях.",
"agentDetail.configure.chatFeatures.title": "Функції чату",
"agentDetail.configure.files.add": "Додати файл",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "Оркестрація",
"agentDetail.configure.preview.chatFeatures": "Функції чату",
"agentDetail.configure.preview.empty.defaultAgentName": "Агент",
"agentDetail.configure.preview.empty.description": "Надішліть повідомлення, щоб протестувати поточний чернетку.",
"agentDetail.configure.preview.empty.description": "Запустіть агента як готовий чат, саме так, як його побачать користувачі після публікації.",
"agentDetail.configure.preview.empty.noInstructionsDescription": "Інструкцій ще немає, тому відповіді надходять від базової моделі.",
"agentDetail.configure.preview.empty.title": "Перегляд {{name}}",
"agentDetail.configure.preview.endUserAuth": "Автентифікація кінцевого користувача",
"agentDetail.configure.preview.inputPlaceholder": "Надіслати повідомлення {{name}}",
"agentDetail.configure.preview.restart": "Перезапустити перегляд",
"agentDetail.configure.preview.title": "Перегляд",
"agentDetail.configure.prompt.copied": "Промпт скопійовано",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{action}} до {{name}}",
"agentDetail.configure.publishImpact.workflowCount_one": "{{count}} робочий процес",
"agentDetail.configure.publishImpact.workflowCount_other": "{{count}} робочих процесів",
"agentDetail.configure.rightPanel.build": "Створення",
"agentDetail.configure.rightPanel.modeLabel": "Режим налаштування агента",
"agentDetail.configure.rightPanel.preview": "Перегляд",
"agentDetail.configure.skills.add": "Додати навичку",
"agentDetail.configure.skills.detail.contentRegion": "Вміст деталей навички",
"agentDetail.configure.skills.detail.fileCount": "{{count}} ФАЙЛІВ",

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "Cài đặt nâng cao",
"agentDetail.configure.advancedSettings.toggle": "Bật/tắt cài đặt nâng cao",
"agentDetail.configure.build.empty.description": "Mô tả điều bạn muốn và biểu mẫu bên trái sẽ được điền dần khi trò chuyện.",
"agentDetail.configure.build.empty.title": "Xây dựng tác nhân bằng trò chuyện",
"agentDetail.configure.build.inputPlaceholder": "Mô tả tác nhân của bạn nên làm gì",
"agentDetail.configure.chatFeatures.description": "Định hình trải nghiệm trò chuyện cho người dùng cuối trên Web app và các bề mặt trò chuyện.",
"agentDetail.configure.chatFeatures.title": "Tính năng trò chuyện",
"agentDetail.configure.files.add": "Thêm tệp",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "Điều phối",
"agentDetail.configure.preview.chatFeatures": "Tính năng trò chuyện",
"agentDetail.configure.preview.empty.defaultAgentName": "Tác nhân",
"agentDetail.configure.preview.empty.description": "Gửi một tin nhắn để thử nghiệm bản nháp hiện tại.",
"agentDetail.configure.preview.empty.description": "Chạy tác nhân như một cuộc trò chuyện hoàn chỉnh, đúng như người dùng sẽ trải nghiệm sau khi xuất bản.",
"agentDetail.configure.preview.empty.noInstructionsDescription": "Chưa có hướng dẫn, vì vậy câu trả lời đến từ mô hình thuần.",
"agentDetail.configure.preview.empty.title": "Xem trước {{name}}",
"agentDetail.configure.preview.endUserAuth": "Xác thực người dùng cuối",
"agentDetail.configure.preview.inputPlaceholder": "Nhắn cho {{name}}",
"agentDetail.configure.preview.restart": "Khởi động lại bản xem trước",
"agentDetail.configure.preview.title": "Xem trước",
"agentDetail.configure.prompt.copied": "Đã sao chép lời nhắc",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{action}} đến {{name}}",
"agentDetail.configure.publishImpact.workflowCount_one": "{{count}} quy trình làm việc",
"agentDetail.configure.publishImpact.workflowCount_other": "{{count}} quy trình làm việc",
"agentDetail.configure.rightPanel.build": "Xây dựng",
"agentDetail.configure.rightPanel.modeLabel": "Chế độ cấu hình tác nhân",
"agentDetail.configure.rightPanel.preview": "Xem trước",
"agentDetail.configure.skills.add": "Thêm kỹ năng",
"agentDetail.configure.skills.detail.contentRegion": "Nội dung chi tiết kỹ năng",
"agentDetail.configure.skills.detail.fileCount": "{{count}} TỆP",

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "高级设置",
"agentDetail.configure.advancedSettings.toggle": "展开或收起高级设置",
"agentDetail.configure.build.empty.description": "描述你的需求,它会随着对话填写左侧表单。",
"agentDetail.configure.build.empty.title": "通过对话构建智能体",
"agentDetail.configure.build.inputPlaceholder": "描述你的智能体应该做什么",
"agentDetail.configure.chatFeatures.description": "配置 Web app 和聊天界面的终端用户聊天体验。",
"agentDetail.configure.chatFeatures.title": "Chat 功能",
"agentDetail.configure.files.add": "添加文件",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "编排",
"agentDetail.configure.preview.chatFeatures": "Chat 功能",
"agentDetail.configure.preview.empty.defaultAgentName": "智能体",
"agentDetail.configure.preview.empty.description": "发送一条消息来测试当前草稿。",
"agentDetail.configure.preview.empty.description": "像已发布后用户体验到的那样运行智能体。",
"agentDetail.configure.preview.empty.noInstructionsDescription": "尚未设置指令,回复将来自基础模型。",
"agentDetail.configure.preview.empty.title": "预览 {{name}}",
"agentDetail.configure.preview.endUserAuth": "终端用户认证",
"agentDetail.configure.preview.inputPlaceholder": "向 {{name}} 发送消息",
"agentDetail.configure.preview.restart": "重新开始预览",
"agentDetail.configure.preview.title": "预览",
"agentDetail.configure.prompt.copied": "提示词已复制",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{action}}到 {{name}}",
"agentDetail.configure.publishImpact.workflowCount_one": "{{count}} 个工作流",
"agentDetail.configure.publishImpact.workflowCount_other": "{{count}} 个工作流",
"agentDetail.configure.rightPanel.build": "构建",
"agentDetail.configure.rightPanel.modeLabel": "智能体配置模式",
"agentDetail.configure.rightPanel.preview": "预览",
"agentDetail.configure.skills.add": "添加技能",
"agentDetail.configure.skills.detail.contentRegion": "技能详情内容",
"agentDetail.configure.skills.detail.fileCount": "{{count}} 个文件",

View File

@ -74,6 +74,9 @@
"agentDetail.configure.advancedSettings.envEditor.valuePlaceholder": "Value",
"agentDetail.configure.advancedSettings.label": "進階設定",
"agentDetail.configure.advancedSettings.toggle": "展開或收合進階設定",
"agentDetail.configure.build.empty.description": "描述你的需求,它會隨著對話填寫左側表單。",
"agentDetail.configure.build.empty.title": "透過對話建置智能體",
"agentDetail.configure.build.inputPlaceholder": "描述你的智能體應該做什麼",
"agentDetail.configure.chatFeatures.description": "配置 Web app 和聊天介面的終端使用者聊天體驗。",
"agentDetail.configure.chatFeatures.title": "Chat 功能",
"agentDetail.configure.files.add": "新增檔案",
@ -131,9 +134,11 @@
"agentDetail.configure.orchestrate": "編排",
"agentDetail.configure.preview.chatFeatures": "Chat 功能",
"agentDetail.configure.preview.empty.defaultAgentName": "智能體",
"agentDetail.configure.preview.empty.description": "傳送一則訊息以測試目前草稿。",
"agentDetail.configure.preview.empty.description": "像發布後使用者體驗到的那樣執行智能體。",
"agentDetail.configure.preview.empty.noInstructionsDescription": "尚未設定指令,回覆將來自基礎模型。",
"agentDetail.configure.preview.empty.title": "預覽 {{name}}",
"agentDetail.configure.preview.endUserAuth": "終端使用者驗證",
"agentDetail.configure.preview.inputPlaceholder": "傳訊息給 {{name}}",
"agentDetail.configure.preview.restart": "重新開始預覽",
"agentDetail.configure.preview.title": "預覽",
"agentDetail.configure.prompt.copied": "提示詞已複製",
@ -167,6 +172,9 @@
"agentDetail.configure.publishImpact.title": "{{action}}到 {{name}}",
"agentDetail.configure.publishImpact.workflowCount_one": "{{count}} 個工作流程",
"agentDetail.configure.publishImpact.workflowCount_other": "{{count}} 個工作流程",
"agentDetail.configure.rightPanel.build": "建置",
"agentDetail.configure.rightPanel.modeLabel": "智能體配置模式",
"agentDetail.configure.rightPanel.preview": "預覽",
"agentDetail.configure.skills.add": "新增技能",
"agentDetail.configure.skills.detail.contentRegion": "技能詳情內容",
"agentDetail.configure.skills.detail.fileCount": "{{count}} 個檔案",