nolo-cli 0.1.8 → 0.1.10

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.
Files changed (239) hide show
  1. package/README.md +32 -0
  2. package/agentRuntimeCommands.ts +3 -3
  3. package/ai/agent/_executeModel.ts +118 -0
  4. package/ai/agent/agentSlice.ts +525 -0
  5. package/ai/agent/appWorkingMemory.ts +126 -0
  6. package/ai/agent/avatarUtils.ts +24 -0
  7. package/ai/agent/buildEditingContext.ts +373 -0
  8. package/ai/agent/buildSystemPrompt.ts +532 -0
  9. package/ai/agent/cleanAgentMessages.ts +140 -0
  10. package/ai/agent/cliChatClient.ts +119 -0
  11. package/ai/agent/cliExecutor.ts +733 -0
  12. package/ai/agent/cliPrompt.ts +10 -0
  13. package/ai/agent/contextCompiler.ts +107 -0
  14. package/ai/agent/contextLayerContract.ts +44 -0
  15. package/ai/agent/createAgentSchema.ts +234 -0
  16. package/ai/agent/executeToolCall.ts +58 -0
  17. package/ai/agent/fetchAgentContexts.ts +42 -0
  18. package/ai/agent/generatePrompt.ts +3 -0
  19. package/ai/agent/getFullChatContextKeys.ts +168 -0
  20. package/ai/agent/hooks/fetchPublicAgents.ts +133 -0
  21. package/ai/agent/hooks/useAgentConfig.ts +61 -0
  22. package/ai/agent/hooks/useAgentDialog.ts +35 -0
  23. package/ai/agent/hooks/useAgentFormValidation.ts +202 -0
  24. package/ai/agent/hooks/usePublicAgents.ts +473 -0
  25. package/ai/agent/machineRunPermissions.ts +95 -0
  26. package/ai/agent/persistMessageWithFixedId.ts +37 -0
  27. package/ai/agent/planSlice.ts +259 -0
  28. package/ai/agent/referenceUtils.ts +229 -0
  29. package/ai/agent/runAgentBackground.ts +238 -0
  30. package/ai/agent/runAgentClientLoop.ts +138 -0
  31. package/ai/agent/runtimeGuidance.ts +97 -0
  32. package/ai/agent/runtimeServerBase.ts +37 -0
  33. package/ai/agent/server/fetchPublicAgents.ts +128 -0
  34. package/ai/agent/startParallelAgentStreams.ts +424 -0
  35. package/ai/agent/startupProtocol.ts +53 -0
  36. package/ai/agent/streamAgentChatTurn.ts +1278 -0
  37. package/ai/agent/streamAgentChatTurnUtils.ts +738 -0
  38. package/ai/agent/types.ts +71 -0
  39. package/ai/agent/utils/imageOutput.ts +33 -0
  40. package/ai/agent/utils/sortUtils.ts +250 -0
  41. package/ai/agent/web/referencePickerUtils.ts +146 -0
  42. package/ai/ai.locale.ts +1079 -0
  43. package/ai/chat/accumulateToolCallChunks.ts +95 -0
  44. package/ai/chat/fetchUtils.native.ts +276 -0
  45. package/ai/chat/fetchUtils.ts +153 -0
  46. package/ai/chat/parseApiError.ts +64 -0
  47. package/ai/chat/parseMultilineSSE.ts +95 -0
  48. package/ai/chat/sendOpenAICompletionsRequest.native.ts +682 -0
  49. package/ai/chat/sendOpenAICompletionsRequest.ts +703 -0
  50. package/ai/chat/sendOpenAIResponseRequest.ts +491 -0
  51. package/ai/chat/shouldUseServerProxy.ts +18 -0
  52. package/ai/chat/sseClient.native.ts +91 -0
  53. package/ai/chat/sseClient.ts +67 -0
  54. package/ai/chat/streamReader.native.ts +31 -0
  55. package/ai/chat/streamReader.ts +62 -0
  56. package/ai/chat/updateTotalUsage.ts +72 -0
  57. package/ai/context/buildReferenceContext.ts +437 -0
  58. package/ai/context/calculateContextUsage.ts +133 -0
  59. package/ai/context/retention.ts +165 -0
  60. package/ai/context/tokenUtils.ts +78 -0
  61. package/ai/index.ts +1 -0
  62. package/ai/llm/calculateGeminiImageTokens.ts +57 -0
  63. package/ai/llm/deepinfra.ts +28 -0
  64. package/ai/llm/fireworks.ts +50 -0
  65. package/ai/llm/generateRequestBody.ts +165 -0
  66. package/ai/llm/getModelContextWindow.ts +84 -0
  67. package/ai/llm/getNoloKey.ts +31 -0
  68. package/ai/llm/getPricing.ts +199 -0
  69. package/ai/llm/hooks/useModelPricing.ts +75 -0
  70. package/ai/llm/imagePricing.ts +40 -0
  71. package/ai/llm/isResponseAPIModel.ts +13 -0
  72. package/ai/llm/mimo.ts +71 -0
  73. package/ai/llm/mistral.ts +22 -0
  74. package/ai/llm/modelAvatar.ts +427 -0
  75. package/ai/llm/models.ts +45 -0
  76. package/ai/llm/openrouterModels.ts +269 -0
  77. package/ai/llm/providers.ts +306 -0
  78. package/ai/llm/reasoningModels.ts +28 -0
  79. package/ai/llm/types.ts +59 -0
  80. package/ai/llm/usageRequestOptions.ts +59 -0
  81. package/ai/memory/capture.ts +148 -0
  82. package/ai/memory/consolidate.ts +104 -0
  83. package/ai/memory/delete.ts +147 -0
  84. package/ai/memory/overlay.ts +84 -0
  85. package/ai/memory/query.ts +38 -0
  86. package/ai/memory/queryShared.ts +160 -0
  87. package/ai/memory/rank.ts +105 -0
  88. package/ai/memory/recentRelationshipRecap.ts +249 -0
  89. package/ai/memory/remember.ts +167 -0
  90. package/ai/memory/runtime.ts +76 -0
  91. package/ai/memory/store.ts +20 -0
  92. package/ai/memory/storeShared.ts +76 -0
  93. package/ai/memory/types.ts +46 -0
  94. package/ai/memory/understanding.ts +349 -0
  95. package/ai/memory/understandingGreeting.ts +264 -0
  96. package/ai/messages/type.ts +20 -0
  97. package/ai/policy/personalizationDialog.ts +333 -0
  98. package/ai/policy/runtimePolicy.ts +440 -0
  99. package/ai/policy/selfUpdateFields.ts +48 -0
  100. package/ai/policy/types.ts +64 -0
  101. package/ai/skills/referenceRuntime.ts +274 -0
  102. package/ai/skills/skillDiagnostics.ts +251 -0
  103. package/ai/skills/skillDocBuilder.ts +139 -0
  104. package/ai/skills/skillDocProtocol.ts +434 -0
  105. package/ai/skills/skillReferenceSummary.ts +63 -0
  106. package/ai/skills/skillSummaryMarker.ts +26 -0
  107. package/ai/token/calculatePrice.ts +544 -0
  108. package/ai/token/db.ts +98 -0
  109. package/ai/token/externalToolCost.ts +330 -0
  110. package/ai/token/hooks/useRecords.ts +65 -0
  111. package/ai/token/missingUsageEstimate.ts +42 -0
  112. package/ai/token/modelUsageQuery.ts +252 -0
  113. package/ai/token/normalizeUsage.ts +84 -0
  114. package/ai/token/openaiImageGenerationUsage.ts +56 -0
  115. package/ai/token/prepareTokenUsageData.ts +88 -0
  116. package/ai/token/query.ts +88 -0
  117. package/ai/token/queryUserTokens.ts +59 -0
  118. package/ai/token/resolveBillingTarget.ts +52 -0
  119. package/ai/token/saveTokenRecord.ts +53 -0
  120. package/ai/token/serverDialogProjection.ts +78 -0
  121. package/ai/token/serverTokenWriter.ts +143 -0
  122. package/ai/token/stats.ts +21 -0
  123. package/ai/token/tokenThunks.ts +24 -0
  124. package/ai/token/types.ts +93 -0
  125. package/ai/tools/agent/agentTools.ts +176 -0
  126. package/ai/tools/agent/agentUpdateShared.ts +311 -0
  127. package/ai/tools/agent/callAgentTool.ts +139 -0
  128. package/ai/tools/agent/createAgentTool.ts +512 -0
  129. package/ai/tools/agent/createDialogTool.ts +69 -0
  130. package/ai/tools/agent/createSkillAgentTool.ts +62 -0
  131. package/ai/tools/agent/parallelBudget.ts +221 -0
  132. package/ai/tools/agent/presets/appBuilderPreset.ts +145 -0
  133. package/ai/tools/agent/runLlmTool.ts +96 -0
  134. package/ai/tools/agent/runStreamingAgentTool.ts +73 -0
  135. package/ai/tools/agent/skillAgentArgs.ts +106 -0
  136. package/ai/tools/agent/skillAgentPreset.ts +89 -0
  137. package/ai/tools/agent/streamParallelAgentsTool.ts +122 -0
  138. package/ai/tools/agent/updateAgentTool.ts +96 -0
  139. package/ai/tools/agent/updateSelfTool.ts +113 -0
  140. package/ai/tools/amazonProductScraperTool.ts +86 -0
  141. package/ai/tools/apifyActorClient.ts +45 -0
  142. package/ai/tools/appEditGuard.ts +372 -0
  143. package/ai/tools/appReadSnapshot.ts +153 -0
  144. package/ai/tools/appTools.ts +1549 -0
  145. package/ai/tools/applyEditTool.ts +256 -0
  146. package/ai/tools/applyLineEditsTool.ts +312 -0
  147. package/ai/tools/browserTools/click.ts +33 -0
  148. package/ai/tools/browserTools/closeSession.ts +29 -0
  149. package/ai/tools/browserTools/common.ts +27 -0
  150. package/ai/tools/browserTools/openSession.ts +48 -0
  151. package/ai/tools/browserTools/readContent.ts +38 -0
  152. package/ai/tools/browserTools/selectOption.ts +46 -0
  153. package/ai/tools/browserTools/typeText.ts +42 -0
  154. package/ai/tools/category/createCategoryTool.ts +66 -0
  155. package/ai/tools/category/queryContentsByCategoryTool.ts +69 -0
  156. package/ai/tools/category/updateContentCategoryTool.ts +75 -0
  157. package/ai/tools/cfBrowserTools.ts +319 -0
  158. package/ai/tools/cfSpeechToTextTool.ts +49 -0
  159. package/ai/tools/checkEnvTool.ts +65 -0
  160. package/ai/tools/cloudflareCrawlTool.ts +289 -0
  161. package/ai/tools/codeSearchTool.ts +111 -0
  162. package/ai/tools/codeTools.ts +101 -0
  163. package/ai/tools/createDocTool.ts +132 -0
  164. package/ai/tools/createPlanTool.ts +999 -0
  165. package/ai/tools/createSkillDocTool.ts +155 -0
  166. package/ai/tools/createWorkflowTool.ts +154 -0
  167. package/ai/tools/deepseekOcrTool.ts +34 -0
  168. package/ai/tools/delayTool.ts +31 -0
  169. package/ai/tools/deleteSpacesTool.ts +325 -0
  170. package/ai/tools/deleteSpacesToolModel.ts +159 -0
  171. package/ai/tools/devReloadUtils.ts +29 -0
  172. package/ai/tools/dialogMessageSearch.ts +137 -0
  173. package/ai/tools/doctorSkillTool.ts +72 -0
  174. package/ai/tools/ecommerceScraperTool.ts +86 -0
  175. package/ai/tools/emailTools.ts +549 -0
  176. package/ai/tools/evalSkillTool.ts +92 -0
  177. package/ai/tools/exaSearchTool.ts +64 -0
  178. package/ai/tools/execBashTool.ts +379 -0
  179. package/ai/tools/executeSqlTool.ts +192 -0
  180. package/ai/tools/fetchWebpageSupport.ts +309 -0
  181. package/ai/tools/fetchWebpageTool.ts +84 -0
  182. package/ai/tools/geminiImagePreviewTool.ts +361 -0
  183. package/ai/tools/generateDocxTool.ts +215 -0
  184. package/ai/tools/googleSearchScraperTool.ts +106 -0
  185. package/ai/tools/importDataTool.ts +133 -0
  186. package/ai/tools/importSkillTool.ts +162 -0
  187. package/ai/tools/index.ts +1858 -0
  188. package/ai/tools/listFilesTool.ts +82 -0
  189. package/ai/tools/listUserSpacesTool.ts +113 -0
  190. package/ai/tools/modelUsageTools.ts +142 -0
  191. package/ai/tools/olmOcrTool.ts +34 -0
  192. package/ai/tools/openaiImageTool.ts +218 -0
  193. package/ai/tools/paddleOcrTool.ts +34 -0
  194. package/ai/tools/prepareTools.ts +23 -0
  195. package/ai/tools/readDocTool.ts +84 -0
  196. package/ai/tools/readFileTool.ts +211 -0
  197. package/ai/tools/readTool.ts +163 -0
  198. package/ai/tools/readXPostTool.ts +233 -0
  199. package/ai/tools/rememberMemoryTool.ts +84 -0
  200. package/ai/tools/remotionVideoTool.ts +151 -0
  201. package/ai/tools/searchDialogMessagesTool.ts +222 -0
  202. package/ai/tools/searchRepoTool.ts +115 -0
  203. package/ai/tools/searchWorkspaceTool.ts +259 -0
  204. package/ai/tools/skillFollowup.ts +86 -0
  205. package/ai/tools/surfWeatherTool.ts +169 -0
  206. package/ai/tools/table/addTableRowTool.ts +217 -0
  207. package/ai/tools/table/createTableTool.ts +315 -0
  208. package/ai/tools/table/rowTools.ts +366 -0
  209. package/ai/tools/table/schemaTools.ts +244 -0
  210. package/ai/tools/table/shareTableTool.ts +148 -0
  211. package/ai/tools/table/toolShared.ts +129 -0
  212. package/ai/tools/toolApiClient.ts +198 -0
  213. package/ai/tools/toolNameAliases.ts +57 -0
  214. package/ai/tools/toolResultError.ts +42 -0
  215. package/ai/tools/toolRunSlice.ts +303 -0
  216. package/ai/tools/toolSchemaCompatibility.ts +53 -0
  217. package/ai/tools/toolVisibility.ts +4 -0
  218. package/ai/tools/types.ts +20 -0
  219. package/ai/tools/uiAskChoiceTool.ts +104 -0
  220. package/ai/tools/updateContentTitleTool.ts +84 -0
  221. package/ai/tools/updateDocTool.ts +105 -0
  222. package/ai/tools/updateUserPreferenceProfileTool.ts +145 -0
  223. package/ai/tools/whisperTool.ts +77 -0
  224. package/ai/tools/writeFileTool.ts +210 -0
  225. package/ai/tools/youtubeScraperTool.ts +116 -0
  226. package/ai/tools/ziweiChartTool.ts +678 -0
  227. package/ai/types.ts +55 -0
  228. package/ai/workflow/workflowExecutor.ts +323 -0
  229. package/ai/workflow/workflowSlice.ts +73 -0
  230. package/ai/workflow/workflowTypes.ts +106 -0
  231. package/client/compactDialog.ts +222 -0
  232. package/connector-experimental/capabilities.ts +73 -0
  233. package/connector-experimental/codexBinary.ts +41 -0
  234. package/connector-experimental/heartbeatLoop.ts +22 -0
  235. package/connector-experimental/index.ts +5 -0
  236. package/connector-experimental/machineInfo.ts +46 -0
  237. package/connector-experimental/protocol.ts +54 -0
  238. package/machineCommands.ts +4 -4
  239. package/package.json +22 -6
@@ -0,0 +1,1079 @@
1
+ export default {
2
+ en: {
3
+ translation: {
4
+ // General Actions & Status
5
+ cancel: "Cancel",
6
+ update: "Update",
7
+ updating: "Updating...",
8
+ create: "Create",
9
+ creating: "Creating...",
10
+ edit: "Edit",
11
+ delete: "Delete",
12
+ confirmDelete: "Confirm Delete",
13
+ resetToDefaults: "Reset to Defaults",
14
+ loading: "Loading...",
15
+ startChat: "Start Chat",
16
+ starting: "Starting...",
17
+ viewDetails: "View Details",
18
+ deleteSuccess: "Deleted successfully!",
19
+
20
+ // Component Specific
21
+ agent: "Agent",
22
+ unnamed: "Unnamed",
23
+ noDescription: "No description",
24
+ noIntroduction: "No introduction available.",
25
+ notSpecified: "Not specified",
26
+ vision: "Vision",
27
+ textOnly: "Text-only",
28
+ details: "Details",
29
+ price: "Price",
30
+ referencePricePerTurn: "Per-turn reference price",
31
+ perMillionTokens: "per 1M tokens",
32
+ perTurn: "turn (est.)",
33
+ perImage: "image",
34
+ supported: "Supported",
35
+ notSupported: "Not Supported",
36
+ createdAt: "Created at",
37
+
38
+ // Errors
39
+ loadError: "Failed to load details",
40
+ createDialogError: "Failed to create dialog",
41
+ deleteError: "Failed to delete. Please try again.",
42
+
43
+ // Main AI Form
44
+ createAgent: {
45
+ title: "Create a New AI",
46
+ untitled: "Untitled AI",
47
+ chat: "Start Chat",
48
+ public: "Public",
49
+ },
50
+ editAgent: "Edit AI",
51
+
52
+ tabs: {
53
+ basicInfo: "Basic Info",
54
+ references: "References",
55
+ toolSelection: "Skills & Tools",
56
+ publishSettings: "Publish Settings",
57
+ advancedSettings: "Model Settings",
58
+ },
59
+
60
+ // Form Fields & Placeholders
61
+ form: {
62
+ name: "AI Name",
63
+ namePlaceholder: "Enter AI name",
64
+ provider: "Provider",
65
+ selectProvider: "Select provider",
66
+ model: "Model",
67
+ selectModel: "Select a model",
68
+ customProviderUrl: "Provider URL",
69
+ customProviderUrlPlaceholder: "e.g. https://api.example.com/v1/chat/completions",
70
+ apiKey: "API Key",
71
+ apiKeyPlaceholder: "Enter API key",
72
+ prompt: "Prompt",
73
+ promptPlaceholder: "Define AI's behavior and personality",
74
+ greeting: "Greeting Message",
75
+ introduction: "Self Introduction",
76
+ introductionPlaceholder: "Enter self introduction",
77
+ tags: "Tags",
78
+ tagsPlaceholder: "Add tags and press Enter",
79
+ useServerProxy: "Proxy Mode",
80
+ enableThinking: "Thinking Mode",
81
+ thinkingBudget: "Thinking Budget",
82
+ isPublic: "Make Public",
83
+ inputPrice: "Input Price",
84
+ inputPricePlaceholder: "Cost per 1M input tokens",
85
+ outputPrice: "Output Price",
86
+ outputPricePlaceholder: "Cost per 1M output tokens",
87
+ apiSource: "API Source",
88
+ usePlatformApi: "Platform API",
89
+ useCustomApi: "Custom API",
90
+ tools: "Tools",
91
+ selectTools: "Select Tools",
92
+ modelParameters: "Model Parameters",
93
+ temperature: "Temperature",
94
+ topP: "Top P",
95
+ frequencyPenalty: "Frequency Penalty",
96
+ presencePenalty: "Presence Penalty",
97
+ maxTokens: "Max Tokens",
98
+ reasoningEffort: "Reasoning Effort",
99
+ defaults: {
100
+ greeting:
101
+ "I am an intelligent assistant customized for you by nolo.chat. How can I help you today?",
102
+ },
103
+ customModelName: "Custom Model Name",
104
+ customModelNamePlaceholder: "Enter custom model name",
105
+ },
106
+
107
+ // Help Texts
108
+ help: {
109
+ tags: "Add tags to categorize this AI",
110
+ proxy: "Turn off for direct connection without our servers",
111
+ enableThinking: "Enable model reasoning/thinking output (Ollama/Qwen3/DeepSeek/Anthropic)",
112
+ thinkingBudget: "Max tokens for thinking (Anthropic only, 1024–32000)",
113
+ isPublic: "Show in community list for others to use",
114
+ isPublicCustomApi: "AIs with custom API keys cannot be made public",
115
+ apiSourcePlatform: "Use platform's built-in API key",
116
+ apiSourceCustom: "Use your own API key and settings",
117
+ promptAutomation:
118
+ "Future automation may reference this prompt to draft the name and greeting, but it is not a strict binding.",
119
+ tools: "Choose tools that this AI can use",
120
+ temperature:
121
+ "Controls randomness, from 0 to 2. Higher is more random, lower is more focused.",
122
+ topP: "Controls diversity, from 0 to 1. Higher includes more diverse outputs.",
123
+ frequencyPenalty:
124
+ "Reduces word repetition, from -2 to 2. Higher discourages repetition.",
125
+ presencePenalty:
126
+ "Reduces topic repetition, from -2 to 2. Higher encourages new topics.",
127
+ maxTokens: "Limits response length, minimum 1.",
128
+ },
129
+
130
+ // Validation Messages
131
+ validation: {
132
+ nameRequired: "Name is required",
133
+ nameTooLong: "Name must not exceed 50 characters",
134
+ providerRequired: "Provider is required",
135
+ modelRequired: "Model is required",
136
+ invalidUrl: "Must be a valid URL when provided",
137
+ priceMin: "Price must be at least 0",
138
+ duplicateReferences: "Duplicate references are not allowed",
139
+ temperatureRange: "Temperature must be between 0 and 2",
140
+ topPRange: "Top P must be between 0 and 1",
141
+ frequencyPenaltyRange: "Frequency Penalty must be between -2 and 2",
142
+ presencePenaltyRange: "Presence Penalty must be between -2 and 2",
143
+ maxTokensMin: "Max Tokens must be at least 1",
144
+ maxTokensMax: "Max Tokens must be at most 500,000",
145
+ reasoningEffortInvalid: "Reasoning effort must be low, medium, or high",
146
+ thinkingBudgetMin: "Thinking budget must be at least 1024 tokens",
147
+ thinkingBudgetMax: "Thinking budget must be at most 100,000 tokens",
148
+ apiKeyRequired:
149
+ "API Key is required when not using Server Proxy, Ollama or Custom provider",
150
+ customUrlRequired:
151
+ "Custom Provider URL is required for the 'custom' provider",
152
+ },
153
+
154
+ // Legacy Errors (kept for compatibility)
155
+ errors: {
156
+ noUserId: "No user ID available. Please log in again.",
157
+ createDialog: "Failed to create dialog",
158
+ delete: "Failed to delete. Please try again.",
159
+ },
160
+
161
+ // References Tab Specific
162
+ references: {
163
+ title: "References",
164
+ selectTitle: "Select References",
165
+ selectHelp: "Select pages to use as knowledge or instructions.",
166
+ searchCurrentSpace: "Search in current space...",
167
+ searchAllSpaces: "Searching in all spaces...",
168
+ clearSearch: "Clear search",
169
+ noResults: "No search results found.",
170
+ noContent: "No content available in this space.",
171
+ found_one: "Found {{count}} result",
172
+ found_other: "Found {{count}} results",
173
+ fromSpace: "From: {{spaceName}}",
174
+ toInstruction: "Switch to Instruction",
175
+ toKnowledge: "Switch to Knowledge",
176
+ selected_one: "{{count}} reference selected",
177
+ selected_other: "{{count}} references selected",
178
+ knowledge: "Knowledge",
179
+ instruction: "Instruction",
180
+ enabledContext: "Enabled Context",
181
+ linkedSpaces: "Linked Spaces",
182
+ linkedSpacesHelp: "The Agent can access these spaces as rough context. Use this for cross-space exploration, not precise instructions.",
183
+ noLinkedSpaces: "No linked spaces yet. The Agent can only access the current conversation's space.",
184
+ allSpaces: "All Spaces",
185
+ selectSpace: "Select a space",
186
+ selectSpacePlaceholder: "Select a space to link...",
187
+ add: "Add",
188
+ addSkill: "Add Skill",
189
+ addKnowledge: "Add Knowledge",
190
+ addInstruction: "Add Instruction",
191
+ remove: "Remove",
192
+ skills: "Skills",
193
+ skillsHelp: "Runtime skills come from attached skill docs/pages and can expand tools and guidance.",
194
+ knowledgeHelp: "Stable background material that the Agent can read as context.",
195
+ instructionHelp: "Persistent operating rules or process guidance with higher priority.",
196
+ exploreCommunitySkills: "Explore Community",
197
+ noSkillsYet: "No skill docs attached yet.",
198
+ noKnowledgeYet: "No knowledge attached yet.",
199
+ noInstructionsYet: "No instructions attached yet.",
200
+ globalRecommendedSkills: "Global Recommended",
201
+ currentViewSkills: "Loadable in Current View",
202
+ noGlobalRecommendedSkills: "No global recommended skills are available right now.",
203
+ noCurrentViewSkills: "No additional skill docs are loadable from the current view.",
204
+ noSkillContent: "No skill docs found in this space view.",
205
+ globalRecommendedSkillsFallback:
206
+ "The shared recommended space is not readable for this account right now, so this list is shown from the built-in recommendation catalog.",
207
+ skillsEmptyHint: "Add a skill from this space first, or mount one from the community.",
208
+ knowledgeEmptyHint: "Use this for stable background material, product docs, and project context.",
209
+ instructionEmptyHint: "Use this for persistent rules, writing style, process guidance, and boundaries.",
210
+ previewDoc: "Preview document",
211
+ openInNewTab: "Open in new tab",
212
+ noAvailableSpaces: "No available spaces. Please create or join a space first.",
213
+ contextBudget: "Context Budget (Pre-allocated)",
214
+ refsTokens: "Refs: ~{{val}} tokens",
215
+ spacesTokens: "Spaces: ~{{val}} tokens",
216
+ budgetWarning: "Pre-allocated context uses {{percent}}%. Recommended to keep under {{max}}% for conversation history.",
217
+ },
218
+ toolsTab: {
219
+ title: "Skills & Tools",
220
+ description: "Manage this agent's mounted skills and manual tools here. Skills can expand more runtime tools and guidance.",
221
+ modeLabel: "Tool configuration mode",
222
+ skillMode: "Skill mode",
223
+ toolMode: "Tool mode",
224
+ skillModeTitle: "Mounted skills",
225
+ skillModeDescription: "Manage the skills already attached to this agent. After mounting, runtime can expand more tools, dependencies, and guidance.",
226
+ toolModeTitle: "Manual tools",
227
+ toolModeDescription: "Configure the tools stored directly on the agent. Runtime tools expanded from skills are summarized below.",
228
+ summaryTitle: "Runtime result",
229
+ summaryDescription: "{{skillCount}} mounted skills · {{toolCount}} tools available at runtime",
230
+ skillDataTitle: "Skills are documents, not hardcoded presets",
231
+ skillDataDescription: "This panel only reflects skill docs already mounted in References.",
232
+ openReferences: "Open References",
233
+ noSkillsSelected: "No runtime skill expansion yet.",
234
+ removeSkill: "Remove",
235
+ viewSkillDetail: "View skill details",
236
+ requiredSkills: "Required skills",
237
+ recommendedSkills: "Recommended skills",
238
+ recommendedHints: "Recommended hints",
239
+ runtimeGuidance: "Runtime guidance",
240
+ manualToolsTitle: "Manual tools stay explicit",
241
+ manualToolsDescription: "These tools are stored on the agent itself. Runtime skills may still add more tools on top.",
242
+ showManualTools: "Show tools",
243
+ hideManualTools: "Hide tools",
244
+ manualToolsCollapsed:
245
+ "{{count}} manual tools selected. Expand to edit the full tool list.",
246
+ noToolsSelected: "No tools selected yet.",
247
+ },
248
+ tools: {
249
+ createAgent: {
250
+ description: "Create a new Agent (intelligent assistant/app) based on the given configuration and return the complete Agent information.",
251
+ params: {
252
+ name: "The name of the Agent, e.g., 'Meeting Minutes Assistant'.",
253
+ model: "The model name to use. Logic: Default 'xiaomi/mimo-v2.5-pro'. Complex tasks: 'openai/gpt-5.2'. Cost-saving: 'openai/gpt-5.1'. Aesthetic/Creative: 'gemini-3-pro-preview'. Long Context/Fast: 'x-ai/grok-4.1-fast'. Image Generation: 'gemini-3-pro-image-preview' (Best/Expensive) or 'gemini-2.5-flash-image' (Ordinary).",
254
+ provider: "The model provider identifier, must match the selected model, e.g., 'openrouter', 'deepseek', 'fireworks', 'mistral', etc.",
255
+ prompt: "System prompt/instruction describing the Agent's role, tone, and usage.",
256
+ introduction: "Introduction displayed in the app market or list, explanatory text for end users.",
257
+ greeting: {
258
+ desc: "Agent's greeting configuration: can be a simple greeting string or an object containing a greeting + greeting menu.",
259
+ stringDesc: "Plain text greeting displayed to the user at the start of a new conversation.",
260
+ objectDesc: "Structured greeting configuration, capable of containing both a greeting message and several shortcut menu items.",
261
+ texts: {
262
+ text: "Greeting text, e.g., 'Hello, I am your weekly report assistant.'",
263
+ },
264
+ menu: {
265
+ desc: "Array of greeting menu items, corresponding to a set of buttons in the UI.",
266
+ id: "Unique identifier for the menu item, used for persistence and rendering key.",
267
+ label: "Button display text, e.g., 'Generate Weekly Report'.",
268
+ userMessage: "Equivalent user request text sent to the Agent when the button is clicked."
269
+ }
270
+ },
271
+ isPublic: "Whether to publish to the app market. true means public, false means private.",
272
+ tags: "Array of tags for the Agent, e.g., ['Summary', 'Writing'].",
273
+ tools: "Array of tool names allowed for this Agent, e.g., ['fetchWebpage', 'callAgent'].",
274
+ linkedSpaces: "List of associated Space IDs or Names. The Agent can access the directory structure of these Spaces as rough context. You MUST call 'listUserSpaces' tool first to get valid IDs/Names.",
275
+ references: {
276
+ desc: "Knowledge references injected into this Agent's system prompt at every call. Supports: page (PAGE-xxx), dialog (dialog-xxx), agent (agent-xxx), table (table-xxx). Content is fully expanded and prepended as context — the more precise the reference, the smarter the Agent. Use 'knowledge' type for most cases.",
277
+ dbKey: "Database key of the reference item, e.g. PAGE-xxx, dialog-xxx, agent-xxx.",
278
+ title: "Title of the reference displayed in the UI.",
279
+ type: "Reference type: 'knowledge' (default, content injected as context), 'instruction' (injected as high-priority instruction), 'page' (injected as page content)."
280
+ },
281
+ temperature: "Sampling temperature, between 0 and 2. Higher values are more creative.",
282
+ top_p: "Nucleus sampling parameter, between 0 and 1, controls diversity.",
283
+ frequency_penalty: "Frequency penalty coefficient, between -2 and 2.",
284
+ presence_penalty: "Presence penalty coefficient, between -2 and 2.",
285
+ max_tokens: "Maximum tokens for a single response. Suggestion: Do not set this unless you have a specific need (e.g., strict limit for very short replies).",
286
+ reasoning_effort: "Reasoning effort. Higher values are slower but more rigorous."
287
+ }
288
+ }
289
+ },
290
+ },
291
+ },
292
+ "zh-CN": {
293
+ translation: {
294
+ // 通用操作和状态
295
+ cancel: "取消",
296
+ update: "更新",
297
+ updating: "更新中...",
298
+ create: "创建",
299
+ creating: "创建中...",
300
+ edit: "编辑",
301
+ delete: "删除",
302
+ confirmDelete: "确认删除",
303
+ resetToDefaults: "重置为默认值",
304
+ loading: "加载中...",
305
+ startChat: "开始聊天",
306
+ starting: "启动中...",
307
+ viewDetails: "详情",
308
+ deleteSuccess: "删除成功!",
309
+
310
+ // 组件特定
311
+ agent: "AI",
312
+ unnamed: "未命名",
313
+ noDescription: "暂无描述",
314
+ noIntroduction: "暂无简介。",
315
+ notSpecified: "未指定",
316
+ vision: "视觉",
317
+ textOnly: "纯文本",
318
+ details: "详细信息",
319
+ price: "价格",
320
+ referencePricePerTurn: "按次参考价",
321
+ perMillionTokens: "每百万Token",
322
+ perTurn: "次(估算)",
323
+ perImage: "张",
324
+ supported: "支持",
325
+ notSupported: "不支持",
326
+ createdAt: "创建于",
327
+
328
+ // 错误提示
329
+ loadError: "加载详情失败",
330
+ createDialogError: "创建对话失败",
331
+ deleteError: "删除失败,请重试。",
332
+
333
+ // AI 表单主标题
334
+ createAgent: {
335
+ title: "创建新的AI",
336
+ untitled: "未命名AI",
337
+ chat: "开始聊天",
338
+ public: "公开",
339
+ },
340
+ editAgent: "编辑AI",
341
+
342
+ // 标签页
343
+ tabs: {
344
+ basicInfo: "基本信息",
345
+ references: "知识与指令",
346
+ toolSelection: "技能与工具",
347
+ publishSettings: "发布设置",
348
+ advancedSettings: "模型设置",
349
+ },
350
+
351
+ // 表单字段和占位符
352
+ form: {
353
+ name: "AI名称",
354
+ namePlaceholder: "输入AI名称",
355
+ provider: "服务商",
356
+ selectProvider: "选择一个服务商",
357
+ model: "模型",
358
+ selectModel: "选择一个模型",
359
+ customProviderUrl: "服务商URL",
360
+ customProviderUrlPlaceholder: "例如:https://api.example.com/v1/chat/completions",
361
+ apiKey: "API密钥",
362
+ apiKeyPlaceholder: "输入您的API密钥",
363
+ prompt: "系统提示词",
364
+ promptPlaceholder: "定义AI的行为、角色和个性...",
365
+ greeting: "问候语",
366
+ introduction: "自我介绍",
367
+ introductionPlaceholder: "向用户介绍你自己...",
368
+ tags: "标签",
369
+ tagsPlaceholder: "添加标签后按回车",
370
+ useServerProxy: "代理模式",
371
+ enableThinking: "思考模式",
372
+ thinkingBudget: "思考 Token 预算",
373
+ inputPrice: "输入价格",
374
+ inputPricePlaceholder: "每百万输入Token的成本",
375
+ outputPrice: "输出价格",
376
+ outputPricePlaceholder: "每百万输出Token的成本",
377
+ apiSource: "API来源",
378
+ usePlatformApi: "平台API",
379
+ useCustomApi: "自定义API",
380
+ tools: "工具",
381
+ selectTools: "选择工具",
382
+ modelParameters: "模型参数",
383
+ temperature: "温度 (Temperature)",
384
+ topP: "Top P",
385
+ frequencyPenalty: "频率惩罚",
386
+ presencePenalty: "存在惩罚",
387
+ maxTokens: "最大Token数",
388
+ reasoningEffort: "推理强度",
389
+ defaults: {
390
+ greeting:
391
+ "我是由 nolo.chat 为你定制的智能助手,今天有什么可以帮到你的?",
392
+ },
393
+ customModelName: "自定义模型名称",
394
+ customModelNamePlaceholder: "输入自定义模型名称",
395
+ },
396
+
397
+ // 帮助提示文本
398
+ help: {
399
+ tags: "添加标签,用于分类和发现",
400
+ proxy:
401
+ "关闭后,将使用您的API密钥直接连接服务商,数据不经过我们的服务器",
402
+ enableThinking: "开启模型推理/思考过程输出(支持 Ollama/Qwen3/DeepSeek/Anthropic)",
403
+ thinkingBudget: "思考 Token 上限(仅 Anthropic 生效,1024–32000)",
404
+ isPublic: "发布到社区,让其他用户也能使用",
405
+ isPublicCustomApi: "使用自定义API的AI无法公开发布",
406
+ apiSourcePlatform: "使用平台提供的API密钥",
407
+ apiSourceCustom: "使用您自己的API密钥和设置",
408
+ promptAutomation:
409
+ "后续自动化可能会参考这个提示词来生成名字和打招呼,但不是严格绑定关系。",
410
+ tools: "选择此AI可以使用的工具",
411
+ temperature: "控制输出的随机性,范围0-2。越高越随机,越低越确定。",
412
+ topP: "控制输出的多样性,范围0-1。越高输出越多样化。",
413
+ frequencyPenalty: "降低词汇重复度,范围-2到2。越高越能避免重复用词。",
414
+ presencePenalty: "降低主题重复度,范围-2到2。越高越鼓励谈论新主题。",
415
+ maxTokens: "限制单次回复的长度,最小为1。",
416
+ },
417
+
418
+ // 验证信息
419
+ validation: {
420
+ nameRequired: "AI名称为必填项",
421
+ nameTooLong: "名称不能超过50个字符",
422
+ providerRequired: "服务商为必填项",
423
+ modelRequired: "模型为必填项",
424
+ invalidUrl: "若提供,必须是有效的URL",
425
+ priceMin: "价格必须大于等于0",
426
+ duplicateReferences: "不允许添加重复的引用",
427
+ temperatureRange: "温度值必须在0和2之间",
428
+ topPRange: "Top P值必须在0和1之间",
429
+ frequencyPenaltyRange: "频率惩罚值必须在-2和2之间",
430
+ presencePenaltyRange: "存在惩罚值必须在-2和2之间",
431
+ maxTokensMin: "最大Token数必须至少为1",
432
+ maxTokensMax: "最大Token数不能超过500,000",
433
+ reasoningEffortInvalid: "推理强度必须是 low, medium, 或 high",
434
+ thinkingBudgetMin: "思考预算至少需要 1024 个 Token",
435
+ thinkingBudgetMax: "思考预算不能超过 100,000 个 Token",
436
+ apiKeyRequired:
437
+ "未使用代理模式、Ollama或自定义服务商时,API密钥为必填项",
438
+ customUrlRequired: "使用自定义服务商时,URL为必填项",
439
+ },
440
+
441
+ // 旧版错误(保留以兼容)
442
+ errors: {
443
+ noUserId: "无法获取用户ID,请重新登录。",
444
+ createDialog: "创建对话失败",
445
+ delete: "删除失败,请重试。",
446
+ },
447
+
448
+ // 知识与指令Tab
449
+ references: {
450
+ title: "知识与指令",
451
+ selectTitle: "管理知识与指令",
452
+ selectHelp: "选择此AI可作为知识或指令使用的页面。",
453
+ searchCurrentSpace: "在当前空间中搜索...",
454
+ searchAllSpaces: "在所有空间中搜索...",
455
+ clearSearch: "清除搜索",
456
+ noResults: "未找到搜索结果。",
457
+ noContent: "此空间内暂无内容。",
458
+ found_one: "找到 {{count}} 个结果",
459
+ found_other: "找到 {{count}} 个结果",
460
+ fromSpace: "来自: {{spaceName}}",
461
+ toInstruction: "切换为指令",
462
+ toKnowledge: "切换为知识",
463
+ selected_one: "已选择 {{count}} 项引用",
464
+ selected_other: "已选择 {{count}} 项引用",
465
+ knowledge: "知识",
466
+ instruction: "指令",
467
+ enabledContext: "已启用上下文",
468
+ linkedSpaces: "关联空间",
469
+ linkedSpacesHelp: "Agent 可以访问这些 Space 的目录结构作为粗略上下文,适合跨空间探索,不适合精确规则。",
470
+ noLinkedSpaces: "尚未关联任何 Space。Agent 只能访问当前对话所在的 Space。",
471
+ allSpaces: "全部空间",
472
+ selectSpace: "选择空间",
473
+ selectSpacePlaceholder: "选择要关联的 Space...",
474
+ add: "添加",
475
+ addSkill: "添加技能",
476
+ addKnowledge: "添加知识",
477
+ addInstruction: "添加指令",
478
+ remove: "移除",
479
+ skills: "技能",
480
+ skillsHelp: "运行时技能来自你挂载的技能文档/页面,会进一步展开工具和提示。",
481
+ knowledgeHelp: "稳定的背景资料,作为上下文提供给 Agent。",
482
+ instructionHelp: "长期生效、优先级更高的行为规则或流程指令。",
483
+ exploreCommunitySkills: "探索社区技能",
484
+ noSkillsYet: "还没有挂载任何技能。",
485
+ noKnowledgeYet: "还没有挂载任何知识。",
486
+ noInstructionsYet: "还没有挂载任何指令。",
487
+ globalRecommendedSkills: "全局推荐",
488
+ currentViewSkills: "当前视图可加载",
489
+ noGlobalRecommendedSkills: "当前没有可用的全局推荐技能。",
490
+ noCurrentViewSkills: "当前视图里没有额外可加载的技能文档。",
491
+ noSkillContent: "当前空间视图里没有找到技能文档。",
492
+ globalRecommendedSkillsFallback:
493
+ "当前账号无法直接读取共享推荐空间,因此这里展示的是内置推荐目录。",
494
+ skillsEmptyHint: "先添加当前 Space 的技能,或从社区里挑一个挂上来。",
495
+ knowledgeEmptyHint: "适合挂稳定资料、说明文档、产品背景和项目上下文。",
496
+ instructionEmptyHint: "适合挂长期规则、写作风格、流程要求和行为边界。",
497
+ previewDoc: "预览文档",
498
+ openInNewTab: "在新标签页打开",
499
+ noAvailableSpaces: "暂无可用的 Space。请先创建或加入 Space。",
500
+ contextBudget: "预分配上下文预算",
501
+ refsTokens: "引用: ~{{val}} tokens",
502
+ spacesTokens: "空间: ~{{val}} tokens",
503
+ budgetWarning: "预分配上下文已占用 {{percent}}%,建议控制在 {{max}}% 以内,为对话历史预留空间。",
504
+ },
505
+ toolsTab: {
506
+ title: "技能与工具",
507
+ description: "在这里管理这个 Agent 已挂载的技能,以及手动启用的工具。技能还会在运行时继续展开更多工具和提示。",
508
+ modeLabel: "工具配置模式",
509
+ skillMode: "技能",
510
+ toolMode: "工具",
511
+ skillModeTitle: "已挂载技能",
512
+ skillModeDescription: "这里管理这个 Agent 当前已有的 skill。挂上以后,运行时会继续展开更多工具、依赖和补充指令。",
513
+ toolModeTitle: "手动工具",
514
+ toolModeDescription: "这里配置 Agent 自己保存的 tools;由 skill 运行时展开出来的工具会在下方一起汇总。",
515
+ summaryTitle: "运行时结果",
516
+ summaryDescription: "已挂载 {{skillCount}} 个 skill · 运行时共可用 {{toolCount}} 个工具",
517
+ skillDataTitle: "Skill 是文档数据,不是前端写死目录",
518
+ skillDataDescription: "这个面板只反映你已经挂到 References 里的 skill 文档。",
519
+ openReferences: "去知识与指令选择",
520
+ noSkillsSelected: "当前还没有任何 skill 产生运行时展开结果。",
521
+ removeSkill: "移除",
522
+ viewSkillDetail: "查看详情",
523
+ boundTools: "绑定工具",
524
+ requiredSkills: "硬依赖 Skills",
525
+ recommendedSkills: "推荐 Skills",
526
+ recommendedHints: "推荐提示",
527
+ runtimeGuidance: "运行时补充指令",
528
+ manualToolsTitle: "手动工具仍然是显式配置",
529
+ manualToolsDescription: "这里保存的是 Agent 自己的 tools;运行时 skill 仍可能在此基础上再补工具。",
530
+ showManualTools: "展开工具",
531
+ hideManualTools: "收起工具",
532
+ manualToolsCollapsed: "当前已选择 {{count}} 个手动工具。展开后可继续编辑完整工具列表。",
533
+ noToolsSelected: "暂未选择任何工具。",
534
+ },
535
+ tools: {
536
+ createAgent: {
537
+ description: "根据给定配置创建一个新的 Agent(智能体 / 应用),并返回完整的 Agent 信息。",
538
+ params: {
539
+ name: "Agent 的名称,例如:'会议纪要助手'。",
540
+ model: "默认使用 'xiaomi/mimo-v2.5-pro'。复杂任务: 'openai/gpt-5.2'。省成本但复杂: 'openai/gpt-5.1'。追求美观/创意: 'gemini-3-pro-preview'。长上下文/快速: 'x-ai/grok-4.1-fast'。生成图片: 贵/高质量选 'gemini-3-pro-image-preview',普通选 'gemini-2.5-flash-image'。",
541
+ provider: "模型提供方标识,必须与所选模型相匹配,例如 'openrouter'、'deepseek'、'fireworks'、'mistral' 等。",
542
+ prompt: "系统提示词 / 指令,描述这个 Agent 的角色、语气和使用方式。",
543
+ introduction: "在应用市场或列表中展示的简介,面向终端用户的说明文案。",
544
+ greeting: {
545
+ desc: "Agent 的欢迎配置:可以是简单欢迎语字符串,也可以是包含欢迎语 + 问候菜单的对象。",
546
+ stringDesc: "纯文本欢迎语,在新对话开始时展示给用户。",
547
+ objectDesc: "结构化欢迎配置,可同时包含欢迎语和若干快捷菜单项。",
548
+ texts: {
549
+ text: "欢迎语文本,例如:'你好,我是你的周报助手。'",
550
+ },
551
+ menu: {
552
+ desc: "问候菜单项数组,对应 UI 中的一组按钮。",
553
+ id: "菜单项唯一标识,用于持久化和渲染 key。",
554
+ label: "按钮显示文案,例如:'生成本周周报'。",
555
+ userMessage: "等价的用户请求文本,点击按钮时会发送给 Agent。"
556
+ }
557
+ },
558
+ isPublic: "是否公开到应用市场。true 表示公开,false 表示仅自己可见。",
559
+ tags: "给 Agent 打上的标签数组,例如 ['总结', '写作']。",
560
+ tools: "允许此 Agent 调用的工具名称数组,例如 ['fetchWebpage', 'callAgent']。",
561
+ linkedSpaces: "关联的其他 Space ID 或名称列表。Agent 可以访问这些 Space 的目录结构作为粗略上下文。你必须先调用 'listUserSpaces' 工具获取有效的 Space ID 或名称。",
562
+ references: {
563
+ desc: "每次调用时注入 Agent system prompt 的知识引用。支持:page(PAGE-xxx)、dialog(dialog-xxx)、agent(agent-xxx)、table(table-xxx)。内容会完整展开并作为上下文前置——引用越精准,Agent 越智能。大多数情况用 'knowledge' 类型即可。",
564
+ dbKey: "引用条目的数据库键,例如 PAGE-xxx、dialog-xxx、agent-xxx。",
565
+ title: "该引用在 UI 中展示的标题。",
566
+ type: "引用类型:'knowledge'(默认,内容作为上下文注入)、'instruction'(作为高优先级指令注入)、'page'(作为页面内容注入)。"
567
+ },
568
+ temperature: "采样温度,0~2 之间,数值越大越有创意。",
569
+ top_p: "nucleus sampling 参数,0~1 之间,控制多样性。",
570
+ frequency_penalty: "重复惩罚系数,-2~2。",
571
+ presence_penalty: "新话题激励系数,-2~2。",
572
+ max_tokens: "单次回答的最大 token 数。建议:除非有特殊需求(如强制控制回复极短),否则不要设置此项。",
573
+ reasoning_effort: "推理强度,数值越高越慢但更严谨。"
574
+ }
575
+ }
576
+ },
577
+ },
578
+ },
579
+ "zh-Hant": {
580
+ translation: {
581
+ // 通用操作與狀態
582
+ cancel: "取消",
583
+ update: "更新",
584
+ updating: "更新中...",
585
+ create: "建立",
586
+ creating: "建立中...",
587
+ edit: "編輯",
588
+ delete: "刪除",
589
+ confirmDelete: "確認刪除",
590
+ resetToDefaults: "重設為預設值",
591
+ loading: "載入中...",
592
+ startChat: "開始對話",
593
+ starting: "啟動中...",
594
+ viewDetails: "檢視詳情",
595
+ deleteSuccess: "刪除成功!",
596
+
597
+ // 組件特定
598
+ agent: "AI",
599
+ unnamed: "未命名",
600
+ noDescription: "暫無描述",
601
+ noIntroduction: "暫無簡介。",
602
+ notSpecified: "未指定",
603
+ vision: "視覺",
604
+ textOnly: "純文字",
605
+ details: "詳細資訊",
606
+ price: "價格",
607
+ referencePricePerTurn: "按次參考價",
608
+ perMillionTokens: "每百萬Token",
609
+ perTurn: "次(估算)",
610
+ perImage: "張",
611
+ supported: "支援",
612
+ notSupported: "不支援",
613
+ createdAt: "建立於",
614
+
615
+ // 錯誤提示
616
+ loadError: "載入詳情失敗",
617
+ createDialogError: "建立對話失敗",
618
+ deleteError: "刪除失敗,請重試。",
619
+
620
+ // AI 表單主標題
621
+ createAgent: {
622
+ title: "建立新的AI",
623
+ untitled: "未命名AI",
624
+ chat: "開始聊天",
625
+ public: "公開",
626
+ },
627
+ editAgent: "編輯AI",
628
+
629
+ // 標籤頁
630
+ tabs: {
631
+ basicInfo: "基本資訊",
632
+ references: "知識與指令",
633
+ toolSelection: "技能與工具",
634
+ publishSettings: "發布設定",
635
+ advancedSettings: "模型設定",
636
+ },
637
+
638
+ // 表單欄位和預留位置
639
+ form: {
640
+ name: "AI名稱",
641
+ namePlaceholder: "輸入AI名稱",
642
+ provider: "服務提供者",
643
+ selectProvider: "選擇一個服務提供者",
644
+ model: "模型",
645
+ selectModel: "選擇一個模型",
646
+ customProviderUrl: "提供者URL",
647
+ customProviderUrlPlaceholder: "例如:https://api.example.com/v1/chat/completions",
648
+ apiKey: "API金鑰",
649
+ apiKeyPlaceholder: "輸入您的API金鑰",
650
+ prompt: "系統提示詞",
651
+ promptPlaceholder: "定義AI的行為、角色和個性...",
652
+ greeting: "問候語",
653
+ introduction: "自我介紹",
654
+ introductionPlaceholder: "向使用者介紹你自己...",
655
+ tags: "標籤",
656
+ tagsPlaceholder: "新增標籤後按 Enter",
657
+ useServerProxy: "代理模式",
658
+ enableThinking: "思考模式",
659
+ thinkingBudget: "思考 Token 預算",
660
+ inputPrice: "輸入價格",
661
+ inputPricePlaceholder: "每百萬輸入Token的成本",
662
+ outputPrice: "輸出價格",
663
+ outputPricePlaceholder: "每百萬輸出Token的成本",
664
+ apiSource: "API來源",
665
+ usePlatformApi: "平台API",
666
+ useCustomApi: "自訂API",
667
+ tools: "工具",
668
+ selectTools: "選擇工具",
669
+ modelParameters: "模型參數",
670
+ temperature: "溫度 (Temperature)",
671
+ topP: "Top P",
672
+ frequencyPenalty: "頻率懲罰",
673
+ presencePenalty: "存在懲罰",
674
+ maxTokens: "最大Token數",
675
+ reasoningEffort: "推理強度",
676
+ defaults: {
677
+ greeting:
678
+ "我是由 nolo.chat 為您客製化的智慧助理,今天有什麼可以幫到您的?",
679
+ },
680
+ customModelName: "自訂模型名稱",
681
+ customModelNamePlaceholder: "輸入自訂模型名稱",
682
+ },
683
+
684
+ // 幫助文字
685
+ help: {
686
+ tags: "新增標籤,用於分類和發現",
687
+ proxy:
688
+ "關閉後,將使用您的API金鑰直接連接服務提供者,資料不會經過我們的伺服器",
689
+ enableThinking: "開啟模型推理/思考過程輸出(支援 Ollama/Qwen3/DeepSeek/Anthropic)",
690
+ thinkingBudget: "思考 Token 上限(僅 Anthropic 生效,1024–32000)",
691
+ isPublic: "發布到社群,讓其他使用者也能使用",
692
+ isPublicCustomApi: "使用自訂API的AI無法公開發布",
693
+ apiSourcePlatform: "使用平台提供的API金鑰",
694
+ apiSourceCustom: "使用您自己的API金鑰和設定",
695
+ promptAutomation:
696
+ "後續自動化可能會參考這個提示詞來產生名稱和打招呼,但不是嚴格綁定關係。",
697
+ tools: "選擇此AI可以使用的工具",
698
+ temperature: "控制輸出的隨機性,範圍0-2。越高越隨機,越低越確定。",
699
+ topP: "控制輸出的多樣性,範圍0-1。越高輸出越多樣化。",
700
+ frequencyPenalty: "降低詞彙重複度,範圍-2到2。越高越能避免重複用詞。",
701
+ presencePenalty: "降低主題重複度,範圍-2到2。越高越鼓勵談論新主題。",
702
+ maxTokens: "限制單次回覆的長度,最小為1。",
703
+ },
704
+
705
+ // 驗證資訊
706
+ validation: {
707
+ nameRequired: "AI名稱為必填項",
708
+ nameTooLong: "名稱不得超過50個字元",
709
+ providerRequired: "服務提供者為必填項",
710
+ modelRequired: "模型為必填項",
711
+ invalidUrl: "若提供,必須是有效的URL",
712
+ priceMin: "價格必須大於等於0",
713
+ duplicateReferences: "不允許新增重複的參考資料",
714
+ temperatureRange: "溫度值必須在0和2之間",
715
+ topPRange: "Top P值必須在0和1之間",
716
+ frequencyPenaltyRange: "頻率懲罰值必須在-2和2之間",
717
+ presencePenaltyRange: "存在懲罰值必須在-2和2之間",
718
+ maxTokensMin: "最大Token數必須至少為1",
719
+ maxTokensMax: "最大Token數不得超過500,000",
720
+ reasoningEffortInvalid: "推理強度必須是 low, medium, 或 high",
721
+ thinkingBudgetMin: "思考預算至少需要 1024 個 Token",
722
+ thinkingBudgetMax: "思考預算不能超過 100,000 個 Token",
723
+ apiKeyRequired:
724
+ "未使用代理模式、Ollama或自訂服務提供者時,API金鑰為必填項",
725
+ customUrlRequired: "使用自訂服務提供者時,URL為必填項",
726
+ },
727
+
728
+ // 舊版錯誤(保留以相容)
729
+ errors: {
730
+ noUserId: "無法獲取使用者ID,請重新登入。",
731
+ createDialog: "建立對話失敗",
732
+ delete: "刪除失敗,請重試。",
733
+ },
734
+
735
+ // 知識與指令Tab
736
+ references: {
737
+ title: "知識與指令",
738
+ selectTitle: "管理知識與指令",
739
+ selectHelp: "選擇此AI可作為知識或指令使用的頁面。",
740
+ searchCurrentSpace: "在目前空間中搜尋...",
741
+ searchAllSpaces: "在所有空間中搜尋中...",
742
+ clearSearch: "清除搜尋",
743
+ noResults: "找不到搜尋結果。",
744
+ noContent: "此空間內暫無內容。",
745
+ found_one: "找到 {{count}} 個結果",
746
+ found_other: "找到 {{count}} 個結果",
747
+ fromSpace: "來自: {{spaceName}}",
748
+ toInstruction: "切換為指令",
749
+ toKnowledge: "切換為知識",
750
+ selected_one: "已選擇 {{count}} 項參考資料",
751
+ selected_other: "已選擇 {{count}} 項參考資料",
752
+ knowledge: "知識",
753
+ instruction: "指令",
754
+ enabledContext: "已啟用上下文",
755
+ linkedSpaces: "關聯空間",
756
+ linkedSpacesHelp: "Agent 可以存取這些 Space 的目錄結構作為粗略上下文,適合跨空間探索,不適合精確規則。",
757
+ noLinkedSpaces: "尚未關聯任何 Space。Agent 只能存取目前對話所在的 Space。",
758
+ allSpaces: "全部空間",
759
+ selectSpace: "選擇空間",
760
+ selectSpacePlaceholder: "選擇要關聯的 Space...",
761
+ add: "新增",
762
+ addSkill: "新增技能",
763
+ addKnowledge: "新增知識",
764
+ addInstruction: "新增指令",
765
+ remove: "移除",
766
+ skills: "技能",
767
+ skillsHelp: "執行時技能來自你掛載的技能文件/頁面,會進一步展開工具與提示。",
768
+ knowledgeHelp: "穩定的背景資料,作為上下文提供給 Agent。",
769
+ instructionHelp: "長期生效、優先級更高的行為規則或流程指令。",
770
+ exploreCommunitySkills: "探索社群技能",
771
+ noSkillsYet: "還沒有掛載任何技能。",
772
+ noKnowledgeYet: "還沒有掛載任何知識。",
773
+ noInstructionsYet: "還沒有掛載任何指令。",
774
+ globalRecommendedSkills: "全域推薦",
775
+ currentViewSkills: "目前視圖可載入",
776
+ noGlobalRecommendedSkills: "目前沒有可用的全域推薦技能。",
777
+ noCurrentViewSkills: "目前視圖中沒有額外可載入的技能文件。",
778
+ noSkillContent: "目前空間視圖中沒有找到技能文件。",
779
+ globalRecommendedSkillsFallback:
780
+ "目前帳號無法直接讀取共享推薦空間,因此這裡顯示的是內建推薦目錄。",
781
+ skillsEmptyHint: "先新增目前 Space 的技能,或從社群挑一個掛上來。",
782
+ knowledgeEmptyHint: "適合掛穩定資料、說明文件、產品背景與專案上下文。",
783
+ instructionEmptyHint: "適合掛長期規則、寫作風格、流程要求與行為邊界。",
784
+ previewDoc: "預覽文件",
785
+ openInNewTab: "在新分頁開啟",
786
+ noAvailableSpaces: "暫無可用的 Space。請先建立或加入 Space。",
787
+ contextBudget: "預分配上下文書預算",
788
+ refsTokens: "引用: ~{{val}} tokens",
789
+ spacesTokens: "空間: ~{{val}} tokens",
790
+ budgetWarning: "預分配上下文已佔用 {{percent}}%,建議控制在 {{max}}% 以內,為對話歷史預留空間。",
791
+ },
792
+ toolsTab: {
793
+ title: "技能與工具",
794
+ description: "在這裡管理這個 Agent 已掛載的技能,以及手動啟用的工具。技能還會在執行時繼續展開更多工具與提示。",
795
+ modeLabel: "工具設定模式",
796
+ skillMode: "技能",
797
+ toolMode: "工具",
798
+ skillModeTitle: "已掛載技能",
799
+ skillModeDescription: "這裡管理這個 Agent 目前已有的 skill。掛上後,執行時會繼續展開更多工具、依賴與補充指令。",
800
+ toolModeTitle: "手動工具",
801
+ toolModeDescription: "這裡配置 Agent 自己保存的 tools;由 skill 在執行時展開出的工具會在下方一起彙總。",
802
+ summaryTitle: "執行時結果",
803
+ summaryDescription: "已掛載 {{skillCount}} 個 skill · 執行時共可用 {{toolCount}} 個工具",
804
+ skillDataTitle: "Skill 是文件資料,不是前端寫死目錄",
805
+ skillDataDescription: "這個面板只反映你已經掛到 References 裡的 skill 文件。",
806
+ openReferences: "去知識與指令選擇",
807
+ noSkillsSelected: "目前還沒有任何 skill 產生執行時展開結果。",
808
+ removeSkill: "移除",
809
+ viewSkillDetail: "查看詳情",
810
+ boundTools: "綁定工具",
811
+ requiredSkills: "硬依賴 Skills",
812
+ recommendedSkills: "推薦 Skills",
813
+ recommendedHints: "推薦提示",
814
+ runtimeGuidance: "執行時補充指令",
815
+ manualToolsTitle: "手動工具仍然是顯式設定",
816
+ manualToolsDescription: "這裡保存的是 Agent 自己的 tools;執行時 skill 仍可能在此基礎上再補工具。",
817
+ showManualTools: "展開工具",
818
+ hideManualTools: "收起工具",
819
+ manualToolsCollapsed: "目前已選擇 {{count}} 個手動工具。展開後可繼續編輯完整工具列表。",
820
+ noToolsSelected: "尚未選擇任何工具。",
821
+ },
822
+ },
823
+ },
824
+ ja: {
825
+ translation: {
826
+ // 一般的なアクションとステータス
827
+ cancel: "キャンセル",
828
+ update: "更新",
829
+ updating: "更新中...",
830
+ create: "作成",
831
+ creating: "作成中...",
832
+ edit: "編集",
833
+ delete: "削除",
834
+ confirmDelete: "削除の確認",
835
+ resetToDefaults: "デフォルトにリセット",
836
+ loading: "読み込み中...",
837
+ startChat: "チャットを開始",
838
+ starting: "開始中...",
839
+ viewDetails: "詳細を表示",
840
+ deleteSuccess: "正常に削除されました!",
841
+
842
+ // コンポーネント固有
843
+ agent: "AI",
844
+ unnamed: "無名",
845
+ noDescription: "説明なし",
846
+ noIntroduction: "紹介文がありません。",
847
+ notSpecified: "指定なし",
848
+ vision: "ビジョン",
849
+ textOnly: "テキストのみ",
850
+ details: "詳細",
851
+ price: "価格",
852
+ referencePricePerTurn: "回ごとの参考価格",
853
+ perMillionTokens: "100万トークンあたり",
854
+ perTurn: "回(概算)",
855
+ perImage: "枚",
856
+ supported: "対応",
857
+ notSupported: "非対応",
858
+ createdAt: "作成日",
859
+
860
+ // エラー
861
+ loadError: "詳細の読み込みに失敗しました",
862
+ createDialogError: "対話の作成に失敗しました",
863
+ deleteError: "削除に失敗しました。もう一度お試しください。",
864
+
865
+ // AIフォームのメインタイトル
866
+ createAgent: {
867
+ title: "新しいAIを作成",
868
+ untitled: "無題のAI",
869
+ chat: "チャットを開始",
870
+ public: "公開",
871
+ },
872
+ editAgent: "AIを編集",
873
+
874
+ // タブ
875
+ tabs: {
876
+ basicInfo: "基本情報",
877
+ references: "知識と指示",
878
+ toolSelection: "技能とツール",
879
+ publishSettings: "公開設定",
880
+ advancedSettings: "モデル設定",
881
+ },
882
+
883
+ // フォームフィールドとプレースホルダー
884
+ form: {
885
+ name: "AI名",
886
+ namePlaceholder: "AI名を入力",
887
+ provider: "プロバイダー",
888
+ selectProvider: "プロバイダーを選択",
889
+ model: "モデル",
890
+ selectModel: "モデルを選択",
891
+ customProviderUrl: "プロバイダーURL",
892
+ customProviderUrlPlaceholder: "例:https://api.example.com/v1/chat/completions",
893
+ apiKey: "APIキー",
894
+ apiKeyPlaceholder: "APIキーを入力",
895
+ prompt: "プロンプト",
896
+ promptPlaceholder: "AIの行動、役割、性格を定義します...",
897
+ greeting: "挨拶メッセージ",
898
+ introduction: "自己紹介",
899
+ introductionPlaceholder: "ユーザーに自己紹介を入力",
900
+ tags: "タグ",
901
+ tagsPlaceholder: "タグを追加してEnterキーを押す",
902
+ useServerProxy: "プロキシモード",
903
+ enableThinking: "思考モード",
904
+ thinkingBudget: "思考トークン予算",
905
+ isPublic: "公開",
906
+ inputPrice: "入力価格",
907
+ inputPricePlaceholder: "100万入力トークンあたりのコスト",
908
+ outputPrice: "出力価格",
909
+ outputPricePlaceholder: "100万出力トークンあたりのコスト",
910
+ apiSource: "APIソース",
911
+ usePlatformApi: "プラットフォームAPI",
912
+ useCustomApi: "カスタムAPI",
913
+ tools: "ツール",
914
+ selectTools: "ツールを選択",
915
+ modelParameters: "モデルパラメータ",
916
+ temperature: "温度 (Temperature)",
917
+ topP: "Top P",
918
+ frequencyPenalty: "頻度ペナルティ",
919
+ presencePenalty: "存在ペナルティ",
920
+ maxTokens: "最大トークン数",
921
+ reasoningEffort: "推論強度",
922
+ defaults: {
923
+ greeting:
924
+ "私はnolo.chatによってカスタマイズされたインテリジェントアシスタントです。今日は何をお手伝いしましょうか?",
925
+ },
926
+ customModelName: "カスタムモデル名",
927
+ customModelNamePlaceholder: "カスタムモデル名を入力",
928
+ },
929
+
930
+ // ヘルプテキスト
931
+ help: {
932
+ tags: "このAIを分類するためのタグを追加します",
933
+ proxy:
934
+ "オフにすると、当社のサーバーを経由せず、ご自身のAPIキーで直接接続します",
935
+ enableThinking: "モデルの推論/思考過程を出力します(Ollama/Qwen3/DeepSeek/Anthropic 対応)",
936
+ thinkingBudget: "思考トークン上限(Anthropic のみ有効、1024〜32000)",
937
+ isPublic:
938
+ "コミュニティリストに表示し、他のユーザーが使用できるようにします",
939
+ isPublicCustomApi: "カスタムAPIを持つAIは公開できません",
940
+ apiSourcePlatform: "プラットフォーム内蔵のAPIキーを使用します",
941
+ apiSourceCustom: "ご自身のAPIキーと設定を使用します",
942
+ promptAutomation:
943
+ "今後の自動化で、このプロンプトを参考に名前や挨拶文を下書きする可能性がありますが、厳密な紐付けではありません。",
944
+ tools: "このAIが使用できるツールを選択します",
945
+ temperature:
946
+ "出力のランダム性を制御します(範囲0〜2)。値が高いほどランダムになり、低いほど確定的になります。",
947
+ topP: "出力の多様性を制御します(範囲0〜1)。値が高いほど多様な出力が含まれます。",
948
+ frequencyPenalty:
949
+ "単語の繰り返しを減らします(範囲-2〜2)。値が高いほど繰り返されにくくなります。",
950
+ presencePenalty:
951
+ "トピックの繰り返しを減らします(範囲-2〜2)。値が高いほど新しいトピックが促されます。",
952
+ maxTokens: "1回の応答の長さを制限します(最小1)。",
953
+ },
954
+
955
+ // バリデーションメッセージ
956
+ validation: {
957
+ nameRequired: "AI名は必須です",
958
+ nameTooLong: "名前は50文字以内で入力してください",
959
+ providerRequired: "プロバイダーは必須です",
960
+ modelRequired: "モデルは必須です",
961
+ invalidUrl: "有効なURL形式で入力してください",
962
+ priceMin: "価格は0以上である必要があります",
963
+ duplicateReferences: "重複した参照は許可されていません",
964
+ temperatureRange: "温度は0から2の間でなければなりません",
965
+ topPRange: "Top Pは0から1の間でなければなりません",
966
+ frequencyPenaltyRange:
967
+ "頻度ペナルティは-2から2の間でなければなりません",
968
+ presencePenaltyRange: "存在ペナルティは-2から2の間でなければなりません",
969
+ maxTokensMin: "最大トークン数は1以上である必要があります",
970
+ maxTokensMax: "最大トークン数は500,000以下である必要があります",
971
+ reasoningEffortInvalid:
972
+ "推論強度は low, medium, high のいずれかである必要があります",
973
+ thinkingBudgetMin: "思考予算は1024トークン以上である必要があります",
974
+ thinkingBudgetMax: "思考予算は100,000トークン以下である必要があります",
975
+ apiKeyRequired:
976
+ "プロキシモード、Ollama、またはカスタムプロバイダーを使用しない場合、APIキーは必須です",
977
+ customUrlRequired: "カスタムプロバイダーを使用する場合、URLは必須です",
978
+ },
979
+
980
+ // レガシーエラー(互換性のため保持)
981
+ errors: {
982
+ noUserId:
983
+ "ユーザーIDが取得できませんでした。再度ログインしてください。",
984
+ createDialog: "対話の作成に失敗しました",
985
+ delete: "削除に失敗しました。もう一度お試しください。",
986
+ },
987
+
988
+ // 知識と指示タブ
989
+ references: {
990
+ title: "知識と指示",
991
+ selectTitle: "知識と指示を管理",
992
+ selectHelp:
993
+ "このAIが知識または指示として使用できるページを選択します。",
994
+ searchCurrentSpace: "現在のスペースで検索...",
995
+ searchAllSpaces: "すべてのスペースで検索中...",
996
+ clearSearch: "検索をクリア",
997
+ noResults: "検索結果が見つかりませんでした。",
998
+ noContent: "このスペースにはコンテンツがありません。",
999
+ found_one: "{{count}}件の結果が見つかりました",
1000
+ found_other: "{{count}}件の結果が見つかりました",
1001
+ fromSpace: "元: {{spaceName}}",
1002
+ toInstruction: "指示に切り替え",
1003
+ toKnowledge: "知識に切り替え",
1004
+ selected_one: "{{count}}件の参照を選択済み",
1005
+ selected_other: "{{count}}件の参照を選択済み",
1006
+ knowledge: "知識",
1007
+ instruction: "指示",
1008
+ enabledContext: "有効なコンテキスト",
1009
+ linkedSpaces: "リンクされたスペース",
1010
+ linkedSpacesHelp: "Agent はこれらの Space を大まかなコンテキストとして参照できます。跨スペース探索向けで、厳密な規則には向きません。",
1011
+ noLinkedSpaces: "リンクされたスペースはまだありません。エージェントは現在の会話のスペースにのみアクセスできます。",
1012
+ allSpaces: "すべてのスペース",
1013
+ selectSpace: "スペースを選択",
1014
+ selectSpacePlaceholder: "リンクするスペースを選択...",
1015
+ add: "追加",
1016
+ addSkill: "技能を追加",
1017
+ addKnowledge: "知識を追加",
1018
+ addInstruction: "指示を追加",
1019
+ remove: "削除",
1020
+ skills: "技能",
1021
+ skillsHelp: "実行時の技能は取り付けた技能ドキュメント/ページから生まれ、さらにツールやガイダンスを展開します。",
1022
+ knowledgeHelp: "Agent が文脈として読むための安定した背景資料です。",
1023
+ instructionHelp: "長く効く、高優先度の行動ルールや手順指示です。",
1024
+ exploreCommunitySkills: "コミュニティ技能を探す",
1025
+ noSkillsYet: "まだ技能は接続されていません。",
1026
+ noKnowledgeYet: "まだ知識は接続されていません。",
1027
+ noInstructionsYet: "まだ指示は接続されていません。",
1028
+ globalRecommendedSkills: "グローバルおすすめ",
1029
+ currentViewSkills: "現在の表示で読み込める技能",
1030
+ noGlobalRecommendedSkills: "現在利用できるグローバルおすすめ技能はありません。",
1031
+ noCurrentViewSkills: "現在の表示から追加できる技能ドキュメントはありません。",
1032
+ noSkillContent: "このスペース表示では技能ドキュメントが見つかりません。",
1033
+ globalRecommendedSkillsFallback:
1034
+ "このアカウントでは共有おすすめスペースを直接読めないため、ここでは内蔵のおすすめカタログを表示しています。",
1035
+ skillsEmptyHint: "まずこの Space の技能を追加するか、コミュニティから 1 つ取り付けてください。",
1036
+ knowledgeEmptyHint: "安定した資料、説明文書、プロダクト背景、プロジェクト文脈に向いています。",
1037
+ instructionEmptyHint: "長期ルール、文体、手順要件、行動境界に向いています。",
1038
+ previewDoc: "ドキュメントをプレビュー",
1039
+ openInNewTab: "新しいタブで開く",
1040
+ noAvailableSpaces: "利用可能なスペースがありません。まずスペースを作成または参加してください。",
1041
+ contextBudget: "コンテキスト予算(事前割り当て)",
1042
+ refsTokens: "参照: ~{{val}} トークン",
1043
+ spacesTokens: "スペース: ~{{val}} トークン",
1044
+ budgetWarning: "事前割り当てコンテキストが {{percent}}% を使用しています。会話履歴のために {{max}}% 以下に抑えることをお勧めします。",
1045
+ },
1046
+ toolsTab: {
1047
+ title: "技能とツール",
1048
+ description: "ここでは、この Agent に取り付けた技能と手動で有効化するツールを管理します。技能は実行時にさらに多くのツールやガイダンスを展開します。",
1049
+ modeLabel: "ツール設定モード",
1050
+ skillMode: "技能",
1051
+ toolMode: "ツール",
1052
+ skillModeTitle: "取り付け済み技能",
1053
+ skillModeDescription: "この Agent に現在付いている skill をここで管理します。取り付けると、実行時に追加のツール、依存、補足ガイダンスが展開されます。",
1054
+ toolModeTitle: "手動ツール",
1055
+ toolModeDescription: "Agent 自身に保存する tools をここで設定します。skill 由来の実行時ツールは下にまとめて表示されます。",
1056
+ summaryTitle: "実行時の結果",
1057
+ summaryDescription: "{{skillCount}} 個の skill を接続済み · 実行時に {{toolCount}} 個のツールが利用可能",
1058
+ skillDataTitle: "Skill は文書データであり、ハードコードされたプリセットではありません",
1059
+ skillDataDescription: "このパネルは References に取り付けた skill ドキュメントだけを反映します。",
1060
+ openReferences: "知識と指示を開く",
1061
+ noSkillsSelected: "現在、skill による実行時展開はまだありません。",
1062
+ removeSkill: "削除",
1063
+ viewSkillDetail: "詳細を表示",
1064
+ boundTools: "紐づくツール",
1065
+ requiredSkills: "必須 Skills",
1066
+ recommendedSkills: "推奨 Skills",
1067
+ recommendedHints: "推奨ヒント",
1068
+ runtimeGuidance: "実行時ガイダンス",
1069
+ manualToolsTitle: "手動ツールは明示設定のままです",
1070
+ manualToolsDescription: "ここに保存されるのは Agent 自身の tools で、実行時 skill がさらにツールを追加することがあります。",
1071
+ showManualTools: "ツールを表示",
1072
+ hideManualTools: "ツールを隠す",
1073
+ manualToolsCollapsed:
1074
+ "{{count}} 個の手動ツールを選択中です。展開すると全ツール一覧を編集できます。",
1075
+ noToolsSelected: "まだツールは選択されていません。",
1076
+ },
1077
+ },
1078
+ },
1079
+ };