@newheap/platform-ai-chat 0.1.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/LICENSE +201 -0
- package/NOTICE +4 -0
- package/README.md +294 -0
- package/admin/index.d.ts +294 -0
- package/fesm2022/newheap-platform-ai-chat-admin.mjs +785 -0
- package/fesm2022/newheap-platform-ai-chat-admin.mjs.map +1 -0
- package/fesm2022/newheap-platform-ai-chat-testing.mjs +911 -0
- package/fesm2022/newheap-platform-ai-chat-testing.mjs.map +1 -0
- package/fesm2022/newheap-platform-ai-chat.mjs +3103 -0
- package/fesm2022/newheap-platform-ai-chat.mjs.map +1 -0
- package/i18n/en.json +376 -0
- package/i18n/nl.json +376 -0
- package/index.d.ts +937 -0
- package/package.json +54 -0
- package/testing/index.d.ts +189 -0
package/i18n/en.json
ADDED
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
{
|
|
2
|
+
"nh-assistant": {
|
|
3
|
+
"launcher": {
|
|
4
|
+
"open": "Open assistant",
|
|
5
|
+
"close": "Close assistant",
|
|
6
|
+
"pending-approval": "An action is waiting for your approval"
|
|
7
|
+
},
|
|
8
|
+
"panel": {
|
|
9
|
+
"title": "Assistant",
|
|
10
|
+
"region-label": "Assistant panel",
|
|
11
|
+
"close": "Close assistant",
|
|
12
|
+
"show-conversations": "Show conversations",
|
|
13
|
+
"hide-conversations": "Hide conversations",
|
|
14
|
+
"new-conversation": "New conversation",
|
|
15
|
+
"loading": "Loading the assistant",
|
|
16
|
+
"unavailable-title": "The assistant is not available",
|
|
17
|
+
"unavailable-description": "The assistant is switched off or you do not have access to it.",
|
|
18
|
+
"empty-title": "How can I help?",
|
|
19
|
+
"empty-description": "Ask a question or describe a task. Actions that change data always ask for your approval first.",
|
|
20
|
+
"conversation-closed": "This conversation cannot continue. Start a new conversation.",
|
|
21
|
+
"dismiss-error": "Dismiss message",
|
|
22
|
+
"usage": "{{inputTokens}} input tokens, {{outputTokens}} output tokens, {{toolCalls}} tool calls",
|
|
23
|
+
"open-preferences": "Your assistant preferences",
|
|
24
|
+
"open-admin": "Assistant administration"
|
|
25
|
+
},
|
|
26
|
+
"agent-picker": {
|
|
27
|
+
"label": "Agent",
|
|
28
|
+
"can-mutate": "Can propose changes",
|
|
29
|
+
"read-only": "Read only"
|
|
30
|
+
},
|
|
31
|
+
"conversation-list": {
|
|
32
|
+
"title": "Conversations",
|
|
33
|
+
"loading": "Loading conversations",
|
|
34
|
+
"empty": "No conversations yet.",
|
|
35
|
+
"untitled": "Untitled conversation",
|
|
36
|
+
"delete": "Delete conversation",
|
|
37
|
+
"count": "{{count}} of {{total}}",
|
|
38
|
+
"status": {
|
|
39
|
+
"idle": "Ready",
|
|
40
|
+
"running": "Running",
|
|
41
|
+
"waiting-for-approval": "Waiting for approval",
|
|
42
|
+
"failed": "Failed",
|
|
43
|
+
"archived": "Archived"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"thread": {
|
|
47
|
+
"label": "Conversation",
|
|
48
|
+
"you": "You",
|
|
49
|
+
"assistant": "Assistant",
|
|
50
|
+
"tool": "Tool",
|
|
51
|
+
"working": "The assistant is working",
|
|
52
|
+
"loading": "Loading conversation"
|
|
53
|
+
},
|
|
54
|
+
"composer": {
|
|
55
|
+
"label": "Message",
|
|
56
|
+
"placeholder": "Ask the assistant",
|
|
57
|
+
"hint": "Enter sends, Shift+Enter adds a new line",
|
|
58
|
+
"send": "Send message",
|
|
59
|
+
"stop": "Stop the assistant",
|
|
60
|
+
"characters": "{{count}} of {{max}} characters",
|
|
61
|
+
"too-long": "The message is too long."
|
|
62
|
+
},
|
|
63
|
+
"tool-call": {
|
|
64
|
+
"label": "Tool call: {{name}}",
|
|
65
|
+
"show-details": "Show details",
|
|
66
|
+
"hide-details": "Hide details",
|
|
67
|
+
"arguments": "Input",
|
|
68
|
+
"result": "Result",
|
|
69
|
+
"result-code": "Result",
|
|
70
|
+
"status": {
|
|
71
|
+
"running": "Running",
|
|
72
|
+
"succeeded": "Completed",
|
|
73
|
+
"failed": "Failed",
|
|
74
|
+
"awaiting-approval": "Awaiting approval",
|
|
75
|
+
"rejected": "Rejected"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"approval": {
|
|
79
|
+
"title": "Approval required",
|
|
80
|
+
"targets": "Affects",
|
|
81
|
+
"arguments": "Proposed change",
|
|
82
|
+
"expires-in": "Expires in {{time}}",
|
|
83
|
+
"expired": "This approval has expired.",
|
|
84
|
+
"approve": "Approve",
|
|
85
|
+
"reject": "Reject",
|
|
86
|
+
"approve-label": "Approve: {{summary}}",
|
|
87
|
+
"reject-label": "Reject: {{summary}}",
|
|
88
|
+
"deciding": "Submitting your decision",
|
|
89
|
+
"status": {
|
|
90
|
+
"pending": "Pending",
|
|
91
|
+
"approved": "Approved",
|
|
92
|
+
"rejected": "Rejected",
|
|
93
|
+
"expired": "Expired"
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
"result-codes": {
|
|
97
|
+
"api-bridge-validation": "The request was not valid.",
|
|
98
|
+
"api-bridge-unauthenticated": "You are not signed in.",
|
|
99
|
+
"api-bridge-forbidden": "You do not have permission for this action.",
|
|
100
|
+
"api-bridge-not-found": "The item was not found.",
|
|
101
|
+
"api-bridge-conflict": "The item was changed in the meantime.",
|
|
102
|
+
"api-bridge-upstream": "The service is not available.",
|
|
103
|
+
"api-bridge-timeout": "The request took too long."
|
|
104
|
+
},
|
|
105
|
+
"errors": {
|
|
106
|
+
"generic": "Something went wrong. Please try again.",
|
|
107
|
+
"assistant-network": "The assistant cannot be reached. Check your connection and try again.",
|
|
108
|
+
"assistant-unauthenticated": "Your session has ended. Sign in again to use the assistant.",
|
|
109
|
+
"assistant-forbidden": "You do not have access to the assistant.",
|
|
110
|
+
"assistant-not-found": "The item no longer exists. Reload and try again.",
|
|
111
|
+
"assistant-conversation-busy": "The assistant is still busy with this conversation. Try again in a moment.",
|
|
112
|
+
"assistant-invalid-response": "The assistant sent an unexpected response.",
|
|
113
|
+
"assistant-stream-interrupted": "The connection to the assistant was interrupted.",
|
|
114
|
+
"assistant-server": "The assistant could not complete the request.",
|
|
115
|
+
"assistant-validation": "Some values are not valid. Check the fields and try again.",
|
|
116
|
+
"assistant-version-conflict": "Someone else changed this in the meantime. Reload and apply your change again.",
|
|
117
|
+
"assistant-mcp-unreachable": "The MCP server cannot be reached.",
|
|
118
|
+
"assistant-mcp-unauthorized": "The MCP server rejected the credentials.",
|
|
119
|
+
"assistant-mcp-host-blocked": "This host is not allowed for MCP servers or for forwarding the user's token.",
|
|
120
|
+
"assistant-mcp-schema-changed": "The tool's input changed on the server. Review it and enable it again.",
|
|
121
|
+
"assistant-mcp-tool-disabled": "This tool is disabled.",
|
|
122
|
+
"assistant-instructions-too-long": "The text is too long. Shorten it to at most 20,000 characters.",
|
|
123
|
+
"assistant-context-not-found": "The application context was not found. Reload the page.",
|
|
124
|
+
"assistant-mcp-server-not-found": "The MCP server no longer exists. Reload the list.",
|
|
125
|
+
"assistant-mcp-tool-not-found": "The MCP tool no longer exists. Sync the server and try again.",
|
|
126
|
+
"assistant-agent-exists": "An agent with this id already exists. Choose another id.",
|
|
127
|
+
"assistant-mcp-server-exists": "An MCP server with this id already exists. Choose another id.",
|
|
128
|
+
"assistant-code-agent-not-deletable": "Agents from the application code cannot be deleted. Disable the agent instead.",
|
|
129
|
+
"assistant-agent-not-code": "Only agents from the application code can be reset.",
|
|
130
|
+
"assistant-actor-mismatch": "This action belongs to another user's session. Reload the page and try again.",
|
|
131
|
+
"assistant-agent-forbidden": "You do not have access to this agent. Choose another agent.",
|
|
132
|
+
"assistant-agent-not-found": "This agent is no longer available. Choose another agent.",
|
|
133
|
+
"assistant-approval-decision-invalid": "The decision could not be processed. Approve or reject the action again.",
|
|
134
|
+
"assistant-approval-expired": "The approval has expired, so nothing was changed. Ask the assistant again.",
|
|
135
|
+
"assistant-approval-invalid": "The approval no longer matches the proposed change, so nothing was changed. Ask the assistant again.",
|
|
136
|
+
"assistant-approval-not-found": "This approval no longer exists. Reload the conversation.",
|
|
137
|
+
"assistant-approval-not-pending": "This approval was already decided. Reload the conversation.",
|
|
138
|
+
"assistant-approval-rejected": "You rejected this action, so nothing was changed.",
|
|
139
|
+
"assistant-budget-exhausted": "You have reached today's assistant limit. You can use the assistant again tomorrow.",
|
|
140
|
+
"assistant-context-unavailable": "Your session could not be identified. Sign in again and retry.",
|
|
141
|
+
"assistant-conversation-not-found": "This conversation no longer exists. Start a new conversation.",
|
|
142
|
+
"assistant-disabled": "The assistant is switched off.",
|
|
143
|
+
"assistant-message-duplicate": "This message was already sent. Wait for the answer.",
|
|
144
|
+
"assistant-message-invalid": "The message is empty or not valid. Write a question and send it again.",
|
|
145
|
+
"assistant-message-too-long": "The message is too long. Shorten it and send it again.",
|
|
146
|
+
"assistant-model-unavailable": "The language model is temporarily unavailable. Try again in a moment.",
|
|
147
|
+
"assistant-proposal-hash-mismatch": "The proposed change was modified in the meantime, so nothing was changed. Reload the conversation and decide again.",
|
|
148
|
+
"assistant-title-invalid": "The conversation title is not valid. Use a shorter title.",
|
|
149
|
+
"assistant-tool-call-limit-reached": "The assistant reached the maximum number of steps for one answer. Ask a narrower question.",
|
|
150
|
+
"assistant-tools-disabled": "No further actions were run in this answer because an action was rejected.",
|
|
151
|
+
"assistant-turn-failed": "The assistant could not finish the answer. Try again.",
|
|
152
|
+
"assistant-turn-timeout": "The answer took too long and was stopped. Try again or ask a narrower question."
|
|
153
|
+
},
|
|
154
|
+
"preferences": {
|
|
155
|
+
"title": "Your preferences",
|
|
156
|
+
"description": "Choose how the assistant answers you. Preferences change the style only; they never change what the assistant may do or which actions need your approval.",
|
|
157
|
+
"style-label": "Style",
|
|
158
|
+
"style": {
|
|
159
|
+
"default": "Standard",
|
|
160
|
+
"default-description": "Balanced answers.",
|
|
161
|
+
"direct": "Straight to the point",
|
|
162
|
+
"direct-description": "Short, factual answers without small talk.",
|
|
163
|
+
"personal": "Personal",
|
|
164
|
+
"personal-description": "A friendly, conversational tone.",
|
|
165
|
+
"detailed": "Detailed",
|
|
166
|
+
"detailed-description": "Thorough answers with background and explanation."
|
|
167
|
+
},
|
|
168
|
+
"address-form-label": "Form of address",
|
|
169
|
+
"address-form": {
|
|
170
|
+
"informal": "Informal",
|
|
171
|
+
"formal": "Formal"
|
|
172
|
+
},
|
|
173
|
+
"response-length-label": "Answer length",
|
|
174
|
+
"response-length": {
|
|
175
|
+
"short": "Short",
|
|
176
|
+
"normal": "Normal",
|
|
177
|
+
"long": "Long"
|
|
178
|
+
},
|
|
179
|
+
"custom-instructions-label": "Your own instructions",
|
|
180
|
+
"custom-instructions-hint": "Optional. For example: answer with bullet points. Your instructions never override the assistant's rules.",
|
|
181
|
+
"characters": "{{count}} of {{max}} characters",
|
|
182
|
+
"too-long": "Your instructions are too long.",
|
|
183
|
+
"save": "Save preferences",
|
|
184
|
+
"saving": "Saving your preferences",
|
|
185
|
+
"saved": "Your preferences are saved.",
|
|
186
|
+
"back": "Back to the conversation",
|
|
187
|
+
"loading": "Loading your preferences",
|
|
188
|
+
"load-failed": "Your preferences could not be loaded.",
|
|
189
|
+
"retry": "Try again"
|
|
190
|
+
},
|
|
191
|
+
"admin": {
|
|
192
|
+
"title": "Assistant administration",
|
|
193
|
+
"description": "Manage the application context, the agents and the MCP servers of the assistant. Changes apply from the next turn.",
|
|
194
|
+
"tabs-label": "Administration sections",
|
|
195
|
+
"tabs": {
|
|
196
|
+
"context": "Context",
|
|
197
|
+
"agents": "Agents",
|
|
198
|
+
"mcp-servers": "MCP servers"
|
|
199
|
+
},
|
|
200
|
+
"loading": "Loading",
|
|
201
|
+
"load-failed": "The data could not be loaded.",
|
|
202
|
+
"retry": "Try again",
|
|
203
|
+
"forbidden-title": "No access",
|
|
204
|
+
"forbidden-description": "You need the assistant administration permission to open this page.",
|
|
205
|
+
"saved": "Saved.",
|
|
206
|
+
"cancel": "Cancel",
|
|
207
|
+
"save": "Save",
|
|
208
|
+
"saving": "Saving",
|
|
209
|
+
"edit": "Edit",
|
|
210
|
+
"delete": "Delete",
|
|
211
|
+
"confirm-delete": "Confirm delete",
|
|
212
|
+
"keep": "Keep",
|
|
213
|
+
"enabled": "Enabled",
|
|
214
|
+
"disabled": "Disabled",
|
|
215
|
+
"enable": "Enable",
|
|
216
|
+
"disable": "Disable",
|
|
217
|
+
"characters": "{{count}} of {{max}} characters",
|
|
218
|
+
"too-long": "The text is too long.",
|
|
219
|
+
"required": "This field is required.",
|
|
220
|
+
"invalid-id": "Use lowercase letters, digits and single dashes.",
|
|
221
|
+
"context": {
|
|
222
|
+
"title": "Application context",
|
|
223
|
+
"description": "Background about the application that every agent receives before its own instructions. It cannot override the assistant's fixed rules. Do not include personal data or secrets.",
|
|
224
|
+
"label": "Context text",
|
|
225
|
+
"version": "Version {{version}}",
|
|
226
|
+
"updated": "Updated {{date}} by {{user}}",
|
|
227
|
+
"updated-unknown": "Updated {{date}}",
|
|
228
|
+
"hash": "Hash",
|
|
229
|
+
"history": "Version history",
|
|
230
|
+
"history-empty": "No earlier versions.",
|
|
231
|
+
"conflict": "Someone saved a newer version. Your text is kept; load the latest version, compare and save again.",
|
|
232
|
+
"reload": "Load latest version"
|
|
233
|
+
},
|
|
234
|
+
"agents": {
|
|
235
|
+
"title": "Agents",
|
|
236
|
+
"description": "Code agents come from the application; you can override, disable or reset them. Agents you create here can be deleted.",
|
|
237
|
+
"new": "New agent",
|
|
238
|
+
"empty": "No agents yet.",
|
|
239
|
+
"source-code": "Code",
|
|
240
|
+
"source-admin": "Created here",
|
|
241
|
+
"overridden": "Overridden",
|
|
242
|
+
"reset": "Reset to code",
|
|
243
|
+
"confirm-reset": "Confirm reset",
|
|
244
|
+
"version": "Version {{version}}",
|
|
245
|
+
"tool-count": "{{count}} tool selectors",
|
|
246
|
+
"server-count": "{{count}} MCP servers",
|
|
247
|
+
"autonomy": {
|
|
248
|
+
"observe": "Observe",
|
|
249
|
+
"explain": "Explain",
|
|
250
|
+
"propose": "Propose",
|
|
251
|
+
"simulate": "Simulate",
|
|
252
|
+
"execute": "Execute"
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
"agent-editor": {
|
|
256
|
+
"new-title": "New agent",
|
|
257
|
+
"edit-title": "Edit {{name}}",
|
|
258
|
+
"id": "Id",
|
|
259
|
+
"id-hint": "Lowercase letters, digits and dashes. The id cannot change later.",
|
|
260
|
+
"display-name": "Name",
|
|
261
|
+
"description": "Description",
|
|
262
|
+
"instructions": "Instructions",
|
|
263
|
+
"instructions-hint": "What the agent does and how it answers.",
|
|
264
|
+
"autonomy": "Autonomy",
|
|
265
|
+
"autonomy-hint": "Only Execute allows changes, and every change still needs approval.",
|
|
266
|
+
"required-policy": "Required policy",
|
|
267
|
+
"required-policy-hint": "Optional. Only users who pass this policy see the agent.",
|
|
268
|
+
"enabled": "Agent is enabled",
|
|
269
|
+
"tool-selectors": "Tool selectors",
|
|
270
|
+
"tool-selectors-hint": "Choose tools from the catalog or add a pattern such as sample-api.project.*. MCP tools come from the assigned servers.",
|
|
271
|
+
"add-selector": "Add pattern",
|
|
272
|
+
"selector-placeholder": "orders.*",
|
|
273
|
+
"remove-selector": "Remove {{selector}}",
|
|
274
|
+
"no-selectors": "No tool selectors. The agent can only answer from its instructions and assigned MCP servers.",
|
|
275
|
+
"catalog": "Tool catalog",
|
|
276
|
+
"catalog-filter": "Filter the tool catalog",
|
|
277
|
+
"catalog-empty": "No tools match.",
|
|
278
|
+
"matches": "{{count}} catalog tools match the selectors.",
|
|
279
|
+
"mcp-servers": "MCP servers",
|
|
280
|
+
"mcp-servers-hint": "Enabled tools of these servers become available to this agent.",
|
|
281
|
+
"mcp-servers-empty": "No MCP servers are configured."
|
|
282
|
+
},
|
|
283
|
+
"effect": {
|
|
284
|
+
"read-only": "Read only",
|
|
285
|
+
"idempotent-mutation": "Idempotent change",
|
|
286
|
+
"mutation": "Change",
|
|
287
|
+
"destructive": "Destructive"
|
|
288
|
+
},
|
|
289
|
+
"source": {
|
|
290
|
+
"local": "Local",
|
|
291
|
+
"bridge": "API bridge",
|
|
292
|
+
"mcp": "MCP"
|
|
293
|
+
},
|
|
294
|
+
"mcp": {
|
|
295
|
+
"title": "MCP servers",
|
|
296
|
+
"description": "Connect remote MCP servers. Their tools start disabled and are treated as changes that need approval until you mark them read-only.",
|
|
297
|
+
"new": "New server",
|
|
298
|
+
"empty": "No MCP servers yet.",
|
|
299
|
+
"test": "Test connection",
|
|
300
|
+
"testing": "Testing the connection",
|
|
301
|
+
"test-ok": "The connection works: {{count}} tools.",
|
|
302
|
+
"sync": "Sync tools",
|
|
303
|
+
"syncing": "Syncing tools",
|
|
304
|
+
"sync-done": "Tools synced: {{count}}.",
|
|
305
|
+
"tools": "Tools",
|
|
306
|
+
"last-sync": "Last sync {{date}}",
|
|
307
|
+
"never-synced": "Never synced",
|
|
308
|
+
"sync-ok": "Sync OK",
|
|
309
|
+
"sync-failed": "Sync failed",
|
|
310
|
+
"assigned": "Assigned to: {{agents}}",
|
|
311
|
+
"unassigned": "Not assigned to an agent",
|
|
312
|
+
"secret-set": "Secret set",
|
|
313
|
+
"no-secret": "No secret",
|
|
314
|
+
"auth": {
|
|
315
|
+
"none": "No authentication",
|
|
316
|
+
"bearer": "Bearer token",
|
|
317
|
+
"api-key": "API key",
|
|
318
|
+
"forward-user-token": "Forward the user's token"
|
|
319
|
+
}
|
|
320
|
+
},
|
|
321
|
+
"server-editor": {
|
|
322
|
+
"new-title": "New MCP server",
|
|
323
|
+
"edit-title": "Edit {{name}}",
|
|
324
|
+
"id": "Id",
|
|
325
|
+
"id-hint": "Lowercase letters, digits and dashes, at most 40 characters. The id cannot change later.",
|
|
326
|
+
"display-name": "Name",
|
|
327
|
+
"url": "URL",
|
|
328
|
+
"url-hint": "https is required; http is only allowed for localhost during development.",
|
|
329
|
+
"url-invalid": "Enter an https URL.",
|
|
330
|
+
"auth-mode": "Authentication",
|
|
331
|
+
"header-name": "Header name",
|
|
332
|
+
"header-name-hint": "Default X-Api-Key.",
|
|
333
|
+
"secret": "Secret",
|
|
334
|
+
"secret-hint": "Stored encrypted and never shown again.",
|
|
335
|
+
"secret-set": "A secret is set.",
|
|
336
|
+
"secret-none": "No secret is set.",
|
|
337
|
+
"secret-replace": "Replace",
|
|
338
|
+
"secret-clear": "Clear",
|
|
339
|
+
"secret-will-clear": "The secret will be cleared when you save.",
|
|
340
|
+
"secret-undo": "Keep the current secret",
|
|
341
|
+
"secret-new": "New secret",
|
|
342
|
+
"forward-warning": "The signed-in user's token is sent to this server. The server's host must be on the allow-list of the application.",
|
|
343
|
+
"required-policy": "Required policy",
|
|
344
|
+
"required-policy-hint": "Optional. The server's tools are only available to users who pass this policy.",
|
|
345
|
+
"enabled": "Server is enabled"
|
|
346
|
+
},
|
|
347
|
+
"tools": {
|
|
348
|
+
"title": "Tools of {{name}}",
|
|
349
|
+
"description": "Tools stay disabled and are treated as changes that need approval until you enable them and choose the effect. Annotations from the server are hints only.",
|
|
350
|
+
"empty": "No tools yet. Sync the server to load its tools.",
|
|
351
|
+
"enabled": "Tool is enabled",
|
|
352
|
+
"effect": "Effect",
|
|
353
|
+
"description-override": "Description for the assistant",
|
|
354
|
+
"description-override-hint": "Optional. Replaces the server's description.",
|
|
355
|
+
"remote-description": "Server description",
|
|
356
|
+
"hint-read-only": "Server hint: read only",
|
|
357
|
+
"hint-mutation": "Server hint: changes data",
|
|
358
|
+
"status": {
|
|
359
|
+
"available": "Available",
|
|
360
|
+
"schema-changed": "Input changed",
|
|
361
|
+
"missing": "Missing on server"
|
|
362
|
+
},
|
|
363
|
+
"schema-changed-warning": "The tool's input changed on the server, so the tool was disabled. Review the tool before you enable it again.",
|
|
364
|
+
"missing-warning": "The server no longer lists this tool.",
|
|
365
|
+
"save": "Save tool",
|
|
366
|
+
"back": "Back to the servers"
|
|
367
|
+
}
|
|
368
|
+
},
|
|
369
|
+
"page-context": {
|
|
370
|
+
"included": "Sent with your message: {{page}}",
|
|
371
|
+
"excluded": "Not sent with this message: {{page}}",
|
|
372
|
+
"exclude": "Do not send {{page}} with this message",
|
|
373
|
+
"include": "Send {{page}} with this message again"
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|