@axiom-lattice/react-sdk 4.9.1 → 4.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AgentDetailSideApp-IKFO5B76.mjs → AgentDetailSideApp-ZGV4WC4V.mjs} +8 -8
- package/dist/AgentGovernanceWorkbench-HCVHQ3P7.mjs +20 -0
- package/dist/{MessageGraph-4O5BZI5H.mjs → MessageGraph-OA2HMEHI.mjs} +4 -4
- package/dist/{ReactChart-DSQZBNK7.mjs → ReactChart-DWIFRI5G.mjs} +4 -4
- package/dist/{SkillFlow-7UFS5RSF.mjs → SkillFlow-IHRME3YO.mjs} +4 -4
- package/dist/{TasksSideApp-UERUXLGZ.mjs → TasksSideApp-KKBQDSO4.mjs} +5 -5
- package/dist/{TeamWorkspace-RMFSSDLK.mjs → TeamWorkspace-ETVDJAYT.mjs} +4 -4
- package/dist/{TopologyRuntimeView-OYMC3OZ7.mjs → TopologyRuntimeView-F7JQAXN2.mjs} +5 -5
- package/dist/{WorkflowAutomationView-CYLQ3HOW.mjs → WorkflowAutomationView-PBZ5K43L.mjs} +7 -7
- package/dist/{chunk-73ZKUUUV.mjs → chunk-3FXH5ZAQ.mjs} +3 -3
- package/dist/{chunk-BGRLHXKR.mjs → chunk-3MF4SALK.mjs} +6 -6
- package/dist/{chunk-JEYG4OYQ.mjs → chunk-3SEKZBYQ.mjs} +3 -3
- package/dist/{chunk-2RTE6SQG.mjs → chunk-57IPUJ5T.mjs} +3 -3
- package/dist/{chunk-WZPXSVHJ.mjs → chunk-6XGZ74LQ.mjs} +75 -30
- package/dist/chunk-6XGZ74LQ.mjs.map +1 -0
- package/dist/{chunk-MZIYYFYF.mjs → chunk-EHUPRLAS.mjs} +38 -10
- package/dist/chunk-EHUPRLAS.mjs.map +1 -0
- package/dist/{chunk-YCRJHIO7.mjs → chunk-JQLUFZKH.mjs} +6 -6
- package/dist/{chunk-WEEKSFGI.mjs → chunk-KU634FOH.mjs} +4 -4
- package/dist/{chunk-MD7WRYIP.mjs → chunk-PEEXMLMK.mjs} +23 -7
- package/dist/chunk-PEEXMLMK.mjs.map +1 -0
- package/dist/{chunk-V7SUAKB5.mjs → chunk-TA243DB6.mjs} +36 -3
- package/dist/chunk-TA243DB6.mjs.map +1 -0
- package/dist/{embed-page-AgentDetailSideApp-WQAMMDXN.js → embed-page-AgentDetailSideApp-RM4TDSC5.js} +1 -1
- package/dist/{embed-page-AgentGovernanceWorkbench-VKD4IZIO.js → embed-page-AgentGovernanceWorkbench-G6A6QNZY.js} +1 -1
- package/dist/{embed-page-MessageGraph-C4EJWY3E.js → embed-page-MessageGraph-ZLGTKJNE.js} +1 -1
- package/dist/{embed-page-ReactChart-TNT4TT4C.js → embed-page-ReactChart-IB6R6G57.js} +1 -1
- package/dist/{embed-page-SkillFlow-WWRDU6GS.js → embed-page-SkillFlow-STU36L34.js} +1 -1
- package/dist/{embed-page-TasksSideApp-73SJLGRY.js → embed-page-TasksSideApp-X4APWG4G.js} +1 -1
- package/dist/{embed-page-TeamWorkspace-6E4HAH7L.js → embed-page-TeamWorkspace-EK4BNNGD.js} +1 -1
- package/dist/{embed-page-TopologyRuntimeView-SXUNRFT4.js → embed-page-TopologyRuntimeView-X5CHJPHN.js} +1 -1
- package/dist/{embed-page-WorkflowAutomationView-I4VN6YY2.js → embed-page-WorkflowAutomationView-3LIT27E2.js} +1 -1
- package/dist/{embed-page-chunk-YZMHK63X.js → embed-page-chunk-5WPKSLDW.js} +1 -1
- package/dist/embed-page-chunk-64FTYZ5F.js +2 -0
- package/dist/{embed-page-chunk-IM57IYUL.js → embed-page-chunk-734QFJP3.js} +1 -1
- package/dist/{embed-page-chunk-L7HKGCDN.js → embed-page-chunk-7D54ACES.js} +1 -1
- package/dist/{embed-page-chunk-TEIHYMTL.js → embed-page-chunk-DDK2VFYD.js} +7 -7
- package/dist/{embed-page-chunk-G5NEOKZK.js → embed-page-chunk-EQRDCFN5.js} +1 -1
- package/dist/{embed-page-chunk-WUOHF2QZ.js → embed-page-chunk-W45YCZIC.js} +7 -7
- package/dist/{embed-page-en-GE4GI4D3.js → embed-page-en-ICVL5QAC.js} +1 -1
- package/dist/{embed-page-zh-KC2E7UVY.js → embed-page-zh-FPYCTKQK.js} +1 -1
- package/dist/embed-page.js +1 -1
- package/dist/{en-EYIMZ5UR.mjs → en-QKZNWG2U.mjs} +13 -3
- package/dist/{en-EYIMZ5UR.mjs.map → en-QKZNWG2U.mjs.map} +1 -1
- package/dist/index.d.mts +53 -5
- package/dist/index.d.ts +53 -5
- package/dist/index.js +287 -142
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +10 -10
- package/dist/web-app.js +25 -10
- package/dist/web-app.js.map +1 -1
- package/dist/web-app.mjs +1 -1
- package/dist/{zh-7GXZLF3M.mjs → zh-5WQFAPH5.mjs} +13 -3
- package/dist/{zh-7GXZLF3M.mjs.map → zh-5WQFAPH5.mjs.map} +1 -1
- package/package.json +4 -4
- package/dist/AgentGovernanceWorkbench-HWXXIML7.mjs +0 -20
- package/dist/chunk-MD7WRYIP.mjs.map +0 -1
- package/dist/chunk-MZIYYFYF.mjs.map +0 -1
- package/dist/chunk-V7SUAKB5.mjs.map +0 -1
- package/dist/chunk-WZPXSVHJ.mjs.map +0 -1
- package/dist/embed-page-chunk-RQXI6NQX.js +0 -2
- /package/dist/{AgentDetailSideApp-IKFO5B76.mjs.map → AgentDetailSideApp-ZGV4WC4V.mjs.map} +0 -0
- /package/dist/{AgentGovernanceWorkbench-HWXXIML7.mjs.map → AgentGovernanceWorkbench-HCVHQ3P7.mjs.map} +0 -0
- /package/dist/{MessageGraph-4O5BZI5H.mjs.map → MessageGraph-OA2HMEHI.mjs.map} +0 -0
- /package/dist/{ReactChart-DSQZBNK7.mjs.map → ReactChart-DWIFRI5G.mjs.map} +0 -0
- /package/dist/{SkillFlow-7UFS5RSF.mjs.map → SkillFlow-IHRME3YO.mjs.map} +0 -0
- /package/dist/{TasksSideApp-UERUXLGZ.mjs.map → TasksSideApp-KKBQDSO4.mjs.map} +0 -0
- /package/dist/{TeamWorkspace-RMFSSDLK.mjs.map → TeamWorkspace-ETVDJAYT.mjs.map} +0 -0
- /package/dist/{TopologyRuntimeView-OYMC3OZ7.mjs.map → TopologyRuntimeView-F7JQAXN2.mjs.map} +0 -0
- /package/dist/{WorkflowAutomationView-CYLQ3HOW.mjs.map → WorkflowAutomationView-PBZ5K43L.mjs.map} +0 -0
- /package/dist/{chunk-73ZKUUUV.mjs.map → chunk-3FXH5ZAQ.mjs.map} +0 -0
- /package/dist/{chunk-BGRLHXKR.mjs.map → chunk-3MF4SALK.mjs.map} +0 -0
- /package/dist/{chunk-JEYG4OYQ.mjs.map → chunk-3SEKZBYQ.mjs.map} +0 -0
- /package/dist/{chunk-2RTE6SQG.mjs.map → chunk-57IPUJ5T.mjs.map} +0 -0
- /package/dist/{chunk-YCRJHIO7.mjs.map → chunk-JQLUFZKH.mjs.map} +0 -0
- /package/dist/{chunk-WEEKSFGI.mjs.map → chunk-KU634FOH.mjs.map} +0 -0
package/dist/web-app.mjs
CHANGED
|
@@ -509,10 +509,19 @@ var messages = {
|
|
|
509
509
|
"chatConfig.paChannel.chooseType": "\u9009\u62E9\u6E20\u9053\u7C7B\u578B",
|
|
510
510
|
"chatConfig.paChannel.editChannel": "\u7F16\u8F91\u6E20\u9053",
|
|
511
511
|
"chatConfig.paChannel.newChannel": "\u65B0\u5EFA{{channel}}",
|
|
512
|
-
"chatConfig.paChannel.channel.lark": "\u98DE\u4E66
|
|
513
|
-
"chatConfig.paChannel.channel.wechat": "
|
|
512
|
+
"chatConfig.paChannel.channel.lark": "\u98DE\u4E66",
|
|
513
|
+
"chatConfig.paChannel.channel.wechat": "\u5FAE\u4FE1",
|
|
514
|
+
"chatConfig.paChannel.channel.wecom": "\u4F01\u4E1A\u5FAE\u4FE1",
|
|
514
515
|
"chatConfig.paChannel.wechatBot": "\u5FAE\u4FE1\u673A\u5668\u4EBA",
|
|
515
516
|
"chatConfig.paChannel.feishuBot": "\u98DE\u4E66\u673A\u5668\u4EBA",
|
|
517
|
+
"chatConfig.paChannel.wecomBot": "\u4F01\u4E1A\u5FAE\u4FE1\u673A\u5668\u4EBA",
|
|
518
|
+
"chatConfig.paChannel.field.botId": "\u673A\u5668\u4EBA Bot ID",
|
|
519
|
+
"chatConfig.paChannel.field.secret": "\u957F\u8FDE\u63A5 Secret",
|
|
520
|
+
"chatConfig.paChannel.placeholder.botId": "\u4F01\u4E1A\u5FAE\u4FE1\u540E\u53F0\u83B7\u53D6\u7684 Bot ID",
|
|
521
|
+
"chatConfig.paChannel.placeholder.secret": "\u4F01\u4E1A\u5FAE\u4FE1\u540E\u53F0\u83B7\u53D6\u7684\u957F\u8FDE\u63A5 Secret",
|
|
522
|
+
"chatConfig.paChannel.wecomConnectHint": "\u4F7F\u7528\u300C\u667A\u80FD\u673A\u5668\u4EBA\u300D\u7684\u957F\u8FDE\u63A5\uFF08API\uFF09\u6A21\u5F0F\uFF0C\u65E0\u9700\u516C\u7F51\u56DE\u8C03\u5730\u5740\uFF1B\u5F00\u542F\u540E\u7531\u7F51\u5173\u7EF4\u62A4\u957F\u8FDE\u63A5\u3002",
|
|
523
|
+
"chatConfig.paChannel.validation.botIdRequired": "Bot ID \u4E3A\u5FC5\u586B\u9879",
|
|
524
|
+
"chatConfig.paChannel.validation.secretRequired": "Secret \u4E3A\u5FC5\u586B\u9879",
|
|
516
525
|
"chatConfig.paChannel.field.channelType": "\u6E20\u9053\u7C7B\u578B",
|
|
517
526
|
"chatConfig.paChannel.field.displayName": "\u663E\u793A\u540D\u79F0",
|
|
518
527
|
"chatConfig.paChannel.field.appId": "App ID",
|
|
@@ -534,6 +543,7 @@ var messages = {
|
|
|
534
543
|
"chatConfig.paChannel.required": "\u5FC5\u586B",
|
|
535
544
|
"chatConfig.paChannel.placeholder.wechatOpenId": "\u5FAE\u4FE1 Open ID",
|
|
536
545
|
"chatConfig.paChannel.placeholder.feishuOpenId": "\u98DE\u4E66 Open ID",
|
|
546
|
+
"chatConfig.paChannel.placeholder.wecomUserId": "\u4F01\u4E1A\u5FAE\u4FE1 UserID",
|
|
537
547
|
"chatConfig.paChannel.placeholder.displayName": "\u663E\u793A\u540D\u79F0\uFF08\u53EF\u9009\uFF09",
|
|
538
548
|
"chatConfig.paChannel.placeholder.appSecret": "\u4F60\u7684 app secret",
|
|
539
549
|
"chatConfig.paChannel.placeholder.optional": "\u53EF\u9009",
|
|
@@ -586,4 +596,4 @@ export {
|
|
|
586
596
|
zh_default as default,
|
|
587
597
|
messages
|
|
588
598
|
};
|
|
589
|
-
//# sourceMappingURL=zh-
|
|
599
|
+
//# sourceMappingURL=zh-5WQFAPH5.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/i18n/locales/chatConfig/zh.json"],"sourcesContent":["{\n \"messages\": {\n \"chatConfig.field.name\": \"名称\",\n \"chatConfig.field.description\": \"描述\",\n \"chatConfig.field.displayName\": \"显示名称\",\n \"chatConfig.field.connectionKey\": \"连接 Key\",\n \"chatConfig.field.host\": \"主机\",\n \"chatConfig.field.port\": \"端口\",\n \"chatConfig.field.username\": \"用户名\",\n \"chatConfig.field.password\": \"密码\",\n \"chatConfig.field.serverUrl\": \"服务器 URL\",\n \"chatConfig.field.apiKey\": \"API Key\",\n \"chatConfig.field.optionalDescription\": \"可选描述\",\n \"chatConfig.config.updated\": \"配置已更新\",\n \"chatConfig.config.created\": \"配置已创建\",\n \"chatConfig.config.deleted\": \"配置已删除\",\n \"chatConfig.config.deleteFailed\": \"删除配置失败\",\n \"chatConfig.config.saveFailed\": \"保存配置失败\",\n \"chatConfig.config.missingId\": \"无法删除:缺少配置 id\",\n \"chatConfig.agentType.executor\": \"执行器\",\n \"chatConfig.agentType.orchestrator\": \"编排器\",\n \"chatConfig.agentType.team\": \"团队\",\n \"chatConfig.agentType.workflow\": \"工作流\",\n \"chatConfig.agentType.a2aRemote\": \"A2A 远程\",\n \"chatConfig.keyValue.key\": \"键\",\n \"chatConfig.keyValue.value\": \"值\",\n \"chatConfig.keyValue.add\": \"添加\",\n \"chatConfig.keyValue.removeEntry\": \"移除条目\",\n \"chatConfig.connectionList.empty\": \"没有“{{type}}”连接\",\n \"chatConfig.connectionList.selectAll\": \"全选\",\n \"chatConfig.connectionList.deselectAll\": \"取消全选\",\n \"chatConfig.connectionList.clear\": \"清空\",\n \"chatConfig.connectionsHub.title\": \"插件\",\n \"chatConfig.connectionsHub.tab.all\": \"全部({{count}})\",\n \"chatConfig.connectionsHub.tab.connections\": \"连接({{count}})\",\n \"chatConfig.connectionsHub.tab.tools\": \"工具({{count}})\",\n \"chatConfig.connectionsHub.empty.connections.title\": \"没有连接类插件\",\n \"chatConfig.connectionsHub.empty.connections.description\": \"没有注册支持连接管理的插件\",\n \"chatConfig.connectionsHub.empty.tools.title\": \"没有工具类插件\",\n \"chatConfig.connectionsHub.empty.tools.description\": \"没有注册纯工具类插件\",\n \"chatConfig.connectionsHub.empty.all.title\": \"没有插件\",\n \"chatConfig.connectionsHub.empty.all.description\": \"没有注册任何插件\",\n \"chatConfig.connectionsHub.capability.test\": \"测试\",\n \"chatConfig.connectionsHub.capability.discover\": \"发现\",\n \"chatConfig.connectionsHub.capability.connection\": \"连接\",\n \"chatConfig.connectionsHub.capability.tool\": \"工具\",\n \"chatConfig.subAgentInherit.hint\": \"选择如何处理来自父智能体的每个子智能体:\",\n \"chatConfig.subAgentInherit.clone\": \"克隆为新智能体\",\n \"chatConfig.subAgentInherit.reuse\": \"复用\",\n \"chatConfig.subAgentInherit.cloneKeyPlaceholder\": \"输入克隆智能体的 key\",\n \"chatConfig.project.create.title\": \"新建项目\",\n \"chatConfig.project.field.name\": \"项目名称\",\n \"chatConfig.project.field.namePlaceholder\": \"输入项目名称\",\n \"chatConfig.project.validation.nameRequired\": \"请输入项目名称\",\n \"chatConfig.project.validation.nameMax\": \"项目名称不能超过 50 个字符\",\n \"chatConfig.project.field.visibility\": \"可见性\",\n \"chatConfig.project.kind.business\": \"业务\",\n \"chatConfig.project.kind.business.description\": \"仅受邀成员可见。\",\n \"chatConfig.project.kind.public\": \"公开\",\n \"chatConfig.project.kind.public.description\": \"本工作区内所有人可见。\",\n \"chatConfig.project.field.description\": \"描述(可选)\",\n \"chatConfig.project.field.descriptionPlaceholder\": \"输入项目描述\",\n \"chatConfig.workflow.create.title\": \"新建工作流\",\n \"chatConfig.workflow.create.titleProcessing\": \"新建处理工作流\",\n \"chatConfig.workflow.field.purpose\": \"用途\",\n \"chatConfig.workflow.field.purposePlaceholder\": \"描述这个工作流要做什么。名称和 key 会自动生成。\",\n \"chatConfig.workflow.validation.purposeRequired\": \"请描述工作流的用途\",\n \"chatConfig.workflow.middleware.topologyName\": \"拓扑\",\n \"chatConfig.workflow.middleware.topologyDescription\": \"工作流拓扑\",\n \"chatConfig.skill.create.title\": \"新建技能\",\n \"chatConfig.skill.edit.title\": \"编辑技能\",\n \"chatConfig.skill.created\": \"技能创建成功\",\n \"chatConfig.skill.updated\": \"技能更新成功\",\n \"chatConfig.skill.createFailed\": \"创建技能失败\",\n \"chatConfig.skill.updateFailed\": \"更新技能失败\",\n \"chatConfig.skill.createError\": \"创建技能时发生错误\",\n \"chatConfig.skill.updateError\": \"更新技能时发生错误\",\n \"chatConfig.skill.field.name\": \"名称\",\n \"chatConfig.skill.field.description\": \"描述\",\n \"chatConfig.skill.field.license\": \"许可证\",\n \"chatConfig.skill.field.compatibility\": \"兼容性\",\n \"chatConfig.skill.field.metadata\": \"元数据\",\n \"chatConfig.skill.field.content\": \"内容\",\n \"chatConfig.skill.placeholder.description\": \"描述\",\n \"chatConfig.skill.placeholder.license\": \"许可证\",\n \"chatConfig.skill.placeholder.compatibility\": \"兼容性\",\n \"chatConfig.skill.placeholder.content\": \"内容\",\n \"chatConfig.skill.validation.nameRequired\": \"请输入技能名称\",\n \"chatConfig.skill.validation.namePattern\": \"名称必须为小写字母数字,并使用单个连字符分隔(例如 'my-skill')\",\n \"chatConfig.skill.validation.nameLength\": \"名称长度必须为 1-64 个字符\",\n \"chatConfig.skill.validation.descriptionRequired\": \"请输入技能描述\",\n \"chatConfig.skill.metadata.add\": \"添加\",\n \"chatConfig.skill.metadata.empty\": \"还没有元数据。使用「添加」创建一条。\",\n \"chatConfig.skill.metadata.row\": \"元数据 {{index}}\",\n \"chatConfig.skill.action.save\": \"保存修改\",\n \"chatConfig.skill.action.create\": \"创建技能\",\n \"chatConfig.skillPicker.title\": \"技能\",\n \"chatConfig.skillPicker.selectTitle\": \"选择技能\",\n \"chatConfig.skillPicker.empty\": \"暂无可用技能\",\n \"chatConfig.databasePicker.title\": \"数据库\",\n \"chatConfig.databasePicker.selectTitle\": \"选择数据库\",\n \"chatConfig.databasePicker.empty\": \"暂无可用数据库\",\n \"chatConfig.channelInstall.title\": \"渠道接入\",\n \"chatConfig.channelInstall.add\": \"添加接入\",\n \"chatConfig.channelInstall.editTitle\": \"编辑接入\",\n \"chatConfig.channelInstall.addTitle\": \"添加接入\",\n \"chatConfig.channelInstall.empty.title\": \"暂无渠道接入\",\n \"chatConfig.channelInstall.empty.description\": \"点击「添加接入」创建一个\",\n \"chatConfig.channelInstall.unsupported\": \"暂不支持该渠道的配置界面\",\n \"chatConfig.channelInstall.loadFailed\": \"加载渠道接入失败\",\n \"chatConfig.channelInstall.deleted\": \"接入已删除\",\n \"chatConfig.channelInstall.deleteFailed\": \"删除接入失败\",\n \"chatConfig.channelInstall.updated\": \"接入已更新\",\n \"chatConfig.channelInstall.updateFailed\": \"更新接入失败\",\n \"chatConfig.channelInstall.created\": \"接入已创建\",\n \"chatConfig.channelInstall.createFailed\": \"创建接入失败\",\n \"chatConfig.channelInstall.delete.title\": \"删除渠道接入\",\n \"chatConfig.channelInstall.delete.description\": \"确定要删除「{{name}}」吗?\",\n \"chatConfig.channelInstall.field.channel\": \"渠道\",\n \"chatConfig.channelInstall.field.name\": \"名称\",\n \"chatConfig.channelInstall.field.appId\": \"App ID\",\n \"chatConfig.channelInstall.field.appSecret\": \"App Secret\",\n \"chatConfig.channelInstall.field.verificationToken\": \"Verification Token\",\n \"chatConfig.channelInstall.field.encryptKey\": \"Encrypt Key\",\n \"chatConfig.channelInstall.validation.appIdRequired\": \"App ID 为必填项\",\n \"chatConfig.channelInstall.validation.appSecretRequired\": \"App Secret 为必填项\",\n \"chatConfig.connection.loadFailed\": \"加载连接失败\",\n \"chatConfig.connection.testPassed\": \"连接测试通过:{{message}}\",\n \"chatConfig.connection.testFailed\": \"连接测试失败\",\n \"chatConfig.connection.testError\": \"测试连接失败\",\n \"chatConfig.connection.missingKey\": \"无法删除:缺少连接 key\",\n \"chatConfig.connection.deleted\": \"连接已删除\",\n \"chatConfig.connection.deleteFailed\": \"删除连接失败\",\n \"chatConfig.connection.noSchema.title\": \"未定义连接结构\",\n \"chatConfig.connection.noSchema.description\": \"该插件类型不支持连接管理\",\n \"chatConfig.connection.action.test\": \"测试\",\n \"chatConfig.connection.status.online\": \"在线\",\n \"chatConfig.connection.status.offline\": \"离线\",\n \"chatConfig.connection.updated\": \"更新于 {{date}}\",\n \"chatConfig.connection.add\": \"添加连接\",\n \"chatConfig.connection.empty.title\": \"尚未配置连接\",\n \"chatConfig.connection.empty.description\": \"点击「添加连接」创建一个\",\n \"chatConfig.connection.delete.title\": \"删除连接\",\n \"chatConfig.connection.delete.confirm\": \"删除「{{name}}」?\",\n \"chatConfig.connectionForm.testRequestFailed\": \"测试请求失败\",\n \"chatConfig.connectionForm.keyRequired\": \"连接 key 为必填项\",\n \"chatConfig.connectionForm.updated\": \"连接已更新\",\n \"chatConfig.connectionForm.created\": \"连接已创建\",\n \"chatConfig.connectionForm.saveFailed\": \"保存连接失败\",\n \"chatConfig.connectionForm.selectPlaceholder\": \"选择{{title}}\",\n \"chatConfig.connectionForm.enterPlaceholder\": \"输入{{title}}\",\n \"chatConfig.connectionForm.step.details\": \"连接详情\",\n \"chatConfig.connectionForm.step.verify\": \"验证\",\n \"chatConfig.connectionForm.editTitle\": \"编辑 {{type}} 连接\",\n \"chatConfig.connectionForm.addTitle\": \"添加 {{type}} 连接\",\n \"chatConfig.connectionForm.save\": \"保存修改\",\n \"chatConfig.connectionForm.finish\": \"完成\",\n \"chatConfig.connectionForm.testing\": \"正在测试连接……\",\n \"chatConfig.connectionForm.availableResources\": \"可用资源\",\n \"chatConfig.connectionForm.selectedCount\": \"(已选 {{count}} 项)\",\n \"chatConfig.connectionForm.retryTest\": \"重新测试\",\n \"chatConfig.database.title\": \"数据库连接\",\n \"chatConfig.database.loadFailed\": \"加载数据库配置失败\",\n \"chatConfig.database.testSuccess\": \"已成功连接到 {{host}}({{latency}}ms)\",\n \"chatConfig.database.connectionFailed\": \"连接失败:{{error}}\",\n \"chatConfig.database.empty.title\": \"暂无数据库配置\",\n \"chatConfig.database.keyAndId\": \"Key:{{key}} | ID:{{id}}\",\n \"chatConfig.database.connectionStringMode\": \"连接串模式\",\n \"chatConfig.database.testing\": \"测试中……\",\n \"chatConfig.database.editTitle\": \"编辑数据库配置\",\n \"chatConfig.database.addTitle\": \"添加数据库配置\",\n \"chatConfig.database.field.type\": \"数据库类型\",\n \"chatConfig.database.field.connectionString\": \"连接串\",\n \"chatConfig.database.priorityMode\": \"优先模式\",\n \"chatConfig.database.note.important\": \"重要:\",\n \"chatConfig.database.note.whenProvided\": \"提供连接串时,它会\",\n \"chatConfig.database.note.priorityOver\": \"优先于\",\n \"chatConfig.database.note.suffix\": \"下方所有单独连接参数。后端采用相同的优先级逻辑。\",\n \"chatConfig.database.field.individualParams\": \"单独连接参数\",\n \"chatConfig.database.ignoredWhenString\": \"设置连接串后该项会被忽略\",\n \"chatConfig.database.field.name\": \"数据库名称\",\n \"chatConfig.database.delete.title\": \"删除数据库配置\",\n \"chatConfig.database.delete.description\": \"确定要删除「{{name}}」吗?\",\n \"chatConfig.metrics.title\": \"指标服务器连接\",\n \"chatConfig.metrics.loadFailed\": \"加载指标配置失败\",\n \"chatConfig.metrics.testSuccess\": \"已成功连接到 {{serverUrl}}({{latency}}ms)\",\n \"chatConfig.metrics.empty.title\": \"暂无指标配置\",\n \"chatConfig.metrics.delete.title\": \"删除指标配置\",\n \"chatConfig.metrics.step.basic\": \"基本信息\",\n \"chatConfig.metrics.step.dataSources\": \"选择数据源\",\n \"chatConfig.metrics.serverUrlRequired\": \"请输入服务器 URL\",\n \"chatConfig.metrics.fetchDataSourcesFailed\": \"获取数据源失败\",\n \"chatConfig.metrics.editTitle\": \"编辑指标配置\",\n \"chatConfig.metrics.addTitle\": \"添加指标配置\",\n \"chatConfig.metrics.field.serverType\": \"服务器类型\",\n \"chatConfig.metrics.field.authentication\": \"认证\",\n \"chatConfig.metrics.optional\": \"可选\",\n \"chatConfig.metrics.placeholder.apiKey\": \"用于认证的可选 API Key\",\n \"chatConfig.metrics.placeholder.username\": \"用于基本认证的可选用户名\",\n \"chatConfig.metrics.placeholder.password\": \"用于基本认证的可选密码\",\n \"chatConfig.metrics.fetchingDataSources\": \"正在获取数据源……\",\n \"chatConfig.metrics.field.dataSources\": \"数据源\",\n \"chatConfig.metrics.selectedCount\": \"已选:{{count}}\",\n \"chatConfig.metrics.connected\": \"已连接\",\n \"chatConfig.metrics.metricsAvailable\": \"共 {{count}} 个指标可用\",\n \"chatConfig.metrics.loadingMetrics\": \"正在加载指标……\",\n \"chatConfig.metrics.loadMetricsFailed\": \"加载指标失败\",\n \"chatConfig.metrics.selectDataSourceHint\": \"点击左侧的数据源查看其指标\",\n \"chatConfig.metrics.previous\": \"上一步\",\n \"chatConfig.metrics.save\": \"保存修改\",\n \"chatConfig.metrics.type.semantic\": \"语义\",\n \"chatConfig.metricsDataSource.select\": \"选择数据源\",\n \"chatConfig.metricsDataSource.noneAvailable\": \"暂无可用数据源\",\n \"chatConfig.metricsDataSource.title\": \"选择指标数据源\",\n \"chatConfig.metricsDataSource.empty\": \"暂无指标数据源\",\n \"chatConfig.metricsDataSource.disconnected\": \"未连接\",\n \"chatConfig.metricsDataSource.selected\": \"已选\",\n \"chatConfig.mcp.title\": \"MCP 服务器连接\",\n \"chatConfig.mcp.loadFailed\": \"加载 MCP 服务器配置失败\",\n \"chatConfig.mcp.testSuccess\": \"已成功连接({{latency}}ms)\",\n \"chatConfig.mcp.disconnected\": \"{{name}} 已断开连接\",\n \"chatConfig.mcp.connected\": \"{{name}} 已连接\",\n \"chatConfig.mcp.connectFailed\": \"连接失败\",\n \"chatConfig.mcp.toggleFailed\": \"切换连接状态失败\",\n \"chatConfig.mcp.action.test\": \"测试连接\",\n \"chatConfig.mcp.toolsCount\": \"{{count}} 个工具\",\n \"chatConfig.mcp.empty.title\": \"暂无 MCP 服务器配置\",\n \"chatConfig.mcp.delete.title\": \"删除 MCP 服务器配置\",\n \"chatConfig.mcp.step.connection\": \"连接\",\n \"chatConfig.mcp.step.tools\": \"选择工具\",\n \"chatConfig.mcp.commandRequired\": \"请输入 stdio 传输方式所需的命令\",\n \"chatConfig.mcp.urlRequired\": \"请输入 HTTP/SSE 传输方式所需的 URL\",\n \"chatConfig.mcp.fetchToolsFailed\": \"获取工具失败\",\n \"chatConfig.mcp.fetchToolsError\": \"从 MCP 服务器获取工具失败\",\n \"chatConfig.mcp.editTitle\": \"编辑 MCP 服务器配置\",\n \"chatConfig.mcp.addTitle\": \"添加 MCP 服务器配置\",\n \"chatConfig.mcp.field.transport\": \"传输类型\",\n \"chatConfig.mcp.transport.stdio\": \"STDIO(命令)\",\n \"chatConfig.mcp.transport.http\": \"HTTP\",\n \"chatConfig.mcp.transport.sse\": \"SSE(Server-Sent Events)\",\n \"chatConfig.mcp.field.command\": \"命令\",\n \"chatConfig.mcp.field.args\": \"参数(每行一个)\",\n \"chatConfig.mcp.field.env\": \"环境变量\",\n \"chatConfig.mcp.envHint\": \"传入服务器进程(例如 API 令牌)。值会加密存储。\",\n \"chatConfig.mcp.addVariable\": \"添加变量\",\n \"chatConfig.mcp.sseDeprecated\": \"MCP 规范已废弃 SSE —— 新服务器建议使用 Streamable HTTP(HTTP)。\",\n \"chatConfig.mcp.field.headers\": \"请求头\",\n \"chatConfig.mcp.headersHint\": \"随每个请求发送(例如用于认证的 Authorization)。值会加密存储。\",\n \"chatConfig.mcp.addHeader\": \"添加请求头\",\n \"chatConfig.mcp.advanced\": \"高级选项\",\n \"chatConfig.mcp.field.timeout\": \"超时时间(ms)\",\n \"chatConfig.mcp.field.retryAttempts\": \"重试次数\",\n \"chatConfig.mcp.connecting\": \"正在连接 MCP 服务器并获取工具……\",\n \"chatConfig.mcp.noTools\": \"暂无可用工具。请检查你的连接设置。\",\n \"chatConfig.mcp.availableTools\": \"可用工具\",\n \"chatConfig.mcp.selectedTools\": \"已选:{{selected}} / {{total}}\",\n \"chatConfig.mcp.parameters\": \"参数:{{list}}\",\n \"chatConfig.mcp.previous\": \"上一步\",\n \"chatConfig.mcp.save\": \"保存修改\",\n \"chatConfig.midForm.selectAll\": \"全选\",\n \"chatConfig.midForm.clear\": \"清空\",\n \"chatConfig.midForm.selectedOfTotal\": \"已选 {{selected}} / {{total}}\",\n \"chatConfig.midForm.tools\": \"工具\",\n \"chatConfig.midForm.skills.title\": \"技能库\",\n \"chatConfig.midForm.skills.search\": \"搜索技能……\",\n \"chatConfig.midForm.skills.empty\": \"暂无可用技能\",\n \"chatConfig.midForm.databases.title\": \"数据库\",\n \"chatConfig.midForm.databases.search\": \"搜索数据库……\",\n \"chatConfig.midForm.databases.empty\": \"暂无可用数据库\",\n \"chatConfig.midForm.metrics.title\": \"指标服务器\",\n \"chatConfig.midForm.metrics.search\": \"搜索服务器……\",\n \"chatConfig.midForm.metrics.empty\": \"暂无可用服务器\",\n \"chatConfig.midForm.collections.title\": \"集合\",\n \"chatConfig.midForm.collections.search\": \"搜索集合……\",\n \"chatConfig.midForm.collections.empty\": \"暂无可用集合\",\n \"chatConfig.midForm.topology.title\": \"依赖关系\",\n \"chatConfig.midForm.topology.edges\": \"{{count}} 条边\",\n \"chatConfig.midForm.topology.empty\": \"尚未定义依赖关系\",\n \"chatConfig.midForm.topology.addTitle\": \"添加依赖\",\n \"chatConfig.midForm.topology.fromPlaceholder\": \"源智能体 ID\",\n \"chatConfig.midForm.topology.toPlaceholder\": \"目标智能体 ID\",\n \"chatConfig.midForm.topology.purposePlaceholder\": \"用途(例如:归类发票字段)\",\n \"chatConfig.midForm.topology.addEdge\": \"添加边\",\n \"chatConfig.midForm.connections.title\": \"连接\",\n \"chatConfig.midForm.section.config\": \"配置\",\n \"chatConfig.midForm.section.resources\": \"资源授权\",\n \"chatConfig.midForm.section.tools\": \"工具授权\",\n \"chatConfig.midForm.enabled\": \"已启用\",\n \"chatConfig.midForm.disabled\": \"已禁用\",\n \"chatConfig.midForm.scope.global\": \"全局\",\n \"chatConfig.midForm.scope.agent\": \"智能体\",\n \"chatConfig.midForm.scope.project\": \"项目\",\n \"chatConfig.agentModal.title\": \"配置智能体\",\n \"chatConfig.agentModal.tab.basic\": \"基本\",\n \"chatConfig.agentModal.tab.tools\": \"工具\",\n \"chatConfig.agentModal.tab.skills\": \"技能\",\n \"chatConfig.agentModal.tab.subAgents\": \"子智能体\",\n \"chatConfig.agentModal.field.agentType\": \"智能体类型\",\n \"chatConfig.agentModal.field.systemPrompt\": \"系统提示词\",\n \"chatConfig.agentModal.systemPromptPlaceholder\": \"输入该智能体的系统提示词……\",\n \"chatConfig.agentModal.systemPromptHint\": \"定义智能体的行为、能力和约束\",\n \"chatConfig.agentModal.selectedOfTotal\": \"已选 {{selected}} / {{total}}\",\n \"chatConfig.agentModal.selectAll\": \"全选\",\n \"chatConfig.agentModal.deselectAll\": \"取消全选\",\n \"chatConfig.agentModal.noTools\": \"暂无可用工具\",\n \"chatConfig.agentModal.noSkills\": \"暂无可用技能\",\n \"chatConfig.agentModal.noOtherAgents\": \"暂无其他智能体\",\n \"chatConfig.agentModal.approve\": \"审批\",\n \"chatConfig.agentModal.noDescription\": \"暂无描述\",\n \"chatConfig.agentModal.hierarchy\": \"智能体层级\",\n \"chatConfig.agentModal.currentAgent\": \"当前智能体\",\n \"chatConfig.agentModal.currentTag\": \"当前\",\n \"chatConfig.agentModal.type.react\": \"React\",\n \"chatConfig.agentModal.type.deepAgent\": \"Deep Agent\",\n \"chatConfig.agentModal.type.workflow\": \"工作流\",\n \"chatConfig.agentModal.toolsCount\": \"{{count}} 个工具\",\n \"chatConfig.agentModal.skillsCount\": \"{{count}} 个技能\",\n \"chatConfig.agentModal.subAgentsCount\": \"{{count}} 个子智能体\",\n \"chatConfig.agentModal.structureTree\": \"结构树\",\n \"chatConfig.agentModal.tip\": \"提示\",\n \"chatConfig.agentModal.tipBody\": \"Deep Agent 类型允许你把任务委派给子智能体。在「子智能体」标签页中选择智能体来构建层级。\",\n \"chatConfig.agentModal.changesHint\": \"修改将更新智能体配置\",\n \"chatConfig.agentModal.saveConfiguration\": \"保存配置\",\n \"chatConfig.agentPanel.category.data\": \"数据与知识\",\n \"chatConfig.agentPanel.category.execution\": \"执行与交互\",\n \"chatConfig.agentPanel.category.workflow\": \"工作流与编排\",\n \"chatConfig.agentPanel.category.assistant\": \"助手与评测\",\n \"chatConfig.agentPanel.category.other\": \"其他\",\n \"chatConfig.agentPanel.nav.basic\": \"基本信息\",\n \"chatConfig.agentPanel.nav.prompt\": \"系统提示词\",\n \"chatConfig.agentPanel.nav.tools\": \"常用工具\",\n \"chatConfig.agentPanel.nav.capabilities\": \"能力\",\n \"chatConfig.agentPanel.nav.subAgents\": \"子智能体\",\n \"chatConfig.agentPanel.navAriaLabel\": \"智能体配置分区\",\n \"chatConfig.agentPanel.basic.title\": \"基本信息\",\n \"chatConfig.agentPanel.basic.desc\": \"该智能体的核心身份与行为\",\n \"chatConfig.agentPanel.field.name\": \"名称\",\n \"chatConfig.agentPanel.field.agentType\": \"智能体类型\",\n \"chatConfig.agentPanel.field.description\": \"描述\",\n \"chatConfig.agentPanel.validation.nameRequired\": \"请输入智能体名称\",\n \"chatConfig.agentPanel.validation.descriptionRequired\": \"请输入智能体描述\",\n \"chatConfig.agentPanel.placeholder.name\": \"输入智能体名称……\",\n \"chatConfig.agentPanel.placeholder.description\": \"输入智能体描述……\",\n \"chatConfig.agentPanel.typeDesc.react\": \"执行器:直接使用工具执行任务。适用于搜索、代码执行、数据检索等单步操作。\",\n \"chatConfig.agentPanel.typeDesc.deepAgent\": \"编排器:维护一份待办清单来规划并把任务分派给子智能体。适用于结构化的多步工作流。\",\n \"chatConfig.agentPanel.typeDesc.team\": \"团队:创建带依赖关系的任务并动态派生队友,队友之间通过信箱通信。适用于需要探索和发散思考的任务。\",\n \"chatConfig.agentPanel.typeDesc.processing\": \"工作流:按预定义的拓扑顺序委派给子智能体。适用于确定性的多步流程。\",\n \"chatConfig.agentPanel.prompt.title\": \"系统提示词\",\n \"chatConfig.agentPanel.prompt.desc\": \"定义智能体的行为、能力和约束\",\n \"chatConfig.agentPanel.prompt.expand\": \"展开\",\n \"chatConfig.agentPanel.prompt.placeholder\": \"输入该智能体的系统提示词……\",\n \"chatConfig.agentPanel.prompt.chars\": \"{{count}} 个字符\",\n \"chatConfig.agentPanel.tools.title\": \"常用工具\",\n \"chatConfig.agentPanel.tools.desc\": \"选择该智能体可以直接调用的工具\",\n \"chatConfig.agentPanel.tools.search\": \"搜索工具……\",\n \"chatConfig.agentPanel.tools.selected\": \"已选 {{selected}} / {{total}}\",\n \"chatConfig.agentPanel.subAgents.title\": \"子智能体\",\n \"chatConfig.agentPanel.subAgents.desc\": \"选择该智能体可以委派的子智能体\",\n \"chatConfig.agentPanel.subAgents.search\": \"搜索子智能体……\",\n \"chatConfig.agentPanel.subAgents.selected\": \"已选 {{selected}} / {{total}}\",\n \"chatConfig.agentPanel.noTools\": \"暂无可用工具\",\n \"chatConfig.agentPanel.noCapabilities\": \"暂无可用能力\",\n \"chatConfig.agentPanel.noOtherAgents\": \"暂无其他智能体\",\n \"chatConfig.agentPanel.noMatching\": \"没有匹配结果\",\n \"chatConfig.agentPanel.selectAll\": \"全选\",\n \"chatConfig.agentPanel.clear\": \"清空\",\n \"chatConfig.agentPanel.approve\": \"审批\",\n \"chatConfig.agentPanel.noDescription\": \"暂无描述\",\n \"chatConfig.agentPanel.configWorkbench\": \"配置工作台\",\n \"chatConfig.agentPanel.deleteAgent\": \"删除智能体\",\n \"chatConfig.agentPanel.loadingConfig\": \"正在加载智能体配置……\",\n \"chatConfig.agentPanel.footer.saveHint\": \"修改会保存到该智能体\",\n \"chatConfig.agentPanel.footer.viewing\": \"正在查看智能体配置\",\n \"chatConfig.agentPanel.done\": \"完成\",\n \"chatConfig.agentPanel.delete.title\": \"删除智能体\",\n \"chatConfig.agentPanel.delete.confirmPrefix\": \"确定要删除\",\n \"chatConfig.agentPanel.delete.confirmSuffix\": \"吗?此操作无法撤销。\",\n \"chatConfig.agentPanel.deleteFailed\": \"删除助手失败\",\n \"chatConfig.createAssistant.title\": \"新建助手\",\n \"chatConfig.createAssistant.createExtend\": \"创建(扩展)\",\n \"chatConfig.createAssistant.startLearning\": \"开始学习\",\n \"chatConfig.createAssistant.parentAgent\": \"父智能体\",\n \"chatConfig.createAssistant.inheritHint\": \"未修改的字段将继承自父智能体。\",\n \"chatConfig.createAssistant.learnHint\": \"描述该智能体应该做什么。\",\n \"chatConfig.createAssistant.referenceFiles\": \"参考文件\",\n \"chatConfig.createAssistant.referenceFilesHint\": \"可选 —— 会上传到共享训练工作区并附加到本轮学习;架构师会将其作为本轮材料读取。\",\n \"chatConfig.createAssistant.field.key\": \"Key(ID)\",\n \"chatConfig.createAssistant.field.name\": \"名称\",\n \"chatConfig.createAssistant.field.description\": \"描述\",\n \"chatConfig.createAssistant.field.agentType\": \"智能体类型\",\n \"chatConfig.createAssistant.field.connectionMode\": \"连接方式\",\n \"chatConfig.createAssistant.mode.remoteUrl\": \"远程 URL\",\n \"chatConfig.createAssistant.mode.localManaged\": \"本地托管\",\n \"chatConfig.createAssistant.field.template\": \"模板\",\n \"chatConfig.createAssistant.templatePlaceholder\": \"选择一个模板……\",\n \"chatConfig.createAssistant.noTemplates\": \"暂无模板。请使用下方的「自定义命令」。\",\n \"chatConfig.createAssistant.customCommand\": \"+ 自定义命令\",\n \"chatConfig.createAssistant.hideCustomCommand\": \"- 隐藏自定义命令\",\n \"chatConfig.createAssistant.field.executable\": \"可执行文件\",\n \"chatConfig.createAssistant.field.arguments\": \"参数\",\n \"chatConfig.createAssistant.field.workingDirectory\": \"工作目录\",\n \"chatConfig.createAssistant.field.agentCardUrl\": \"Agent Card URL\",\n \"chatConfig.createAssistant.field.apiKeyOptional\": \"API Key(可选)\",\n \"chatConfig.createAssistant.apiKeyPlaceholder\": \"用于认证的 API key\",\n \"chatConfig.createAssistant.field.timeout\": \"超时时间(ms)\",\n \"chatConfig.createAssistant.field.systemPrompt\": \"系统提示词\",\n \"chatConfig.createAssistant.field.systemPromptInherit\": \"系统提示词(保持不变则继承自父智能体)\",\n \"chatConfig.createAssistant.systemPromptInheritPlaceholder\": \"留空则继承父智能体的提示词,或输入新提示词以覆盖……\",\n \"chatConfig.createAssistant.systemPromptPlaceholder\": \"输入该智能体的系统提示词……\",\n \"chatConfig.createAssistant.subAgents\": \"子智能体\",\n \"chatConfig.createAssistant.descriptionPlaceholder\": \"输入该助手的描述……\",\n \"chatConfig.createAssistant.typeDesc.react\": \"执行器:直接使用工具执行任务。适用于搜索、代码执行、数据检索等单步操作。\",\n \"chatConfig.createAssistant.typeDesc.deepAgent\": \"编排器:维护一份顺序待办清单来规划并把待办项分派给子智能体。适用于结构化的多步工作流。\",\n \"chatConfig.createAssistant.typeDesc.team\": \"团队:创建带依赖关系的任务并动态派生出队友。如同蜂群,队友之间通过信箱通信。适用于需要探索和发散思考的任务。\",\n \"chatConfig.createAssistant.typeDesc.processing\": \"工作流:按预定义顺序委派给子智能体,从而强制固定的工作流拓扑。适用于有校验委派路径的确定性多步流程。\",\n \"chatConfig.createAssistant.typeDesc.a2aRemote\": \"A2A 远程:委派给外部的 A2A 兼容智能体服务器。适用于本地 CLI 工具(Claude Code、Codex、OpenCode)或远程智能体。\",\n \"chatConfig.createAssistant.validation.keyRequired\": \"请输入唯一的 key\",\n \"chatConfig.createAssistant.validation.keyPattern\": \"Key 必须以字母开头,且只能包含字母、数字、下划线或连字符\",\n \"chatConfig.createAssistant.validation.nameRequired\": \"请输入名称\",\n \"chatConfig.createAssistant.validation.descriptionRequired\": \"请输入描述\",\n \"chatConfig.createAssistant.validation.systemPromptRequired\": \"请输入系统提示词\",\n \"chatConfig.createAssistant.validation.urlRequired\": \"请输入 A2A 服务器 URL\",\n \"chatConfig.createAssistant.validation.executableRequired\": \"可执行文件为必填项\",\n \"chatConfig.createAssistant.a2aUrlWarning\": \"请先输入 A2A 服务器 URL\",\n \"chatConfig.createAssistant.connectedTo\": \"已连接到「{{name}}」\",\n \"chatConfig.createAssistant.connectionFailed\": \"连接失败\",\n \"chatConfig.createAssistant.connectionTestFailed\": \"连接测试失败\",\n \"chatConfig.createAssistant.trainingGoalRequired\": \"请描述训练目标\",\n \"chatConfig.createAssistant.noTrainingProject\": \"暂无共享训练项目\",\n \"chatConfig.createAssistant.agentCreated\": \"智能体已创建 —— 架构师开始构建\",\n \"chatConfig.createAssistant.createdByExtending\": \"已通过扩展「{{name}}」创建助手\",\n \"chatConfig.createAssistant.created\": \"助手创建成功\",\n \"chatConfig.createAssistant.createFailed\": \"创建助手失败\",\n \"chatConfig.createAssistant.createError\": \"创建助手时发生错误\",\n \"chatConfig.createAssistant.requiredFields\": \"请填写必填字段:{{fields}}\",\n \"chatConfig.createAssistant.requiredFieldsGeneric\": \"请填写必填字段\",\n \"chatConfig.createAssistant.noParentAgent\": \"未选择父智能体\",\n \"chatConfig.createAssistant.agentCreateFailed\": \"创建智能体失败\",\n \"chatConfig.createAssistant.cloneFetchFailed\": \"获取用于克隆的子智能体「{{key}}」失败\",\n \"chatConfig.createAssistant.cloneFailed\": \"克隆子智能体「{{key}}」失败\",\n \"chatConfig.createAssistant.cloneKeyRequired\": \"请为克隆的子智能体「{{key}}」提供一个 key\",\n \"chatConfig.createAssistant.cloneKeyInvalid\": \"克隆的子智能体「{{originalKey}}」的 key「{{key}}」无效。Key 必须以字母开头,且只能包含字母、数字、下划线或连字符。\",\n \"chatConfig.parentAgent.selectPlaceholder\": \"选择要扩展的父智能体...\",\n \"chatConfig.settings.defaultConnectionName\": \"默认\",\n \"chatConfig.settings.serverNamePlaceholder\": \"例如:生产服务器\",\n \"chatConfig.settings.title\": \"设置\",\n \"chatConfig.settings.menu.environment\": \"环境变量\",\n \"chatConfig.settings.menu.models\": \"模型配置\",\n \"chatConfig.settings.menu.environment.desc\": \"管理网关服务器的环境变量\",\n \"chatConfig.settings.menu.models.desc\": \"配置网关级默认模型注册表\",\n \"chatConfig.settings.saveConfiguration\": \"保存配置\",\n \"chatConfig.settings.addServer\": \"添加服务器\",\n \"chatConfig.settings.addNewServer\": \"添加新服务器\",\n \"chatConfig.settings.serverName\": \"服务器名称\",\n \"chatConfig.settings.serverNameHint\": \"可选:留空则使用 URL 作为名称\",\n \"chatConfig.settings.serverUrl\": \"服务器 URL *\",\n \"chatConfig.settings.serverUrlHint\": \"输入网关服务器的完整 URL\",\n \"chatConfig.settings.apiKey\": \"API Key\",\n \"chatConfig.settings.apiKeyPlaceholder\": \"可选:输入用于认证的 API Key\",\n \"chatConfig.settings.apiKeyHint\": \"可选:用于服务器认证的 API Key\",\n \"chatConfig.settings.pleaseEnterServerUrl\": \"请输入服务器 URL\",\n \"chatConfig.settings.serverAdded\": \"服务器添加成功\",\n \"chatConfig.settings.serverDeleted\": \"服务器已删除\",\n \"chatConfig.settings.connectFirst\": \"请先连接一个服务器\",\n \"chatConfig.settings.loadConfigFailed\": \"加载当前配置失败\",\n \"chatConfig.settings.saveFailed\": \"保存配置失败\",\n \"chatConfig.settings.restartWarning\": \"配置已保存。请重启服务器使 {{services}} 生效。\",\n \"chatConfig.settings.savedApplied\": \"配置已保存并生效\",\n \"chatConfig.settings.modelSaved\": \"模型配置已保存并注册成功\",\n \"chatConfig.settings.modelSaveFailed\": \"保存模型配置失败\",\n \"chatConfig.settings.alert.title\": \"配置生效方式\",\n \"chatConfig.settings.alert.immediate\": \"立即生效:\",\n \"chatConfig.settings.alert.restart\": \"需要重启:\",\n \"chatConfig.settings.alert.restartDetail\": \"PORT(修改端口必须重启服务器)\",\n \"chatConfig.settings.envHint\": \"以 .env 格式(key=value)配置环境变量,每行一个变量。密码字段留空则保持当前值。\",\n \"chatConfig.settings.modelsHint\": \"配置模型注册表。每个模型将使用提供的 key 注册,可供智能体使用。\",\n \"chatConfig.settings.model\": \"模型 {{index}}\",\n \"chatConfig.settings.remove\": \"移除\",\n \"chatConfig.settings.field.key\": \"Key *\",\n \"chatConfig.settings.field.keyHint\": \"该模型的唯一标识符\",\n \"chatConfig.settings.field.provider\": \"提供商 *\",\n \"chatConfig.settings.field.modelName\": \"模型名称 *\",\n \"chatConfig.settings.field.apiKeyHintStored\": \"服务器上已存储一个 key,且不会回传。留空则保留,或输入新 key 替换它。\",\n \"chatConfig.settings.field.apiKeyHintNew\": \"模型提供商的 API Key。留空则使用环境变量。\",\n \"chatConfig.settings.apiKeyPlaceholderConfigured\": \"已配置 —— 留空则保持不变\",\n \"chatConfig.settings.apiKeyPlaceholderNew\": \"输入你的 API Key\",\n \"chatConfig.settings.field.baseUrl\": \"Base URL\",\n \"chatConfig.settings.field.baseUrlHint\": \"可选:API 的自定义 Base URL\",\n \"chatConfig.settings.field.streaming\": \"启用流式输出\",\n \"chatConfig.settings.field.maxTokens\": \"最大 Token 数\",\n \"chatConfig.settings.field.temperature\": \"温度\",\n \"chatConfig.settings.addModel\": \"+ 添加模型\",\n \"chatConfig.settings.connecting\": \"连接中……\",\n \"chatConfig.settings.connectingTo\": \"正在连接到 {{url}}\",\n \"chatConfig.settings.notConnected\": \"未连接\",\n \"chatConfig.settings.connectFailedDetail\": \"连接 {{url}} 失败。请检查服务器 URL 后重试。\",\n \"chatConfig.settings.clickReconnect\": \"点击「重新连接」以连接到 {{url}}\",\n \"chatConfig.settings.reconnect\": \"重新连接\",\n \"chatConfig.settings.error.serverError\": \"服务器返回错误\",\n \"chatConfig.settings.error.timeout\": \"连接超时\",\n \"chatConfig.settings.error.connectFailed\": \"连接服务器失败\",\n \"chatConfig.paChannel.title\": \"连接渠道\",\n \"chatConfig.paChannel.channels\": \"渠道\",\n \"chatConfig.paChannel.noChannels\": \"暂无渠道\",\n \"chatConfig.paChannel.connect\": \"连接\",\n \"chatConfig.paChannel.selectHint\": \"从左侧选择一个渠道,或添加新渠道\",\n \"chatConfig.paChannel.chooseType\": \"选择渠道类型\",\n \"chatConfig.paChannel.editChannel\": \"编辑渠道\",\n \"chatConfig.paChannel.newChannel\": \"新建{{channel}}\",\n \"chatConfig.paChannel.channel.lark\": \"飞书 / Lark\",\n \"chatConfig.paChannel.channel.wechat\": \"WeChat / 微信\",\n \"chatConfig.paChannel.wechatBot\": \"微信机器人\",\n \"chatConfig.paChannel.feishuBot\": \"飞书机器人\",\n \"chatConfig.paChannel.field.channelType\": \"渠道类型\",\n \"chatConfig.paChannel.field.displayName\": \"显示名称\",\n \"chatConfig.paChannel.field.appId\": \"App ID\",\n \"chatConfig.paChannel.field.appSecret\": \"App Secret\",\n \"chatConfig.paChannel.field.verificationToken\": \"Verification Token\",\n \"chatConfig.paChannel.field.encryptKey\": \"Encrypt Key\",\n \"chatConfig.paChannel.field.botToken\": \"Bot Token\",\n \"chatConfig.paChannel.field.uin\": \"UIN\",\n \"chatConfig.paChannel.enabled\": \"已启用\",\n \"chatConfig.paChannel.listenerActive\": \"监听服务运行中\",\n \"chatConfig.paChannel.listenerStopped\": \"监听服务已停止\",\n \"chatConfig.paChannel.anyoneCanMessage\": \"任何人都可以发消息\",\n \"chatConfig.paChannel.anyoneCanMessageHint\": \"启用后,任何能访问该渠道的人都可以与你的助手对话\",\n \"chatConfig.paChannel.whoCanChat\": \"谁可以对话\",\n \"chatConfig.paChannel.whoCanChatHint\": \"只有你在这里添加的人才能给你的助手发消息\",\n \"chatConfig.paChannel.noContacts\": \"尚未添加联系人\",\n \"chatConfig.paChannel.addContact\": \"添加联系人\",\n \"chatConfig.paChannel.add\": \"添加\",\n \"chatConfig.paChannel.required\": \"必填\",\n \"chatConfig.paChannel.placeholder.wechatOpenId\": \"微信 Open ID\",\n \"chatConfig.paChannel.placeholder.feishuOpenId\": \"飞书 Open ID\",\n \"chatConfig.paChannel.placeholder.displayName\": \"显示名称(可选)\",\n \"chatConfig.paChannel.placeholder.appSecret\": \"你的 app secret\",\n \"chatConfig.paChannel.placeholder.optional\": \"可选\",\n \"chatConfig.paChannel.placeholder.botToken\": \"扫码后自动填充\",\n \"chatConfig.paChannel.placeholder.uin\": \"扫码登录后自动填充\",\n \"chatConfig.paChannel.addBindingHint\": \"保存后回到这里添加你想对话的人。\",\n \"chatConfig.paChannel.removeChannel\": \"移除该渠道?\",\n \"chatConfig.paChannel.removeChannelDesc\": \"该接入的所有绑定也会一并丢失。\",\n \"chatConfig.paChannel.save\": \"保存\",\n \"chatConfig.paChannel.bindingAdded\": \"绑定已添加\",\n \"chatConfig.paChannel.bindingAddFailed\": \"添加绑定失败\",\n \"chatConfig.paChannel.bindingRemoved\": \"绑定已移除\",\n \"chatConfig.paChannel.bindingRemoveFailed\": \"移除绑定失败\",\n \"chatConfig.paChannel.bindingsLoadFailed\": \"加载绑定失败\",\n \"chatConfig.paChannel.installationsLoadFailed\": \"加载渠道接入失败\",\n \"chatConfig.paChannel.channelEnabled\": \"渠道已启用\",\n \"chatConfig.paChannel.channelDisabled\": \"渠道已禁用\",\n \"chatConfig.paChannel.toggleFailed\": \"切换渠道状态失败\",\n \"chatConfig.paChannel.installationUpdated\": \"接入已更新\",\n \"chatConfig.paChannel.installationUpdateFailed\": \"更新接入失败\",\n \"chatConfig.paChannel.installationCreated\": \"接入已创建\",\n \"chatConfig.paChannel.installationCreateFailed\": \"创建接入失败\",\n \"chatConfig.paChannel.installationSaveFailed\": \"保存接入失败\",\n \"chatConfig.paChannel.installationDeleted\": \"接入已删除\",\n \"chatConfig.paChannel.installationDeleteFailed\": \"删除接入失败\",\n \"chatConfig.paChannel.addUsersHint\": \"现在添加可以访问该渠道的用户\",\n \"chatConfig.paChannel.validation.appIdRequired\": \"App ID 为必填项\",\n \"chatConfig.paChannel.validation.appSecretRequired\": \"App Secret 为必填项\",\n \"chatConfig.paChannel.validation.botTokenRequired\": \"Bot Token 为必填项\",\n \"chatConfig.paChannel.qr.hint\": \"用微信扫描二维码以获取 Bot Token\",\n \"chatConfig.paChannel.qr.get\": \"获取二维码\",\n \"chatConfig.paChannel.qr.generating\": \"正在生成二维码……\",\n \"chatConfig.paChannel.qr.scan\": \"用微信扫码\",\n \"chatConfig.paChannel.qr.scanned\": \"已扫描!请在手机上确认……\",\n \"chatConfig.paChannel.qr.expiresIn\": \"{{time}} 后过期\",\n \"chatConfig.paChannel.qr.expired\": \"二维码已过期\",\n \"chatConfig.paChannel.qr.refreshStatus\": \"刷新状态\",\n \"chatConfig.paChannel.qr.loginConfirmed\": \"登录已确认!\",\n \"chatConfig.paChannel.qr.tokenFilled\": \"Bot Token 已自动填充\",\n \"chatConfig.paChannel.qr.expiredGetNew\": \"二维码已过期。请重新获取。\",\n \"chatConfig.paChannel.qr.retry\": \"重试\",\n \"chatConfig.paChannel.qr.loadFailed\": \"加载二维码失败\",\n \"chatConfig.paChannel.qr.getFailed\": \"获取二维码失败\",\n \"chatConfig.paChannel.qr.statusFailed\": \"查询二维码状态失败\"\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/i18n/locales/chatConfig/zh.json"],"sourcesContent":["{\n \"messages\": {\n \"chatConfig.field.name\": \"名称\",\n \"chatConfig.field.description\": \"描述\",\n \"chatConfig.field.displayName\": \"显示名称\",\n \"chatConfig.field.connectionKey\": \"连接 Key\",\n \"chatConfig.field.host\": \"主机\",\n \"chatConfig.field.port\": \"端口\",\n \"chatConfig.field.username\": \"用户名\",\n \"chatConfig.field.password\": \"密码\",\n \"chatConfig.field.serverUrl\": \"服务器 URL\",\n \"chatConfig.field.apiKey\": \"API Key\",\n \"chatConfig.field.optionalDescription\": \"可选描述\",\n \"chatConfig.config.updated\": \"配置已更新\",\n \"chatConfig.config.created\": \"配置已创建\",\n \"chatConfig.config.deleted\": \"配置已删除\",\n \"chatConfig.config.deleteFailed\": \"删除配置失败\",\n \"chatConfig.config.saveFailed\": \"保存配置失败\",\n \"chatConfig.config.missingId\": \"无法删除:缺少配置 id\",\n \"chatConfig.agentType.executor\": \"执行器\",\n \"chatConfig.agentType.orchestrator\": \"编排器\",\n \"chatConfig.agentType.team\": \"团队\",\n \"chatConfig.agentType.workflow\": \"工作流\",\n \"chatConfig.agentType.a2aRemote\": \"A2A 远程\",\n \"chatConfig.keyValue.key\": \"键\",\n \"chatConfig.keyValue.value\": \"值\",\n \"chatConfig.keyValue.add\": \"添加\",\n \"chatConfig.keyValue.removeEntry\": \"移除条目\",\n \"chatConfig.connectionList.empty\": \"没有“{{type}}”连接\",\n \"chatConfig.connectionList.selectAll\": \"全选\",\n \"chatConfig.connectionList.deselectAll\": \"取消全选\",\n \"chatConfig.connectionList.clear\": \"清空\",\n \"chatConfig.connectionsHub.title\": \"插件\",\n \"chatConfig.connectionsHub.tab.all\": \"全部({{count}})\",\n \"chatConfig.connectionsHub.tab.connections\": \"连接({{count}})\",\n \"chatConfig.connectionsHub.tab.tools\": \"工具({{count}})\",\n \"chatConfig.connectionsHub.empty.connections.title\": \"没有连接类插件\",\n \"chatConfig.connectionsHub.empty.connections.description\": \"没有注册支持连接管理的插件\",\n \"chatConfig.connectionsHub.empty.tools.title\": \"没有工具类插件\",\n \"chatConfig.connectionsHub.empty.tools.description\": \"没有注册纯工具类插件\",\n \"chatConfig.connectionsHub.empty.all.title\": \"没有插件\",\n \"chatConfig.connectionsHub.empty.all.description\": \"没有注册任何插件\",\n \"chatConfig.connectionsHub.capability.test\": \"测试\",\n \"chatConfig.connectionsHub.capability.discover\": \"发现\",\n \"chatConfig.connectionsHub.capability.connection\": \"连接\",\n \"chatConfig.connectionsHub.capability.tool\": \"工具\",\n \"chatConfig.subAgentInherit.hint\": \"选择如何处理来自父智能体的每个子智能体:\",\n \"chatConfig.subAgentInherit.clone\": \"克隆为新智能体\",\n \"chatConfig.subAgentInherit.reuse\": \"复用\",\n \"chatConfig.subAgentInherit.cloneKeyPlaceholder\": \"输入克隆智能体的 key\",\n \"chatConfig.project.create.title\": \"新建项目\",\n \"chatConfig.project.field.name\": \"项目名称\",\n \"chatConfig.project.field.namePlaceholder\": \"输入项目名称\",\n \"chatConfig.project.validation.nameRequired\": \"请输入项目名称\",\n \"chatConfig.project.validation.nameMax\": \"项目名称不能超过 50 个字符\",\n \"chatConfig.project.field.visibility\": \"可见性\",\n \"chatConfig.project.kind.business\": \"业务\",\n \"chatConfig.project.kind.business.description\": \"仅受邀成员可见。\",\n \"chatConfig.project.kind.public\": \"公开\",\n \"chatConfig.project.kind.public.description\": \"本工作区内所有人可见。\",\n \"chatConfig.project.field.description\": \"描述(可选)\",\n \"chatConfig.project.field.descriptionPlaceholder\": \"输入项目描述\",\n \"chatConfig.workflow.create.title\": \"新建工作流\",\n \"chatConfig.workflow.create.titleProcessing\": \"新建处理工作流\",\n \"chatConfig.workflow.field.purpose\": \"用途\",\n \"chatConfig.workflow.field.purposePlaceholder\": \"描述这个工作流要做什么。名称和 key 会自动生成。\",\n \"chatConfig.workflow.validation.purposeRequired\": \"请描述工作流的用途\",\n \"chatConfig.workflow.middleware.topologyName\": \"拓扑\",\n \"chatConfig.workflow.middleware.topologyDescription\": \"工作流拓扑\",\n \"chatConfig.skill.create.title\": \"新建技能\",\n \"chatConfig.skill.edit.title\": \"编辑技能\",\n \"chatConfig.skill.created\": \"技能创建成功\",\n \"chatConfig.skill.updated\": \"技能更新成功\",\n \"chatConfig.skill.createFailed\": \"创建技能失败\",\n \"chatConfig.skill.updateFailed\": \"更新技能失败\",\n \"chatConfig.skill.createError\": \"创建技能时发生错误\",\n \"chatConfig.skill.updateError\": \"更新技能时发生错误\",\n \"chatConfig.skill.field.name\": \"名称\",\n \"chatConfig.skill.field.description\": \"描述\",\n \"chatConfig.skill.field.license\": \"许可证\",\n \"chatConfig.skill.field.compatibility\": \"兼容性\",\n \"chatConfig.skill.field.metadata\": \"元数据\",\n \"chatConfig.skill.field.content\": \"内容\",\n \"chatConfig.skill.placeholder.description\": \"描述\",\n \"chatConfig.skill.placeholder.license\": \"许可证\",\n \"chatConfig.skill.placeholder.compatibility\": \"兼容性\",\n \"chatConfig.skill.placeholder.content\": \"内容\",\n \"chatConfig.skill.validation.nameRequired\": \"请输入技能名称\",\n \"chatConfig.skill.validation.namePattern\": \"名称必须为小写字母数字,并使用单个连字符分隔(例如 'my-skill')\",\n \"chatConfig.skill.validation.nameLength\": \"名称长度必须为 1-64 个字符\",\n \"chatConfig.skill.validation.descriptionRequired\": \"请输入技能描述\",\n \"chatConfig.skill.metadata.add\": \"添加\",\n \"chatConfig.skill.metadata.empty\": \"还没有元数据。使用「添加」创建一条。\",\n \"chatConfig.skill.metadata.row\": \"元数据 {{index}}\",\n \"chatConfig.skill.action.save\": \"保存修改\",\n \"chatConfig.skill.action.create\": \"创建技能\",\n \"chatConfig.skillPicker.title\": \"技能\",\n \"chatConfig.skillPicker.selectTitle\": \"选择技能\",\n \"chatConfig.skillPicker.empty\": \"暂无可用技能\",\n \"chatConfig.databasePicker.title\": \"数据库\",\n \"chatConfig.databasePicker.selectTitle\": \"选择数据库\",\n \"chatConfig.databasePicker.empty\": \"暂无可用数据库\",\n \"chatConfig.channelInstall.title\": \"渠道接入\",\n \"chatConfig.channelInstall.add\": \"添加接入\",\n \"chatConfig.channelInstall.editTitle\": \"编辑接入\",\n \"chatConfig.channelInstall.addTitle\": \"添加接入\",\n \"chatConfig.channelInstall.empty.title\": \"暂无渠道接入\",\n \"chatConfig.channelInstall.empty.description\": \"点击「添加接入」创建一个\",\n \"chatConfig.channelInstall.unsupported\": \"暂不支持该渠道的配置界面\",\n \"chatConfig.channelInstall.loadFailed\": \"加载渠道接入失败\",\n \"chatConfig.channelInstall.deleted\": \"接入已删除\",\n \"chatConfig.channelInstall.deleteFailed\": \"删除接入失败\",\n \"chatConfig.channelInstall.updated\": \"接入已更新\",\n \"chatConfig.channelInstall.updateFailed\": \"更新接入失败\",\n \"chatConfig.channelInstall.created\": \"接入已创建\",\n \"chatConfig.channelInstall.createFailed\": \"创建接入失败\",\n \"chatConfig.channelInstall.delete.title\": \"删除渠道接入\",\n \"chatConfig.channelInstall.delete.description\": \"确定要删除「{{name}}」吗?\",\n \"chatConfig.channelInstall.field.channel\": \"渠道\",\n \"chatConfig.channelInstall.field.name\": \"名称\",\n \"chatConfig.channelInstall.field.appId\": \"App ID\",\n \"chatConfig.channelInstall.field.appSecret\": \"App Secret\",\n \"chatConfig.channelInstall.field.verificationToken\": \"Verification Token\",\n \"chatConfig.channelInstall.field.encryptKey\": \"Encrypt Key\",\n \"chatConfig.channelInstall.validation.appIdRequired\": \"App ID 为必填项\",\n \"chatConfig.channelInstall.validation.appSecretRequired\": \"App Secret 为必填项\",\n \"chatConfig.connection.loadFailed\": \"加载连接失败\",\n \"chatConfig.connection.testPassed\": \"连接测试通过:{{message}}\",\n \"chatConfig.connection.testFailed\": \"连接测试失败\",\n \"chatConfig.connection.testError\": \"测试连接失败\",\n \"chatConfig.connection.missingKey\": \"无法删除:缺少连接 key\",\n \"chatConfig.connection.deleted\": \"连接已删除\",\n \"chatConfig.connection.deleteFailed\": \"删除连接失败\",\n \"chatConfig.connection.noSchema.title\": \"未定义连接结构\",\n \"chatConfig.connection.noSchema.description\": \"该插件类型不支持连接管理\",\n \"chatConfig.connection.action.test\": \"测试\",\n \"chatConfig.connection.status.online\": \"在线\",\n \"chatConfig.connection.status.offline\": \"离线\",\n \"chatConfig.connection.updated\": \"更新于 {{date}}\",\n \"chatConfig.connection.add\": \"添加连接\",\n \"chatConfig.connection.empty.title\": \"尚未配置连接\",\n \"chatConfig.connection.empty.description\": \"点击「添加连接」创建一个\",\n \"chatConfig.connection.delete.title\": \"删除连接\",\n \"chatConfig.connection.delete.confirm\": \"删除「{{name}}」?\",\n \"chatConfig.connectionForm.testRequestFailed\": \"测试请求失败\",\n \"chatConfig.connectionForm.keyRequired\": \"连接 key 为必填项\",\n \"chatConfig.connectionForm.updated\": \"连接已更新\",\n \"chatConfig.connectionForm.created\": \"连接已创建\",\n \"chatConfig.connectionForm.saveFailed\": \"保存连接失败\",\n \"chatConfig.connectionForm.selectPlaceholder\": \"选择{{title}}\",\n \"chatConfig.connectionForm.enterPlaceholder\": \"输入{{title}}\",\n \"chatConfig.connectionForm.step.details\": \"连接详情\",\n \"chatConfig.connectionForm.step.verify\": \"验证\",\n \"chatConfig.connectionForm.editTitle\": \"编辑 {{type}} 连接\",\n \"chatConfig.connectionForm.addTitle\": \"添加 {{type}} 连接\",\n \"chatConfig.connectionForm.save\": \"保存修改\",\n \"chatConfig.connectionForm.finish\": \"完成\",\n \"chatConfig.connectionForm.testing\": \"正在测试连接……\",\n \"chatConfig.connectionForm.availableResources\": \"可用资源\",\n \"chatConfig.connectionForm.selectedCount\": \"(已选 {{count}} 项)\",\n \"chatConfig.connectionForm.retryTest\": \"重新测试\",\n \"chatConfig.database.title\": \"数据库连接\",\n \"chatConfig.database.loadFailed\": \"加载数据库配置失败\",\n \"chatConfig.database.testSuccess\": \"已成功连接到 {{host}}({{latency}}ms)\",\n \"chatConfig.database.connectionFailed\": \"连接失败:{{error}}\",\n \"chatConfig.database.empty.title\": \"暂无数据库配置\",\n \"chatConfig.database.keyAndId\": \"Key:{{key}} | ID:{{id}}\",\n \"chatConfig.database.connectionStringMode\": \"连接串模式\",\n \"chatConfig.database.testing\": \"测试中……\",\n \"chatConfig.database.editTitle\": \"编辑数据库配置\",\n \"chatConfig.database.addTitle\": \"添加数据库配置\",\n \"chatConfig.database.field.type\": \"数据库类型\",\n \"chatConfig.database.field.connectionString\": \"连接串\",\n \"chatConfig.database.priorityMode\": \"优先模式\",\n \"chatConfig.database.note.important\": \"重要:\",\n \"chatConfig.database.note.whenProvided\": \"提供连接串时,它会\",\n \"chatConfig.database.note.priorityOver\": \"优先于\",\n \"chatConfig.database.note.suffix\": \"下方所有单独连接参数。后端采用相同的优先级逻辑。\",\n \"chatConfig.database.field.individualParams\": \"单独连接参数\",\n \"chatConfig.database.ignoredWhenString\": \"设置连接串后该项会被忽略\",\n \"chatConfig.database.field.name\": \"数据库名称\",\n \"chatConfig.database.delete.title\": \"删除数据库配置\",\n \"chatConfig.database.delete.description\": \"确定要删除「{{name}}」吗?\",\n \"chatConfig.metrics.title\": \"指标服务器连接\",\n \"chatConfig.metrics.loadFailed\": \"加载指标配置失败\",\n \"chatConfig.metrics.testSuccess\": \"已成功连接到 {{serverUrl}}({{latency}}ms)\",\n \"chatConfig.metrics.empty.title\": \"暂无指标配置\",\n \"chatConfig.metrics.delete.title\": \"删除指标配置\",\n \"chatConfig.metrics.step.basic\": \"基本信息\",\n \"chatConfig.metrics.step.dataSources\": \"选择数据源\",\n \"chatConfig.metrics.serverUrlRequired\": \"请输入服务器 URL\",\n \"chatConfig.metrics.fetchDataSourcesFailed\": \"获取数据源失败\",\n \"chatConfig.metrics.editTitle\": \"编辑指标配置\",\n \"chatConfig.metrics.addTitle\": \"添加指标配置\",\n \"chatConfig.metrics.field.serverType\": \"服务器类型\",\n \"chatConfig.metrics.field.authentication\": \"认证\",\n \"chatConfig.metrics.optional\": \"可选\",\n \"chatConfig.metrics.placeholder.apiKey\": \"用于认证的可选 API Key\",\n \"chatConfig.metrics.placeholder.username\": \"用于基本认证的可选用户名\",\n \"chatConfig.metrics.placeholder.password\": \"用于基本认证的可选密码\",\n \"chatConfig.metrics.fetchingDataSources\": \"正在获取数据源……\",\n \"chatConfig.metrics.field.dataSources\": \"数据源\",\n \"chatConfig.metrics.selectedCount\": \"已选:{{count}}\",\n \"chatConfig.metrics.connected\": \"已连接\",\n \"chatConfig.metrics.metricsAvailable\": \"共 {{count}} 个指标可用\",\n \"chatConfig.metrics.loadingMetrics\": \"正在加载指标……\",\n \"chatConfig.metrics.loadMetricsFailed\": \"加载指标失败\",\n \"chatConfig.metrics.selectDataSourceHint\": \"点击左侧的数据源查看其指标\",\n \"chatConfig.metrics.previous\": \"上一步\",\n \"chatConfig.metrics.save\": \"保存修改\",\n \"chatConfig.metrics.type.semantic\": \"语义\",\n \"chatConfig.metricsDataSource.select\": \"选择数据源\",\n \"chatConfig.metricsDataSource.noneAvailable\": \"暂无可用数据源\",\n \"chatConfig.metricsDataSource.title\": \"选择指标数据源\",\n \"chatConfig.metricsDataSource.empty\": \"暂无指标数据源\",\n \"chatConfig.metricsDataSource.disconnected\": \"未连接\",\n \"chatConfig.metricsDataSource.selected\": \"已选\",\n \"chatConfig.mcp.title\": \"MCP 服务器连接\",\n \"chatConfig.mcp.loadFailed\": \"加载 MCP 服务器配置失败\",\n \"chatConfig.mcp.testSuccess\": \"已成功连接({{latency}}ms)\",\n \"chatConfig.mcp.disconnected\": \"{{name}} 已断开连接\",\n \"chatConfig.mcp.connected\": \"{{name}} 已连接\",\n \"chatConfig.mcp.connectFailed\": \"连接失败\",\n \"chatConfig.mcp.toggleFailed\": \"切换连接状态失败\",\n \"chatConfig.mcp.action.test\": \"测试连接\",\n \"chatConfig.mcp.toolsCount\": \"{{count}} 个工具\",\n \"chatConfig.mcp.empty.title\": \"暂无 MCP 服务器配置\",\n \"chatConfig.mcp.delete.title\": \"删除 MCP 服务器配置\",\n \"chatConfig.mcp.step.connection\": \"连接\",\n \"chatConfig.mcp.step.tools\": \"选择工具\",\n \"chatConfig.mcp.commandRequired\": \"请输入 stdio 传输方式所需的命令\",\n \"chatConfig.mcp.urlRequired\": \"请输入 HTTP/SSE 传输方式所需的 URL\",\n \"chatConfig.mcp.fetchToolsFailed\": \"获取工具失败\",\n \"chatConfig.mcp.fetchToolsError\": \"从 MCP 服务器获取工具失败\",\n \"chatConfig.mcp.editTitle\": \"编辑 MCP 服务器配置\",\n \"chatConfig.mcp.addTitle\": \"添加 MCP 服务器配置\",\n \"chatConfig.mcp.field.transport\": \"传输类型\",\n \"chatConfig.mcp.transport.stdio\": \"STDIO(命令)\",\n \"chatConfig.mcp.transport.http\": \"HTTP\",\n \"chatConfig.mcp.transport.sse\": \"SSE(Server-Sent Events)\",\n \"chatConfig.mcp.field.command\": \"命令\",\n \"chatConfig.mcp.field.args\": \"参数(每行一个)\",\n \"chatConfig.mcp.field.env\": \"环境变量\",\n \"chatConfig.mcp.envHint\": \"传入服务器进程(例如 API 令牌)。值会加密存储。\",\n \"chatConfig.mcp.addVariable\": \"添加变量\",\n \"chatConfig.mcp.sseDeprecated\": \"MCP 规范已废弃 SSE —— 新服务器建议使用 Streamable HTTP(HTTP)。\",\n \"chatConfig.mcp.field.headers\": \"请求头\",\n \"chatConfig.mcp.headersHint\": \"随每个请求发送(例如用于认证的 Authorization)。值会加密存储。\",\n \"chatConfig.mcp.addHeader\": \"添加请求头\",\n \"chatConfig.mcp.advanced\": \"高级选项\",\n \"chatConfig.mcp.field.timeout\": \"超时时间(ms)\",\n \"chatConfig.mcp.field.retryAttempts\": \"重试次数\",\n \"chatConfig.mcp.connecting\": \"正在连接 MCP 服务器并获取工具……\",\n \"chatConfig.mcp.noTools\": \"暂无可用工具。请检查你的连接设置。\",\n \"chatConfig.mcp.availableTools\": \"可用工具\",\n \"chatConfig.mcp.selectedTools\": \"已选:{{selected}} / {{total}}\",\n \"chatConfig.mcp.parameters\": \"参数:{{list}}\",\n \"chatConfig.mcp.previous\": \"上一步\",\n \"chatConfig.mcp.save\": \"保存修改\",\n \"chatConfig.midForm.selectAll\": \"全选\",\n \"chatConfig.midForm.clear\": \"清空\",\n \"chatConfig.midForm.selectedOfTotal\": \"已选 {{selected}} / {{total}}\",\n \"chatConfig.midForm.tools\": \"工具\",\n \"chatConfig.midForm.skills.title\": \"技能库\",\n \"chatConfig.midForm.skills.search\": \"搜索技能……\",\n \"chatConfig.midForm.skills.empty\": \"暂无可用技能\",\n \"chatConfig.midForm.databases.title\": \"数据库\",\n \"chatConfig.midForm.databases.search\": \"搜索数据库……\",\n \"chatConfig.midForm.databases.empty\": \"暂无可用数据库\",\n \"chatConfig.midForm.metrics.title\": \"指标服务器\",\n \"chatConfig.midForm.metrics.search\": \"搜索服务器……\",\n \"chatConfig.midForm.metrics.empty\": \"暂无可用服务器\",\n \"chatConfig.midForm.collections.title\": \"集合\",\n \"chatConfig.midForm.collections.search\": \"搜索集合……\",\n \"chatConfig.midForm.collections.empty\": \"暂无可用集合\",\n \"chatConfig.midForm.topology.title\": \"依赖关系\",\n \"chatConfig.midForm.topology.edges\": \"{{count}} 条边\",\n \"chatConfig.midForm.topology.empty\": \"尚未定义依赖关系\",\n \"chatConfig.midForm.topology.addTitle\": \"添加依赖\",\n \"chatConfig.midForm.topology.fromPlaceholder\": \"源智能体 ID\",\n \"chatConfig.midForm.topology.toPlaceholder\": \"目标智能体 ID\",\n \"chatConfig.midForm.topology.purposePlaceholder\": \"用途(例如:归类发票字段)\",\n \"chatConfig.midForm.topology.addEdge\": \"添加边\",\n \"chatConfig.midForm.connections.title\": \"连接\",\n \"chatConfig.midForm.section.config\": \"配置\",\n \"chatConfig.midForm.section.resources\": \"资源授权\",\n \"chatConfig.midForm.section.tools\": \"工具授权\",\n \"chatConfig.midForm.enabled\": \"已启用\",\n \"chatConfig.midForm.disabled\": \"已禁用\",\n \"chatConfig.midForm.scope.global\": \"全局\",\n \"chatConfig.midForm.scope.agent\": \"智能体\",\n \"chatConfig.midForm.scope.project\": \"项目\",\n \"chatConfig.agentModal.title\": \"配置智能体\",\n \"chatConfig.agentModal.tab.basic\": \"基本\",\n \"chatConfig.agentModal.tab.tools\": \"工具\",\n \"chatConfig.agentModal.tab.skills\": \"技能\",\n \"chatConfig.agentModal.tab.subAgents\": \"子智能体\",\n \"chatConfig.agentModal.field.agentType\": \"智能体类型\",\n \"chatConfig.agentModal.field.systemPrompt\": \"系统提示词\",\n \"chatConfig.agentModal.systemPromptPlaceholder\": \"输入该智能体的系统提示词……\",\n \"chatConfig.agentModal.systemPromptHint\": \"定义智能体的行为、能力和约束\",\n \"chatConfig.agentModal.selectedOfTotal\": \"已选 {{selected}} / {{total}}\",\n \"chatConfig.agentModal.selectAll\": \"全选\",\n \"chatConfig.agentModal.deselectAll\": \"取消全选\",\n \"chatConfig.agentModal.noTools\": \"暂无可用工具\",\n \"chatConfig.agentModal.noSkills\": \"暂无可用技能\",\n \"chatConfig.agentModal.noOtherAgents\": \"暂无其他智能体\",\n \"chatConfig.agentModal.approve\": \"审批\",\n \"chatConfig.agentModal.noDescription\": \"暂无描述\",\n \"chatConfig.agentModal.hierarchy\": \"智能体层级\",\n \"chatConfig.agentModal.currentAgent\": \"当前智能体\",\n \"chatConfig.agentModal.currentTag\": \"当前\",\n \"chatConfig.agentModal.type.react\": \"React\",\n \"chatConfig.agentModal.type.deepAgent\": \"Deep Agent\",\n \"chatConfig.agentModal.type.workflow\": \"工作流\",\n \"chatConfig.agentModal.toolsCount\": \"{{count}} 个工具\",\n \"chatConfig.agentModal.skillsCount\": \"{{count}} 个技能\",\n \"chatConfig.agentModal.subAgentsCount\": \"{{count}} 个子智能体\",\n \"chatConfig.agentModal.structureTree\": \"结构树\",\n \"chatConfig.agentModal.tip\": \"提示\",\n \"chatConfig.agentModal.tipBody\": \"Deep Agent 类型允许你把任务委派给子智能体。在「子智能体」标签页中选择智能体来构建层级。\",\n \"chatConfig.agentModal.changesHint\": \"修改将更新智能体配置\",\n \"chatConfig.agentModal.saveConfiguration\": \"保存配置\",\n \"chatConfig.agentPanel.category.data\": \"数据与知识\",\n \"chatConfig.agentPanel.category.execution\": \"执行与交互\",\n \"chatConfig.agentPanel.category.workflow\": \"工作流与编排\",\n \"chatConfig.agentPanel.category.assistant\": \"助手与评测\",\n \"chatConfig.agentPanel.category.other\": \"其他\",\n \"chatConfig.agentPanel.nav.basic\": \"基本信息\",\n \"chatConfig.agentPanel.nav.prompt\": \"系统提示词\",\n \"chatConfig.agentPanel.nav.tools\": \"常用工具\",\n \"chatConfig.agentPanel.nav.capabilities\": \"能力\",\n \"chatConfig.agentPanel.nav.subAgents\": \"子智能体\",\n \"chatConfig.agentPanel.navAriaLabel\": \"智能体配置分区\",\n \"chatConfig.agentPanel.basic.title\": \"基本信息\",\n \"chatConfig.agentPanel.basic.desc\": \"该智能体的核心身份与行为\",\n \"chatConfig.agentPanel.field.name\": \"名称\",\n \"chatConfig.agentPanel.field.agentType\": \"智能体类型\",\n \"chatConfig.agentPanel.field.description\": \"描述\",\n \"chatConfig.agentPanel.validation.nameRequired\": \"请输入智能体名称\",\n \"chatConfig.agentPanel.validation.descriptionRequired\": \"请输入智能体描述\",\n \"chatConfig.agentPanel.placeholder.name\": \"输入智能体名称……\",\n \"chatConfig.agentPanel.placeholder.description\": \"输入智能体描述……\",\n \"chatConfig.agentPanel.typeDesc.react\": \"执行器:直接使用工具执行任务。适用于搜索、代码执行、数据检索等单步操作。\",\n \"chatConfig.agentPanel.typeDesc.deepAgent\": \"编排器:维护一份待办清单来规划并把任务分派给子智能体。适用于结构化的多步工作流。\",\n \"chatConfig.agentPanel.typeDesc.team\": \"团队:创建带依赖关系的任务并动态派生队友,队友之间通过信箱通信。适用于需要探索和发散思考的任务。\",\n \"chatConfig.agentPanel.typeDesc.processing\": \"工作流:按预定义的拓扑顺序委派给子智能体。适用于确定性的多步流程。\",\n \"chatConfig.agentPanel.prompt.title\": \"系统提示词\",\n \"chatConfig.agentPanel.prompt.desc\": \"定义智能体的行为、能力和约束\",\n \"chatConfig.agentPanel.prompt.expand\": \"展开\",\n \"chatConfig.agentPanel.prompt.placeholder\": \"输入该智能体的系统提示词……\",\n \"chatConfig.agentPanel.prompt.chars\": \"{{count}} 个字符\",\n \"chatConfig.agentPanel.tools.title\": \"常用工具\",\n \"chatConfig.agentPanel.tools.desc\": \"选择该智能体可以直接调用的工具\",\n \"chatConfig.agentPanel.tools.search\": \"搜索工具……\",\n \"chatConfig.agentPanel.tools.selected\": \"已选 {{selected}} / {{total}}\",\n \"chatConfig.agentPanel.subAgents.title\": \"子智能体\",\n \"chatConfig.agentPanel.subAgents.desc\": \"选择该智能体可以委派的子智能体\",\n \"chatConfig.agentPanel.subAgents.search\": \"搜索子智能体……\",\n \"chatConfig.agentPanel.subAgents.selected\": \"已选 {{selected}} / {{total}}\",\n \"chatConfig.agentPanel.noTools\": \"暂无可用工具\",\n \"chatConfig.agentPanel.noCapabilities\": \"暂无可用能力\",\n \"chatConfig.agentPanel.noOtherAgents\": \"暂无其他智能体\",\n \"chatConfig.agentPanel.noMatching\": \"没有匹配结果\",\n \"chatConfig.agentPanel.selectAll\": \"全选\",\n \"chatConfig.agentPanel.clear\": \"清空\",\n \"chatConfig.agentPanel.approve\": \"审批\",\n \"chatConfig.agentPanel.noDescription\": \"暂无描述\",\n \"chatConfig.agentPanel.configWorkbench\": \"配置工作台\",\n \"chatConfig.agentPanel.deleteAgent\": \"删除智能体\",\n \"chatConfig.agentPanel.loadingConfig\": \"正在加载智能体配置……\",\n \"chatConfig.agentPanel.footer.saveHint\": \"修改会保存到该智能体\",\n \"chatConfig.agentPanel.footer.viewing\": \"正在查看智能体配置\",\n \"chatConfig.agentPanel.done\": \"完成\",\n \"chatConfig.agentPanel.delete.title\": \"删除智能体\",\n \"chatConfig.agentPanel.delete.confirmPrefix\": \"确定要删除\",\n \"chatConfig.agentPanel.delete.confirmSuffix\": \"吗?此操作无法撤销。\",\n \"chatConfig.agentPanel.deleteFailed\": \"删除助手失败\",\n \"chatConfig.createAssistant.title\": \"新建助手\",\n \"chatConfig.createAssistant.createExtend\": \"创建(扩展)\",\n \"chatConfig.createAssistant.startLearning\": \"开始学习\",\n \"chatConfig.createAssistant.parentAgent\": \"父智能体\",\n \"chatConfig.createAssistant.inheritHint\": \"未修改的字段将继承自父智能体。\",\n \"chatConfig.createAssistant.learnHint\": \"描述该智能体应该做什么。\",\n \"chatConfig.createAssistant.referenceFiles\": \"参考文件\",\n \"chatConfig.createAssistant.referenceFilesHint\": \"可选 —— 会上传到共享训练工作区并附加到本轮学习;架构师会将其作为本轮材料读取。\",\n \"chatConfig.createAssistant.field.key\": \"Key(ID)\",\n \"chatConfig.createAssistant.field.name\": \"名称\",\n \"chatConfig.createAssistant.field.description\": \"描述\",\n \"chatConfig.createAssistant.field.agentType\": \"智能体类型\",\n \"chatConfig.createAssistant.field.connectionMode\": \"连接方式\",\n \"chatConfig.createAssistant.mode.remoteUrl\": \"远程 URL\",\n \"chatConfig.createAssistant.mode.localManaged\": \"本地托管\",\n \"chatConfig.createAssistant.field.template\": \"模板\",\n \"chatConfig.createAssistant.templatePlaceholder\": \"选择一个模板……\",\n \"chatConfig.createAssistant.noTemplates\": \"暂无模板。请使用下方的「自定义命令」。\",\n \"chatConfig.createAssistant.customCommand\": \"+ 自定义命令\",\n \"chatConfig.createAssistant.hideCustomCommand\": \"- 隐藏自定义命令\",\n \"chatConfig.createAssistant.field.executable\": \"可执行文件\",\n \"chatConfig.createAssistant.field.arguments\": \"参数\",\n \"chatConfig.createAssistant.field.workingDirectory\": \"工作目录\",\n \"chatConfig.createAssistant.field.agentCardUrl\": \"Agent Card URL\",\n \"chatConfig.createAssistant.field.apiKeyOptional\": \"API Key(可选)\",\n \"chatConfig.createAssistant.apiKeyPlaceholder\": \"用于认证的 API key\",\n \"chatConfig.createAssistant.field.timeout\": \"超时时间(ms)\",\n \"chatConfig.createAssistant.field.systemPrompt\": \"系统提示词\",\n \"chatConfig.createAssistant.field.systemPromptInherit\": \"系统提示词(保持不变则继承自父智能体)\",\n \"chatConfig.createAssistant.systemPromptInheritPlaceholder\": \"留空则继承父智能体的提示词,或输入新提示词以覆盖……\",\n \"chatConfig.createAssistant.systemPromptPlaceholder\": \"输入该智能体的系统提示词……\",\n \"chatConfig.createAssistant.subAgents\": \"子智能体\",\n \"chatConfig.createAssistant.descriptionPlaceholder\": \"输入该助手的描述……\",\n \"chatConfig.createAssistant.typeDesc.react\": \"执行器:直接使用工具执行任务。适用于搜索、代码执行、数据检索等单步操作。\",\n \"chatConfig.createAssistant.typeDesc.deepAgent\": \"编排器:维护一份顺序待办清单来规划并把待办项分派给子智能体。适用于结构化的多步工作流。\",\n \"chatConfig.createAssistant.typeDesc.team\": \"团队:创建带依赖关系的任务并动态派生出队友。如同蜂群,队友之间通过信箱通信。适用于需要探索和发散思考的任务。\",\n \"chatConfig.createAssistant.typeDesc.processing\": \"工作流:按预定义顺序委派给子智能体,从而强制固定的工作流拓扑。适用于有校验委派路径的确定性多步流程。\",\n \"chatConfig.createAssistant.typeDesc.a2aRemote\": \"A2A 远程:委派给外部的 A2A 兼容智能体服务器。适用于本地 CLI 工具(Claude Code、Codex、OpenCode)或远程智能体。\",\n \"chatConfig.createAssistant.validation.keyRequired\": \"请输入唯一的 key\",\n \"chatConfig.createAssistant.validation.keyPattern\": \"Key 必须以字母开头,且只能包含字母、数字、下划线或连字符\",\n \"chatConfig.createAssistant.validation.nameRequired\": \"请输入名称\",\n \"chatConfig.createAssistant.validation.descriptionRequired\": \"请输入描述\",\n \"chatConfig.createAssistant.validation.systemPromptRequired\": \"请输入系统提示词\",\n \"chatConfig.createAssistant.validation.urlRequired\": \"请输入 A2A 服务器 URL\",\n \"chatConfig.createAssistant.validation.executableRequired\": \"可执行文件为必填项\",\n \"chatConfig.createAssistant.a2aUrlWarning\": \"请先输入 A2A 服务器 URL\",\n \"chatConfig.createAssistant.connectedTo\": \"已连接到「{{name}}」\",\n \"chatConfig.createAssistant.connectionFailed\": \"连接失败\",\n \"chatConfig.createAssistant.connectionTestFailed\": \"连接测试失败\",\n \"chatConfig.createAssistant.trainingGoalRequired\": \"请描述训练目标\",\n \"chatConfig.createAssistant.noTrainingProject\": \"暂无共享训练项目\",\n \"chatConfig.createAssistant.agentCreated\": \"智能体已创建 —— 架构师开始构建\",\n \"chatConfig.createAssistant.createdByExtending\": \"已通过扩展「{{name}}」创建助手\",\n \"chatConfig.createAssistant.created\": \"助手创建成功\",\n \"chatConfig.createAssistant.createFailed\": \"创建助手失败\",\n \"chatConfig.createAssistant.createError\": \"创建助手时发生错误\",\n \"chatConfig.createAssistant.requiredFields\": \"请填写必填字段:{{fields}}\",\n \"chatConfig.createAssistant.requiredFieldsGeneric\": \"请填写必填字段\",\n \"chatConfig.createAssistant.noParentAgent\": \"未选择父智能体\",\n \"chatConfig.createAssistant.agentCreateFailed\": \"创建智能体失败\",\n \"chatConfig.createAssistant.cloneFetchFailed\": \"获取用于克隆的子智能体「{{key}}」失败\",\n \"chatConfig.createAssistant.cloneFailed\": \"克隆子智能体「{{key}}」失败\",\n \"chatConfig.createAssistant.cloneKeyRequired\": \"请为克隆的子智能体「{{key}}」提供一个 key\",\n \"chatConfig.createAssistant.cloneKeyInvalid\": \"克隆的子智能体「{{originalKey}}」的 key「{{key}}」无效。Key 必须以字母开头,且只能包含字母、数字、下划线或连字符。\",\n \"chatConfig.parentAgent.selectPlaceholder\": \"选择要扩展的父智能体...\",\n \"chatConfig.settings.defaultConnectionName\": \"默认\",\n \"chatConfig.settings.serverNamePlaceholder\": \"例如:生产服务器\",\n \"chatConfig.settings.title\": \"设置\",\n \"chatConfig.settings.menu.environment\": \"环境变量\",\n \"chatConfig.settings.menu.models\": \"模型配置\",\n \"chatConfig.settings.menu.environment.desc\": \"管理网关服务器的环境变量\",\n \"chatConfig.settings.menu.models.desc\": \"配置网关级默认模型注册表\",\n \"chatConfig.settings.saveConfiguration\": \"保存配置\",\n \"chatConfig.settings.addServer\": \"添加服务器\",\n \"chatConfig.settings.addNewServer\": \"添加新服务器\",\n \"chatConfig.settings.serverName\": \"服务器名称\",\n \"chatConfig.settings.serverNameHint\": \"可选:留空则使用 URL 作为名称\",\n \"chatConfig.settings.serverUrl\": \"服务器 URL *\",\n \"chatConfig.settings.serverUrlHint\": \"输入网关服务器的完整 URL\",\n \"chatConfig.settings.apiKey\": \"API Key\",\n \"chatConfig.settings.apiKeyPlaceholder\": \"可选:输入用于认证的 API Key\",\n \"chatConfig.settings.apiKeyHint\": \"可选:用于服务器认证的 API Key\",\n \"chatConfig.settings.pleaseEnterServerUrl\": \"请输入服务器 URL\",\n \"chatConfig.settings.serverAdded\": \"服务器添加成功\",\n \"chatConfig.settings.serverDeleted\": \"服务器已删除\",\n \"chatConfig.settings.connectFirst\": \"请先连接一个服务器\",\n \"chatConfig.settings.loadConfigFailed\": \"加载当前配置失败\",\n \"chatConfig.settings.saveFailed\": \"保存配置失败\",\n \"chatConfig.settings.restartWarning\": \"配置已保存。请重启服务器使 {{services}} 生效。\",\n \"chatConfig.settings.savedApplied\": \"配置已保存并生效\",\n \"chatConfig.settings.modelSaved\": \"模型配置已保存并注册成功\",\n \"chatConfig.settings.modelSaveFailed\": \"保存模型配置失败\",\n \"chatConfig.settings.alert.title\": \"配置生效方式\",\n \"chatConfig.settings.alert.immediate\": \"立即生效:\",\n \"chatConfig.settings.alert.restart\": \"需要重启:\",\n \"chatConfig.settings.alert.restartDetail\": \"PORT(修改端口必须重启服务器)\",\n \"chatConfig.settings.envHint\": \"以 .env 格式(key=value)配置环境变量,每行一个变量。密码字段留空则保持当前值。\",\n \"chatConfig.settings.modelsHint\": \"配置模型注册表。每个模型将使用提供的 key 注册,可供智能体使用。\",\n \"chatConfig.settings.model\": \"模型 {{index}}\",\n \"chatConfig.settings.remove\": \"移除\",\n \"chatConfig.settings.field.key\": \"Key *\",\n \"chatConfig.settings.field.keyHint\": \"该模型的唯一标识符\",\n \"chatConfig.settings.field.provider\": \"提供商 *\",\n \"chatConfig.settings.field.modelName\": \"模型名称 *\",\n \"chatConfig.settings.field.apiKeyHintStored\": \"服务器上已存储一个 key,且不会回传。留空则保留,或输入新 key 替换它。\",\n \"chatConfig.settings.field.apiKeyHintNew\": \"模型提供商的 API Key。留空则使用环境变量。\",\n \"chatConfig.settings.apiKeyPlaceholderConfigured\": \"已配置 —— 留空则保持不变\",\n \"chatConfig.settings.apiKeyPlaceholderNew\": \"输入你的 API Key\",\n \"chatConfig.settings.field.baseUrl\": \"Base URL\",\n \"chatConfig.settings.field.baseUrlHint\": \"可选:API 的自定义 Base URL\",\n \"chatConfig.settings.field.streaming\": \"启用流式输出\",\n \"chatConfig.settings.field.maxTokens\": \"最大 Token 数\",\n \"chatConfig.settings.field.temperature\": \"温度\",\n \"chatConfig.settings.addModel\": \"+ 添加模型\",\n \"chatConfig.settings.connecting\": \"连接中……\",\n \"chatConfig.settings.connectingTo\": \"正在连接到 {{url}}\",\n \"chatConfig.settings.notConnected\": \"未连接\",\n \"chatConfig.settings.connectFailedDetail\": \"连接 {{url}} 失败。请检查服务器 URL 后重试。\",\n \"chatConfig.settings.clickReconnect\": \"点击「重新连接」以连接到 {{url}}\",\n \"chatConfig.settings.reconnect\": \"重新连接\",\n \"chatConfig.settings.error.serverError\": \"服务器返回错误\",\n \"chatConfig.settings.error.timeout\": \"连接超时\",\n \"chatConfig.settings.error.connectFailed\": \"连接服务器失败\",\n \"chatConfig.paChannel.title\": \"连接渠道\",\n \"chatConfig.paChannel.channels\": \"渠道\",\n \"chatConfig.paChannel.noChannels\": \"暂无渠道\",\n \"chatConfig.paChannel.connect\": \"连接\",\n \"chatConfig.paChannel.selectHint\": \"从左侧选择一个渠道,或添加新渠道\",\n \"chatConfig.paChannel.chooseType\": \"选择渠道类型\",\n \"chatConfig.paChannel.editChannel\": \"编辑渠道\",\n \"chatConfig.paChannel.newChannel\": \"新建{{channel}}\",\n \"chatConfig.paChannel.channel.lark\": \"飞书\",\n \"chatConfig.paChannel.channel.wechat\": \"微信\",\n \"chatConfig.paChannel.channel.wecom\": \"企业微信\",\n \"chatConfig.paChannel.wechatBot\": \"微信机器人\",\n \"chatConfig.paChannel.feishuBot\": \"飞书机器人\",\n \"chatConfig.paChannel.wecomBot\": \"企业微信机器人\",\n \"chatConfig.paChannel.field.botId\": \"机器人 Bot ID\",\n \"chatConfig.paChannel.field.secret\": \"长连接 Secret\",\n \"chatConfig.paChannel.placeholder.botId\": \"企业微信后台获取的 Bot ID\",\n \"chatConfig.paChannel.placeholder.secret\": \"企业微信后台获取的长连接 Secret\",\n \"chatConfig.paChannel.wecomConnectHint\": \"使用「智能机器人」的长连接(API)模式,无需公网回调地址;开启后由网关维护长连接。\",\n \"chatConfig.paChannel.validation.botIdRequired\": \"Bot ID 为必填项\",\n \"chatConfig.paChannel.validation.secretRequired\": \"Secret 为必填项\",\n \"chatConfig.paChannel.field.channelType\": \"渠道类型\",\n \"chatConfig.paChannel.field.displayName\": \"显示名称\",\n \"chatConfig.paChannel.field.appId\": \"App ID\",\n \"chatConfig.paChannel.field.appSecret\": \"App Secret\",\n \"chatConfig.paChannel.field.verificationToken\": \"Verification Token\",\n \"chatConfig.paChannel.field.encryptKey\": \"Encrypt Key\",\n \"chatConfig.paChannel.field.botToken\": \"Bot Token\",\n \"chatConfig.paChannel.field.uin\": \"UIN\",\n \"chatConfig.paChannel.enabled\": \"已启用\",\n \"chatConfig.paChannel.listenerActive\": \"监听服务运行中\",\n \"chatConfig.paChannel.listenerStopped\": \"监听服务已停止\",\n \"chatConfig.paChannel.anyoneCanMessage\": \"任何人都可以发消息\",\n \"chatConfig.paChannel.anyoneCanMessageHint\": \"启用后,任何能访问该渠道的人都可以与你的助手对话\",\n \"chatConfig.paChannel.whoCanChat\": \"谁可以对话\",\n \"chatConfig.paChannel.whoCanChatHint\": \"只有你在这里添加的人才能给你的助手发消息\",\n \"chatConfig.paChannel.noContacts\": \"尚未添加联系人\",\n \"chatConfig.paChannel.addContact\": \"添加联系人\",\n \"chatConfig.paChannel.add\": \"添加\",\n \"chatConfig.paChannel.required\": \"必填\",\n \"chatConfig.paChannel.placeholder.wechatOpenId\": \"微信 Open ID\",\n \"chatConfig.paChannel.placeholder.feishuOpenId\": \"飞书 Open ID\",\n \"chatConfig.paChannel.placeholder.wecomUserId\": \"企业微信 UserID\",\n \"chatConfig.paChannel.placeholder.displayName\": \"显示名称(可选)\",\n \"chatConfig.paChannel.placeholder.appSecret\": \"你的 app secret\",\n \"chatConfig.paChannel.placeholder.optional\": \"可选\",\n \"chatConfig.paChannel.placeholder.botToken\": \"扫码后自动填充\",\n \"chatConfig.paChannel.placeholder.uin\": \"扫码登录后自动填充\",\n \"chatConfig.paChannel.addBindingHint\": \"保存后回到这里添加你想对话的人。\",\n \"chatConfig.paChannel.removeChannel\": \"移除该渠道?\",\n \"chatConfig.paChannel.removeChannelDesc\": \"该接入的所有绑定也会一并丢失。\",\n \"chatConfig.paChannel.save\": \"保存\",\n \"chatConfig.paChannel.bindingAdded\": \"绑定已添加\",\n \"chatConfig.paChannel.bindingAddFailed\": \"添加绑定失败\",\n \"chatConfig.paChannel.bindingRemoved\": \"绑定已移除\",\n \"chatConfig.paChannel.bindingRemoveFailed\": \"移除绑定失败\",\n \"chatConfig.paChannel.bindingsLoadFailed\": \"加载绑定失败\",\n \"chatConfig.paChannel.installationsLoadFailed\": \"加载渠道接入失败\",\n \"chatConfig.paChannel.channelEnabled\": \"渠道已启用\",\n \"chatConfig.paChannel.channelDisabled\": \"渠道已禁用\",\n \"chatConfig.paChannel.toggleFailed\": \"切换渠道状态失败\",\n \"chatConfig.paChannel.installationUpdated\": \"接入已更新\",\n \"chatConfig.paChannel.installationUpdateFailed\": \"更新接入失败\",\n \"chatConfig.paChannel.installationCreated\": \"接入已创建\",\n \"chatConfig.paChannel.installationCreateFailed\": \"创建接入失败\",\n \"chatConfig.paChannel.installationSaveFailed\": \"保存接入失败\",\n \"chatConfig.paChannel.installationDeleted\": \"接入已删除\",\n \"chatConfig.paChannel.installationDeleteFailed\": \"删除接入失败\",\n \"chatConfig.paChannel.addUsersHint\": \"现在添加可以访问该渠道的用户\",\n \"chatConfig.paChannel.validation.appIdRequired\": \"App ID 为必填项\",\n \"chatConfig.paChannel.validation.appSecretRequired\": \"App Secret 为必填项\",\n \"chatConfig.paChannel.validation.botTokenRequired\": \"Bot Token 为必填项\",\n \"chatConfig.paChannel.qr.hint\": \"用微信扫描二维码以获取 Bot Token\",\n \"chatConfig.paChannel.qr.get\": \"获取二维码\",\n \"chatConfig.paChannel.qr.generating\": \"正在生成二维码……\",\n \"chatConfig.paChannel.qr.scan\": \"用微信扫码\",\n \"chatConfig.paChannel.qr.scanned\": \"已扫描!请在手机上确认……\",\n \"chatConfig.paChannel.qr.expiresIn\": \"{{time}} 后过期\",\n \"chatConfig.paChannel.qr.expired\": \"二维码已过期\",\n \"chatConfig.paChannel.qr.refreshStatus\": \"刷新状态\",\n \"chatConfig.paChannel.qr.loginConfirmed\": \"登录已确认!\",\n \"chatConfig.paChannel.qr.tokenFilled\": \"Bot Token 已自动填充\",\n \"chatConfig.paChannel.qr.expiredGetNew\": \"二维码已过期。请重新获取。\",\n \"chatConfig.paChannel.qr.retry\": \"重试\",\n \"chatConfig.paChannel.qr.loadFailed\": \"加载二维码失败\",\n \"chatConfig.paChannel.qr.getFailed\": \"获取二维码失败\",\n \"chatConfig.paChannel.qr.statusFailed\": \"查询二维码状态失败\"\n }\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@axiom-lattice/react-sdk",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.11.0",
|
|
4
4
|
"description": "React hooks for interacting with the Axiom Lattice Agent Service API",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -93,9 +93,9 @@
|
|
|
93
93
|
"react-i18next": "^17.0.15",
|
|
94
94
|
"use-sync-external-store": "^1.5.0",
|
|
95
95
|
"uuid": "^11.1.0",
|
|
96
|
-
"@axiom-lattice/
|
|
97
|
-
"@axiom-lattice/
|
|
98
|
-
"@axiom-lattice/
|
|
96
|
+
"@axiom-lattice/protocols": "4.9.0",
|
|
97
|
+
"@axiom-lattice/client-sdk": "4.8.1",
|
|
98
|
+
"@axiom-lattice/i18n": "0.1.0"
|
|
99
99
|
},
|
|
100
100
|
"peerDependencies": {
|
|
101
101
|
"react": ">=18.0.0",
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AgentGovernanceWorkbench
|
|
3
|
-
} from "./chunk-YCRJHIO7.mjs";
|
|
4
|
-
import "./chunk-MZIYYFYF.mjs";
|
|
5
|
-
import "./chunk-WEEKSFGI.mjs";
|
|
6
|
-
import "./chunk-2RTE6SQG.mjs";
|
|
7
|
-
import "./chunk-73ZKUUUV.mjs";
|
|
8
|
-
import "./chunk-7FWCKQNB.mjs";
|
|
9
|
-
import "./chunk-WZPXSVHJ.mjs";
|
|
10
|
-
import "./chunk-XC6TB6PI.mjs";
|
|
11
|
-
import "./chunk-XAGSG72Y.mjs";
|
|
12
|
-
import "./chunk-V7SUAKB5.mjs";
|
|
13
|
-
import "./chunk-Y2HJPMUR.mjs";
|
|
14
|
-
import "./chunk-HLVE2SB7.mjs";
|
|
15
|
-
import "./chunk-MD7WRYIP.mjs";
|
|
16
|
-
import "./chunk-32GKV6EM.mjs";
|
|
17
|
-
export {
|
|
18
|
-
AgentGovernanceWorkbench
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=AgentGovernanceWorkbench-HWXXIML7.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/i18n/instance.ts","../src/i18n/useT.ts","../src/i18n/useLocale.ts","../src/i18n/LatticeLocaleProvider.tsx"],"sourcesContent":["/**\n * The SDK's i18next instance.\n *\n * Auto-namespacing is the load-bearing idea here. Components write fully\n * qualified keys — `t(\"auth.login.title\")` — and the first segment (`auth`) is\n * also the namespace the dictionary is filed under. So `useT()` derives the\n * namespace from the key and hands it to i18next, which lets the ~2400\n * existing call sites stay exactly as they are while i18next still loads\n * dictionaries one namespace at a time.\n *\n * The alternative — merging all 18 namespaces into one — would also leave call\n * sites untouched, but it throws away the namespace boundary that i18next's\n * tooling (`i18next-cli extract/status/types`) is built around, and it makes\n * every chunk carry every module's copy.\n *\n * The instance is created with `createInstance()`, never the default export:\n * a shared package must not read or clobber its host's locale. For the same\n * reason `initReactI18next` is **not** used here — its `init()` writes the\n * instance into react-i18next's module-level singleton, which would swap the\n * host's instance out from under it. `<I18nextProvider>` is the supported way\n * to hand an instance down.\n */\n\nimport { createInstance } from \"i18next\";\nimport type { i18n as I18nInstance, ResourceKey } from \"i18next\";\nimport type { LatticeLocale } from \"@axiom-lattice/i18n\";\n\n/** Shipped locales, in the SDK's tag vocabulary. */\nexport const SUPPORTED_LOCALES: LatticeLocale[] = [\"en-US\", \"zh-CN\"];\n\n/** i18next speaks short tags; the SDK speaks BCP-47. */\nexport function toI18nextLocale(locale: LatticeLocale): string {\n return locale === \"zh-CN\" ? \"zh\" : \"en\";\n}\n\nexport function fromI18nextLocale(language: string): LatticeLocale {\n return language.startsWith(\"zh\") ? \"zh-CN\" : \"en-US\";\n}\n\n/**\n * Namespaces, one per dictionary module.\n *\n * Kept as an explicit list rather than discovered from the filesystem: it is\n * what lets the dynamic import below stay a *literal* pattern, which is what\n * Vite and Rollup require to emit a chunk per namespace.\n */\nexport const NAMESPACES = [\n /**\n * The shared verbs — confirm/cancel/save/delete/… — that used to live in\n * `@axiom-lattice/i18n`'s own dictionary. They keep the `common.` prefix and\n * become a namespace of their own so `namespaceOf` routes them somewhere they\n * actually exist; without this they fell through to the first namespace and\n * rendered as raw keys.\n */\n \"common\",\n \"a2a\", \"auth\", \"capability\", \"chat\", \"chatConfig\", \"chatMenu\", \"chatWorkspace\",\n \"cospace\", \"entities\", \"eval\", \"genui\", \"governance\", \"integration\", \"mcpapp\",\n \"migration\", \"projectRoom\", \"tasks\", \"training\",\n] as const;\n\n/**\n * Which namespace a key belongs to.\n *\n * `\"auth.login.title\"` → `\"auth\"`. A key with no dotted prefix falls back to\n * the first namespace, which keeps `i18next.t` from being handed `undefined`\n * and keeps unknown keys resolving (to themselves) instead of throwing.\n */\nexport function namespaceOf(key: string): string {\n const [head] = key.split(\".\");\n return (NAMESPACES as readonly string[]).includes(head) ? head : NAMESPACES[0];\n}\n\n/**\n * Loads the dictionary for one namespace in one language.\n *\n * A plain object satisfying i18next's backend contract — no\n * `i18next-resources-to-backend` dependency for eight lines of code. The\n * `import()` argument is a literal pattern with a literal extension, so the\n * bundler emits one chunk per namespace+language and loads them on demand.\n */\nconst namespaceBackend = {\n type: \"backend\" as const,\n read(\n language: string,\n namespace: string,\n callback: (error: unknown, resources: ResourceKey | null) => void\n ): void {\n void import(`./locales/${namespace}/${language}.json`)\n .then((mod) => {\n /**\n * Each file is `{ messages: { \"a.b.c\": \"…\" } }`, not the flat object\n * directly. The wrapper exists for the bundler: Vite's JSON plugin emits\n * a *named export* per top-level key, and our keys contain dots, so\n * `export { \"a2a.audit.action\": … }` is not valid JavaScript and the\n * build fails. One level of nesting makes the only top-level key a\n * legal identifier. Keys inside stay flat, so call sites are unaffected.\n */\n const body = (mod.default ?? mod) as { messages?: ResourceKey };\n callback(null, (body.messages ?? body) as ResourceKey);\n })\n .catch((error: unknown) => callback(error, null));\n },\n};\n\n/**\n * Exported for the jest setup, which registers this same loader on\n * react-i18next's default instance. Sharing it keeps the test environment from\n * drifting away from what the app does at runtime.\n */\nexport { namespaceBackend };\n\n/**\n * Build an instance for `locale`.\n *\n * `init()` is awaited so `changeLanguage` resolves only once the namespaces the\n * caller asked for are in hand — callers use that to avoid painting keys.\n */\nexport async function createSdkI18n(locale: LatticeLocale): Promise<I18nInstance> {\n const instance = createInstance();\n\n await instance.use(namespaceBackend).init({\n lng: toI18nextLocale(locale),\n fallbackLng: \"en\",\n ns: [...NAMESPACES],\n defaultNS: NAMESPACES[0],\n /**\n * Keys are stored flat and fully qualified (\"auth.login.title\"), so there\n * is no separator for i18next to split on — splitting would look for\n * `auth` → `login` → `title` as nested objects, which is not the shape.\n */\n keySeparator: false,\n nsSeparator: false,\n interpolation: { escapeValue: false },\n // The backend is the only source; an empty `resources` would make i18next\n // treat bundled resources as authoritative and never call it.\n returnNull: false,\n });\n\n return instance;\n}\n","import { useMemo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport type { TFunction as I18nextT } from \"i18next\";\nimport type { TParams, LatticeLocale } from \"@axiom-lattice/i18n\";\nimport type { TranslationKey } from \"./translationKeys\";\nimport { fromI18nextLocale, namespaceOf } from \"./instance\";\n\n/**\n * The translator the SDK hands out: same call shape as before, but the key is\n * now constrained to the keys that actually exist.\n *\n * That constraint is the whole point of M5 — it turns `t(\"auth.login.titel\")`\n * into a compile error instead of a raw key rendered to the user, which is the\n * gap the hand-rolled implementation left open (it checked the *dictionary* for\n * missing translations, never the *call site* for typos).\n */\nexport interface SdkTFunction {\n (key: TranslationKey, params?: TParams): string;\n /** Active locale. Use for `Intl.*` / `toLocaleDateString`. */\n locale: LatticeLocale;\n}\n\n/**\n * Wrap i18next's `t` in the shape the SDK's components already use.\n *\n * The public contract is unchanged — `(key, params?) => string`, plus a\n * `locale` property for the browser-native formatters — which is what keeps the\n * ~2400 call sites and every component's `import { useT } from \".../i18n\"`\n * untouched through the migration.\n *\n * The one thing this adds over i18next's own `t` is deriving the namespace from\n * the key's first segment, so `t(\"auth.login.title\")` keeps working as written\n * while i18next still loads only the `auth` namespace. See `./instance.ts`.\n */\nfunction wrap(i18nextT: I18nextT, language: string | undefined): SdkTFunction {\n const t = ((key: TranslationKey, params?: TParams): string =>\n // `ns` first so a caller's interpolation params cannot shadow it.\n i18nextT(key, { ns: namespaceOf(key), ...(params as Record<string, unknown>) })) as SdkTFunction;\n\n t.locale = fromI18nextLocale(language ?? \"en\");\n return t;\n}\n\n/**\n * Translate copy in the active locale.\n *\n * Safe with no provider above: react-i18next falls back to its default instance\n * and, failing that, renders the key rather than throwing. The SDK's test suite\n * relies on that — it renders components bare — and `src/__tests__/setup.ts`\n * initialises that default instance in English so assertions still see real copy\n * rather than keys.\n */\nexport function useT(): SdkTFunction {\n const { t, i18n } = useTranslation();\n const language = i18n?.language;\n return useMemo(() => wrap(t, language), [t, language]);\n}\n","import { createContext, useContext } from \"react\";\nimport type { LatticeLocale } from \"@axiom-lattice/i18n\";\nimport { SUPPORTED_LOCALES } from \"./instance\";\n\nexport interface LocaleBridgeValue {\n /** Active locale. */\n locale: LatticeLocale;\n /** Locales this build can render. */\n setLocale: (locale: LatticeLocale) => void;\n supportedLocales: LatticeLocale[];\n}\n\n/**\n * Bridges the locale *selection* to the component tree.\n *\n * i18next owns the translations and hands them down through `I18nextProvider`;\n * this context carries only the bits i18next has no opinion about — which\n * locales the build ships, and how a switch is initiated.\n *\n * It exists because `useLocale()` is part of the SDK's public surface (the\n * language switcher reads it) and its shape predates i18next. Keeping the shape\n * is what lets that component survive the migration untouched.\n *\n * The default is deliberately inert rather than throwing: rendered with no\n * provider, `useLocale()` reports `en-US` and a no-op setter, matching how\n * `useT()` degrades.\n */\nexport const LocaleBridgeContext = createContext<LocaleBridgeValue>({\n locale: \"en-US\",\n setLocale: () => undefined,\n supportedLocales: SUPPORTED_LOCALES,\n});\n\n/**\n * Read and switch the active locale.\n *\n * @example\n * const { locale, setLocale, supportedLocales } = useLocale();\n */\nexport function useLocale(): LocaleBridgeValue {\n return useContext(LocaleBridgeContext);\n}\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { createInstance } from \"i18next\";\nimport type { i18n as I18nInstance } from \"i18next\";\nimport { I18nextProvider } from \"react-i18next\";\nimport type { Dictionary, LatticeLocale } from \"@axiom-lattice/i18n\";\nimport { NAMESPACES, SUPPORTED_LOCALES, toI18nextLocale, namespaceBackend } from \"./instance\";\nimport { LocaleBridgeContext } from \"./useLocale\";\n\nexport interface LatticeLocaleProviderProps {\n /** Active locale. Defaults to `\"en-US\"` — the source language. */\n locale?: LatticeLocale;\n /**\n * Host-supplied copy layered **over** the shipped dictionary, per locale.\n *\n * Kept from the hand-rolled provider so hosts do not change: it is applied as\n * an i18next resource bundle for that namespace-free `translation` scope.\n */\n overrides?: Partial<Record<LatticeLocale, Dictionary>>;\n /** Forwarded to `onLocaleChange` hosts that persist the choice themselves. */\n storageKey?: string;\n /** Called when the user picks a locale, before the host re-renders. */\n onLocaleChange?: (locale: LatticeLocale) => void;\n children: React.ReactNode;\n}\n\n/**\n * Supplies the SDK's i18next instance to every `useT()` below it.\n *\n * The props are the ones the hand-rolled provider had, so hosts and\n * `AgentChatApp` keep working unchanged; only the implementation moved.\n *\n * The instance is private to this provider (`createInstance`, never the default\n * export) so the SDK neither reads nor replaces its host's locale. Namespaces\n * are fetched before `children` render, which is what stops the first paint\n * from showing raw keys.\n */\nexport function LatticeLocaleProvider({\n locale = \"en-US\",\n overrides,\n storageKey,\n onLocaleChange,\n children,\n}: LatticeLocaleProviderProps): React.ReactElement | null {\n const [ready, setReady] = useState(false);\n const instance = useMemo<I18nInstance>(() => createInstance(), []);\n\n useEffect(() => {\n let cancelled = false;\n setReady(false);\n\n void instance\n .use(namespaceBackend)\n .init({\n lng: toI18nextLocale(locale),\n fallbackLng: \"en\",\n ns: [...NAMESPACES],\n defaultNS: NAMESPACES[0],\n // Dictionaries are stored flat and fully qualified, so there is no\n // separator to split on. See ./instance.ts.\n keySeparator: false,\n nsSeparator: false,\n interpolation: { escapeValue: false },\n resources: overrides\n ? {\n [toI18nextLocale(locale)]: {\n [NAMESPACES[0]]: (overrides[locale] ?? {}) as Record<string, string>,\n },\n }\n : undefined,\n })\n .then(() => instance.loadNamespaces([...NAMESPACES]))\n .then(() => {\n if (!cancelled) setReady(true);\n })\n .catch(() => {\n // A namespace that fails to load must not blank the app; render with\n // whatever arrived and let missing keys fall back to their key text.\n if (!cancelled) setReady(true);\n });\n\n return () => {\n cancelled = true;\n };\n }, [instance, locale, overrides]);\n\n /**\n * Switching is delegated, not handled here.\n *\n * The provider cannot swap locale in place — the dictionaries for the new\n * locale have not been fetched — so the host decides what happens: it stores\n * the choice and reloads, and the reload re-enters this component with the\n * new `locale`. That mirrors the hand-rolled provider, whose `setLocale` also\n * only persisted and notified.\n */\n const bridge = useMemo(\n () => ({\n locale,\n supportedLocales: SUPPORTED_LOCALES,\n setLocale: (next: LatticeLocale) => {\n if (!SUPPORTED_LOCALES.includes(next)) return;\n if (storageKey && typeof window !== \"undefined\") {\n try {\n window.localStorage.setItem(storageKey, next);\n } catch {\n // Private mode / disabled storage: the switch still notifies the\n // host, it just will not survive a reload.\n }\n }\n onLocaleChange?.(next);\n },\n }),\n [locale, storageKey, onLocaleChange]\n );\n\n if (!ready) return null;\n\n return (\n <LocaleBridgeContext.Provider value={bridge}>\n <I18nextProvider i18n={instance}>{children}</I18nextProvider>\n </LocaleBridgeContext.Provider>\n );\n}\n"],"mappings":";;;;;AAuBA,SAAS,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKxB,IAAM,oBAAqC,CAAC,SAAS,OAAO;AAG5D,SAAS,gBAAgB,QAA+B;AAC7D,SAAO,WAAW,UAAU,OAAO;AACrC;AAEO,SAAS,kBAAkB,UAAiC;AACjE,SAAO,SAAS,WAAW,IAAI,IAAI,UAAU;AAC/C;AASO,IAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQxB;AAAA,EACA;AAAA,EAAO;AAAA,EAAQ;AAAA,EAAc;AAAA,EAAQ;AAAA,EAAc;AAAA,EAAY;AAAA,EAC/D;AAAA,EAAW;AAAA,EAAY;AAAA,EAAQ;AAAA,EAAS;AAAA,EAAc;AAAA,EAAe;AAAA,EACrE;AAAA,EAAa;AAAA,EAAe;AAAA,EAAS;AACvC;AASO,SAAS,YAAY,KAAqB;AAC/C,QAAM,CAAC,IAAI,IAAI,IAAI,MAAM,GAAG;AAC5B,SAAQ,WAAiC,SAAS,IAAI,IAAI,OAAO,WAAW,CAAC;AAC/E;AAUA,IAAM,mBAAmB;AAAA,EACvB,MAAM;AAAA,EACN,KACE,UACA,WACA,UACM;AACN,SAAY,qCAAa,SAAS,IAAI,QAAQ,SAC3C,KAAK,CAAC,QAAQ;AASb,YAAM,OAAQ,IAAI,WAAW;AAC7B,eAAS,MAAO,KAAK,YAAY,IAAoB;AAAA,IACvD,CAAC,EACA,MAAM,CAAC,UAAmB,SAAS,OAAO,IAAI,CAAC;AAAA,EACpD;AACF;;;ACtGA,SAAS,eAAe;AACxB,SAAS,sBAAsB;AAiC/B,SAAS,KAAK,UAAoB,UAA4C;AAC5E,QAAM,KAAK,CAAC,KAAqB;AAAA;AAAA,IAE/B,SAAS,KAAK,EAAE,IAAI,YAAY,GAAG,GAAG,GAAI,OAAmC,CAAC;AAAA;AAEhF,IAAE,SAAS,kBAAkB,YAAY,IAAI;AAC7C,SAAO;AACT;AAWO,SAAS,OAAqB;AACnC,QAAM,EAAE,GAAG,KAAK,IAAI,eAAe;AACnC,QAAM,WAAW,MAAM;AACvB,SAAO,QAAQ,MAAM,KAAK,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC;AACvD;;;ACxDA,SAAS,eAAe,kBAAkB;AA2BnC,IAAM,sBAAsB,cAAiC;AAAA,EAClE,QAAQ;AAAA,EACR,WAAW,MAAM;AAAA,EACjB,kBAAkB;AACpB,CAAC;AAQM,SAAS,YAA+B;AAC7C,SAAO,WAAW,mBAAmB;AACvC;;;ACzCA,SAAgB,WAAW,WAAAA,UAAS,gBAAgB;AACpD,SAAS,kBAAAC,uBAAsB;AAE/B,SAAS,uBAAuB;AAmH1B;AAlFC,SAAS,sBAAsB;AAAA,EACpC,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA0D;AACxD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,KAAK;AACxC,QAAM,WAAWC,SAAsB,MAAMC,gBAAe,GAAG,CAAC,CAAC;AAEjE,YAAU,MAAM;AACd,QAAI,YAAY;AAChB,aAAS,KAAK;AAEd,SAAK,SACF,IAAI,gBAAgB,EACpB,KAAK;AAAA,MACJ,KAAK,gBAAgB,MAAM;AAAA,MAC3B,aAAa;AAAA,MACb,IAAI,CAAC,GAAG,UAAU;AAAA,MAClB,WAAW,WAAW,CAAC;AAAA;AAAA;AAAA,MAGvB,cAAc;AAAA,MACd,aAAa;AAAA,MACb,eAAe,EAAE,aAAa,MAAM;AAAA,MACpC,WAAW,YACP;AAAA,QACE,CAAC,gBAAgB,MAAM,CAAC,GAAG;AAAA,UACzB,CAAC,WAAW,CAAC,CAAC,GAAI,UAAU,MAAM,KAAK,CAAC;AAAA,QAC1C;AAAA,MACF,IACA;AAAA,IACN,CAAC,EACA,KAAK,MAAM,SAAS,eAAe,CAAC,GAAG,UAAU,CAAC,CAAC,EACnD,KAAK,MAAM;AACV,UAAI,CAAC,UAAW,UAAS,IAAI;AAAA,IAC/B,CAAC,EACA,MAAM,MAAM;AAGX,UAAI,CAAC,UAAW,UAAS,IAAI;AAAA,IAC/B,CAAC;AAEH,WAAO,MAAM;AACX,kBAAY;AAAA,IACd;AAAA,EACF,GAAG,CAAC,UAAU,QAAQ,SAAS,CAAC;AAWhC,QAAM,SAASD;AAAA,IACb,OAAO;AAAA,MACL;AAAA,MACA,kBAAkB;AAAA,MAClB,WAAW,CAAC,SAAwB;AAClC,YAAI,CAAC,kBAAkB,SAAS,IAAI,EAAG;AACvC,YAAI,cAAc,OAAO,WAAW,aAAa;AAC/C,cAAI;AACF,mBAAO,aAAa,QAAQ,YAAY,IAAI;AAAA,UAC9C,QAAQ;AAAA,UAGR;AAAA,QACF;AACA,yBAAiB,IAAI;AAAA,MACvB;AAAA,IACF;AAAA,IACA,CAAC,QAAQ,YAAY,cAAc;AAAA,EACrC;AAEA,MAAI,CAAC,MAAO,QAAO;AAEnB,SACE,oBAAC,oBAAoB,UAApB,EAA6B,OAAO,QACnC,8BAAC,mBAAgB,MAAM,UAAW,UAAS,GAC7C;AAEJ;","names":["useMemo","createInstance","useMemo","createInstance"]}
|