MEMORY_SYSTEM_MESSAGE_ERROR={0}
MEMORY_SYSTEM_SEARCH_ERROR={0}
INTELLIGENT_AGENT_PLATFORM_ERROR={0}
ONE_CLIENT_ERROR=One click publishing creation failed, missing intelligent agent ID
CHAT_AGENT_URL_NULL_ERROR=chat agent url is null, please setting the chat server url
CHAT_AGENT_SUGGESTION_QUESTIONS=You are an intelligent Q&A assistant responsible for generating up to 3 related question suggestions based on user input. Please strictly follow the JSON format below for output without any additional information or explanation:\n\n{\n \"relatedQuestions\": [\n \"Related Question 1?\",\n \"Related Question 2?\",\n \"Related Question 3?\"\n ]\n}\n\n\nIf it is not possible to generate related questions, please return an empty array. Note: Each generated question must not exceed 20 characters in length, and in English, it must not exceed 20 words. The returned content must be in standard JSON format, and the questions must end with a question mark, without adding any comments, explanations, Markdown format (e.g., do not use ```json), and no other fields. My question is: @question

# MenTaskOpenApiQo validation messages
mentaskopenapiqo.systemcode.notempty=Source system code cannot be empty
mentaskopenapiqo.systemcode.invalid=Source system code can only be BYAI, BOT, WHALE+, UIAGENT
mentaskopenapiqo.recusercode.notempty=Receiving user cannot be empty
mentaskopenapiqo.contenttype.notempty=Message type cannot be empty
mentaskopenapiqo.contentshowcard.notempty=Message display card cannot be empty
mentaskopenapiqo.opertype.notempty=The operation type can only be add or update

# MenTaskDeleteQo validation messages
mentaskdeleteqo.deletereason.maxlength=Delete reason maximum length is 500 characters
mentaskdeleteqo.deletetype.notempty=Delete type cannot be empty
mentaskdeleteqo.deletetype.invalid=Delete type can only be SINGLE or BATCH

# MenTaskDeleteQo error messages
error.mentask.delete.required.ids=Must provide at least one of taskIds, taskExtIds or resourceIds
error.mentask.delete.multiple.ids=Can only provide one of taskIds, taskExtIds or resourceIds, cannot provide multiple types
error.mentask.delete.byai.required.ids=BYAI system must provide taskIds or resourceIds
error.mentask.delete.external.required.ids=External system must provide taskExtIds or resourceIds

# MenTaskQueryByResourceQo validation messages
mentaskquerybyresourceqo.systemcode.notempty=Source system code cannot be empty
mentaskquerybyresourceqo.systemcode.invalid=Source system code can only be BYAI, BOT, WHALE+, UIAGENT
mentaskquerybyresourceqo.resourceid.notempty=Resource ID cannot be empty
mentaskquerybyresourceqo.resourceid.maxlength=Resource ID maximum length is 50 characters

# MenTaskQueryByResourceQo error messages
error.mentask.query.resourceid.required=Must provide resource ID
error.mentask.query.status.filter.conflict=Status filter parameters cannot be used simultaneously

# MenTaskDto validation messages
mentaskdto.tasktype.notempty=Task type cannot be empty
mentaskdto.title.notempty=Message title cannot be empty
mentaskdto.title.maxlength=Message title maximum length is 200 characters
mentaskdto.content.notempty=Message content cannot be empty
mentaskdto.statuscd.notempty=Task status cannot be empty
mentaskdto.taskextid.notempty=External task identifier cannot be empty

# WaManagerController validation messages
wamanagercontroller.style.notempty=Storage type cannot be empty, currently supports MINIO
wamanagercontroller.bucketname.notempty=Bucket name cannot be empty
wamanagercontroller.filename.notempty=File name cannot be empty

# storage file validation
storage.abstract.file.path.cannot.be.empty=File path cannot be empty
storage.abstract.file.bucket.name.cannot.be.empty=File bucketName cannot be empty
byclaw.fs.multipart.file.cannot.be.empty=Multipart file cannot be empty
byclaw.fs.input.stream.cannot.be.empty=File input stream cannot be empty
byclaw.fs.write.size.invalid=File size is invalid
byclaw.fs.write.directory.original.filename.cannot.be.empty=Original filename cannot be empty when writing to a directory
resource.json.file.empty=Resource JSON file cannot be empty: {0}
resource.json.content.read.failed=Failed to read resource JSON content: {0}
resource.json.object.required=Resource JSON content must be a JSON object: {0}
resource.json.parse.failed=Failed to parse resource JSON content: {0}
byclaw.fs.file.path.contains.traversal=File path cannot contain .. traversal segments
byclaw.fs.write.file.failed=ByclawFS file write failed: {0}
byclaw.personal.agent.archive.list.query.success=Personal agent tar.gz list queried successfully
byclaw.personal.agent.archive.list.query.failed=Failed to query personal agent tar.gz list
byclaw.personal.agent.archive.empty=Uploaded tar.gz file cannot be empty
byclaw.personal.agent.archive.file.invalid=Uploaded file must be in tar.gz format
byclaw.personal.agent.archive.upload.success=Personal agent tar.gz uploaded successfully
byclaw.personal.agent.archive.upload.failed=Failed to upload personal agent tar.gz
byclaw.personal.agent.archive.path.invalid=tar.gz path must be under /.personal-agents/{resourceId}/
byclaw.personal.agent.archive.notfound=tar.gz file does not exist or has already been deleted
byclaw.personal.agent.archive.download.failed=Failed to download personal agent tar.gz
byclaw.personal.agent.archive.delete.success=Personal agent tar.gz deleted successfully
byclaw.personal.agent.archive.delete.failed=Failed to delete personal agent tar.gz


# DocRetrieveDto validation messages
docretrievedto.query.notempty=User input retrieval question cannot be empty
docretrievedto.querytype.notempty=Retrieval type cannot be empty
docretrievedto.datasetids.notempty=Dataset ID list for retrieval cannot be empty

# OpenResourceApplicationService validation messages
openresourceapplicationservice.querytype.notempty=Retrieval type cannot be empty

# AgentPromptQo validation messages
agentpromptqo.agentname.notempty=Name cannot be empty
agentpromptqo.agentdescription.notempty=Description cannot be empty

# FeignManagerService validation messages
feignmanagerservice.userid.notempty=Query user identifier cannot be empty

# FileDto validation messages
filedto.datasetid.notempty=Document library ID cannot be empty

# DirAndFileDto validation messages
dirandfiledto.datasetid.notempty=Knowledge base ID cannot be empty
dirandfiledto.parentid.notempty=Directory ID cannot be empty

# DirTreeDto validation messages
dirtreedto.datasetid.notempty=Asset ID cannot be empty

# AgtResourceQuery validation messages
agtresourcequery.pagenum.notempty=Page number cannot be empty
agtresourcequery.pagenum.min=Page number must be greater than or equal to 1
agtresourcequery.pagesize.notempty=Page size cannot be empty
agtresourcequery.pagesize.min=Page size must be greater than or equal to 1
agtresourcequery.queryresourcetype.notempty=Resource type cannot be empty
agtresourcequery.resourcepageflag.notempty=Filter agent flag cannot be empty

# ResourceQo validation messages
resourceqo.pagenum.notempty=Page number cannot be empty
resourceqo.pagenum.min=Page number must be greater than or equal to 1
resourceqo.pagesize.notempty=Page size cannot be empty
resourceqo.pagesize.min=Page size must be greater than or equal to 1

# AuthDetailQo validation messages
authdetailqo.granttype.notempty=Query authorization type cannot be empty
authdetailqo.grantobjtype.notempty=Query authorization resource type cannot be empty
authdetailqo.grantobjid.notempty=Query authorization resource identifier cannot be empty

# ChatQaRequest validation messages
chatqarequest.chatcontent.notempty=Question content cannot be empty

# BatchUnsubscribeApprovalRequest validation messages
batchunsubscribeapprovalrequest.approvalitems.notempty=Approval application list cannot be empty
batchunsubscribeapprovalrequest.objid.notempty=Resource ID cannot be empty
batchunsubscribeapprovalrequest.approveuserid.notempty=Approver ID cannot be empty
 # ResponseUtil.fail error messages
error.openapi.required.fields=taskExtId, systemCode, recUserCode cannot be empty
error.mentask.taskhandletype.required=taskHandleType operation type cannot be empty
error.mentask.statuscd.required=Status code identifier cannot be empty
error.mentask.taskextid.systemno.required=taskExtId and systemNo object identifiers cannot be empty
error.mentask.rescomid.respage.required=resComId, resPage identifiers cannot be empty
error.mentask.rescomid.required=resComId identifier cannot be empty
error.resource.approval.list.required=Approval application list cannot be empty
error.resource.not.exist=Resource does not exist
error.resource.batch.apply.error=Error occurred while processing batch application: {0}
error.resource.no.permission=Resource with id {0} without usage permission cannot be unsubscribed!
error.resource.unsubscribe.permission.error=Error querying resource unsubscribe permission: {0}
error.resource.query.param.required=Query parameters cannot be empty
error.resource.privilege.list.error=Error getting privilege list{0}
error.service.response.empty=Service response is empty
error.user.cannot.unsubscribe=This user cannot unsubscribe from resources/agents without usage permission!
error.resource.no.unsubscribe.permission=Resource {0} without unsubscribe permission cannot be unsubscribed!
# Sandbox service
sandbox.busy.try.later=Business access is busy, please try again later.
sandbox.launch.busy=Sandbox is being created, please try again later.
sandbox.launch.progress.start=Your personal assistant is starting up, please wait.
sandbox.launch.progress.waiting=Your personal assistant is still starting up, please wait a moment.
sandbox.launch.progress.failed=Sandbox startup failed, please contact the administrator.
error.mentask.not.found=Cannot find todo task information
error.mentask.update.failed=Update failed!
error.mentask.not.exist=Current todo task does not exist!
error.mentask.session.creating=Current todo session is being created, please try again later
error.mentask.session.create.failed=Session creation failed
error.mentask.recusercode.not.exist=Some recUserCode does not exist in byai, contact administrator.
error.mentask.not.exist.cannot.append=Current task does not exist in todo, cannot append approver
error.mentask.completed.cannot.append=Task is completed, cannot append approver
error.mentask.recusercode.already.exist=All recUserCode already exists in current task, no need to add repeatedly
error.session.member.limit.exceeded=Group chat member count cannot exceed {0} people
error.agent.not.exist=Digital employee does not exist!
error.agent.batch.apply.error=Error occurred while processing batch application for digital employee subscription: {0}

#Exception messages
exception.unsubscribe.type.unsupported=Unsupported unsubscribe type: {0}
exception.session.message.params.required=Session ID and message ID list cannot be empty
exception.message.session.params.required=Message ID and session ID cannot be empty
exception.pagination.params.required=Pagination parameters cannot be empty
exception.agent.id.required=Digital employee ID cannot be empty
exception.dealusercode.not.exist=dealUserCode does not exist in byai, contact administrator.
exception.sendusercode.not.exist=sendUserCode does not exist in byai, contact administrator.
exception.recusercode.not.exist=Some recUserCode does not exist in byai, contact administrator.
exception.knowledge.search.info.required=Knowledge base search information must exist!
exception.knowledge.query.required=User input query cannot be empty!
exception.knowledge.dataset.ids.required=Knowledge base dataset IDs cannot be empty!
exception.knowledge.query.type.invalid=Query type can only be one of: semantic search-embedding, full-text search-fullTextRecall, mixed search-mixedRecall!
exception.sso.token.expired=SSO token authentication expired!
exception.sso.token.failed=SSO token authentication failed!
exception.sso.token.user.info.failed=Failed to get portal user information with SSO token!
exception.openai.api.failed=OpenAI API call failed: {0}
exception.agent.permission.denied=Sorry, you do not have permission for this digital employee and cannot follow. Please contact administrator for authorization.
exception.task.already.exist={0}, current task id already exists!

# Group chat error messages
error.group.info.empty=Group chat information cannot be empty
error.group.members.empty=Group chat members cannot be empty
error.group.member.type.empty=Member type (memObjType) cannot be empty
error.group.member.id.empty=Member ID (memObjId) cannot be empty
error.group.member.role.empty=Member role (userRole) cannot be empty
error.group.member.role.invalid=Member role (userRole) value is invalid, can only be: OWNER, ADMIN, MEMBER
error.group.member.type.invalid=Member type (memObjType) value is invalid, can only be: USER, AGENT
error.group.insufficient.members=Group chat requires at least 2 members, please select other members
error.group.member.user.not.exist=Member information verification failed, user ID {0} does not exist or has been deleted
error.group.member.agent.not.exist=Member information verification failed, digital employee ID {0} does not exist or has been deleted
error.group.member.agent.role.empty=Digital employee role (userRole) cannot be empty
error.group.not.member=You are not a member of this group chat, cannot add members
error.group.only.owner.can.add.admin=Only group owner can add administrators
error.group.cannot.modify.self.role=Cannot modify your own role
error.group.admin.cannot.modify.owner=Administrators cannot modify group owner role
error.group.member.cannot.modify.role=Regular members cannot modify other member roles
error.group.only.owner.can.set.admin=Only group owner can set administrator role
error.group.cannot.delete.self=Cannot delete yourself
error.group.cannot.delete.owner=Cannot delete group owner
error.group.member.no.delete.permission=Regular members do not have permission to delete members
error.group.admin.cannot.delete.admin=Administrators cannot delete other administrators
error.group.admin.cannot.delete.owner=Administrators cannot delete group owner
error.group.member.not.exist=The member to be operated on does not exist
error.group.no.owner=No group owner in the group chat
error.group.only.owner.can.transfer=Only group owner can transfer owner permissions
error.group.member.not.in.group=Target member is not in the group chat
error.group.transfer.old.owner.failed=Failed to downgrade the original group owner
error.group.transfer.new.owner.failed=Failed to set new group owner

# Message read status error messages
error.message.invalid.parameters=Invalid messageId or sessionId parameters
error.message.read.status.failed=Failed to query message read status

# Group session error messages
error.group.session.not.exist=Group chat does not exist, invalid sessionId
error.session.id.empty=Session ID cannot be empty
error.session.member.not.found=You are not a member of this session
error.group.disband.permission.denied=Only group owner can disband the group chat


## \u5F85\u529E\u5BA1\u6279\u72B6\u6001
error.mentask.rescomid.empty=Task associated resource component ID is empty
error.mentask.rescom.not.found=Resource component not found
error.mentask.respage.empty=Resource component content is empty
error.mentask.approval.pass.param.not.found=Approval pass parameter configuration not found
error.mentask.approval.reject.param.not.found=Approval reject parameter configuration not found
error.mentask.approval.url.not.found=Approval notification URL configuration not found
error.mentask.update.status.failed=Failed to update task status
error.mentask.approval.failed=Approval operation failed
error.mentask.approval.api.call.failed=Failed to call external approval interface

mentask.approval.success=Approval operation successful
mentask.approval.pass.desc=Approval passed
mentask.approval.reject.desc=Approval rejected
mentask.approval.status.pass=Passed
mentask.approval.status.reject=Rejected
mentask.approval.title.template=Resource Approval {0} Notification
mentask.approval.content.template={0}--Approval {1}
mentask.approval.no.response=No response

mentask.approval.taskid.notnull=Task ID cannot be null
mentask.approval.status.invalid=Approval status can only be PASS or REJECT

session.sessionId.notnull=Update session id is not null
session.sessionname.notempty=Session name not empty
session.sessionname.size=The length of the session name cannot exceed 100 characters
session.sessioncontent.size=The latest content length of the conversation cannot exceed 255 characters
session.objectType.notempty=Object type cannot be empty

# Recent contacts query error messages
error.recent.contacts.user.not.login=User not logged in
error.recent.contacts.enterprise.info.failed=Unable to get enterprise information
error.recent.contacts.query.failed=Failed to query recent contacts: {0}
error.recent.contacts.response.empty=Response is empty


chat.limit.daily.exceeded=Daily chat call limit exceeded, please try again tomorrow
chat.limit.description=Daily chat call limit

# Template session management messages
template.session.save.error=Error saving session template: {0}
template.session.query.error=Error querying session template list: {0}
template.session.detail.error=Error querying session template detail: {0}
template.session.title.required=Template title cannot be empty
template.session.title.too.long=Template title length cannot exceed {0} characters
template.session.keyword.too.long=Search keyword length cannot exceed {0} characters
template.session.sort.field.invalid=Invalid sort field: {0}, supported fields: {1}
template.session.sort.order.invalid=Invalid sort order: {0}, supported orders: {1}
template.session.session.id.invalid=Session ID cannot be empty or must be greater than 0
template.session.request.null=Save request cannot be empty
template.session.type.invalid=Invalid template type: {0}, supported types: {1}
template.type.invalid=Template type cannot be empty
template.cover.id.invalid=Cover ID cannot be empty
template.session.permission.denied.not.platform.admin=Only platform administrators can perform this operation
template.session.query.request.null=Query request cannot be empty
template.session.page.num.invalid=Page number must be greater than 0
template.session.page.size.invalid=Page size must be between 1-100
template.message.edit.error=Error editing template message: {0}
template.session.title.invalid.characters=Template title cannot contain invalid characters

# Template session additional error messages
template.session.save.basic.info.error=Failed to save template session basic info: {0}
template.session.not.exists=Template session does not exist: {0}
template.session.type.group.chat.not.allowed=Session ID {0} is a group chat ({1}), not allowed to save as template
template.session.type.not.supported=Session ID {0} session type ({1}) is not supported for saving as template
template.session.type.validate.error=Session ID {0} session type validation failed: {1}
template.session.update.error=Failed to update template session: {0}
template.session.get.messages.error=Failed to get template messages: {0}
template.session.get.specific.messages.error=Failed to get specific template messages: {0}
template.session.get.members.error=Failed to get template members: {0}
template.session.copy.messages.error=Failed to copy template messages: {0}
template.session.copy.members.error=Failed to copy template members: {0}
template.result.space.copy.error=Failed to copy result space data: {0}
template.task.copy.error=Failed to copy task data: {0}
template.knowledge.files.copy.error=Failed to copy knowledge base files: {0}
template.task.file.relations.update.error=Failed to update task file relations: {0}
template.file.upload.failed=File upload failed, template session ID: {0}, error: {1}
template.file.upload.no.file.id=File upload successful but unable to get new file ID, template session ID: {0}
template.session.delete.error=Failed to delete template session: {0}
template.file.download.failed=Failed to download file, file ID: {0}
template.file.process.error=Failed to process file, file ID: {0}, error: {1}
template.file.upload.error=Failed to upload file, session ID: {0}, error: {1}

# File upload messages
file.empty=File cannot be empty
file.size.too.large=File size cannot exceed {0}MB
file.name.invalid=Invalid file name
file.format.not.supported=File format not supported: {0}, supported formats: {1}
file.convert.failed=File conversion failed: {0}, error: {1}
file.type.detect.failed=File type detection failed: {0}, error: {1}

# Notices validation messages
notices.noticedetails.notempty=Notification details list cannot be empty
notices.noticedetails.maxsize=Notification details list can have at most 100 items

# NoticeDetail validation messages
noticedetail.title.notblank=Notification title cannot be blank
noticedetail.title.maxsize=Notification title length cannot exceed 200 characters
noticedetail.content.notblank=Notification content cannot be blank
noticedetail.content.maxsize=Notification content length cannot exceed 2000 characters
noticedetail.priority.notnull=Priority cannot be null
noticedetail.priority.min=Priority cannot be less than 1
noticedetail.priority.max=Priority cannot be greater than 4

# Template session service error messages
template.task.copy.parent.failed=Failed to copy parent task: {0}
template.task.copy.child.failed=Failed to copy child task: {0}
template.task.copy.single.failed=Failed to copy single task: {0}
template.task.create.failed=Failed to create task
template.task.create.new.failed=Failed to create new task: {0}
template.resource.component.insert.failed=Failed to insert resource component
template.resource.component.copy.failed=Failed to copy resource component: {0}
template.task.resource.component.update.failed=Failed to update task resource component: {0}
template.task.catalog.batch.copy.failed=Failed to batch copy task catalog and status log: {0}
template.task.catalog.batch.insert.failed=Failed to batch insert task catalog: {0}
template.task.receiver.copy.failed=Failed to copy task receiver: {0}
template.file.upload.to.template.failed=Failed to upload file to template: {0}
template.file.tag.update.failed=Failed to update file tag: {0}
template.task.receiver.delete.failed=Failed to delete task receiver: {0}
template.task.catalog.delete.failed=Failed to delete task catalog: {0}
template.resource.component.delete.failed=Failed to delete resource component: {0}

# Showcase service error messages
showcase.file.id.not.recorded=Original showcase did not record file ID, cannot extract file
showcase.upload.to.knowledge.empty.result=Failed to upload file to knowledge base, returned result is empty
showcase.upload.no.valid.file.id=File upload did not return valid fileId
showcase.file.id.invalid.format=Invalid file ID format
showcase.download.no.available.stream=Failed to download showcase file: no available file stream
showcase.download.file.content.empty=Failed to download showcase file: file content is empty
showcase.upload.to.knowledge.failed=Failed to upload file to knowledge base!
showcase.message.not.collected=Message not collected!

# Script service error messages
script.upload.to.workspace.failed=Failed to upload {0} to workspace: {1}

# Digital feedback service error messages
digital.feedback.process.failed=Failed to process digital execution feedback message: {0}
digital.feedback.save.message.failed=Failed to save message: {0}

# Assistant chat service error messages
chat.user.not.in.group=You are not in the current group chat, page will refresh automatically
chat.check.group.member.failed=Failed to check group member relationship
chat.cannot.get.session.info=Cannot get session information
chat.get.session.type.failed=Failed to get session type: {0}

# Resource privilege service error messages
resource.privilege.get.current.user.failed=Failed to get current user information
resource.privilege.save.failed=Save failed: {0}
resource.privilege.request.param.not.empty=Request parameters cannot be empty
resource.privilege.type.not.empty=Privilege type cannot be empty
resource.privilege.type.only.inner.or.outer=Privilege type can only be INNER or OUTER
resource.privilege.id.invalid=Resource ID is invalid, resource type: {0}, resource ID: {1}

# Showcase remote export service error messages
showcase.remote.export.document.exception=Remote export document exception

# Showcase recovery helper error messages
showcase.content.already.collected=This content has already been collected, please do not collect again!

# Langfuse controller error messages
langfuse.trace.id.not.empty=Trace ID cannot be empty
langfuse.observation.id.not.empty=Observation ID cannot be empty
langfuse.session.id.not.empty=Session ID cannot be empty

# Group service error messages
group.message.send.failed=Failed to send message: {0}
group.only.owner.or.admin.can.add.member=Only group owner or administrator can add members

# Param service error messages
param.model.config.not.found=Cannot find model configuration for model_id!

# Assistant man controller error messages
assistant.man.session.id.not.empty=The session ID cannot be empty
assistant.man.message.id.not.empty=Message ID cannot be empty
assistant.man.type.exists=Type already exists
assistant.man.type.not.exist=Type does not exist
assistant.man.query.message.error=Query message error: {0}
showcase.create.failed=Failed to create showcase
showcase.name.not.empty=Showcase name cannot be empty
showcase.not.exist=Showcase does not exist: {0}
showcase.dataset.id.not.empty=Dataset ID cannot be empty
showcase.metadata.not.empty=Metadata cannot be empty
message.service.message.id.not.exist=Message ID does not exist: {0}
message.service.session.id.or.user.id.null=Session ID or user ID cannot be null
message.service.get.user.suas.error=Failed to get user information
message.service.user.info.empty=User information is empty, userId: {0}
message.service.message.struct.json.format.invalid=Invalid message structure JSON format
message.service.save.message.failed=Failed to save message
message.service.message.ids.null=Message IDs cannot be null
session.service.save.template.failed=Failed to save session template: {0}
session.service.query.template.list.failed=Failed to query session template list: {0}
session.service.query.template.detail.failed=Failed to query session template detail: {0}
session.service.edit.template.message.failed=Failed to edit session template message: {0}
session.service.get.members.failed=Failed to get session members: {0}
session.service.get.messages.failed=Failed to get session messages: {0}
session.service.save.as.template.failed=Failed to save session as template: {0}
session.service.update.template.failed=Failed to update session template: {0}
session.service.copy.template.messages.failed=Failed to copy template session messages: {0}
session.service.copy.template.members.failed=Failed to copy template session members: {0}
session.service.delete.template.failed=Failed to delete template session: {0}
script.download.file.failed=Failed to download file: {0}
result.space.download.file.failed=Failed to download file: {0}
memory.search.query.digital.employee.failed=Failed to query digital employee
openapi.conversation.assistant.info.empty=Current user session assistant information is empty
openapi.conversation.call.exception=Open API conversation call exception
memory.display.create.admin.template.failed=Failed to create super administrator template: {0}
memory.display.delete.scene.failed=Failed to delete scene: {0}
memory.display.update.scene.failed=Failed to update scene: {0}
showcase.strategy.download.type.not.supported=Current type does not support download: {0}
template.session.file.transfer.failed=File transfer failed: {0}
access.token.verify.signature.null={0} signature is null
agent.type.handler.missing.config=Missing system configuration, please configure external services{0}
agent.type.handler.factory.type.error=Intelligent agent type error: {0}
resource.man.digital.resource.type.list.not.empty=The digital resourceTypeList cannot be empty
resource.man.dataset.id.not.empty=Dataset ID cannot be empty
resource.man.metadata.not.empty=Metadata cannot be empty
openapi.message.id.not.empty=Message ID cannot be empty
openapi.message.info.not.empty=Message info cannot be empty
digit.employ.man.digital.employee.id.not.empty=The digital employee ID cannot be empty
digit.employ.man.assistant.is.null=Assistant is null

# Feign interceptor error messages
feign.request.header.value.blank=Header value cannot be blank: {0}
feign.response.status.invalid=Invalid response status: {0}
feign.response.body.format.invalid=Invalid response body format
feign.query.dig.employee.relations.error=Failed to query digital employee relations
feign.query.task.info.error=Failed to query task information

# Assistant chat messages
assistant.chat.assistant.is.null=Assistant is null
assistant.chat.network.busy=Network busy
assistant.chat.message.id.not.empty=Message ID cannot be empty
assistant.chat.message.info.not.empty=Message info cannot be empty
assistant.chat.session.id.not.empty=Session ID cannot be empty
assistant.chat.server.error=Server error, please try again later
assistant.chat.share.link.token.empty=Share link token cannot be empty
assistant.chat.share.link.not.found=Share link not found
assistant.chat.share.link.invalid=Share link is invalid
assistant.chat.share.link.expired=Share link has expired
assistant.chat.share.link.max.access=Share link access limit reached
assistant.chat.share.link.message.count.exceed=Share link message count cannot exceed 100
assistant.chat.share.link.expire.days.invalid=Share link expire days must be between 1 and 365
assistant.chat.share.link.max.access.invalid=Share link max access count must be between 1 and 10000
assistant.chat.share.link.title.too.long=Share link title length cannot exceed 200 characters
completions.utils.no.support=No support
qa.chat.dataset.id.list.and.doc.id.list.not.all.null=Dataset ID list and document ID list cannot all be null
jwt.token.filter.signature.null=Signature is null
jwt.token.filter.beyond.token.expiration=Beyond-Token expiration
jwt.token.filter.beyond.token.exception=Beyond-Token exception
ws.auth.beyond.token.not.found=beyond-token not found in headers or parameters
ws.auth.signature.null=Signature is null
ws.auth.token.expiration=Token expiration
ws.handler.unsupported.message.type=Unsupported message type: {0}
template.file.processing.transfer.to.not.supported=transferTo not supported
showcase.strategy.showcase.cannot.be.null=Showcase cannot be null
showcase.strategy.showcase.and.downloaded.payload.cannot.be.null=Showcase and downloaded payload cannot be null
showcase.strategy.showcase.content.cannot.be.null=Showcase content cannot be null
showcase.storage.helper.invalid.project.id.config=Invalid project id configuration
resource.auth.context.no.strategy.found=No ResourceAuthStrategy found for type: {0}
resource.auth.context.no.strategy.found.with.support=No ResourceAuthStrategy found for type: {0}, current support {1}
ai.service.openai.api.request.failed=OpenAI API request failed: {0}
word.to.pdf.converter.convert.failed=Failed to convert Word to PDF: {0}
file.converter.context.no.converter.found=No converter found for file type: {0}

# Word to PDF converter messages
word.to.pdf.converter.input.bytes.cannot.be.null.or.empty=Input bytes cannot be null or empty
word.to.pdf.converter.unsupported.format.or.corrupted.file=Unsupported document format or corrupted file
ai.service.no.default.model.found=TOOL_CHECK model is not configured. Please contact the administrator to configure it.
notification.example.value.for.condition.cannot.be.null=Value for condition cannot be null
notification.example.value.for.property.cannot.be.null=Value for {0} cannot be null
notification.example.between.values.for.property.cannot.be.null=Between values for {0} cannot be null
notification.session.name.assistant=Notification Assistant
memory.message.service.message.qo.cannot.be.null=MessageQo cannot be null
memory.message.service.message.stream.param.required=messageId and sessionId are required
memory.message.service.message.stream.pipe.failed=Failed to create message stream pipe
memory.message.service.session.id.cannot.be.null=Session ID cannot be null
memory.message.service.message.not.exist=Message does not exist, ID: {0}
memory.message.service.message.not.belong.session=Message does not belong to the specified session
resource.auth.strategy.no.support=No support

# Task service messages
task.service.message.id.is.empty=messageId cannot be empty
task.service.message.id.not.exist=messageId: {0} does not exist
task.service.message.id.data.error=messageId: {0} data error

# Digit employ man service messages
# Message role enum messages
# SS super assist kw catalog messages
# MessageShareLinkCreateRequest validation messages
message.share.link.create.request.messageids.notempty=Message ID list cannot be empty
message.share.link.create.request.title.notempty=Share link title cannot be empty
message.share.link.create.request.title.maxlength=Share link title length cannot exceed 200 characters

# OpenAPI application service messages
openapi.application.service.user.not.found=User not found,userId ={0},userCode={1}

# JWT service messages
jwt.service.failed.to.obtain.public.key=Failed to obtain Jwt public key

# Men task service messages
men.task.service.p.task.id.cannot.be.null=pTaskId cannot be null

# Message factory messages
message.factory.data.error.res.msg.id.index.not.exist=data error resMsgId: {0} index is not exist

# Employee apply service messages
employee.apply.service.message.not.exist=message not exist
employee.apply.service.you.cannot.approve=you cannot approve
employee.apply.service.not.approve.state=not approve state

# Agent service messages
agent.service.agent.id.cannot.be.empty=AgentId cannot be empty
agent.service.agent.id.does.not.exist=AgentId does not exist
agent.service.delete.rel.agent.count.error=delete rel Agent Count is Error
agent.service.agent.not.exist=agent not exist

# Digit employ man service messages
digit.employ.man.service.digital.employee.id.cannot.be.empty=The digital employee ID cannot be empty

# Message role enum messages
message.role.enum.role.num.is.not.custom=role num is not custom

# SS super assist kw catalog application service messages
ss.super.assist.kw.catalog.failed.to.call.agent.create.directory=Failed to call agent to create directory

# File upload validation messages
file.upload.count.exceeded=File count exceeds limit, maximum {0} files allowed, currently {1} files selected
file.upload.size.exceeded=File size exceeds limit, maximum allowed: {0}MB, current file size: {1}MB
file.upload.type.not.supported=Unsupported file type, please upload the following types: {0}
file.upload.page.count.exceeded=The current document exceeds the threshold of {1} pages, please use the knowledge base to upload files
file.upload.page.count.check.failed=Document page count check failed: {0}
file.upload.read.failed=Failed to read file: {0}

# Document page count service messages
document.page.count.input.stream.null=Input stream cannot be null
document.page.count.max.pages.invalid=Maximum pages limit must be greater than 0, current value: {0}
document.page.count.file.type.not.supported=Unsupported file type: {0}
document.page.count.detect.type.log=Detected document type: {0}, contentType: {1}
document.page.count.file.type.unrecognized=Unrecognized file type: {0}
document.page.count.read.failed.log=Failed to read document page count
document.page.count.read.failed=Failed to read document: {0}
document.page.count.reset.stream.failed.log=Failed to reset stream position
document.page.count.word.type.detect.failed.log=Unable to determine Word document type, using DOC format by default: {0}
document.page.count.pdf.page.count.log=PDF document page count: {0}
document.page.count.pdf.read.failed.log=Failed to read PDF document
document.page.count.pdf.read.failed=Failed to read PDF document: {0}
document.page.count.delete.temp.file.failed.log=Failed to delete temp file: {0}
document.page.count.docx.page.count.from.metadata.log=Page count from DOCX metadata: {0}
document.page.count.docx.metadata.not.found.log=Page count not found in DOCX metadata, returning default value 1
document.page.count.docx.read.failed.log=Failed to read DOCX document
document.page.count.docx.read.failed=Failed to read DOCX document: {0}
document.page.count.parse.page.count.failed.log=Failed to parse page count, invalid number format: {0}
document.page.count.parse.app.xml.failed.log=Failed to parse app.xml: {0}
document.page.count.doc.page.count.from.summary.log=Page count from DOC summary information: {0}
document.page.count.doc.summary.empty.log=DOC document summary information is empty
document.page.count.doc.estimate.from.content.log=No page count in summary, estimating from content length
document.page.count.doc.estimated.page.count.log=Estimated DOC document page count: {0}, text length: {1}
document.page.count.doc.final.page.count.log=DOC document final page count: {0}
document.page.count.doc.read.failed.log=Failed to read DOC document
document.page.count.doc.read.failed=Failed to read DOC document: {0}
document.page.count.check.passed.message=Document page count check passed, current {0} pages, maximum allowed {1} pages
document.page.count.check.exceeded.message=Document page count exceeds limit, current {0} pages, maximum allowed {1} pages

# SS super assist kw catalog page count messages
ss.super.assist.kw.catalog.get.max.pages.config.failed=Failed to get document max pages configuration, using default value
ss.super.assist.kw.catalog.page.count.exceeded.log=File {0} page count exceeds limit, current {1} pages, maximum allowed {2} pages
ss.super.assist.kw.catalog.page.count.check.passed=File {0} page count check passed, current {1} pages
ss.super.assist.kw.catalog.page.count.check.failed.log=File {0} page count check failed
ss.super.assist.kw.catalog.read.file.failed.log=Failed to read file {0}

# Chat server configuration messages
chat.server.config.byai.cannot.be.empty=chat.server.byai cannot be empty
chat.server.config.conversation.service.cannot.be.empty=chat.server.conversationService cannot be empty
chat.server.config.docchain.header.cannot.be.empty=chat.server.docchainHeader cannot be empty
chat.server.config.docchain.api.key.cannot.be.empty=docchain X-Api-Key cannot be empty
chat.server.config.docchain.params.cannot.be.empty=chat.server.docchainParams cannot be empty
chat.server.config.docchain.topic.id.cannot.be.empty=docchain topic_id cannot be empty

# System configuration messages
system.config.clear.cache.failed=Failed to clear system configuration cache: {0}

# Thread pool messages
thread.pool.invalid.size.parameters=Invalid thread pool size parameters
thread.pool.keep.alive.time.must.be.positive=Keep alive time must be positive
thread.pool.name.cannot.be.null.or.empty=Thread pool name cannot be null or empty

# Sign anti replay filter messages
sign.anti.replay.filter.headers.cannot.be.empty={0}, {1}, {2} Cannot be empty
sign.anti.replay.filter.prohibit.requesting.replay=Prohibit requesting replay
sign.anti.replay.filter.signature.request.timeout=Signature request timeout
sign.anti.replay.filter.signature.verification.exception=Signature verification exception
sign.anti.replay.filter.signature.is.null=signature is null
sign.anti.replay.filter.signature.verification.failed=Signature verification failed

# SnowFlake messages
snowflake.datacenter.id.invalid=dataCenterId can't be greater than MAX_DATA_CENTER_NUM or less than 0
snowflake.machine.id.invalid=machineId can't be greater than MAX_MACHINE_NUM or less than 0
snowflake.clock.moved.backwards=Clock moved backwards. Refusing to generate id

# Utility class messages
utility.class.instantiation.forbidden=Utility class should not be instantiated

# Base64 util messages
base64.util.unexpected.code=unexpected code: {0}

# Redis configuration messages
redis.configuration.error=Redis configuration is error

# Config messages
config.lack.of.system.parameters.configuration=Lack of {0} configuration of system parameters

# Session factory config messages
session.factory.config.failed.to.create.sql.session.factory=Failed to create SqlSessionFactory

# System config example messages
system.config.example.value.for.condition.cannot.be.null=Value for condition cannot be null
system.config.example.value.for.property.cannot.be.null=Value for {0} cannot be null
system.config.example.between.values.for.property.cannot.be.null=Between values for {0} cannot be null



# Web search archive and crawl i18n
web.search.archive.query.required=Query cannot be empty
web.search.archive.query.maxlength=Query length cannot exceed 2000 characters
web.search.archive.sessionId.maxlength=Session ID length cannot exceed 64 characters
web.search.archive.sessionId.required=Session ID cannot be empty
web.search.archive.requestId.required=Archive request ID cannot be empty
web.search.archive.textList.required=Selected text list cannot be empty
web.search.archive.topicId.maxlength=Topic ID length cannot exceed 64 characters
web.search.archive.size.max=The number of query questions cannot exceed 100
# Session archive query request validation
web.search.session.archive.sessionId.required=Session ID cannot be empty
web.search.session.archive.sessionId.maxlength=Session ID length cannot exceed 64 characters
web.search.fetch.url.maxlength=URL length cannot exceed 2048 characters
web.crawl.fetch.url.empty=Source URL is emptySource URL is empty
web.crawl.fetch.timeout=Page fetch timeout
web.crawl.fetch.unsupported.type=Unsupported content type
web.crawl.fetch.not.found=Resource not found
web.crawl.fetch.forbidden=Access forbidden
web.crawl.fetch.http.error=Request failed
web.crawl.fetch.failed=Page fetch failed
web.crawl.fetch.upload.failed=Upload or save failed
web.crawl.fetch.protocol.not.allowed=Only HTTP/HTTPS protocol allowed
web.crawl.fetch.host.not.allowed=Host not in allowed list
web.crawl.fetch.url.invalid=Invalid URL
web.crawl.fetch.html2md.failed=HTML to Markdown conversion failed

web.search.doc.chain.error=search doc error

searchask.spaceDir.dir.not.exist=space Dir is not exist
searchask.spaceDir.name.import=User Import Source
searchask.spaceDir.name.web.search=Web Search
searchask.spaceDir.name.personal.kb=Personal Knowledge Base
searchask.spaceDir.name.enterprise.kb=Enterprise Knowledge Base
searchask.spaceDir.name.ding.chat=DingTalk Chat Records
searchask.spaceDir.name.collect=Favorites
searchask.spaceDir.name.other=Other

# Captcha related messages
captcha.image.invalid=Image captcha is invalid, please get a new one
captcha.image.expired=Image captcha has expired, please get a new one
captcha.image.incorrect=Image captcha is incorrect

# Digital employee related
digemployee.name.duplicate=The digital employee name is already in use, please change it!
digemployee.save.success=Digital employee created successfully!
digemployee.update.success=Digital employee updated successfully!

# System messages
# Phone Register Authentication Messages
phone.register.user.exists=This user is already registered!
phone.register.code.expired=Verification code has expired, please get a new one!
phone.register.code.incorrect=Incorrect verification code, please check and try again!
phone.register.create.failed=Failed to create user during registration!
phone.format.invalid=Invalid phone number format

user.userid.notnull=User ID cannot be null
user.username.size=Username length must be between 2 and 20 characters
user.email.email=Email must be a valid email address
user.phone.pattern=Phone number must be a valid mobile number
user.usercode.pattern=User code must be 3-50 characters and can contain only letters, numbers, and underscores.
user.usernumber.pattern=User number is optional, but if provided, must be up to 10 digits
user.address.size=The employee address must be between 2 and 255 characters long
user.address.remark.size=The remark must be between 2 and 255 characters long
user.orgid.notnull=Organization ID cannot be null
user.orgid.valid=Organization must be valid
user.positionid.notnull=Position ID cannot be null
user.positionid.valid=Position must be valid
user.usertype.notempty=User type cannot be empty
user.usertype.valid=User type must be one of: ORD_USER, ORG_MAN, PLAT_MAN, PLAT_DEVOPS, BUSINESS_MAN, DEV_USER
organization.orgid.notnull=Organization ID cannot be null
organization.orgcode.notempty=Organization code cannot be empty
organization.orgcode.size=Organization code cannot exceed 200 characters
organization.orgcode.pattern=Organization code can only contain numbers, letters, and underscores
organization.orgname.notempty=Organization name cannot be empty
organization.orgname.size=Organization name cannot exceed 50 characters
organization.parentorgid.valid=Parent organization does not exist
organization.parentorgid.notnull=Parent organization ID cannot be null
organization.orglevel.min=Organization level cannot be less than 0
resource.delete.referenced=Resource is referenced by other resources and cannot be deleted. Referenced resources include: {0}
resource.delete.todo.exists=Resource has pending todo records and cannot be deleted.
resource.delete.todo.status.submitted=Submitted: {0}
resource.delete.todo.status.working=Working: {0}
resource.delete.todo.status.inputRequired=Input Required: {0}
resource.delete.todo.status.authRequired=Auth Required: {0}
organization.orglevel.max=Organization level cannot exceed max integer value
position.positionid.notnull=Position ID cannot be null
position.positionname.notempty=Position name cannot be empty
position.positionname.size=Position code cannot exceed 50 characters
position.positiondesc.size=Position description cannot exceed 500 characters
station.stationid.notnull=Station ID cannot be null
station.stationname.notempty=Station name cannot be empty
station.stationname.size=Station name cannot exceed 200 characters
station.pstationid.valid=Parent station does not exist
station.pstationid.notnull=Parent station ID cannot be null
station.isabroad.notnull=IsAbroad cannot be null
emaildto.subject.notempty=The subject of the email cannot be empty
emaildto.email.email=Email must be a valid email address
emaildto.text.notempty=Email content cannot be empty
agentpromptqo.agentname.notblank=Name cannot be blank
agentpromptqo.agentdescription.notblank=Description cannot be blank
resource.info.empty=Resource info cannot be empty
resource.biztype.empty=Resource business type cannot be empty
resource.systemcode.empty=External system code cannot be empty
resource.systemcode.pkid.empty=External system resource id cannot be empty
resource.systemcode.unsupported=Unsupported external system code: {0}, supported: BYAI, WHAGE_AGENT, BOT, DIFY
resource.biztype.unsupported=Unsupported resource business type: {0}
resource.name.empty=Resource name cannot be empty
resource.name.length.exceed=Resource name cannot exceed 128 characters
resource.desc.empty=Resource description cannot be empty
resource.desc.length.exceed=Resource description cannot exceed 1024 characters
plugintype.name.length.exceed=Tool name cannot be empty and must not exceed 128 characters
plugintype.desc.length.exceed=Tool description cannot be empty and must not exceed 1024 characters
plugintype.hosttype.invalid=Tool host type cannot be empty and must be hosted or local
plugintype.param.invalid=Tool parameters cannot be empty and must contain required fields
common.system.error=System error, please try again later!
common.unauthorized=Request denied, no permission!
common.notlogin=User not logged in, access denied
gptproxy.chatcompletions.body.required=Request body cannot be empty
gptproxy.chatcompletions.url.required=GPT-Proxy upstream URL is not configured
gptproxy.chatcompletions.token.required=GPT-Proxy authorization token is not configured
gptproxy.chatcompletions.stream.failed=GPT-Proxy streaming request failed
aimodel.debug.rerank.input.required=Debug input is required
aimodel.debug.rerank.url.required=Request URL (url) is required
aimodel.debug.rerank.call.failed=Rerank request failed
aimodel.debug.rerank.upstream.failed=Rerank upstream returned error
aimodel.debug.upstream.error=Upstream API returned error
usersbyorgidqo.orgid.notnull=Organization ID parameter cannot be null
searchuserqo.userid.notnull=User ID cannot be null
searchuserqo.orgid.notnull=User's organization ID cannot be null
stationtreeqo.parentid.min=Parent station ID must be greater than -1
stationtreeqo.keyword.size=Search keyword length cannot exceed 100 characters
searchstationqo.stationid.notnull=Station ID cannot be null
searchorgqo.orgid.notnull=Organization ID cannot be null
orgmanagerqo.orgid.notnull=Organization ID cannot be null
orgtreeqo.parentid.min=Parent organization ID must be greater than -1
orgtreeqo.keyword.size=Search keyword length cannot exceed 100 characters
messageqo.page.notnull=Page number cannot be null
messageqo.pageSize.notnull=Page size cannot be null
messageqo.objectType.notnull=Object type cannot be null
authdetailqo.authType.notempty=Authorization type parameter cannot be empty
authdetailqo.resourceType.notempty=Authorization resource type cannot be empty
authdetailqo.resourceId.notnull=Authorization resource ID cannot be null
ownauthqo.page.notnull=Page number cannot be null
ownauthqo.pageSize.notnull=Page size cannot be null
ownauthqo.orgid.notnull=Organization ID cannot be null
ownauthqo.statusList.notnull=Status list cannot be null
updatepassworddto.userid.notnull=User ID cannot be null!
updatepassworddto.oldpassword.notempty=Old password cannot be empty!
updatepassworddto.newpassword.notempty=New password cannot be empty!
resetpassworddto.userid.notnull=Reset password user ID cannot be null
resetpassworddto.orgid.notnull=Reset password user's organization ID cannot be null
resetpassworddto.orgid.valid=Organization ID must be valid
deluserdto.userid.notnull=User ID cannot be null
deluserdto.orgid.notnull=User exit organization ID cannot be null
batchdeluserdto.userlist.notempty=User exit organization list cannot be empty!
tokendto.name.notempty=Token name cannot be empty
tokendto.name.size=Token name length cannot exceed 255 characters
removetokendto.tokenid.notnull=Token ID to remove cannot be null
propertydto.key.notempty=Query parameter key cannot be empty!
dcsystemconfigdto.paramcode.notempty=Parameter code cannot be empty
byaisystemconfig.paramname.notempty=Parameter name cannot be empty
configlistbystandtypedto.type.notempty=Parameter type cannot be empty
batchpropertydto.keys.notempty=Query parameter keys cannot be empty!
positiondeldto.positionid.notnull=Position ID for deletion cannot be null
userororgdto.targetid.notnull=Authorization target ID cannot be null
userororgdto.type.pattern=Object type must be one of: USER (user), ORG (organization)


delorgdto.orgid.notnull=Delete organization ID cannot be null
adduserbyorgdto.orgid.notnull=Organization ID cannot be null
adduserbyorgdto.orgid.valid=Organization ID must be valid
adduserbyorgdto.userlist.notempty=Member list to add cannot be empty
adduserbyorgdto.positionid.notnull=Position ID cannot be null
adduserbyorgdto.positionid.valid=Position ID must be valid
adduserbyorgdto.role.notempty=User role cannot be empty
adduserbyorgdto.role.valid=User role must be one of: ORD_USER, ORG_MAN, PLAT_MAN, PLAT_DEVOPS, BUSINESS_MAN , DEV_USER
opendeluserdto.userid.notnull=Delete user ID cannot be null
openorgdto.orgid.notnull=Organization ID to modify cannot be null
openorgdto.name.notempty=Organization name cannot be empty
openorgdto.name.size=Organization name cannot exceed 50 characters
openpositiondto.positionid.notnull=Position ID to modify cannot be null
openpositiondto.name.notempty=Position name cannot be empty
openpositiondto.name.size=Position code cannot exceed 50 characters
openpositiondto.desc.size=Position description cannot exceed 500 characters
openstationdto.stationid.notnull=Station ID cannot be null
openstationdto.name.notempty=Station name cannot be empty
openstationdto.name.size=Station name cannot exceed 200 characters
openstationdto.type.notnull=Type cannot be null
openstationdto.parentid.notnull=Parent station ID to add cannot be null
openstationdto.isabroad.notnull=IsAbroad cannot be null
openuserdto.userid.notnull=User ID to modify cannot be null
openuserdto.usercode.pattern=User code is required and must be 3-50 alphanumeric characters
openuserdto.username.size=User name length must be between 2 and 50 characters
openuserdto.email.email=User email must be valid
usersorganizationexternalsystem.id.notnull=Modification ID cannot be null
usersorganizationexternalsystem.userid.notnull=User external system ID cannot be null
usersorganizationexternalsystem.orgid.notnull=Organization external system ID cannot be null
orgexternalsystem.id.notnull=Modification ID cannot be null
orgexternalsystem.deptid.notnull=Source department ID cannot be null
orgexternalsystem.deptcode.notnull=Source department code cannot be null
orgexternalsystem.deptcode.size=Source department code length cannot exceed 255 characters
orgexternalsystem.deptname.notnull=Source department name cannot be null
orgexternalsystem.deptname.size=Source department name length cannot exceed 255 characters
userexternalsystem.id.notnull=Modification of external system binding ID cannot be null
userexternalsystem.userinfo.notnull=Bound user info cannot be null
userexternalsystem.type.notnull=External system type error
userexternalsystem.account.size=System account length cannot exceed 255 characters
userexternalsystem.nickname.size=Nickname length cannot exceed 255 characters
userexternalsystem.email.email=Email format is incorrect
userexternalsystem.deptname.size=Department name length cannot exceed 255 characters
organization.sort.min=Organization sort cannot be less than 0
organization.sort.max=Organization sort cannot be greater than the maximum integer value
organization.orgdesc.size=Organization description length must be within 500 characters
agtresource.filetype.notblank=File type cannot be blank
agtresource.filetype.pattern=File type must be 4 (comprehensive)
agtresource.name.size=Resource name length cannot exceed 50 characters
agtresource.type.notblank=Resource type cannot be blank
agtresource.digitaltype.notblank=Digital type cannot be blank, must be valid: 006 (Q&A), 007 (Data Analysis), or 005 (Process Operation)
agtresource.digitaltype.pattern=Digital type must be valid: 006 (Q&A), 007 (Data Analysis), or 005 (Process Operation)
agtresourcedelete.resourceid.notnull=Resource ID cannot be null
agtresourcedelete.objectid.notnull=Resource object ID cannot be null
agtresourcedelete.type.notnull=Resource type cannot be null
agtresourcequery.page.notnull=Page number cannot be null
agtresourcequery.page.min=Page number must be greater than or equal to 1
agtresourcequery.size.notnull=Page size cannot be null
agtresourcequery.size.min=Page size must be greater than or equal to 1
detaildto.objid.notnull=objId cannot be null
detaildto.resourcetype.notempty=resourceType cannot be empty
detaildto.resourcetype.pattern=resourceType must be a positive integer
folder.id.notnull=Folder ID cannot be null
folder.name.notnull=Folder name cannot be null
rebuilddata.kb.notnull=Knowledge base ID cannot be null
rebuilddata.fileids.notempty=File ID list cannot be empty
shelfdto.ids.notempty=Resource ID list cannot be empty
preuploaddata.datasetid.notnull=Dataset ID cannot be null
preuploaddata.metadata.notnull=Metadata cannot be null
folderdelete.id.notnull=Folder ID cannot be null when deleting folder


# Resource DTO i18n
modifyresourcerequest.resourceid.notnull=Resource ID cannot be null
modifyresourcerequest.updatedata.notnull=Update data cannot be null
publishchannel.catalogid.notnull=Catalog ID cannot be null
publishchannel.manorgid.notnull=Organization ID cannot be null
publishchannel.manuserid.notnull=Manager user ID cannot be null
modifyversionandstatusrequest.resourceid.notnull=Resource ID cannot be null
publishresourcedto.publishchannels.notnull=Publish channel list cannot be null
publishresourcedto.resources.notnull=Resource list to publish cannot be null
resourcedto.systemcode.notblank=External system code cannot be blank
resourcedto.resourcebiztype.notblank=Resource business type cannot be blank
resourcedto.resourcename.notblank=Resource name cannot be blank
resourcedto.resourcename.size=Resource name length cannot exceed 128 characters
resourcedto.resourcename.regexp=Resource names can only consist of Chinese characters, letters, numbers, and underscores. They must not start with a number or an underscore, nor contain any other special characters.
resourcedto.resourcedesc.notblank=Resource description cannot be blank
resourcedto.resourcedesc.size=Resource description length cannot exceed 1024 characters
resourcedto.hosttype.notblank=Host type cannot be blank
deleteresourcesrequest.resourceids.notempty=Resource ID list cannot be empty
shelfresourcesrequest.resourceids.notempty=Resource ID list cannot be empty
unshelfresourcesrequest.resourceids.notempty=Resource ID list cannot be empty
# \u63A7\u5236\u5668\u5C42\u56FD\u9645\u5316
enterprisecontroller.comacctname.size=Company name cannot exceed 200 characters
enterprisecontroller.comacctcode.size=Company code cannot exceed 100 characters
enterprisecontroller.systemname.size=System name length cannot exceed 255 characters

# PositionExternal i18n
positionexternal.positionexternalid.notnull=Modification ID cannot be null
positionexternal.positionname.size=Position name length cannot exceed 255 characters
positionexternal.positiondesc.size=Position description length cannot exceed 255 characters
positionexternal.positionid.notnull=Position ID cannot be null

# \u767B\u5F55 \u56FD\u9645\u5316
login.code.notnull=Authorization code cannot be null
login.token.fail=Failed to get token during login
login.login.lock=Account locked
login.password.user.error= Incorrect username or password
login.ssotoken.notnull=ssoToken cannot be null
login.auth.fail=Authentication failed, please try again later
login.login.successful=Login successful
login.login.fail=Login fail
login.request.denied=Request denied, no permission to access!
login.login.auth.fail=Authentication failed, reason for failure:
login.ticket.notnull=Authorization ticket cannot be null
login.default.pwd.reset=We have detected that you are logging in with the default password. The default password is set by the system. To protect your personal information and data security, we recommend that you change your password immediately. Please log in to the PC version (https://byai.iwhalecloud.com) to change your password.

# DingtalkAuthenticationProvider i18n
dingtalkauthprovider.code.notnull=DingTalk authorization code cannot be null!
dingtalkauthprovider.auth.fail=DingTalk password-free authentication failed, failed to obtain user information!
dingtalkauthprovider.access_token.fail=Failed to get access_token
dingtalkauthprovider.userinfo.fail=Failed to get user information
dingtalkauthprovider.login.fail=Login failed!
dingtalkauthprovider.workbench.access_token.fail=Failed to get workbench access_token
dingtalkauthprovider.workbench.userid.fail=Failed to get workbench userId
dingtalkauthprovider.workbench.userinfo.fail=Failed to get workbench user information
#filter \u8FC7\u6EE4\u5668\u6A21\u5757\u76F8\u5173
signantireplayfilter.header.notnull={0}, {1}, {2} cannot be empty
signantireplayfilter.replay.forbidden=Request replay is forbidden
signantireplayfilter.signature.timeout=Signature request timed out
signantireplayfilter.session.invalid=Session is invalid, please log in again
signantireplayfilter.signature.invalid=Signature verification failed
signantireplayfilter.signature.exception=Signature verification exception
passwdtokenfilter.auth.fail=User authentication failed! ssoType={0}
passwdtokenfilter.username.password.error=Username or password is incorrect! ssoType={0}
jwtfilter.token.expired=Token authentication expired
jwtfilter.token.exception=Token authentication exception!
accesstokenfilter.info.error=AccessToken information error!
accesstokenfilter.expired=AccessToken expired!
accesstokenfilter.auth.expired=AccessToken authentication expired!
accesstokenfilter.auth.exception=AccessToken authentication exception!
resource.validator.resource.notnull=Resource object cannot be null
resource.validator.param.notnull=Resource parameter cannot be null
resource.validator.paramname.notnull=Resource parameter {0} cannot be null
resource.validator.url.invalid=Resource parameter {0} must be a valid URL
pluginresource.validator.tools.array=The tools of plugin resource must be an array
dbtype.processor.chatbiBaseId.notnull=chatbi knowledge base ID cannot be null
agenttype.processor.agentparam.notnull=Agent parameter cannot be null
agenttype.processor.agenttype.notnull=Agent type cannot be null
agenttype.processor.agenttype.invalid=Agent type must be one of 001, 002, 003, or 004
agenttype.processor.sseurl.notnull=Service connection original address cannot be null
agenttype.processor.sseurl.invalid=Service connection original address must be a valid URL
agenttype.processor.weburl.notnull=Page connection original address cannot be null
agenttype.processor.weburl.invalid=Page connection original address must be a valid URL
agenttype.processor.adminurl.invalid=Admin page original address must be a valid URL
agenttype.processor.prologue.invalidjson=Agent configuration must be valid JSON format
agenttype.processor.relids.invalid=Referenced resource ID list format is incorrect
resourcepublish.processor.channel.notnull=Publish channel cannot be null
resourcepublish.processor.catalogid.notnull=Catalog ID cannot be null
resourcepublish.processor.manorgid.notnull=Organization ID cannot be null
resourcepublish.processor.manuserid.notnull=Manager user ID cannot be null
resourcepublish.processor.byai.resourceid.notnull=ResourceId cannot be null when publishing resource in BYAI system
resource.notfound=Resource does not exist
query.detail.error=queryResourceDetail occurs error!
resource.id.required=Resource ID cannot be null
resource.version.notfound=Resource version does not exist
resource.biz.type.not.support=Resource Type not exist,resourceBizType={0}
resourcepublish.processor.onlydraft.publish=Only draft resources can be published
resourcepublish.processor.user.nopermission=User has no permission to publish this resource
resourcepublish.processor.external.name.notnull=Resource name cannot be null when publishing resource from external system
resourcepublish.processor.external.desc.notnull=Resource description cannot be null when publishing resource from external system
resourcepublish.processor.external.biztype.notnull=Resource business type cannot be null when publishing resource from external system
resourcepublish.processor.external.hosttype.notnull=Service mode cannot be null when publishing resource from external system
mcptype.processor.param.notnull=MCP service parameter cannot be null
mcptype.processor.transfertype.notnull=MCP service transfer type cannot be null
mcptype.processor.transfertype.invalid=MCP transfer protocol type must be stdio, sse, or http
mcptype.processor.env.invalidjson=Environment variable must be a valid JSON object
mcptype.processor.timeout.invalid=Timeout must be a valid integer
mcptype.processor.serverurl.invalid=Service original address must be a valid URL
mcptype.processor.header.notnull=When transfer type is sse or http, header cannot be null
mcptype.processor.command.notnull=When transfer type is stdio, command cannot be null
mcptype.processor.args.notnulljsonarray=When transfer type is stdio, args cannot be null and must be a JSON array
tooltype.processor.param.notnull=Tool parameter cannot be null
tooltype.processor.outputSchema.notnulljson=Tool output schema cannot be null and must conform to JSON Schema
tooltype.processor.transfertype.invalid=Tool transfer type must be restfull/sse
tooltype.processor.inputSchema.invalidjson=Tool input schema must conform to JSON Schema
tooltype.processor.url.notnullvalid=Tool original address cannot be null and must be a valid URL
mcptooltype.processor.param.notnull=MCP tool parameter cannot be null
mcptooltype.processor.inputSchema.notnull=MCP tool input schema cannot be null
mcptooltype.processor.jsonschema.typefield={0} must contain type field
mcptooltype.processor.jsonschema.typename=The type of {0} must be a valid JSON Schema type
mcptooltype.processor.jsonschema.descriptionfield={0} must contain description field
mcptooltype.processor.jsonschema.format={0} must conform to JSON Schema format
mcptooltype.processor.jsonschema.object.properties={0} properties cannot be null when type is object
mcptooltype.processor.jsonschema.array.items={0} items cannot be null when type is array
resourceshelf.service.resource.notfound=Resource does not exist: {0}
resourceshelf.service.status.notwait=Resource is not in waiting-to-be-listed status, cannot be listed!
resourceshelf.service.permission.noshelf=Only resource manager, platform admin, or platform operator can list the resource!
resourceshelf.service.status.notlisted=Resource is not in listed status, cannot be unlisted!
resourceshelf.service.permission.nounshelf=Only resource manager, platform admin, or platform operator can unlist the resource!
resourcecreation.processor.name.exists=Resource name already exists under this type
resourcecreation.processor.name.empty=Resource name cannot be empty
resourcecreation.processor.name.invalid.format=Resource name format is invalid, only Chinese, English (uppercase and lowercase), numbers and underscores are allowed, current value: {0}
abstractresourceprocessor.avatar.length.exceed=Resource icon URL length cannot exceed 1024 characters
abstractresourceprocessor.avatar.url.invalid=Resource icon must be a valid URL
abstractresourceprocessor.agent.create.doclib.fail=Agent creation doclib failed: {0}
abstractresourceprocessor.resource.notfound=Resource does not exist: {0}
resourcemodification.service.resource.notfound=Resource does not exist: {0}
resourcemodification.service.onlydraft.delete=Only draft status resources can be deleted: {0}

# ==== Business Exception i18n key supplement ====
login.auth.success.user.type.error=After successful login authentication, the authenticated object must be: Users!
jwt.private.key.error=Failed to get Jwt private key
jwt.public.key.error=Failed to get Jwt public key
position.name.duplicate=Position name already exists, duplicate addition is not allowed
position.not.exist=Position does not exist
position.has.user=There are users under the position
user.code.duplicate=Employee code cannot be duplicated with others
user.number.duplicate=Employee number cannot be duplicated with others
user.code.duplicate.simple=User code cannot be duplicated
user.number.duplicate.simple=User number cannot be duplicated
user.code.generate.failed=Failed to generate user code, please try again later
user.not.exist=User does not exist
userorg.remove.id.notnull=The ID for removing user-organization association cannot be null!
org.name.duplicate=Organization name cannot be duplicated with others
org.code.duplicate=Organization code cannot be duplicated with others
org.update.permission.deny=Current user is not a platform or current org admin, update not allowed
org.not.exist=Organization does not exist
org.has.child=The organization has sub-organizations, deletion not allowed
org.has.user=The organization has users, deletion not allowed
enterprise.edit.permission.deny=Only platform admin can edit enterprise info!
system.error.retry=System error, please try again later!
resource.privilege.unknown=Unknown privilege operation type
resource.permission.nopermission=The user does not have permission! Only platform administrators, platform operators, and business managers are allowed to view.
auth.type.unsupported=Unsupported type
auth.grant.doc.notfound=Authorized document type does not exist: {0}
auth.grant.scope.notfound=Authorization scope does not exist
auth.grant.granttype.notfound=Authorization scope grantType does not exist
organization.permission.nopermission=The current user is not a platform administrator or organization administrator
organization.platformadmin.add.nopermission=The current user is not a platform administrator and cannot add platform administrator users
organization.add.nopermission=The current user is not a platform administrator or the current organization administrator, adding organization is not allowed
organization.update.nopermission=The current user is not a platform administrator or the current organization administrator, updating organization is not allowed
organization.delete.nopermission=The current user is not a platform administrator or the current organization administrator, deleting organization is not allowed
login.authconfig.notfound=No authorization configuration available
resource.publish.nopermission=The user does not have resource publishing permission! Only the owner and manager of the resource can publish.
resource.status.notremoved=Resources that are not in the removed status cannot be published by the resource manager!
resource.status.notdraft=Resources that are not in draft status cannot be published by the resource creator!
resource.publish.creatorormanager.nopermission=The user does not have resource publishing permission! Only the creator and manager of the resource can publish.
resource.unpublish.manager.nopermission=The user does not have resource unpublishing permission! Only the resource manager can unpublish.
resource.status.notlisted.unpublish=Resources that are not in the listed status cannot be unpublished!
resource.shelf.manager.nopermission=The user does not have resource shelving permission! Only the resource manager can shelve.
resource.status.notpublished.shelf=Resources that are not in the published status cannot be shelved by the resource manager!
resource.delete.creatorormanager.nopermission=The user does not have resource deletion permission! Only the creator and manager of the resource can delete.
resource.status.notremoved.deletebymanager=Resources that are not in the removed status cannot be deleted by the resource manager!
resource.status.notdraft.deletebycreator=Resources that are not in draft status cannot be deleted by the resource creator!
resource.update.creatorormanager.nopermission=The user does not have resource modification permission! Only the creator and manager of the resource can modify.
resource.status.notlisted.updatebymanager=Resources that are not in the listed status cannot be modified by the resource manager!
resource.status.notdraft.updatebycreator=Resources that are not in draft status cannot be modified by the resource creator!
position.add.nopermission=The current user is not a platform administrator and cannot add position information
position.update.nopermission=The current user is not a platform administrator and cannot modify position information
position.delete.nopermission=The current user is not a platform administrator and cannot delete position information
user.permission.nopermission=The current user is not a platform administrator or organization administrator
user.platformadmin.add.nopermission=The current user is not a platform administrator and cannot add platform administrator users
user.platformadmin.update.nopermission=The current user is not a platform administrator and cannot modify platform administrator users
user.org.notin=The current user is not in organization orgId={0}
user.org.infoerror=User-organization association information error, please check whether the user is in this organization!
user.platformadmin.remove.nopermission=The current user does not have permission to remove platform administrator users
user.password.reset.nopermission=Only platform administrators or organization administrators can reset passwords
resource.publish.info.isempty=Fail to publish resource! The publish info cann't be empty!
resourcedto.avatar.size=The length of the resource icon URL cannot exceed 1024 characters.
resourcedto.avatar.url=The resource icon must be a valid URL format.
resourcedto.systemcode=The systemcode must be BYAI,BOT OR DIFY
resourcedto.resourcebiztype=The resourceBizType must be one of AGENT,KG_DOC,PLUGIN,MCP,TOOL,MCP_TOOL OR KG_DB,DB_DATASET
user.not.allowed=The normal user is not allowed to access!
resource.state.notallow.publish=The resource is under review and cannot be republished!
resourcepublish.processor.catalogid.notexists=The catalog don't exist!
resourcepublish.processor.manorgid.notexists=The orgnanization don't exist!
resourcepublish.processor.manuserid.notexists=The manager don't exist!
resourcepublish.processor.object.notexists=Object has no actions, cannot be published
ontology.action.code.duplicate.in.batch=Action code [{1}] for action [{0}] already exists in batch!
ontology.action.code.exists=Action codes {0} already exist
ontology.action.code.notnull=Action code cannot be empty
ontology.action.name.notnull=Action name cannot be empty
ontology.action.code.duplicate.in.request=Action code [{0}] is duplicated in the same object, action codes must be unique within the object
ontology.action.name.duplicate.in.request=Action name [{0}] is duplicated in the same object, action names must be unique within the object
ontology.action.code.exists.in.object=Action code [{0}] already exists in current object
ontology.action.name.exists.in.object=Action name [{0}] already exists in current object
position.positionname.validate=Position name can only be entered in Chinese, letters and numbers
user.username.validate=User name can only be entered in Chinese, letters and numbers
resourcedto.resourcehosttype=The resourcehosttype must be hosted or local
resourcedto.resourcesample.validate=sample must be a valid JSON array

# Station Management Internationalization
station.parent.id.notnull=Parent station ID cannot be null
station.not.exist=Station does not exist

# ==== ResponseUtil i18n keys supplement ====
# Token management related
token.info.notfound=Token information not found!
token.remove.permission.denied=Current user has no permission to remove token!
token.remove.success=Token removed successfully!

# Email service related
email.subject.notnull=Subject cannot be empty
email.content.notnull=Email content cannot be empty
email.address.notnull=Email address cannot be empty
email.send.success=Email sent successfully
email.send.fail=Email sending failed

# Login related
login.user.not.logged.in=Current user is not logged in!
login.user.not.logged.in.logout=Current user is not logged in, please log in to the system before logging out!
login.logout.success=Logged out successfully!

# User management related
user.update.not.exist=Employee to be modified does not exist!
user.employee.id.list.empty=Employee ID list cannot be empty
user.info.not.exist.id=User information not found
user.info.not.exist=User information does not exist, please check!
user.old.password.error=Old password entered incorrectly!
user.update.success=Employee information updated successfully!
user.password.reset.success=Password reset successfully!
user.leave.organization.success=Employee left organization successfully
user.batch.leave.organization.success=Employees batch left organization successfully!

# Position management related
position.delete.success=Position deleted successfully!

# Authentication related
auth.access.denied.not.logged.in=User not logged in, access denied

response.operation.success=Operation successful
response.operation.fail=Operation failed# ==== Res
# Organization management related
organization.query.root.success=Query root organization successfully!
organization.update.success=Update organization successfully!
organization.delete.success=Delete organization
organization.add.success=Add organization successfully!
organization.modify.success=Modify organization successfully!
organization.add.member.success=Add member successfully

# Position management related
position.add.success=Add position successfully!
position.modify.success=Modify position successfully!
position.save.success=Save successfully!
position.remove.success=Remove position successfully!

# User management related
user.password.modify.success=Password modified successfully!
user.delete.success=Delete user successfully!

# Station management related
station.add.success=Add station successfully!
station.modify.success=Modify station successfully!
station.delete.success=Delete station successfully!

# Token management related
token.create.success=Create token successfully!

# Enterprise management related
enterprise.update.success=Update enterprise information successfully!

# Authentication related
auth.refresh.permission.success=Refresh permission successfully
auth.operation.success=Operation successful

# System related
system.init.success=Initialize successfully!# Reso

# System config management related
system.config.save.success=Add system config successfully
system.config.update.success=Update system config successfully
system.config.delete.success=Delete system config successfully
system.config.query.success=Query system config successfully
system.config.cache.clear.one.success=Refresh system config cache successfully
system.config.cache.clear.all.success=Refresh all system config cache successfully
system.config.paramcode.exists.save=Parameter code already exists, cannot add
system.config.paramcode.exists.update=Parameter code already exists, cannot update

# System config list management related
system.config.list.save.success=Add system config list successfully
system.config.list.update.success=Update system config list successfully
system.config.list.delete.success=Delete system config list successfully
system.config.list.query.success=Query system config list successfully
system.config.list.cache.clear.one.success=Refresh system config list cache successfully
system.config.list.cache.clear.all.success=Refresh all system config list cache successfully
system.config.list.paramgroupcode.exists.save=Group name or code already exists
system.config.list.paramgroupcode.notblank=Group code cannot be empty
system.config.list.paramgroupname.notblank=Group name cannot be empty
system.config.list.byaisystemconfiglists.notempty=System config list cannot be empty

resource.manager.query.error=Query resource manager error# System e
# Token name duplicate error
token.name.duplicate.error= is already used as a token name, please use a new name!
organization.add.invalid.organization=Added organization must be a valid organization
organization.add.invalid.employee=Added employee must be a valid employee
organization.add.invalid.object.type=Object type must be one of the following values, USER: user, ORG: organization

# ==== Resource Audit i18n keys ====
audit.request.notnull=Audit request cannot be empty
audit.resourceid.notnull=Resource ID cannot be empty
audit.result.notnull=Audit result cannot be empty
audit.result.invalid=Audit result must be PASS or REJECT
audit.status.notallowed=Resource status does not allow audit: resourceId={0}, status={1}, expectedStatus={2}
audit.pass.success=Audit passed, resource has been shelved
audit.pass.shelf.fail=Audit passed but shelving failed: {0}
audit.reject.success=Audit rejected, resource status has been updated
audit.reject.update.fail=Audit rejected but status update failed: {0}
audit.permission.denied=Current user has no audit permission
audit.title.publish.portal={0} publish to business portal approval
audit.title.apply={0} application approval
audit.title.publish={0} publish approval
audit.proc.def.name.apply=Resource Application
audit.proc.def.name.publish=Resource Publish

# ==== Resource Management i18n keys ====
resource.external.modify.notallowed=Resources published by external systems cannot be modified!
resource.status.modify.notallowed=Current status does not allow modification, only draft status resources can be modified
resource.shelf.status.notallowed=Resource is not in pending shelf/removed status, cannot shelf resource!
resource.shelf.permission.denied=Non-resource managers, platform administrators or platform operators cannot shelf resources!
resource.delete.status.notallowed=Only draft status resources can be deleted: {0}
resource.delete.permission.denied=Only resource creators, platform administrators and platform operators can delete resources: {0}
resource.unshelf.status.notallowed=Draft or published status resources cannot be unshelved!

# ==== Digital Employee Processor i18n keys ====
digemployee.processor.param.notnull=parameters cannot be null
digemployee.processor.agenttype.notnull=Digital employee type cannot be empty
digemployee.processor.agenttype.invalid=Digital employee type is invalid, must be 001, 002, 003, or 004
digemployee.processor.devtype.notnull=Digital employee development type cannot be empty
digemployee.processor.devtype.invalid=Digital employee development type is invalid, must be byai, bot, dify, or whaleAgent
digemployee.processor.sseurl.notnull=Digital employee SSE URL cannot be empty
digemployee.processor.sseurl.invalid=Digital employee SSE URL is invalis
digemployee.processor.weburl.invalid=Digital employee web URL format is invalid
digemployee.processor.adminurl.invalid=Digital employee admin URL format is invalid
digemployee.processor.prologue.role.notnull=Role in digital employee prologue cannot be empty
digemployee.processor.prologue.background.notnull=Background in digital employee prologue cannot be empty
digemployee.processor.prologue.descText.notnull=Description in digital employee prologue cannot be empty
digemployee.processor.prologue.openingQuestion.notnull=Opening questions in digital employee prologue cannot be empty
digemployee.processor.prologue.invalid=Digital employee prologue format is invalid
digemployee.processor.relids.invalid=Digital employee related resource list format is invalid
digemployee.processor.adminurl.authparams.notnull=Authentication parameters for digital employee admin URL cannot be empty
digemployee.processor.adminurl.oauth2.appkey.secret.notnull=oauth2 authentication method appKey and secret cannot be empty
digemployee.processor.adminurl.params.required=OAuth2 authentication parameters appKey and secret cannot be empty
digemployee.processor.adminurl.format.invalid=Admin page URL format is invalid
digemployee.processor.adminurl.authparams.null=Authentication parameters authParams for admin page URL cannot be null
digemployee.processor.adminurl.json.parse.error=Admin page URL JSON format parsing failed
digemployee.processor.adminurl.urllist.not.array=URL list for admin page must be an array format
digemployee.tag.personal.assistant=Personal Assistant
digemployee.tag.personal.default.assistant=Personal Assistant (Default)
digemployee.tag.super.assistant=Super Assistant
digemployee.tag.default.super.assistant=Super Assistant (Default)
digemployee.tag.default.suffix= (Default)
digemployee.tag.third.party=Third Party
digemployee.default.super.assistant.resource.name={0}'s Super Assistant
digemployee.default.super.assistant.ability=Answer questions around the personal knowledge base and help complete daily assistant tasks with conversation context.
digemployee.default.super.assistant.constraints=Prioritize answers based on the current user's default personal knowledge base; when the knowledge base does not cover the question, clearly state that the evidence is insufficient.
digemployee.default.super.assistant.faqs=What content is in my personal knowledge base?\nHelp me summarize the materials I uploaded recently.
digemployee.default.super.assistant.opening.question.intro=Please introduce my personal knowledge base
digemployee.default.super.assistant.opening.question.summary=Help me summarize the knowledge base materials
digemployee.tag.agent.assistant=Assistant
digemployee.tag.agent.data=Data Q&A
digemployee.tag.agent.qa=Q&A
digemployee.tag.agent.debug=Debug
digemployee.tag.agent.code=Coding
commercial.not.support.create.digital.employee=Commercial edition does not support creating {0} digital employees
commercial.not.support.knowledge.operation=Commercial edition does not support this operation (please use the agent portal)

# External system deletion error messages
resource.delete.knowledge.fail=Failed to delete resource from intelligent agent, resource ID: {0}, error message: {1}
resource.delete.chatbi.fail=Failed to delete knowledge base from ChatBI, resource ID: {0}, error message: {1}

# ==== Resource Failure Reason i18n keys ====
failure.reason.duplicate.publish=Duplicate publish
failure.reason.permission.denied=Permission denied
failure.reason.invalid.status=Invalid status
failure.reason.invalid.parameter=Invalid parameter
failure.reason.resource.not.found=Resource not found
failure.reason.database.error=Database error
failure.reason.network.error=Network error
failure.reason.approval.failed=Approval failed
failure.reason.publish.failed=Publish failed
failure.reason.unknown=Unknown error

# ==== Resource Publish Exception i18n keys ====
resource.publish.or.approval.failed=Resource publish or approval failed
resource.publish.processor.resourceid.null=Resource ID returned by publish processor is null

# ==== Resource Publish Log Messages i18n keys ====
resource.publish.start=Start publishing resource, isFrontAccess={0}
resource.publish.config.value=Approval configuration [ENABLE_APPROVE] value is: {0}
resource.publish.approval.enabled=Enable approval process for resource publishing
resource.publish.approval.completed=Approval process publishing completed, result: {0}
resource.publish.direct.enabled=Direct resource publishing (without approval)
resource.publish.direct.completed=Direct publishing completed, result: {0}

# SystemFeedback system feedback internationalization
systemfeedback.feedbacktype.notempty=Feedback type cannot be empty
systemfeedback.title.notempty=Feedback title cannot be empty
systemfeedback.title.size=Feedback title length cannot exceed 100 characters
systemfeedback.content.notempty=Feedback content cannot be empty
systemfeedback.content.size=Feedback content length cannot exceed 1000 characters
# ==== Resource Authorization Validation Related ====
resource.id.empty=Resource ID cannot be empty
resource.not.found=Resource does not exist
resource.not.allow.auth=Resource '{0}' is a digital employee not published to the business portal and is not allowed for authorization operations
customer.leads.batch.empty=Batch insert failed: list cannot be empty

# User validation messages
user.already.exist=This phone number is already registered, please login directly

# SMS Rate Limit Messages
sms.send.too.frequent=Too frequent, please try again after 5 minutes
sms.daily.limit.exceeded=Daily SMS limit reached, please try again tomorrow
sms.ip.interval.limit.exceeded=Too many attempts, please try again later
sms.ip.daily.limit.exceeded=Daily IP limit reached, please try again tomorrow

# Debug session query validation messages
debug.session.agent.id.null=Digital employee ID cannot be empty
debug.session.agent.id.invalid=Digital employee ID must be greater than 0, current value: {0}
debug.session.user.id.null=Current user ID cannot be empty, please ensure user is logged in
debug.session.user.id.invalid=Current user ID is invalid, please log in again
debug.session.query.failed=Failed to query debug session: {0}

monitor.digital.employee.audit.param.missing=The audited digital employee [{0}] has incomplete required parameters: resource name, core ability or ability constraints is empty.
monitor.digital.employee.audit.pass=Digital employee [{0}] has no duplicate or overlapping risk.
monitor.digital.employee.audit.issue.duplicate.summary=The audited digital employee [{0}] is highly similar to {1}
monitor.digital.employee.publish.param.invalid=The digital employee has empty core ability or ability boundary, please complete the profile first!
monitor.digital.employee.audit.notification.title=Digital Employee Audit Result Notification

# ==== Notification i18n keys ====
notification.resource.type.dig.employee=Digital Employee
notification.operation.shelf=Shelf
notification.operation.unshelf=Unshelf
notification.suffix= Notification
notification.title.template={0}{1}{2}
notification.content.template={0}--{1}
monitor.digital.employee.audit.all.pass=All audited digital employees are normal, audit data employees--passed
monitor.digital.employee.audit.detail.guide=For specific audit information, please go to \u3010Operation and Monitoring Management\u3011-Digital Employee page to view \u3010Audit Description\u3011

# Operations service error messages
operations.digemployee.metrics.service.failed=Failed to call digital employee usage metrics service! Reason: {0}
operations.digemployee.accuracy.metrics.process.error=Error occurred while processing accuracy metrics data
operations.digemployee.metrics.process.error=Error occurred while processing metrics data
operations.digemployee.evaluate.config.not.found=evaluate config not found
operations.digemployee.evaluate.not.qualified=Digital employee evaluation does not meet qualification requirements
operations.digemployee.evaluate.not.found=Digital employee evaluation not found
operations.digemployee.resource.id.not.null=Digital employee resource id not null
operations.digemployee.batchId.not.null=Digital employee test set batchId not null
operations.digemployee.param.not.null=Digital employee param id not null
operations.digemployee.test.set.file.not.null=Digital employee test set file not null
operations.digemployee.assigner.ids.not.null=Digital employee assigner ids not null
operations.request.param.not.null=request param not null
operations.digemployee.assigner.assignReason.not.null=Digital employee assigner assignReason not null
operations.digemployee.relId.not.null=Digital employee message relId not null
operations.digemployee.resMsgId.not.null=Digital employee message resMsgId not null
operations.digemployee.askMsgId.not.null=Digital employee message askMsgId not null
operations.digemployee.auditor.not.found=Digital employee apply post auditor not found
operations.digemployee.catalog.not.found=Digital employee apply post catalog not found
operations.digemployee.manager.not.found=Digital employee manager not found
operations.messageFeedbackAssign.assignerIds.notFound=Digital employee Assigner IDs not found
operations.digemployee.upload.test.set.invalid.file=Upload Test Set File is invalid

# Operation Evaluate
evaluation.result.qualified=Assessment result meets qualification requirements
evaluation.result.ability.match.failed=Ability-post matching score does not meet requirement less than {0}
evaluation.result.persona.spec.failed=Persona specification score does not meet requirement less than {0}
evaluation.result.response.time.failed=Average first response time does not meet requirement greater than {0} seconds
evaluation.result.error.rate.failed=Conversation error rate does not meet requirement greater than {0}%
evaluation.result.test.accuracy.failed=Test set accuracy does not meet requirement less than {0}%
evaluation.result.actual.accuracy.failed=Actual usage accuracy does not meet requirement less than {0}%

# digital postion
digital.position.catalog.not.exist=The catalog associated with the digital position does not exist
digital.position.name.duplicate.in.catalog=The name of the digital position is duplicated in the catalog
digital.position.has.resource=There are still bound digital employees under the digital position
digital.position.add.nopermission=\u5F53\u524D\u7528\u6237\u6CA1\u6709\u6743\u9650

# digital employee position relation
digital.employee.add.position.nopermission=The current user has no permission to bind the digital employee to this digital position
digital.employee.not.bind.position=The digital employee is not bound to this digital position
digital.employee.on.position.nopermission=The current user has no permission to put the digital employee on duty for the position
digital.employee.off.position.nopermission=The current user has no permission to take the digital employee off duty from the position
digital.employee.position.catalogId.not.exist=The catalog ID of the digital position does not exist
digital.employee.position.catalogId.not.match=The catalog bound to the digital employee does not match that of the digital position
digital.employee.unbind.position.nopermission=The current user does not have permission to unbind the digital employee from the current digital position

# digital employee resource
digital.employee.resource.not.exist=The digital employee resource does not exist


# Apply post request validation messages
apply.post.resource.id.not.null=Resource ID cannot be null
apply.post.auditor.id.not.null=Auditor ID cannot be null
apply.post.catalog.id.not.null=Catalogue ID cannot be null
apply.post.reason.not.blank=Application reason cannot be blank
apply.post.positionId.not.null=Application position ID cannot be null
apply.post.reason.size=The application reason for the position cannot exceed 500 characters
apply.post.auditor.id.not.found=Auditor does not exist

# state service
invalid.askMsgId.format=askMsgId format invalid

# Resource dataset service error messages
resource.dataset.update.params.failed=Failed to update input/output parameters
resource.object.not.exist=Object does not exist, resourceId: {0}
resource.dataset.parse.extmeta.failed=Failed to parse extMeta
resource.object.resource.not.exist=Object resource does not exist, resourceId: {0}
resource.object.action.not.exist=Object associated action does not exist, resourceId: {0}
resource.dataset.execute.sql.failed=Failed to execute SQL: {0}
resource.dataset.query.failed=Failed to execute dataset query: {0}

# Permission group service error messages
permission.group.not.exist=Permission group does not exist
permission.group.code.exists=Permission group code already exists
permission.group.name.exists=Permission group name already exists
permission.group.id.not.null=Permission group ID cannot be null
permission.group.has.authorized.objects=Permission group has authorized objects and cannot be deleted
permission.group.authorized.object.not.exist=Authorized object does not exist
permission.group.excluded.object.not.exist=Excluded object does not exist
permission.group.excluded.object.delete.only.own=Can only delete excluded objects of this permission group
permission.group.resource.id.list.not.empty=Resource ID list cannot be empty
permission.group.user.not.authorized.object=User is not an authorized object of this permission group
permission.group.object.type.unsupported=Unsupported object type: {0}

# Ontology service error messages
ontology.source.type.not.null=Data source type cannot be null
ontology.source.type.unsupported=Unsupported data source type: {0}
ontology.object.name.not.null=Object name cannot be null
ontology.object.name.exists=Object name already exists
ontology.catalog.id.not.null=Catalog ID cannot be null
ontology.resource.id.not.null=Resource ID cannot be null
ontology.object.not.exist=Object does not exist
ontology.resource.not.object.view.type=The resource is not an object/view type
ontology.object.view.name.exists=Object/view name already exists
ontology.resource.not.object.type=The resource is not an object type
ontology.related.object.id.not.null=Related object ID cannot be null
ontology.related.object.not.exist=Related object does not exist
ontology.related.resource.not.object.type=Related resource is not an object type
ontology.resource.and.related.id.not.null=Resource ID and related resource ID cannot be null
ontology.cannot.relate.self=Cannot relate to itself
ontology.resource.not.exist=Resource does not exist
ontology.function.name.not.null=Function name cannot be null
ontology.attribute.type.not.null=Attribute type cannot be null
ontology.attribute.code.not.null=Attribute code cannot be null
ontology.data.type.not.null=Data type cannot be null
ontology.object.resource.id.not.null=Object resource ID cannot be null
ontology.object.not.exist.with.id=Object does not exist, resourceId={0}
ontology.resource.not.object.type.with.id=Resource is not an object type, resourceId={0}

# Ontology application service error messages
ontology.application.resource.not.exist=Resource does not exist, resourceId={0}
ontology.application.feign.error={0}: {1}
ontology.application.plugin.engine.error=Error calling plugin engine interface: resource/createResource! {0}
ontology.application.plugin.machine.info.type.invalid=pluginMachineInfo field type is incorrect, expected List type
ontology.application.tool.no.toolkit=This tool has no toolkit! Please select another tool!

# Agent build service error messages
agent.build.tool.info.error=Tool info error: {0}
agent.build.config.parse.error=Configuration file parsing digital employee error!
common.unknown.error=Unknown error

# Database resource relation service error messages
dbresource.rel.id.not.null=Relation ID cannot be null
dbresource.user.id.not.null=User ID cannot be null
dbresource.record.id.not.null=Record ID cannot be null
dbresource.rel.entity.not.null=Relation entity cannot be null

# Resource catalog service error messages
resource.catalog.name.not.null=Catalog name cannot be null
resource.catalog.type.not.null=Catalog type cannot be null
resource.catalog.name.duplicate=Catalog with the same name already exists at the same level
resource.catalog.create.failed=Failed to create catalog
resource.catalog.id.not.null=Catalog ID cannot be null
resource.catalog.not.exist=Catalog does not exist
resource.catalog.update.failed=Failed to update catalog
resource.catalog.has.children=Catalog has child catalogs and cannot be deleted
resource.catalog.delete.failed=Failed to delete catalog
resource.catalog.parent.id.not.null=Parent catalog ID cannot be null
resource.catalog.notfound=Resource publish catalog is empty, please contact administrator to create resource publish catalog!

# Organization management error messages
org.manager.or.business.manager.notfound=Current organization has not set organization manager/business manager, cannot publish!

# Resource management application service error messages
resource.version.status.update.failed=Failed to update resource version status: resourceVersionId={0}
resource.delete.es.retry.interrupted=ES deletion retry process was interrupted, resource ID: {0}
auth.privilege.grant.not.null=PrivilegeGrant cannot be null
auth.grant.obj.type.and.id.not.null=GrantObjType and GrantObjId cannot be null
auth.personal.assistant.manage.auth.not.allowed=Personal assistants do not support management authorization
auth.query.agent.by.page.failed=Failed to query digital employee list: {0}

# Resource event service error messages
resource.event.shelf.failed=Failed to send resource shelf event
resource.event.unshelf.failed=Failed to send resource unshelf event
resource.event.audit.pass.failed=Failed to send resource audit pass event
resource.event.audit.reject.failed=Failed to send resource audit reject event

# Resource publish processor error messages
resource.publish.action.attributes.empty={0} corresponding action [{1}] attributes are empty, cannot publish!
resource.publish.actions.attributes.empty={0} has actions with empty attributes, cannot publish! Actions with empty attributes: {1}

# Permission group category service error messages
permission.group.category.not.exist=Permission group category does not exist
permission.group.category.code.exists=Category code already exists
permission.group.category.name.duplicate=Category name already exists at the same level
permission.group.category.parent.not.exist=Parent category does not exist
permission.group.category.id.not.null=Category ID cannot be null
permission.group.category.cannot.set.self.as.parent=Cannot set catalog as its own parent
permission.group.category.cannot.set.child.as.parent=Cannot set catalog as a child of its subdirectory
permission.group.category.has.children=Catalog has child catalogs and cannot be deleted
permission.group.category.has.permission.groups=Catalog has permission groups and cannot be deleted

# Organization service error messages
org.clean.permission.data.failed=Failed to clean organization permission data: {0}
org.clean.external.system.mapping.failed=Failed to clean organization external system mapping data: {0}

# Permission group application service error messages
permission.group.application.query.list.failed=Failed to query permission group list
permission.group.application.query.detail.failed=Failed to query permission group detail
permission.group.application.add.failed=Failed to add permission group
permission.group.application.update.failed=Failed to update permission group
permission.group.application.delete.failed=Failed to delete permission group
permission.group.application.query.authorized.objects.failed=Failed to query authorized objects list
permission.group.application.add.authorized.object.failed=Failed to add authorized object
permission.group.application.delete.authorized.object.failed=Failed to delete authorized object
permission.group.application.update.basic.info.failed=Failed to update basic information
permission.group.application.update.resource.permission.failed=Failed to update resource permission
permission.group.application.update.data.permission.failed=Failed to update data permission
permission.group.application.batch.delete.authorized.objects.failed=Failed to batch delete authorized objects
permission.group.application.query.excluded.objects.failed=Failed to query excluded objects list
permission.group.application.add.excluded.object.failed=Failed to add excluded object
permission.group.application.batch.delete.excluded.objects.failed=Failed to batch delete excluded objects
permission.group.application.batch.delete.resources.failed=Failed to batch delete permission group resources
permission.group.application.query.authorized.users.failed=Failed to query permission group authorized users list
permission.group.application.query.available.objects.failed=Failed to query available authorized objects list
permission.group.application.query.authorized.resources.failed=Failed to query authorized resources list
permission.group.application.query.resource.attribute.permissions.failed=Failed to query resource attribute permissions list
permission.group.application.update.resource.attribute.permission.failed=Failed to update resource attribute permission
permission.group.application.no.permission=No permission to operate permission group
permission.group.application.query.group.and.catalog.failed=Failed to query permission group and catalog joint information
permission.group.application.query.authorized.object.data.permission.failed=Failed to query permission group authorized object data permission
permission.group.application.query.authorized.object.data.permission.detail.failed=Failed to query permission group authorized object data permission detail
permission.group.application.update.authorized.object.data.permission.failed=Failed to update authorized object data permission
permission.group.application.delete.user.data.permission.failed=Failed to delete user data permission
permission.group.application.batch.delete.authorized.object.data.permissions.failed=Failed to batch delete authorized object data permissions
permission.group.application.check.dimension.list.permission.failed=Failed to check dimension list permission
permission.group.application.associate.resources.failed=Failed to associate resources with permission group
permission.group.application.query.resource.associated.groups.failed=Failed to query resource associated permission groups

# Resource consumer error messages
resource.consumer.message.retry.failed=Message retry failed, sent to dead letter queue
resource.consumer.unshelf.es.error=Failed to write unshelf data to ES! Error: {0}
resource.consumer.shelf.es.error=Failed to write shelf data to ES! Error: {0}
resource.consumer.delete.agent.meta.index.batch.failed=Failed to batch delete AgentMetaIndex! Error: {0}

# Operations query service error messages
operations.query.code.not.null=queryCode cannot be null
operations.query.not.es.method=Failed to execute query metrics, query config is not ES query method
operations.query.condition.not.covered=Query conditions do not cover the condition_fields parameter of the query config, please check if the parameters are correct
operations.query.template.not.null=Query config execution template cannot be null

# Schedule task application service error messages
schedule.task.resource.not.exist=Resource does not exist: {0}
schedule.task.not.exist=Current task does not exist

# Resource auth application service error messages
resource.auth.auth.type.required=Please enter authType

# Agent resource service error messages
agent.resource.debug.service.failed=Failed to call debug service: {0}
agent.resource.get.dig.employee.failed=Failed to get digital employee information: {0}
agent.resource.clear.debug.message.failed=Failed to call clear debug message service! Reason: {0}
agent.digital_employee.model.not.configured=Digital employee {0} has no model configured. Please contact the administrator to configure.
agent.digital_employee.model.not.found=The model configured for digital employee {0} does not exist. Please contact the administrator.

# Permission group category application service error messages
permission.group.category.application.query.list.failed=Failed to query permission group category list
permission.group.category.application.query.tree.failed=Failed to query permission group category tree
permission.group.category.application.query.detail.failed=Failed to query permission group category detail
permission.group.category.application.add.failed=Failed to add permission group category
permission.group.category.application.update.failed=Failed to update permission group category

# OpenAPI contract application service error messages
openapi.contract.export.excel.failed=Failed to export Excel: {0}

# Conversation export service error messages
conversation.export.excel.failed=Failed to export Excel: {0}

# Audit application service error messages
audit.cannot.approve=you cant't approve
audit.update.todo.task.failed=Failed to update todo task via conversation service
audit.no.manager.found=No manager found for resourceId: {0}
audit.resource.not.published.to.baiying=Please publish resource information to Baiying first, then apply for shelf!

# Datacloud script scenario config service error messages
datacloud.script.step.save.failed=Failed to save step, index: {0}
datacloud.script.target.save.failed=Failed to save target, index: {0}

# Schedule task instance service error messages
schedule.task.inst.task.id.or.cycle.not.null=Task ID or cycle cannot be null

# Data schedule service error messages
data.schedule.create.task.error=Failed to create task: {0}
data.schedule.delete.task.error=Failed to delete task: {0}
data.schedule.invalidate.task.error=Failed to invalidate task: {0}

# SMS service error messages
sms.send.failed=Failed to send SMS: {0}

# Datacloud script template service error messages
datacloud.script.template.query.list.failed=Failed to query script template list: {0}
datacloud.script.template.query.detail.failed=Failed to query script template detail: {0}
datacloud.script.template.name.exists=Template name already exists
datacloud.script.template.save.failed=Failed to save script template: {0}
datacloud.script.template.update.failed=Failed to update script template: {0}
datacloud.script.template.not.exist=Template does not exist
datacloud.script.template.delete.failed=Failed to delete script template: {0}
datacloud.script.template.batch.delete.failed=Failed to batch delete script templates: {0}
datacloud.script.template.query.available.failed=Failed to query available script templates: {0}
datacloud.script.template.update.status.failed=Failed to update script template status: {0}

# Captcha service error messages
captcha.image.generate.failed=Failed to generate image captcha
captcha.sms.repeat.send=Please do not send verification code repeatedly

# Permission group category application service additional error messages
permission.group.category.application.delete.failed=Failed to delete permission group category
permission.group.category.application.no.permission=No permission to operate permission group category

# Digital employee controller error messages
digemployee.name.not.null=Digital employee name cannot be null
digemployee.describe.not.null=Digital employee description cannot be null
digemployee.type.illegal=Digital employee type is illegal
digemployee.app.id.not.null=appId cannot be null
digemployee.agent.id.not.null=agentId cannot be null
digemployee.chat.content.not.null=Chat content cannot be null
digemployee.chat.id.not.null=chatId cannot be null
digemployee.rel.app.id.not.null=relAppId cannot be null
digemployee.ownership.type.not.null=ownershipType cannot be null
digemployee.ownership.type.illegal=ownershipType is illegal
digemployee.resource.status.illegal=resourceStatus is illegal
digemployee.publish.channels.error=Publish channels parameter error

# Feign request interceptor error messages
feign.request.url.invalid=Invalid request URL

# AI service error messages
ai.model.default.not.found=No default AI model found
ai.openai.api.request.failed=OpenAI API request failed: {0}
ai.openai.api.call.failed=Failed to call OpenAI API: {0}

# Memory library error messages
memory.library.save.scene.result.empty=Save scene information returned empty result
memory.library.parse.scene.id.failed=Unable to parse sceneId from return result
memory.library.scene.id.not.empty=Scene ID cannot be empty

# Template error messages
template.update.relation.params.incomplete=Parameters incomplete, need templateId, resourceId, memoryRuleId

# Resource processor error messages
resource.processor.tool.output.schema.not.empty=Tool output schema cannot be empty and must conform to JSON Schema format
resource.processor.tool.url.ori.not.empty=Tool original address cannot be empty and must be a valid URL format
resource.processor.tool.input.schema.invalid=Tool input schema must conform to JSON Schema format
resource.processor.tool.transfer.type.not.empty=Tool transfer type cannot be empty
resource.processor.tool.transfer.type.invalid=Tool transfer type must be restfull/sse
resource.processor.tool.type.invalid.type={0} type must be one of the following types (case-insensitive): string, integer, number, object, array, boolean
resource.processor.plugin.headers.format.invalid=Plugin header information format is incorrect, should be array or object format
resource.processor.plugin.tools.list.invalid=Tools list must be array format and contain valid tool information
resource.processor.plugin.tool.param.not.empty=Tool parameters cannot be empty and must contain necessary fields
resource.processor.plugin.resource.biz.type.must.be.tool=Tool resource business type must be TOOL
resource.processor.plugin.system.code.not.empty=Tool external system code cannot be empty
resource.processor.plugin.tool.name.not.empty=Tool name cannot be empty and length cannot exceed 128 characters
resource.processor.plugin.tool.desc.not.empty=Tool description cannot be empty and length cannot exceed 1024 characters
resource.processor.plugin.resource.not.exist=Resource does not exist: {0}
resource.processor.mcp.server.url.invalid=Service original address must be a valid URL format
resource.processor.mcp.timeout.invalid=Timeout must be a valid integer
resource.processor.mcp.env.invalid=Environment variables must be a valid JSON object format
resource.processor.mcp.transfer.type.not.empty=MCP service transfer type cannot be empty
resource.processor.mcp.transfer.type.invalid=MCP transfer protocol type must be stdio, sse or http
resource.processor.mcp.stdio.args.invalid=When transfer type is stdio, parameters cannot be empty and must be JSON array format
resource.processor.mcp.header.not.empty=When transfer type is sse or http, request header cannot be empty
resource.processor.mcp.server.url.not.empty=When transfer type is sse or http, MCP server address cannot be empty
resource.processor.mcp.stdio.command.not.empty=When transfer type is stdio, command cannot be empty
resource.processor.resource.not.exist=Resource does not exist {0}
resource.processor.publish.status.invalid=Cannot publish resource {0} in non-draft status
resource.type.processor.factory.unsupported.type=Unsupported resource type: {0}
resource.param.handle.factory.unsupported.type=Unsupported resource type: {0}
resource.agent.create.document.library.failed=Agent create document library failed:{0} {1}
datacloud.script.execution.json.format.invalid=JSON format is incorrect: {0}
embedding.knowledge.exception=Knowledge embedding exception
embedding.docchain.exception=docChain embedding exception
resource.rel.detail.view.resource.id.not.empty=View resourceId cannot be empty
resource.rel.detail.view.resource.not.exist=View resource does not exist
resource.rel.detail.active.resource.id.not.empty=Active object activeResourceId cannot be empty
resource.rel.detail.active.resource.not.exist=Active object resource does not exist
resource.event.zlog.adapter.init.failed=ZlogAdapter initialization failed, waiting for retry
datacloud.script.template.id.not.empty=Template ID cannot be empty
datacloud.script.template.info.not.empty=Template information cannot be empty
datacloud.script.template.info.or.id.not.empty=Template information or template ID cannot be empty
datacloud.script.template.id.list.not.empty=Template ID list cannot be empty
datacloud.script.template.status.invalid=Enable status must be 0 or 1

feign.response.status.code.invalid=Invalid response status code: {0}
dig.employee.handler.validation.errors=Validation errors: {0}
openapi.resource.management.validation.errors=Validation errors: {0}

# Login module messages
login.phone.verify.code.expired=Verification code has expired, please retrieve a new one!
login.phone.verify.code.incorrect=Verification code is incorrect, please check and re-enter!
login.feilian.get.token.failed=Failed to get token!
login.feilian.get.user.info.failed=Failed to get user information!
login.cas.sso.failed=Single sign-on failed
login.cas.cannot.get.username=Cannot get username
login.cas.xml.parse.exception=Exception occurred while parsing XML
login.cas.access.sso.service.failed=Failed to access single sign-on service: {0}
login.cas.service.verify.failed=CAS service verification failed
login.cas.sha256.algorithm.unavailable=SHA-256 algorithm unavailable
login.cas.unable.to.create.xml.reader=Unable to create XMLReader

# OpenAPI util messages
openapi.util.no.path=OpenAPI has no interface path
openapi.util.multiple.paths.not.single.method=OpenAPI contains multiple paths, does not meet single method expectation
openapi.util.path.multiple.http.methods.not.single.method=Path contains multiple HTTP methods, does not meet single method expectation

# Index type enum messages
index.type.enum.unsupported.resource.type=Unsupported resource type: {0}

# Elasticsearch operations factory messages
elasticsearch.operations.factory.unsupported.es.version=Unsupported ES version: {0}
elasticsearch.operations.hosts.empty=Elasticsearch host address cannot be empty
elasticsearch.operations.password.required=Password is required when username is provided
elasticsearch.operations.create.failed=Failed to create Elasticsearch operations instance: {0}

# Storage module messages
storage.minio.create.client.failed=Failed to create MinIO client: {0}
storage.minio.file.not.exist.or.unreadable=File does not exist or cannot be read: {0}
storage.minio.file.not.exist=File does not exist: {0}
storage.minio.file.download.failed=File download failed: {0}
storage.minio.get.file.metadata.failed=Failed to get file metadata: {0}
storage.minio.create.bucket.failed=Failed to create MinIO bucket: {0}
storage.aliyun.oss.create.client.failed=Failed to create Aliyun OSS client: {0}
storage.properties.unsupported.storage.type=Unsupported storage type: {0}
storage.properties.config.conversion.failed=Config conversion failed, target type: {0}
storage.configuration.unsupported.storage.type=Unsupported storage type: {0}
storage.abstract.check.or.create.bucket.failed=Failed to check or create bucket: {0}
storage.abstract.file.upload.failed=File upload failed: {0}
storage.abstract.file.url.cannot.be.empty=File URL cannot be empty
storage.abstract.file.download.failed=File download failed: {0}
storage.abstract.file.delete.failed=File delete failed: {0}
storage.whaleagent.upload.failed=Failed to upload WhaleAgent file. Please try again later.
storage.whaleagent.download.failed=Failed to download WhaleAgent file. Please try again later.
storage.whaleagent.list.failed=Failed to query WhaleAgent file list. Please try again later.
storage.whaleagent.exists.failed=Failed to check WhaleAgent file existence. Please try again later.
storage.whaleagent.delete.failed=Failed to delete WhaleAgent file. Please try again later.

# Apple Login related messages
applelogincontroller.identity_token.required=Apple identity token is required
applelogincontroller.verify.failed=Apple login verification failed
appleauthprovider.identity_token.notnull=Apple identity token cannot be null
appleauthprovider.user.notfound=No system account found for Apple user
appleauthprovider.auth.fail=Apple login authentication failed
appleauthprovider.bind.required=Apple account not bound to system user, please choose a binding method
apple.bind.phone.required=Phone number is required
apple.bind.verifycode.required=Verification code is required
apple.bind.token.required=Apple bind token is required
apple.bind.username.required=Username is required
apple.bind.success=Apple account bound successfully
apple.bind.failed=Failed to bind Apple account
apple.register.bind.success=New user registered and Apple account bound successfully
apple.register.bind.failed=Failed to register new user and bind Apple account
apple.bindtoken.expired=Apple bind token has expired, please login again
apple.bindtoken.verify.failed=Failed to verify Apple bind token
apple.bindphone.notfound=User with this phone number not found
apple.userid.bindother=This Apple account is already bound to another user
apple.register.phone.exists=This phone number is already registered, please use the bind existing user feature

# Model management aimodel
aimodel.not.found=Model not found
aimodel.id.required=Model ID is required
aimodel.id.invalid=Invalid model ID format
aimodel.name.duplicate=Model name already exists
aimodel.upsert.required=Display name, model code, API endpoint and token are required
aimodel.contextTokens.required=Context tokens is required and must be greater than 0
aimodel.status.invalid=Status must be ENABLED or DISABLED
aimodel.debug.input.required=Debug input is required
aimodel.debug.url.required=Request URL (url) is required for passthrough debug
aimodel.debug.failed=Model debug execution failed
aimodel.delete.enabled.forbidden=Model is in use. Please disable it before deletion.
aimodel.disable.digital.employee.in.use=The following active digital employees are using this model, so it cannot be disabled: {0}. Change these digital employees to another model first, then disable the current model.
aimodel.delete.digital.employee.in.use=The following active digital employees are using this model, so it cannot be deleted: {0}. Change these digital employees to another model first, then delete the current model.
aimodel.modelId.required=Model ID is required
aimodel.tagId.required=Tag ID is required
aimodel.tool_check.not.configured=TOOL_CHECK model is not configured. Please contact the administrator to configure it.
aimodel.chat_model.not.configured=Chat model is not configured. Please contact the administrator to configure it.
# Mode and digital employee relation
mode.digrel.already.exists=The relation between this mode and digital employee already exists
mode.modecode.notblank=Mode code cannot be blank
resource.resourceid.notnull=Resource ID cannot be null
tool.resource.query.success=Resource queried successfully
tool.resource.delete.success=Resource deleted successfully
tool.resource.restore.success=Resource restored successfully

# ==== API response messages for digital employee / conversation / auth / dataset / tool ====
system.internal.error=Internal server error
punctuation.comma=,
resource.resourcename.notnull=Resource name cannot be null
resource.label.object=object
resource.label.view=view
resource.label.knowledge=knowledge
resource.label.tool=tool
resource.owner.type.personal=personal
resource.owner.type.enterprise=enterprise
resource.import.success=Imported successfully
resource.import.owner.type.mismatch=A {3} resource [{1}] with the same code ({0}) already exists under {2}. Please import or modify it under {2} {3}.
resource.update.success=Updated successfully
user.session.invalid=Not logged in or session is invalid
user.not.login=User not logged in
file.notempty=file cannot be empty
owner.type.notempty=ownerType cannot be empty
assistant.chat.request.invalid=Invalid chat request

conversation.message.list.query.success=Conversation list queried successfully
conversation.access.terminal.list.query.success=Access terminal list queried successfully
conversation.project.id.list.query.success=Project ID list queried successfully
conversation.feedback.type.query.success=Feedback type queried successfully
conversation.suass.list.query.success=Q&A list queried successfully
conversation.feedback.handle.success=Feedback message handled successfully

digemployee.list.query.success=Digital employee list queried successfully
digemployee.all.list.query.success=All digital employee list queried successfully
digemployee.delete.success=Digital employee deleted successfully
digemployee.audit.check.success=Digital employee parameters checked successfully
digemployee.detail.query.success=Digital employee detail queried successfully
digemployee.rel.resource.query.success=Digital employee related resources queried successfully
digemployee.catalog.tree.query.success=Skill catalog tree queried successfully
digemployee.publish.check.success=Digital employee publish check completed successfully
digemployee.generate.success=Digital employee generated successfully
digemployee.debug.session.query.success=Digital employee debug session queried successfully
digemployee.default.resource.list.query.success=Default type resource list queried successfully
digemployee.default.set.success=Default digital employee set successfully
digemployee.default.set.resource.id.null=Digital employee resource ID cannot be null
digemployee.default.set.resource.not.exists=Digital employee resource does not exist
digemployee.default.set.resource.not.digital=The current resource is not a digital employee and cannot be set as default
digemployee.default.set.resource.owner.invalid=Only personal digital employees can be set as the default digital employee
digemployee.default.set.resource.creator.invalid=Only digital employees created by the current user can be set as the default digital employee
digemployee.default.set.resource.permission.invalid=Only digital employees visible in the left-side full list can be set as the default assistant
digemployee.default.set.superassist.not.exists=The current user's assistant configuration does not exist
digemployee.default.set.user.not.login=The current login user does not exist or is not logged in
digemployee.status.stats.query.success=Resource status statistics queried successfully

auth.available.use.success=Use authorization succeeded
auth.share.use.success=Share authorization succeeded
auth.list.query.success=Permission list queried successfully
auth.enterprise.tool.create.permission.query.success=Enterprise tool creation permission queried successfully
auth.fixed.entry.capability.query.success=Fixed entry button capability queried successfully
auth.resource.permission.query.success=Resource operation permissions queried successfully
auth.use.apply.submit.success=Resource use application submitted successfully
auth.use.apply.list.query.success=Pending resource use application list queried successfully
auth.use.apply.approve.success=Resource use application approved successfully
auth.use.apply.reject.success=Resource use application rejected successfully
auth.personal.digemployee.list.query.success=Personal owned digital employee list queried successfully
auth.allow.manage.success=Management authorization succeeded
auth.owner.success=Ownership authorization succeeded
auth.detail.query.success=Authorization detail queried successfully
auth.detail.group.query.success=Grouped authorization detail queried successfully
auth.resource.members.query.success=Resource members queried successfully
auth.resource.managers.set.success=Resource managers set successfully
auth.resource.users.set.success=Resource users set successfully
auth.org.use.success=Organization use authorization succeeded
auth.org.use.detail.query.success=Organization management authorization detail queried successfully
auth.share.remove.success=Share permission removed successfully
auth.admin.status.query.success=Administrator status queried successfully
auth.batch.handle.success=Batch authorization handled successfully
auth.resource.use.list.query.success=User usable resource permission list queried successfully
auth.digemployee.rel.resource.list.query.success=Digital employee related resource permission list queried successfully
auth.resource.list.query.success=Resource list queried successfully
auth.use.apply.status.pending=Pending review
auth.use.apply.notfound.or.processed=The use application does not exist or has already been processed
auth.use.apply.blacklisted=You are currently in the blacklist and cannot apply
auth.use.apply.already.authorized=You already have use permission for this resource
auth.use.apply.duplicate=You have already submitted a use application. Please do not submit again

dataset.list.query.success=Knowledge base list queried successfully
dataset.create.success=Knowledge base created successfully
dataset.update.success=Knowledge base updated successfully
dataset.delete.success=Knowledge base deleted successfully
dataset.detail.query.success=Knowledge base detail queried successfully
dataset.knowledge.capability.query.success=Knowledge base capability queried successfully
dataset.folder.create.success=Knowledge base folder created successfully
dataset.folder.rename.success=Knowledge base folder renamed successfully
dataset.folder.delete.success=Knowledge base folder deleted successfully
dataset.dir.file.query.success=Knowledge base folders and files queried successfully
dataset.file.upload.success=Knowledge base files uploaded successfully
dataset.build.success=Knowledge base build triggered successfully
dataset.file.remove.success=Knowledge base file deleted successfully
dataset.import.success=Knowledge base imported successfully
dataset.import.failed=Import failed: {0}
dataset.file.build.status.query.success=File build status queried successfully
dataset.import.file.notempty=Uploaded file cannot be empty
dataset.import.file.read.failed=Failed to read file
dataset.import.owner.type.notempty=ownerType cannot be empty
dataset.import.owner.type.invalid=ownerType is invalid. Only enterprise or personal is supported
dataset.import.json.parse.failed=Failed to parse JSON. Please check the file content
dataset.import.system.code.notempty=systemCode cannot be empty
dataset.import.system.code.invalid=systemCode is invalid
dataset.import.resource.code.notempty=resourceCode cannot be empty
dataset.import.resource.name.notempty=resourceName cannot be empty
dataset.import.resource.biz.type.notempty=resourceBizType cannot be empty
dataset.import.domain.name.notempty=domainName cannot be empty
dataset.import.domain.url.notempty=domainURL cannot be empty
dataset.import.resource.code.numeric.required=resourceCode must be numeric to map resource_agent_id

tool.curl.parse.success=Curl parsed successfully
tool.save.success=Tool saved successfully
tool.resource.import.success=Resource imported successfully
tool.resource.import.failed=Failed to import resource
tool.object.zip.import.success=Object package imported successfully
tool.object.zip.import.failed=Failed to import object package
tool.view.zip.import.success=View package imported successfully
tool.view.zip.import.failed=Failed to import view package
tool.resource.delete.failed=Failed to delete resource
tool.resource.restore.failed=Failed to restore resource
tool.resource.query.detail.failed=Failed to query resource detail
tool.resource.basic.info.update.success=Resource basic information updated successfully
tool.resource.basic.info.update.failed=Failed to update resource basic information
byclaw.user.file.list.query.success=User file list queried successfully
byclaw.user.file.list.query.failed=Failed to query user file list
byclaw.user.skill.list.query.success=User skill list queried successfully
byclaw.user.skill.list.query.failed=Failed to query user skill list
byclaw.skill.zip.empty=Skill archive file cannot be empty
byclaw.skill.zip.read.failed=Failed to read skill archive file
byclaw.skill.zip.size.exceeded=Skill archive exceeds maximum allowed size (50MB)
byclaw.skill.zip.single.dir.required=Skill archive must contain exactly one top-level skill directory
byclaw.skill.zip.missing.doc=Skill directory must contain SKILL.md
byclaw.skill.zip.illegal.entry=Skill archive contains illegal path entry: {0}
byclaw.skill.upload.success=Skill uploaded successfully
byclaw.skill.upload.failed=Failed to upload skill
byclaw.skill.download.empty=Skill directory does not exist or is empty
byclaw.skill.download.path.invalid=Skill path must be under /.openclaw/workspace/skills/
byclaw.skill.download.failed=Failed to download skill
byclaw.skill.delete.success=Skill deleted successfully
byclaw.skill.delete.failed=Failed to delete skill
byclaw.skill.delete.notfound=Skill directory does not exist or has already been deleted
byclaw.user.code.notempty=userCode cannot be empty
byclaw.file.storage.type.unsupported=Current file storage type is not MinIO. User bucket file query is not supported
tool.json.request.body.parse.failed=Failed to parse JSON. Please check the request body
tool.json.resource.biz.type.missing=JSON file is missing resourceBizType
tool.json.parse.failed=Failed to parse tool JSON. Please check the submitted content
tool.json.owner.type.notempty=ownerType in tool JSON cannot be empty
tool.json.owner.type.invalid=ownerType in tool JSON is invalid. Only enterprise or personal is supported
tool.json.resource.biz.type.invalid.with.kg=JSON resourceBizType is invalid. Only TOOLKIT, MCP, AGENT, or KG_ knowledge bases are supported
tool.json.content.notempty=Tool JSON content cannot be empty
tool.json.content.read.failed=Failed to read tool JSON content
tool.object.directory.read.failed=Failed to read object directory
tool.view.directory.read.failed=Failed to read view directory
tool.resource.delete.type.unsupported=Current resource type does not support deletion
tool.resource.restore.type.unsupported=Current resource type does not support restoration
tool.resource.restore.status.invalid=Current resource status is not deleted, cannot be restored
tool.json.file.upload.required=Please upload a tool JSON file
tool.json.file.content.notempty=Tool JSON file content cannot be empty
tool.json.file.read.failed=Failed to read tool JSON file
tool.json.resource.code.missing=JSON file is missing resourceCode
tool.json.resource.biz.type.invalid=JSON resourceBizType is invalid. Only TOOLKIT, MCP, and AGENT are supported
tool.json.resource.name.missing=JSON file is missing resourceName
tool.json.domain.name.missing=JSON file is missing domainName
tool.json.domain.url.missing=JSON file is missing domainURL
tool.resource.delete.digemployee.relation.exists=The resource [{0}] to delete is a skill under digital employee [{1}]. Please remove the relation in digital employee management before deleting it.
tool.resource.delete.view.relation.exists=The object [{0}] to delete is bound in view [{1}]. Please unbind it in view management before operating.
tool.object.zip.upload.required=Please upload an object zip file
tool.view.zip.upload.required=Please upload a view zip file
tool.zip.file.only.supported=Only zip files are supported
tool.object.zip.save.failed=Failed to save object zip file
tool.zip.file.illegal.path=Zip file contains an illegal path
tool.object.zip.unzip.failed=Failed to unzip object zip file
tool.object.definition.owl.missing=The first level of the object directory is missing *definition.owl
tool.view.definition.owl.missing=The first level of the view directory is missing *definition.owl
tool.object.import.failed=Failed to import object
tool.view.import.failed=Failed to import view
tool.owl.file.scan.failed=Failed to scan owl files in the directory
tool.zip.definition.owl.notfound=No valid {0} definition.owl file found in the package
tool.zip.definition.owl.multiple=Multiple {0} definition.owl files were found in the package. Only one {0} can be imported
tool.zip.owl.notfound=No valid {0} owl file found in the package
tool.object.entity.code.notempty=Object code (entity_code) cannot be empty
tool.object.entity.name.notempty=Object name (entity_name) cannot be empty
tool.view.code.notempty=View code (view_code) cannot be empty
tool.view.name.notempty=View name (view_name) cannot be empty
tool.resource.code.duplicate.too.many=The {0} code has more than two duplicate records. Please clean up historical data first
tool.resource.unzip.directory.rename.failed=Failed to rename resource unzip directory
tool.resource.count.exceed=Too many {0} resources. Current: {1}, maximum allowed: {2}
tool.zip.content.root.parse.failed=Failed to parse package content root directory
tool.resource.zip.upload.failed=Failed to upload resource zip file
tool.resource.import.update.no.permission=A resource [{1}] with the same code [{0}] already exists. You do not have permission to continue the import because the import will overwrite the existing resource. Please change the resource code or contact an administrator for authorization.
tool.import.diff.section.basic=Basic information
tool.import.diff.section.field=Field changes
tool.import.diff.field.resource.name=Resource name
tool.import.diff.field.resource.desc=Resource description
tool.import.diff.field.resource.version=Resource version
tool.import.diff.field.entity.source=Data source
tool.import.diff.field.added=Field added
tool.import.diff.field.removed=Field removed
tool.import.diff.field.property.name=Field name
tool.import.diff.field.data.type=Field type
tool.import.diff.field.required=Required
tool.import.diff.field.default.value=Default value
tool.import.diff.field.source.column=Source field
tool.import.diff.field.synonyms=Synonyms
tool.import.diff.no.change=No content differences detected in this update
tool.import.diff.summary.basic.modified={0} basic information item(s) changed
tool.import.diff.summary.field.added={0} field(s) added
tool.import.diff.summary.field.modified={0} field(s) modified
tool.import.diff.summary.field.removed={0} field(s) removed
tool.import.diff.field.changed={0} changed

# Route integration (INTERFACE / A2A)
route.interface.agent.not.found=INTERFACE external agent configuration not found
route.interface.sse.url.empty=INTERFACE external agent has no agentSseUrl configured
route.interface.call.failed=External agent call failed: {0}
route.interface.response.error=External agent response error, HTTP {0}
route.interface.response.empty=External agent response body is empty
route.a2a.agent.not.found=A2A external agent configuration not found
route.a2a.sse.url.empty=A2A external agent has no agentSseUrl configured
route.a2a.card.url.missing=A2A Agent Card does not contain a url field
route.a2a.card.fetch.failed=Failed to fetch A2A Agent Card, HTTP {0}
route.a2a.card.invalid.json=A2A Agent Card response is not valid JSON: {0}
route.a2a.call.failed=A2A agent call failed: {0}
route.a2a.response.error=A2A agent response error, HTTP {0}
route.a2a.response.empty=A2A agent response body is empty
storage.minio.bucket.name.empty=MinIO bucket name cannot be empty
storage.minio.bucket.name.invalid=Invalid MinIO bucket name. Only letters, digits, and hyphens are allowed, and hyphens cannot be at the beginning or end

# Resource JSON connectivity validation
resource.json.connectivity.validation.prefix=Resource metadata JSON MinIO write validation:
resource.json.connectivity.validation.failed.path=Resource JSON connectivity validation failed: {0}
resource.json.connectivity.validation.failed.allowed=Resource JSON connectivity validation failed and was allowed by configuration
resource.json.connectivity.validation.unknown=Unknown error
resource.json.connectivity.validation.toolkit.interface=Toolkit tool API
resource.json.connectivity.validation.agent.interface=Agent service API
resource.json.connectivity.validation.knowledge.create.interface=Knowledge base create API
resource.json.connectivity.validation.knowledge.delete.interface=Knowledge base delete API
resource.json.connectivity.validation.knowledge.resource.service.missing=Knowledge resource JSON is missing resourceService
resource.json.connectivity.validation.knowledge.openapi.paths.missing=Knowledge resourceService[{0}].openapiSchema is missing paths
resource.json.connectivity.validation.knowledge.operation.notfound=Knowledge validation API not found: {0}
resource.json.connectivity.validation.knowledge.domain.url.missing=Knowledge resource JSON is missing domainURL, connectivity validation cannot be executed
resource.json.connectivity.validation.result.empty=Result is empty
resource.json.connectivity.validation.http.status=HTTP status code={0}
resource.json.connectivity.validation.interface.failed={0} connectivity validation failed: {1}
resource.json.connectivity.validation.toolkit.curl.build.failed=Unable to build test curl script from Toolkit JSON
resource.json.connectivity.validation.toolkit.readonly.notfound=No safe read/query Toolkit API was found; skipped real connectivity call
resource.json.connectivity.validation.toolkit.placeholder.url=Toolkit API URL contains a template placeholder; skipped real connectivity call
resource.json.connectivity.validation.mcp.meta.content.missing=MCP resource JSON is missing metaContent
resource.json.connectivity.validation.mcp.tools.empty=MCP service did not return callable tools
resource.json.connectivity.validation.mcp.tool.result.empty=MCP tool call result is empty: {0}
resource.json.connectivity.validation.mcp.tool.call.failed=MCP tool call failed: {0}
resource.json.connectivity.validation.mcp.connectivity.failed=MCP tool connectivity validation failed: {0}
resource.curl.source.content.empty=Resource sourceContent is empty, unable to generate curl script
resource.curl.generate.rule.success=Generated successfully by rule
resource.curl.generate.llm.success=Generated successfully by large model
resource.curl.only.tool.resource.supported=Only tool resources support generating and running curl scripts
resource.openapi.empty=OpenAPI content cannot be empty
resource.openapi.paths.empty=OpenAPI paths cannot be empty
resource.openapi.operation.notfound=Matching OpenAPI API not found: operationId={0}
resource.openapi.base.url.missing=OpenAPI is missing servers.url or domainURL
resource.curl.script.empty=curl script cannot be empty
resource.curl.only.supported=Only curl commands are supported
resource.curl.shell.control.not.allowed=curl script contains disallowed shell control characters
resource.curl.target.host.out.of.scope=curl target URL is outside the current resource definition scope

# Ecosystem collection
ecosystem.connector.query.success=Ecosystem connectors queried successfully
ecosystem.browser.bridge.status.query.success=Browser Bridge status queried successfully
ecosystem.connection.query.success=Ecosystem connections queried successfully
ecosystem.connection.save.success=Ecosystem connection saved successfully
ecosystem.task.create.success=Ecosystem collection task created successfully
ecosystem.task.query.success=Ecosystem collection tasks queried successfully
ecosystem.task.status.update.success=Ecosystem collection task status updated successfully
ecosystem.run.start.success=Ecosystem collection started successfully
ecosystem.run.query.success=Ecosystem collection run queried successfully
ecosystem.run.action.success=Ecosystem collection run action handled successfully
ecosystem.chat.plan.success=Ecosystem collection chat plan generated successfully
ecosystem.skill.plan.success=Ecosystem collection skill plan generated successfully
ecosystem.chat.start.success=Ecosystem collection chat task started successfully
ecosystem.skill.start.success=Ecosystem collection skill task started successfully
ecosystem.error.connection.config.empty=Connection config cannot be empty
ecosystem.error.connector.empty=Connector cannot be empty
ecosystem.error.task.status.request.empty=Task status request cannot be empty
ecosystem.error.task.id.empty=Task ID cannot be empty
ecosystem.error.task.not.runnable=The collection task cannot run
ecosystem.error.run.id.empty=Run ID cannot be empty
ecosystem.error.run.not.found=Ecosystem collection run not found
ecosystem.error.run.action.request.empty=Run action request cannot be empty
ecosystem.error.skill.plan.not.ready=Ecosystem collection skill plan is not ready: {0}
ecosystem.error.task.not.found=Ecosystem collection task not found
ecosystem.error.connector.unsupported=Unsupported ecosystem connector: {0}
ecosystem.error.connection.available.not.found=No available ecosystem connection config found
ecosystem.error.connection.not.found=Ecosystem connection config not found
ecosystem.error.connection.id.empty=Connection ID cannot be empty
ecosystem.error.task.empty=Collection task cannot be empty
ecosystem.error.source.empty=Collection source cannot be empty
ecosystem.error.personal.knowledge.base.only=Ecosystem collection only supports importing into personal knowledge bases
ecosystem.error.task.status.unsupported=Unsupported task status: {0}
ecosystem.error.collect.mode.not.executable=Collection mode is not connected to a real execution channel yet: {0}
ecosystem.error.bridge.result.content.required=Browser Bridge collection result content cannot be empty
ecosystem.error.bridge.result.asset.invalid=Browser Bridge collection asset format is invalid
ecosystem.error.mail.imap.config.required=Please configure the email account, IMAP server, and app password first
ecosystem.error.mail.imap.failed=Email IMAP collection failed. Check the server, account, and app password
ecosystem.error.json.parse=Failed to parse ecosystem collection JSON field
ecosystem.error.json.serialize=Failed to serialize ecosystem collection JSON field
ecosystem.error.opencli.failed=Collection executor failed
ecosystem.error.opencli.empty.output=Collection executor returned no importable content
ecosystem.error.opencli.unsupported.connector=No readable collection command was found for this site in the OpenCLI manifest
ecosystem.error.opencli.browser.bridge.required=This OpenCLI collection capability requires ByClaw Browser Bridge and the user's browser session
ecosystem.error.opencli.args.required=Missing required OpenCLI command argument: {0}
ecosystem.error.web.source.url.required=Web collection requires a source URL
ecosystem.error.zhihu.source.url.required=Zhihu collection requires an article, question, or collection URL
ecosystem.error.opencli.timeout=Collection executor timed out
ecosystem.error.temp.dir.create.failed=Failed to create ecosystem collection temp directory
ecosystem.error.run.failed=Ecosystem collection run failed
ecosystem.connection.default.name={0} Connection
ecosystem.bridge.running=Browser Bridge is collecting
ecosystem.bridge.waiting.reconnect=Waiting for Browser Bridge to reconnect before dispatching the task
ecosystem.bridge.result.failed=Browser Bridge collection failed
ecosystem.bridge.task.dispatched=Browser Bridge task dispatched
ecosystem.bridge.waiting.result=Waiting for Browser Bridge to return the result
ecosystem.bridge.host.not.allowed=Browser Bridge is not allowed to access this source host: {0}
ecosystem.bridge.run.not.running=The Browser Bridge run has ended and cannot accept more result updates
ecosystem.bridge.unsupported.action=Unsupported Browser Bridge action: {0}
ecosystem.bridge.lease.claimed=Browser Bridge task lease claimed
ecosystem.bridge.lease.renewed=Browser Bridge task lease renewed
ecosystem.bridge.lease.denied=The task is already leased by another Browser Bridge client. Wait for the lease to expire or cancel it before taking over
ecosystem.bridge.lease.invalid=Browser Bridge task lease is invalid. Pull the task again
ecosystem.bridge.lease.expired=Browser Bridge task lease has expired. Claim the task again
ecosystem.bridge.lease.timeout.requeued=Browser Bridge task lease timed out. Waiting for another takeover
ecosystem.bridge.client.required=Browser Bridge client ID cannot be empty
ecosystem.collection.default.name={0} Collection
ecosystem.skill.collection.default.name={0} Skill Collection
ecosystem.collection.item.title={0} Collected Content {1}
ecosystem.collection.item.file.name=Ecosystem Collection Content
ecosystem.mail.subject.empty=Untitled Email
ecosystem.mail.body.empty=This email has no readable body
ecosystem.mail.attachments=Attachments
ecosystem.mail.attachment.too.large=Attachment exceeds the size limit and was not saved
ecosystem.scope.recent=Recent 7 days
ecosystem.scope.link=Specified link
ecosystem.default.knowledge.base=Default Personal Knowledge Base
ecosystem.target.personal.knowledge.base=Personal Knowledge Base / {0}
ecosystem.tag.collection=Ecosystem Collection
ecosystem.source.generic=Ecosystem Source
ecosystem.current.user=Current User
ecosystem.scheduler.user.name=Ecosystem Collection Scheduler
ecosystem.platform.collector.name=Platform Collection Executor
ecosystem.browser.bridge.name={0}-Browser Bridge
ecosystem.browser.bridge.disconnected=Disconnected
ecosystem.card.title=Ready to collect {0}
ecosystem.card.subtitle.ready=Confirm to create a task and import into the default personal knowledge base
ecosystem.card.subtitle.not.ready=Complete the missing configuration before starting collection
ecosystem.card.label.source=Source
ecosystem.card.label.scope=Scope
ecosystem.card.label.target=Target
ecosystem.card.label.collect.mode=Collection Mode
ecosystem.card.label.run.location=Run Location
ecosystem.card.label.auth.type=Authentication
ecosystem.card.label.link=Link
ecosystem.card.label.pending=Pending
ecosystem.action.start=Start Collection
ecosystem.action.choose.knowledge.base=Choose Knowledge Base
ecosystem.action.connect.browser.bridge=Connect Browser Bridge
ecosystem.action.open.source.login=Open And Sign In
ecosystem.action.configure=Configure
ecosystem.toast.start.success=Ecosystem collection started
ecosystem.toast.start.failed=Failed to start collection
ecosystem.missing.browser.bridge=Browser Bridge is disconnected
ecosystem.missing.site.login=Browser Bridge is connected, but the {0} session is not ready. Open the target site in your local browser, sign in, and retry
ecosystem.missing.connection=Connection authorization is not ready
ecosystem.missing.default.knowledge.base=Default personal knowledge base is not initialized. It will be created when collection starts
ecosystem.missing.unsupported.runtime=No readable collection command was found for this site in the OpenCLI manifest
ecosystem.missing.source.url=Please provide the link to collect
ecosystem.list.separator=, 
ecosystem.skill.start.message=Ecosystem collection started. Results will be imported into: {0}
ecosystem.run.action.skipped.message=The user skipped this required collection action
ecosystem.run.action.skipped.step=The user skipped this action
ecosystem.run.action.cancelled.message=The user cancelled this Browser Bridge collection
ecosystem.run.action.cancelled.step=The user cancelled this collection
ecosystem.run.action.acked.message=The user acknowledged this collection notice
ecosystem.step.connect.source=Connect Source
ecosystem.step.pull.raw=Pull Raw Data
ecosystem.step.normalize.markdown=Convert to Markdown
ecosystem.step.download.assets=Download Attachments
ecosystem.step.signal.tagging=Signal Tagging
ecosystem.step.import.knowledge=Import Knowledge Base
ecosystem.step.build.index=Build Index
ecosystem.step.message.connected=Connected to {0}. Trigger: {1}
ecosystem.step.message.pulled.raw=Pulled {0} raw item(s) through the collection executor
ecosystem.step.message.normalized.markdown=Converted to {0} standard Markdown file(s)
ecosystem.step.message.assets.archived=Archived {0} attachment asset(s)
ecosystem.step.message.assets.empty=No attachment assets found
ecosystem.step.message.signals.tagged=Completed source, object, topic, content type, privacy, and action signal tagging
ecosystem.step.message.index.triggered=Knowledge base index build triggered
ecosystem.step.message.source.connected=Source connection completed
ecosystem.step.message.raw.pulled=Raw content pulled
ecosystem.step.message.markdown.converted=Converted to Markdown
ecosystem.step.message.assets.done=Attachment archive completed
ecosystem.step.message.signals.done=Signal tagging completed
ecosystem.step.message.wait.source=Continue after the source connection succeeds
ecosystem.step.message.wait.raw=Waiting for raw data pull
ecosystem.step.message.wait.markdown=Waiting for Markdown conversion
ecosystem.step.message.wait.artifacts=Waiting for artifacts to be generated
ecosystem.step.message.wait.collection=Waiting for collection artifacts to be generated
ecosystem.step.message.wait.import=Waiting for knowledge base import
ecosystem.status.success=Success
ecosystem.status.running=Running
ecosystem.status.skipped=Skipped
ecosystem.status.failed=Failed
ecosystem.status.created=Created
ecosystem.status.disabled=Disabled
ecosystem.status.archived=Archived
ecosystem.status.pending=Pending
ecosystem.schedule.daily=Daily
ecosystem.schedule.weekly=Weekly
ecosystem.schedule.manual=Manual
ecosystem.schedule.once=One-time
ecosystem.connection.status.ready=Ready
ecosystem.connection.status.authorizing=Authorizing
ecosystem.connection.status.need.auth=Authorization Required
ecosystem.connection.status.expired=Expired
ecosystem.connection.status.failed=Abnormal
ecosystem.auth.browser=Browser Session
ecosystem.auth.public.url=Public URL
ecosystem.collect.mode.server.opencli=Platform Built-in Collection
ecosystem.collect.mode.user.browser.bridge=ByClaw Browser Bridge
ecosystem.run.location.local=User Browser
ecosystem.run.location.server=Platform
ecosystem.signal.type.source=Source
ecosystem.signal.type.object=Business Object
ecosystem.signal.type.topic=Topic
ecosystem.signal.type.content.type=Content Type
ecosystem.signal.type.privacy=Privacy
ecosystem.signal.type.action=Action
ecosystem.signal.object.project=Project
ecosystem.signal.object.product=Product
ecosystem.signal.object.customer=Customer
ecosystem.signal.object.domain=Domain
ecosystem.signal.name.object={0}: {1}
ecosystem.signal.action.confirm=To Confirm
ecosystem.content.meeting.minutes=Meeting Minutes
ecosystem.content.requirement=Requirement
ecosystem.content.solution=Solution
ecosystem.content.collected.material=Collected Material
ecosystem.privacy.enterprise.candidate=Enterprise Candidate
ecosystem.privacy.personal=Personal
ecosystem.markdown.meta.source=Source
ecosystem.markdown.meta.link=Link
ecosystem.markdown.meta.author=Author
ecosystem.markdown.meta.publish.time=Published At
ecosystem.markdown.meta.collect.mode=Collection Mode
ecosystem.markdown.meta.mail.folder=Mailbox Folder
ecosystem.markdown.meta.mail.from=From
ecosystem.markdown.meta.mail.to=To
ecosystem.markdown.meta.mail.sent.at=Sent At
ecosystem.artifact.raw.name={0} Raw Data
ecosystem.import.error.only.knowledge.base=Ecosystem collection only supports importing into knowledge bases
ecosystem.import.error.knowledge.base.required=Please select a knowledge base to import into
ecosystem.import.error.markdown.empty=No Markdown file is available for knowledge base import
ecosystem.import.upload.remark=Ecosystem collection import: {0}
ecosystem.import.success.message=Imported into knowledge base and triggered index build: {0}
ecosystem.import.error.failed=Knowledge base import failed: {0}
ecosystem.import.directory=Ecosystem Collection/{0}/{1}
ecosystem.ingestion.opencli.collect.success=OpenCLI collection completed
ecosystem.ingestion.artifact.store.success=Collection artifacts stored
ecosystem.ingestion.knowledge.import.success=Markdown imported into the knowledge base
ecosystem.error.opencli.output.dir.invalid=Invalid OpenCLI output directory
dingtalk.proactive.message.title=Notification
