mojulo 0.0.0 → 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.
Files changed (121) hide show
  1. package/README.md +53 -4
  2. package/lib/audit-logger-new.js +11 -0
  3. package/lib/auth/gate.js +25 -0
  4. package/lib/auth/service.js +17 -0
  5. package/lib/auth/session.js +63 -0
  6. package/lib/builder/chat-processor.js +607 -0
  7. package/lib/builder/composer-bridge.js +82 -0
  8. package/lib/builder/evaluator.js +159 -0
  9. package/lib/builder/executor.js +252 -0
  10. package/lib/builder/index.js +48 -0
  11. package/lib/builder/session.js +248 -0
  12. package/lib/builder/system-prompt.js +422 -0
  13. package/lib/builder/tone-presets.js +75 -0
  14. package/lib/builder/tool-executors.js +1418 -0
  15. package/lib/builder/tools.js +338 -0
  16. package/lib/builder/validators.js +239 -0
  17. package/lib/composer/composer.js +225 -0
  18. package/lib/composer/index.js +40 -0
  19. package/lib/composer/protocols/00_base.txt +19 -0
  20. package/lib/composer/protocols/01_knowledge.txt +9 -0
  21. package/lib/composer/protocols/02_form-gathering.txt +32 -0
  22. package/lib/composer/protocols/03_appointments.txt +16 -0
  23. package/lib/composer/protocols/04_triage.txt +15 -0
  24. package/lib/composer/protocols/05_optical-read.txt +22 -0
  25. package/lib/composer/response-builder.js +98 -0
  26. package/lib/config-builder.js +650 -0
  27. package/lib/db/ids.js +10 -0
  28. package/lib/db/index.js +179 -0
  29. package/lib/db/repositories/apiKeys.js +72 -0
  30. package/lib/db/repositories/auditLogs.js +12 -0
  31. package/lib/db/repositories/botSpaces.js +12 -0
  32. package/lib/db/repositories/builderSessions.js +312 -0
  33. package/lib/db/repositories/deploymentEvents.js +12 -0
  34. package/lib/db/repositories/deployments.js +385 -0
  35. package/lib/db/repositories/documents.js +68 -0
  36. package/lib/db/repositories/mcpJobs.js +84 -0
  37. package/lib/deployers/bot-fleet.js +110 -0
  38. package/lib/deployers/bot-proxy.js +72 -0
  39. package/lib/deployers/build.js +89 -0
  40. package/lib/deployers/cloud-deploy.js +310 -0
  41. package/lib/deployers/docker.js +439 -0
  42. package/lib/deployers/fly.js +432 -0
  43. package/lib/deployers/index.js +38 -0
  44. package/lib/deployment-auth.js +36 -0
  45. package/lib/document-parser.js +171 -0
  46. package/lib/embedder/chunker.js +93 -0
  47. package/lib/embedder/local.js +101 -0
  48. package/lib/embedder/preview-rag.js +93 -0
  49. package/lib/envelope-schema.js +54 -0
  50. package/lib/fleet/scoped-sql.js +342 -0
  51. package/lib/form-schema-config/base.js +135 -0
  52. package/lib/form-schema-config/index.js +286 -0
  53. package/lib/form-schema-config/locales/af-ZA.js +153 -0
  54. package/lib/form-schema-config/locales/ar-AE.js +142 -0
  55. package/lib/form-schema-config/locales/ar-SA.js +164 -0
  56. package/lib/form-schema-config/locales/de-DE.js +152 -0
  57. package/lib/form-schema-config/locales/en-AU.js +161 -0
  58. package/lib/form-schema-config/locales/en-CA.js +115 -0
  59. package/lib/form-schema-config/locales/en-GB.js +132 -0
  60. package/lib/form-schema-config/locales/en-IN.js +219 -0
  61. package/lib/form-schema-config/locales/en-MY.js +171 -0
  62. package/lib/form-schema-config/locales/en-NG.js +198 -0
  63. package/lib/form-schema-config/locales/en-PH.js +186 -0
  64. package/lib/form-schema-config/locales/en-SG.js +153 -0
  65. package/lib/form-schema-config/locales/en-US.js +138 -0
  66. package/lib/form-schema-config/locales/es-ES.js +171 -0
  67. package/lib/form-schema-config/locales/es-MX.js +193 -0
  68. package/lib/form-schema-config/locales/fr-CA.js +138 -0
  69. package/lib/form-schema-config/locales/fr-FR.js +155 -0
  70. package/lib/form-schema-config/locales/hi-IN.js +219 -0
  71. package/lib/form-schema-config/locales/it-IT.js +157 -0
  72. package/lib/form-schema-config/locales/ja-JP.js +169 -0
  73. package/lib/form-schema-config/locales/ko-KR.js +140 -0
  74. package/lib/form-schema-config/locales/nl-NL.js +149 -0
  75. package/lib/form-schema-config/locales/pt-BR.js +168 -0
  76. package/lib/form-schema-config/locales/zh-CN.js +172 -0
  77. package/lib/form-schema-config/locales/zh-HK.js +142 -0
  78. package/lib/form-structure-schema.js +191 -0
  79. package/lib/llm-providers.js +828 -0
  80. package/lib/markdown.js +197 -0
  81. package/lib/mcp/catalysts/appointment-to-calendar.md +84 -0
  82. package/lib/mcp/catalysts/conversations-to-channel-digest.md +104 -0
  83. package/lib/mcp/catalysts/document-extract-to-store.md +92 -0
  84. package/lib/mcp/catalysts/knowledge-gap-miner.md +96 -0
  85. package/lib/mcp/catalysts/loader.js +144 -0
  86. package/lib/mcp/catalysts/qualify-lead-to-crm.md +83 -0
  87. package/lib/mcp/catalysts/scan-conversations-for-signal.md +92 -0
  88. package/lib/mcp/catalysts/submission-to-ticket.md +83 -0
  89. package/lib/mcp/catalysts/submissions-to-warehouse.md +103 -0
  90. package/lib/mcp/catalysts/weekly-submissions-digest.md +82 -0
  91. package/lib/mcp/jobs.js +64 -0
  92. package/lib/mcp/server.js +184 -0
  93. package/lib/mcp/session-binding.js +130 -0
  94. package/lib/mcp/tools/build.js +123 -0
  95. package/lib/mcp/tools/catalysts.js +477 -0
  96. package/lib/mcp/tools/context.js +325 -0
  97. package/lib/mcp/tools/fleet.js +391 -0
  98. package/lib/mcp/tools/jobs-tools.js +240 -0
  99. package/lib/mcp/tools/operate.js +314 -0
  100. package/lib/preview/build-preview-config.js +136 -0
  101. package/lib/rate-limiter.js +11 -0
  102. package/lib/resolve-api-key.js +142 -0
  103. package/lib/storage/index.js +40 -0
  104. package/messages/de.json +2136 -0
  105. package/messages/en.json +2136 -0
  106. package/messages/es.json +2136 -0
  107. package/messages/fr.json +2136 -0
  108. package/messages/it.json +2136 -0
  109. package/messages/ja.json +2136 -0
  110. package/messages/ko.json +2136 -0
  111. package/messages/nl.json +2136 -0
  112. package/messages/pl.json +2136 -0
  113. package/messages/pt.json +2136 -0
  114. package/messages/ru.json +2136 -0
  115. package/messages/uk.json +2136 -0
  116. package/messages/zh.json +2136 -0
  117. package/package.json +61 -5
  118. package/scripts/mcp-config.mjs +162 -0
  119. package/scripts/mcp-stdio-loader.mjs +42 -0
  120. package/scripts/mcp-stdio.mjs +108 -0
  121. package/scripts/mojulo-paths.mjs +48 -0
@@ -0,0 +1,2136 @@
1
+ {
2
+ "common": {
3
+ "loading": "Loading...",
4
+ "save": "Save",
5
+ "saving": "Saving...",
6
+ "cancel": "Cancel",
7
+ "delete": "Delete",
8
+ "edit": "Edit",
9
+ "close": "Close",
10
+ "search": "Search",
11
+ "back": "Back",
12
+ "next": "Next",
13
+ "submit": "Submit",
14
+ "create": "Create",
15
+ "copy": "Copy",
16
+ "copied": "Copied!",
17
+ "view": "View",
18
+ "hide": "Hide",
19
+ "yes": "Yes",
20
+ "no": "No",
21
+ "confirm": "Confirm",
22
+ "done": "Done",
23
+ "updating": "Updating...",
24
+ "moveTo": "Move to:",
25
+ "unknown": "Unknown",
26
+ "error": "Error",
27
+ "remove": "Remove",
28
+ "selectAnOption": "Select an option",
29
+ "addItemLabel": "Add {itemLabel}",
30
+ "itemNumber": "{itemLabel} #{number}"
31
+ },
32
+ "auth": {
33
+ "signIn": "Sign In",
34
+ "signOut": "Sign Out",
35
+ "signingIn": "Signing in...",
36
+ "email": "Email",
37
+ "password": "Password",
38
+ "signInToContinue": "Sign in to continue",
39
+ "invalidCredentials": "Invalid email or password",
40
+ "needAccess": "Need access? Contact your organization administrator.",
41
+ "controlPanel": "Mojulo Control Panel",
42
+ "setupComplete": "Admin account created successfully. Please sign in.",
43
+ "emailPlaceholder": "you@company.com",
44
+ "passwordPlaceholder": "Your password"
45
+ },
46
+ "dashboard": {
47
+ "title": "Dashboard",
48
+ "loading": "Loading dashboard...",
49
+ "loadingChatbots": "Loading chatbots...",
50
+ "loadingHistory": "Loading history...",
51
+ "createNewBot": "Create New Bot",
52
+ "noBots": "No bots yet",
53
+ "selectBotOrSpace": "Select a Bot or Bot Space to view details",
54
+ "createBot": "Create Bot",
55
+ "workspace": "{name}'s Workspace",
56
+ "unassignedWorkspace": "Unassigned Workspace",
57
+ "searchChatbots": "Search chatbots",
58
+ "noChatbotsFound": "No chatbots found",
59
+ "privateNotShared": "Private (not shared)",
60
+ "inSpace": "in {spaceName}",
61
+ "chooseBotType": "Choose a bot type to get started:",
62
+ "addNewBot": "Add new bot",
63
+ "addNewPrivateBot": "Add new private bot",
64
+ "expandBotSpaces": "Expand Bot Spaces",
65
+ "allSpaces": "All Spaces",
66
+ "adminSummary": {
67
+ "title": "Overview",
68
+ "totalBots": "Total Bots",
69
+ "running": "Running",
70
+ "stopped": "Stopped",
71
+ "failed": "Failed",
72
+ "recentDeployments": "Recent Deployments",
73
+ "activeBots": "Active Bots (24h)",
74
+ "noRecentActivity": "No recent activity",
75
+ "conversations": "conversations",
76
+ "totalActive": "{bots} bots with {conversations} conversations in the last 24 hours",
77
+ "private": "Private",
78
+ "unknown": "Unknown",
79
+ "justNow": "just now",
80
+ "minutesAgo": "{count}m ago",
81
+ "hoursAgo": "{count}h ago",
82
+ "yesterday": "yesterday",
83
+ "daysAgo": "{count}d ago"
84
+ },
85
+ "private": "Private",
86
+ "showBotList": "Show bot list",
87
+ "deleteConfirm": "Are you sure you want to delete \"{name}\"? This will destroy the deployment and cannot be undone.",
88
+ "deleteError": "Failed to delete deployment: {error}",
89
+ "actionError": "Failed to {action} deployment: {error}",
90
+ "assignError": "Failed to assign bot space: {error}",
91
+ "sections": {
92
+ "control": "Control",
93
+ "data": "Data",
94
+ "resources": "Resources"
95
+ },
96
+ "launcher": {
97
+ "modularChat": {
98
+ "title": "Modular Bot (Chat)",
99
+ "badge": "New",
100
+ "description": "Build with an AI assistant"
101
+ },
102
+ "modularWizard": {
103
+ "title": "Modular Bot (Wizard)",
104
+ "description": "Step-by-step configuration"
105
+ }
106
+ },
107
+ "redeploy": {
108
+ "confirm": "Redeploy \"{name}\" with current configuration? This will restart the bot without any changes.",
109
+ "initiating": "Initiating redeploy...",
110
+ "sending": "Sending deployment request...",
111
+ "deploying": "Deploying...",
112
+ "redeploying": "Redeploying...",
113
+ "failed": "Redeploy Failed"
114
+ },
115
+ "myBots": "My bots",
116
+ "subtitle": "Each bot is a saved configuration. Build it whenever you want a runnable ZIP.",
117
+ "noKeyBanner": {
118
+ "text": "Add an LLM provider key to unlock the chat builder and form-based wizard.",
119
+ "cta": "Open Settings →"
120
+ },
121
+ "documentLibrary": "Document library →",
122
+ "newBotChat": "New bot (chat)",
123
+ "newBotWizard": "New bot (wizard)",
124
+ "loadingShort": "Loading…",
125
+ "noBotsHint": "No bots yet. Start one from the chat builder or the wizard.",
126
+ "searchBots": "Search bots…",
127
+ "noBotsMatch": "No bots match \"{query}\".",
128
+ "emptyDetailHint": "Select a bot to see its lifecycle actions.",
129
+ "buildFailedAlert": "Build failed: {error}",
130
+ "statuses": {
131
+ "building": "Building",
132
+ "buildFailed": "Build failed",
133
+ "needsRebuild": "Needs rebuild",
134
+ "running": "Running",
135
+ "runningStale": "Running · stale",
136
+ "ready": "Ready",
137
+ "draft": "Draft"
138
+ },
139
+ "builds": {
140
+ "building": "Building…",
141
+ "retry": "Retry build",
142
+ "rebuild": "Rebuild",
143
+ "build": "Build"
144
+ },
145
+ "connect": {
146
+ "title": "Connect a running bot",
147
+ "description": "Paste the URL where you're running <code>{name}</code>. The control plane will probe it with the row's baked-in API key.",
148
+ "botUrlLabel": "Bot URL",
149
+ "probeFailedFallback": "Probe failed ({status})",
150
+ "disconnect": "Disconnect",
151
+ "testing": "Testing…",
152
+ "testAndSave": "Test & save"
153
+ },
154
+ "documents": {
155
+ "title": "Document library",
156
+ "breadcrumbHere": "Document library",
157
+ "subtitle": "Every document you've uploaded, and the bots referencing each one. Documents outlive bots — deleting a bot doesn't remove its documents.",
158
+ "loadFailed": "Failed to load library: {error}",
159
+ "loading": "Loading…",
160
+ "searchPlaceholder": "Search by filename…",
161
+ "filters": {
162
+ "all": "All",
163
+ "unattached": "Unattached",
164
+ "parseFailed": "Parse failed"
165
+ },
166
+ "selectAll": "Select all",
167
+ "deselectAll": "Deselect all",
168
+ "selectionStatus": "{selected} of {total} selected",
169
+ "deleting": "Deleting…",
170
+ "deleteSelected": "Delete selected",
171
+ "deleteCount": "Delete {count}",
172
+ "deleteSingleConfirm": "Delete \"{name}\"? This removes the file from disk.",
173
+ "deleteMultiConfirm": "Delete {count} unattached documents? This removes them from disk.",
174
+ "deleteFailed": "Failed to delete {failed} of {total}: {details}",
175
+ "noDocs": "No documents uploaded yet. Upload one from the wizard or chat builder when configuring a bot.",
176
+ "noMatch": "No documents match this filter.",
177
+ "table": {
178
+ "document": "Document",
179
+ "size": "Size",
180
+ "uploaded": "Uploaded",
181
+ "parsed": "Parsed",
182
+ "usedBy": "Used by"
183
+ },
184
+ "parseFailedLabel": "failed",
185
+ "parseFailedTooltip": "No extracted text — RAG won't use this document",
186
+ "unattachedLabel": "Unattached"
187
+ },
188
+ "detail": {
189
+ "backToList": "Back to list",
190
+ "runningAt": "running at",
191
+ "staleNotice": "Config edited since last build — rebuild to get the latest ZIP.",
192
+ "wizard": "Wizard",
193
+ "chat": "Chat",
194
+ "connect": "Connect",
195
+ "reconnect": "Reconnect",
196
+ "conversations": "Conversations",
197
+ "downloadZip": "Download Zip",
198
+ "downloadWithDocs": "Download with Docs",
199
+ "deployToCloud": "Deploy to Cloud",
200
+ "live": "Live ↗",
201
+ "hideEmbed": "Hide Embed",
202
+ "embedScript": "Embed Script",
203
+ "deleteBot": "Delete bot",
204
+ "deleteConfirm": "Delete this bot and its artifact?"
205
+ }
206
+ },
207
+ "bots": {
208
+ "types": {
209
+ "chat": "Chat",
210
+ "knowledge": "Knowledge",
211
+ "form": "Form",
212
+ "triage": "Triage",
213
+ "appointment": "Appointment",
214
+ "bot": "Bot"
215
+ },
216
+ "descriptions": {
217
+ "chat": "AI-powered chat assistant",
218
+ "form": "Structured data collection",
219
+ "triage": "Route users to the right place",
220
+ "appointment": "Schedule meetings & bookings"
221
+ },
222
+ "status": {
223
+ "deployed": "deployed",
224
+ "deploying": "deploying",
225
+ "failed": "failed"
226
+ }
227
+ },
228
+ "actions": {
229
+ "modify": "Modify",
230
+ "clone": "Clone",
231
+ "reassign": "Reassign",
232
+ "goToLiveBot": "Go to Live Bot",
233
+ "modifyTitle": "Modify deployment - keeps same URL and name",
234
+ "cloneTitle": "Clone this deployment with a new name",
235
+ "reassignTitle": "Reassign to a different bot space",
236
+ "deleteTitle": "Delete deployment",
237
+ "editInChat": "Chat",
238
+ "editInChatTitle": "Modify using chat assistant",
239
+ "pause": "Pause",
240
+ "start": "Start",
241
+ "pauseBot": "Pause bot",
242
+ "startBot": "Start bot",
243
+ "redeploy": "Redeploy",
244
+ "redeployBot": "Redeploy bot",
245
+ "live": "Live",
246
+ "embed": "Embed",
247
+ "copied": "Copied",
248
+ "replicas": "Replicas",
249
+ "scaleReplicas": "Scale Replicas",
250
+ "replicasDescription": "Adjust the number of bot replicas. More replicas handle more concurrent users. Sticky sessions ensure users stay connected to the same replica.",
251
+ "replicaCount": "Number of Replicas",
252
+ "replicasRange": "Min: 1, Max: 10",
253
+ "currentReplicas": "Current replicas (available/desired)",
254
+ "scale": "Scale",
255
+ "scaling": "Scaling...",
256
+ "cancel": "Cancel"
257
+ },
258
+ "nav": {
259
+ "dashboard": "Dashboard",
260
+ "analytics": "Analytics",
261
+ "conversations": "Conversations",
262
+ "submissions": "Submissions",
263
+ "liveLogs": "Live Logs"
264
+ },
265
+ "wizard": {
266
+ "loading": "Loading wizard...",
267
+ "loadingDeployment": "Loading deployment configuration...",
268
+ "previewAfterDeployment": "Preview available after deployment",
269
+ "clickToBegin": "Click a deployment button to begin",
270
+ "clickToUpdate": "Click a deployment button to update",
271
+ "steps": {
272
+ "identity": "Identity",
273
+ "knowledge": "Knowledge Base",
274
+ "deployment": "Deployment",
275
+ "resources": "Resources",
276
+ "infoGathering": "Info Gathering",
277
+ "triage": "Triage",
278
+ "appointments": "Appointments",
279
+ "botSetup": "Bot Setup",
280
+ "capabilities": "Capabilities",
281
+ "formCollection": "Form Collection",
282
+ "routing": "Routing",
283
+ "opticalRead": "Optical Read",
284
+ "deploy": "Build"
285
+ },
286
+ "titles": {
287
+ "newBot": "New Bot",
288
+ "editBot": "Edit Bot",
289
+ "cloneBot": "Clone Bot",
290
+ "newConversationalBot": "New Conversational Bot",
291
+ "editConversationalBot": "Edit Conversational Bot",
292
+ "cloneConversationalBot": "Clone Conversational Bot",
293
+ "newTriageBot": "New Triage Bot",
294
+ "editTriageBot": "Edit Triage Bot",
295
+ "cloneTriageBot": "Clone Triage Bot",
296
+ "newAppointmentsBot": "New Appointments Bot",
297
+ "editAppointmentsBot": "Edit Appointments Bot",
298
+ "cloneAppointmentsBot": "Clone Appointments Bot",
299
+ "configureYourBot": "Configure Your Bot",
300
+ "selectBotCapabilities": "Select Bot Capabilities",
301
+ "defineBotIdentity": "Define Bot Identity",
302
+ "uploadKnowledgeBase": "Upload Knowledge Base",
303
+ "configureFormCollection": "Configure Form Collection",
304
+ "configureAppointments": "Configure Appointments",
305
+ "configureTriageRouting": "Configure Triage Routing",
306
+ "configureOpticalRead": "Configure Optical Read",
307
+ "deployYourBot": "Build & Download"
308
+ },
309
+ "badges": {
310
+ "modifying": "Modifying",
311
+ "clone": "Clone",
312
+ "new": "New",
313
+ "conversational": "Conversational",
314
+ "triage": "Triage",
315
+ "appointments": "Appointments",
316
+ "form": "Form",
317
+ "modular": "Modular",
318
+ "knowledge": "Knowledge",
319
+ "forms": "Forms",
320
+ "routing": "Routing",
321
+ "opticalRead": "Optical Read"
322
+ },
323
+ "theatre": {
324
+ "modelConfiguration": "Model Configuration",
325
+ "botPreview": "Bot Preview",
326
+ "knowledgeBase": "Knowledge Base",
327
+ "deployment": "Deployment",
328
+ "preview": "Preview",
329
+ "infoGathering": "Info Gathering",
330
+ "triageDestinations": "Triage Destinations",
331
+ "appointmentTypes": "Appointment Types",
332
+ "calendarProviders": "Calendar Providers",
333
+ "protocolPreview": "Protocol Preview",
334
+ "formPreview": "Form Preview",
335
+ "appointmentPreview": "Appointment Preview",
336
+ "triagePreview": "Triage Preview",
337
+ "opticalReadPreview": "Optical Read Preview"
338
+ },
339
+ "protocols": {
340
+ "selectCapabilities": "Select Bot Capabilities",
341
+ "selectCapabilitiesDescription": "Enable the protocols your bot needs. Combine multiple capabilities.",
342
+ "knowledgeBase": "Knowledge Base",
343
+ "knowledgeBaseDescription": "Answer questions using uploaded documents and RAG (Retrieval-Augmented Generation)",
344
+ "formCollection": "Form Collection",
345
+ "formCollectionDescription": "Conversational forms to collect information without AI seeing user data",
346
+ "appointmentBooking": "Appointment Booking",
347
+ "appointmentBookingDescription": "Route users to calendar providers like Calendly or Google calendar",
348
+ "triageRouting": "Triage Routing",
349
+ "triageRoutingDescription": "Route users to specialized bots or human support based on their needs",
350
+ "opticalRead": "Optical Read",
351
+ "opticalReadDescription": "Extract structured data from an uploaded image using a vision-capable LLM",
352
+ "opticalReadProviderGate": "Optical Read requires a vision-capable provider. Anthropic and OpenAI are supported.",
353
+ "modelGate": "This model only supports the knowledge protocol. Switch to llama3.3 (Ollama) or a cloud provider to enable multi-step flows.",
354
+ "exampleFaq": "FAQ chatbots",
355
+ "exampleDocumentation": "Documentation assistants",
356
+ "exampleProductSupport": "Product support",
357
+ "exampleLeadCapture": "Lead capture",
358
+ "exampleOnboarding": "User onboarding",
359
+ "exampleSurvey": "Survey collection",
360
+ "exampleConsultation": "Consultation booking",
361
+ "exampleScheduling": "Service scheduling",
362
+ "exampleMeeting": "Meeting setup",
363
+ "exampleMultiBot": "Multi-bot routing",
364
+ "exampleDelegation": "Intelligent delegation",
365
+ "exampleCustomerRouting": "Customer routing",
366
+ "selectAtLeastOne": "Select at least one capability",
367
+ "capabilitiesSelected": "{count} {count, plural, one {capability} other {capabilities}} selected",
368
+ "yourCombination": "Your combination:",
369
+ "combinationFullService": "Full-service bot: Answer questions, collect user info, and book appointments.",
370
+ "combinationQaData": "Q&A + Data Collection: Answer questions from your knowledge base while gathering user information.",
371
+ "combinationQaBooking": "Q&A + Booking: Answer questions and help users book appointments.",
372
+ "combinationIntakeBooking": "Intake + Booking: Collect user information and schedule appointments.",
373
+ "preview": {
374
+ "selectProtocolPrompt": "Select capabilities on the left to see what your bot can do",
375
+ "selectedCapabilities": "Selected Capabilities",
376
+ "combinedPossibilities": "Combined Possibilities",
377
+ "exampleUseCases": "Example Use Cases",
378
+ "showExamples": "Show examples",
379
+ "contexts": {
380
+ "contextGeneric": "Generic",
381
+ "contextMedical": "Medical",
382
+ "contextLegal": "Legal",
383
+ "contextRetail": "Retail",
384
+ "contextRealEstate": "Real Estate",
385
+ "contextEducation": "Education",
386
+ "contextHospitality": "Hospitality",
387
+ "contextFinance": "Finance",
388
+ "medical": {
389
+ "medicalKnowledge": "Medical Knowledge Base",
390
+ "medicalKnowledgeDesc": "Answer patient questions about symptoms, medications, procedures, and insurance",
391
+ "symptomChecker": "Symptom Checker",
392
+ "drugInfo": "Drug Information",
393
+ "treatmentFAQ": "Treatment FAQ",
394
+ "insuranceCoverage": "Insurance Coverage",
395
+ "prepInstructions": "Procedure Prep",
396
+ "medicalForms": "Patient Intake",
397
+ "medicalFormsDesc": "Collect medical history, insurance, and consent through conversational forms",
398
+ "patientIntake": "Patient Intake",
399
+ "medicalHistory": "Medical History",
400
+ "consentForms": "Consent Forms",
401
+ "insuranceVerification": "Insurance Verification",
402
+ "symptomQuestionnaire": "Symptom Questionnaire",
403
+ "medicalAppointments": "Appointment Scheduling",
404
+ "medicalAppointmentsDesc": "Book doctor visits, lab tests, and follow-ups with calendar integration",
405
+ "doctorBooking": "Doctor Booking",
406
+ "labScheduling": "Lab Scheduling",
407
+ "followUpReminders": "Follow-up Reminders",
408
+ "specialistReferral": "Specialist Referral",
409
+ "telehealth": "Telehealth Sessions",
410
+ "medicalTriage": "Clinical Triage",
411
+ "medicalTriageDesc": "Assess urgency and route patients to appropriate care level",
412
+ "urgencyAssessment": "Urgency Assessment",
413
+ "departmentRouting": "Department Routing",
414
+ "nurseEscalation": "Nurse Escalation",
415
+ "emergencyDetection": "Emergency Detection",
416
+ "specialistMatch": "Specialist Matching",
417
+ "medicalKnowledgeForm": "Smart Patient Intake",
418
+ "medicalKnowledgeFormDesc": "Educate patients while collecting intake information",
419
+ "smartIntake": "Smart Intake",
420
+ "guidedSymptoms": "Guided Symptom Collection",
421
+ "educatedConsent": "Educated Consent",
422
+ "preVisitPrep": "Pre-visit Preparation",
423
+ "medicalKnowledgeAppt": "Informed Booking",
424
+ "medicalKnowledgeApptDesc": "Explain services and help patients book the right appointment",
425
+ "informedBooking": "Informed Booking",
426
+ "prepThenSchedule": "Prep then Schedule",
427
+ "serviceExplainer": "Service Explainer",
428
+ "waitTimeInfo": "Wait Time Info",
429
+ "medicalTriple": "Patient Journey",
430
+ "medicalTripleDesc": "Complete intake flow: educate, collect info, and schedule in one conversation",
431
+ "fullPatientJourney": "Full Patient Journey",
432
+ "newPatientOnboarding": "New Patient Onboarding",
433
+ "referralWorkflow": "Referral Workflow",
434
+ "medicalAll": "Virtual Front Desk",
435
+ "medicalAllDesc": "Complete digital receptionist: triage, intake, education, and scheduling",
436
+ "virtualFrontDesk": "Virtual Front Desk",
437
+ "completePatientPortal": "Patient Portal Assistant",
438
+ "urgentCareBot": "Urgent Care Bot"
439
+ },
440
+ "legal": {
441
+ "legalKnowledge": "Legal Information",
442
+ "legalKnowledgeDesc": "Answer questions about practice areas, processes, and fee structures",
443
+ "legalFAQ": "Legal FAQ",
444
+ "caseTypesInfo": "Case Types Info",
445
+ "feeStructure": "Fee Structure",
446
+ "processExplainer": "Process Explainer",
447
+ "jurisdictionInfo": "Jurisdiction Info",
448
+ "legalForms": "Client Intake",
449
+ "legalFormsDesc": "Collect case details, documents, and conflict check information",
450
+ "clientIntake": "Client Intake",
451
+ "caseDetails": "Case Details",
452
+ "documentCollection": "Document Collection",
453
+ "conflictCheck": "Conflict Check",
454
+ "retainerInfo": "Retainer Information",
455
+ "legalAppointments": "Consultation Booking",
456
+ "legalAppointmentsDesc": "Schedule consultations, depositions, and meetings",
457
+ "consultationBooking": "Consultation Booking",
458
+ "depositionSchedule": "Deposition Scheduling",
459
+ "courtDateReminders": "Court Date Reminders",
460
+ "meetingCoordination": "Meeting Coordination",
461
+ "legalTriage": "Case Routing",
462
+ "legalTriageDesc": "Route inquiries to the appropriate attorney or practice area",
463
+ "caseTypeRouting": "Case Type Routing",
464
+ "urgencyAssessment": "Urgency Assessment",
465
+ "attorneyMatch": "Attorney Matching",
466
+ "departmentRouting": "Department Routing",
467
+ "legalKnowledgeForm": "Guided Case Evaluation",
468
+ "legalKnowledgeFormDesc": "Explain legal options while gathering case information",
469
+ "guidedIntake": "Guided Intake",
470
+ "informedConsent": "Informed Consent",
471
+ "caseEvaluation": "Case Evaluation",
472
+ "legalAll": "Virtual Paralegal",
473
+ "legalAllDesc": "Complete client services: intake, case evaluation, routing, and scheduling",
474
+ "virtualParalegal": "Virtual Paralegal",
475
+ "clientPortal": "Client Portal",
476
+ "caseManagement": "Case Management"
477
+ },
478
+ "retail": {
479
+ "retailKnowledge": "Product Assistant",
480
+ "retailKnowledgeDesc": "Answer questions about products, availability, policies, and sizing",
481
+ "productInfo": "Product Information",
482
+ "stockAvailability": "Stock Availability",
483
+ "returnPolicy": "Return Policy",
484
+ "shippingFAQ": "Shipping FAQ",
485
+ "sizeGuide": "Size Guide",
486
+ "retailForms": "Customer Service",
487
+ "retailFormsDesc": "Handle order lookups, returns, and warranty registrations",
488
+ "orderLookup": "Order Lookup",
489
+ "returnRequest": "Return Request",
490
+ "warrantyRegistration": "Warranty Registration",
491
+ "feedbackSurvey": "Feedback Survey",
492
+ "wishlist": "Wishlist Collection",
493
+ "retailAppointments": "Service Booking",
494
+ "retailAppointmentsDesc": "Schedule personal shopping, pickups, and in-store services",
495
+ "personalShopping": "Personal Shopping",
496
+ "storePickup": "Store Pickup",
497
+ "serviceBooking": "Service Booking",
498
+ "consultations": "Style Consultations",
499
+ "fittingRoom": "Fitting Room Booking",
500
+ "retailTriage": "Customer Routing",
501
+ "retailTriageDesc": "Route customers to the right department or escalate issues",
502
+ "departmentRouting": "Department Routing",
503
+ "issueEscalation": "Issue Escalation",
504
+ "vipCustomers": "VIP Customers",
505
+ "languageRouting": "Language Routing",
506
+ "retailAll": "Virtual Concierge",
507
+ "retailAllDesc": "Complete shopping assistant: product help, service booking, and support",
508
+ "virtualConcierge": "Virtual Concierge",
509
+ "omniChannelSupport": "Omni-channel Support",
510
+ "personalShopperBot": "Personal Shopper Bot"
511
+ },
512
+ "realestate": {
513
+ "realestateKnowledge": "Property Information",
514
+ "realestateKnowledgeDesc": "Answer questions about listings, neighborhoods, and buying process",
515
+ "listingInfo": "Listing Information",
516
+ "neighborhoodGuide": "Neighborhood Guide",
517
+ "mortgageFAQ": "Mortgage FAQ",
518
+ "buyingProcess": "Buying Process",
519
+ "marketTrends": "Market Trends",
520
+ "realestateForms": "Lead Qualification",
521
+ "realestateFormsDesc": "Qualify buyers/sellers and capture property preferences",
522
+ "buyerQualification": "Buyer Qualification",
523
+ "sellerIntake": "Seller Intake",
524
+ "propertyPreferences": "Property Preferences",
525
+ "preApprovalInfo": "Pre-approval Info",
526
+ "contactCapture": "Contact Capture",
527
+ "realestateAppointments": "Showing Scheduling",
528
+ "realestateAppointmentsDesc": "Book property showings, open houses, and agent meetings",
529
+ "showingSchedule": "Showing Schedule",
530
+ "openHouseRSVP": "Open House RSVP",
531
+ "agentMeeting": "Agent Meeting",
532
+ "virtualTour": "Virtual Tour",
533
+ "inspectionBooking": "Inspection Booking",
534
+ "realestateTriage": "Agent Matching",
535
+ "realestateTriageDesc": "Match leads to the right agent based on needs and location",
536
+ "buyerVsSeller": "Buyer vs Seller",
537
+ "locationRouting": "Location Routing",
538
+ "agentMatch": "Agent Matching",
539
+ "propertyTypeSpecialist": "Property Specialist",
540
+ "realestateAll": "Virtual Agent",
541
+ "realestateAllDesc": "Complete real estate assistant: listings, qualification, and scheduling",
542
+ "virtualAgent": "Virtual Agent",
543
+ "leadQualification": "Lead Qualification",
544
+ "propertyMatchmaker": "Property Matchmaker"
545
+ },
546
+ "education": {
547
+ "educationKnowledge": "Course & Program Info",
548
+ "educationKnowledgeDesc": "Answer questions about courses, admissions, financial aid, and campus life",
549
+ "courseCatalog": "Course Catalog",
550
+ "admissionsFAQ": "Admissions FAQ",
551
+ "financialAid": "Financial Aid Info",
552
+ "campusInfo": "Campus Information",
553
+ "programRequirements": "Program Requirements",
554
+ "educationForms": "Student Applications",
555
+ "educationFormsDesc": "Collect enrollment, registration, and application information",
556
+ "applicationForm": "Application Form",
557
+ "enrollmentInfo": "Enrollment Info",
558
+ "transcriptRequest": "Transcript Request",
559
+ "financialAidApp": "Financial Aid Application",
560
+ "courseRegistration": "Course Registration",
561
+ "educationAppointments": "Academic Scheduling",
562
+ "educationAppointmentsDesc": "Book advisor meetings, campus tours, and tutoring sessions",
563
+ "advisorMeeting": "Advisor Meeting",
564
+ "campusTour": "Campus Tour",
565
+ "admissionsInterview": "Admissions Interview",
566
+ "tutoringSessions": "Tutoring Sessions",
567
+ "officeHours": "Office Hours",
568
+ "educationTriage": "Student Routing",
569
+ "educationTriageDesc": "Route inquiries to the right department or support team",
570
+ "departmentRouting": "Department Routing",
571
+ "studentVsProspect": "Student vs Prospect",
572
+ "academicVsAdmin": "Academic vs Admin",
573
+ "urgencyLevel": "Urgency Level",
574
+ "educationAll": "Virtual Advisor",
575
+ "educationAllDesc": "Complete student services: information, applications, and scheduling",
576
+ "virtualAdvisor": "Virtual Advisor",
577
+ "admissionsBot": "Admissions Bot",
578
+ "studentServicesHub": "Student Services Hub"
579
+ },
580
+ "hospitality": {
581
+ "hospitalityKnowledge": "Guest Information",
582
+ "hospitalityKnowledgeDesc": "Answer questions about amenities, dining, activities, and local attractions",
583
+ "amenitiesInfo": "Amenities Info",
584
+ "localAttractions": "Local Attractions",
585
+ "diningOptions": "Dining Options",
586
+ "policyFAQ": "Policy FAQ",
587
+ "eventInfo": "Event Information",
588
+ "hospitalityForms": "Guest Preferences",
589
+ "hospitalityFormsDesc": "Capture room preferences, dietary needs, and special occasion details before arrival",
590
+ "roomPreferences": "Room Preferences",
591
+ "dietaryRestrictions": "Dietary Restrictions",
592
+ "pillowMenu": "Pillow & Bedding Menu",
593
+ "arrivalDetails": "Arrival Details",
594
+ "specialOccasions": "Special Occasions",
595
+ "hospitalityAppointments": "Reservation Booking",
596
+ "hospitalityAppointmentsDesc": "Book dining, spa, activities, and room service",
597
+ "reservationBooking": "Reservation Booking",
598
+ "spaAppointment": "Spa Appointment",
599
+ "diningReservation": "Dining Reservation",
600
+ "roomService": "Room Service",
601
+ "activityBooking": "Activity Booking",
602
+ "hospitalityTriage": "Guest Routing",
603
+ "hospitalityTriageDesc": "Route requests to the right department or escalate urgent issues",
604
+ "guestVsProspect": "Guest vs Prospect",
605
+ "urgentRequests": "Urgent Requests",
606
+ "departmentRouting": "Department Routing",
607
+ "vipHandling": "VIP Handling",
608
+ "hospitalityAll": "Virtual Concierge",
609
+ "hospitalityAllDesc": "Complete guest services: information, reservations, and support",
610
+ "virtualConcierge": "Virtual Concierge",
611
+ "guestServicesBot": "Guest Services Bot",
612
+ "preArrivalConcierge": "Pre-Arrival Concierge"
613
+ },
614
+ "finance": {
615
+ "financeKnowledge": "Financial Products",
616
+ "financeKnowledgeDesc": "Answer questions about accounts, loans, rates, and KYC requirements",
617
+ "productInfo": "Product Information",
618
+ "ratesFAQ": "Rates & Fees FAQ",
619
+ "eligibilityGuide": "Eligibility Guide",
620
+ "kycRequirements": "KYC Requirements",
621
+ "complianceInfo": "Compliance Info",
622
+ "financeForms": "KYC & Onboarding",
623
+ "financeFormsDesc": "Collect identity documents, verify customers, and complete regulatory onboarding",
624
+ "kycCollection": "KYC Collection",
625
+ "identityVerification": "Identity Verification",
626
+ "amlScreening": "AML Screening",
627
+ "accountOpening": "Account Opening",
628
+ "riskProfiling": "Risk Profiling",
629
+ "financeAppointments": "Advisor Scheduling",
630
+ "financeAppointmentsDesc": "Book meetings with advisors, loan officers, and specialists",
631
+ "advisorMeeting": "Advisor Meeting",
632
+ "loanConsultation": "Loan Consultation",
633
+ "accountReview": "Account Review",
634
+ "planningSession": "Planning Session",
635
+ "branchVisit": "Branch Visit",
636
+ "financeTriage": "Service Routing",
637
+ "financeTriageDesc": "Route to the right product specialist or escalate complex cases",
638
+ "productRouting": "Product Routing",
639
+ "complianceEscalation": "Compliance Escalation",
640
+ "advisorMatch": "Advisor Matching",
641
+ "fraudEscalation": "Fraud Escalation",
642
+ "financeAll": "Digital Onboarding",
643
+ "financeAllDesc": "Complete digital onboarding: KYC verification, product matching, and advisor scheduling",
644
+ "digitalOnboarding": "Digital Onboarding",
645
+ "kycBot": "KYC Bot",
646
+ "wealthAdvisorAssistant": "Wealth Advisor Assistant"
647
+ }
648
+ },
649
+ "knowledge": {
650
+ "title": "Knowledge Base",
651
+ "description": "Answer questions using your uploaded documents with RAG-powered retrieval",
652
+ "example1": "Product FAQ chatbot",
653
+ "example2": "Documentation assistant",
654
+ "example3": "Internal knowledge portal"
655
+ },
656
+ "formGathering": {
657
+ "title": "Form Collection",
658
+ "description": "Progressively collect user information through natural conversation",
659
+ "example1": "Lead capture forms",
660
+ "example2": "Customer onboarding",
661
+ "example3": "Survey & feedback collection"
662
+ },
663
+ "appointments": {
664
+ "title": "Appointment Booking",
665
+ "description": "Let users book meetings through calendar integrations",
666
+ "example1": "Sales consultation booking",
667
+ "example2": "Service appointment scheduling",
668
+ "example3": "Demo & meeting requests"
669
+ },
670
+ "triage": {
671
+ "title": "Triage Routing",
672
+ "description": "Route users to specialized bots or human support based on their needs",
673
+ "example1": "Department routing",
674
+ "example2": "Escalation to human agents",
675
+ "example3": "Multi-bot orchestration"
676
+ },
677
+ "singles": {
678
+ "singleKnowledge": "Knowledge Assistant",
679
+ "singleKnowledgeDesc": "Answer questions using your uploaded documents with intelligent RAG-powered retrieval",
680
+ "scenarioFAQ": "FAQ Chatbot",
681
+ "scenarioProductInfo": "Product Information",
682
+ "scenarioDocumentation": "Documentation Portal",
683
+ "scenarioInternalKB": "Internal Knowledge Base",
684
+ "scenarioPolicyLookup": "Policy Lookup",
685
+ "singleFormGathering": "Data Collector",
686
+ "singleFormGatheringDesc": "Progressively collect structured information through natural conversation",
687
+ "scenarioLeadCapture": "Lead Capture",
688
+ "scenarioSurvey": "Survey Collection",
689
+ "scenarioContactForm": "Contact Forms",
690
+ "scenarioFeedback": "Feedback Collection",
691
+ "scenarioRegistration": "Event Registration",
692
+ "singleAppointments": "Booking Assistant",
693
+ "singleAppointmentsDesc": "Help users schedule meetings through calendar integrations like Calendly or Cal.com",
694
+ "scenarioBookMeeting": "Meeting Booking",
695
+ "scenarioScheduleDemo": "Demo Scheduling",
696
+ "scenarioConsultation": "Consultation Booking",
697
+ "scenarioServiceAppt": "Service Appointments",
698
+ "scenarioOfficeHours": "Office Hours",
699
+ "singleTriage": "Smart Router",
700
+ "singleTriageDesc": "Route users to the right destination based on intent, urgency, or topic",
701
+ "scenarioRouteToAgent": "Agent Routing",
702
+ "scenarioDepartmentRouting": "Department Routing",
703
+ "scenarioEscalation": "Escalation Handling",
704
+ "scenarioLanguageRouting": "Language-Based Routing",
705
+ "scenarioVIPRouting": "Priority/VIP Routing",
706
+ "singleOpticalRead": "Vision Extractor",
707
+ "singleOpticalReadDesc": "Pull structured fields from an uploaded image — the model reads, the user reviews and submits",
708
+ "scenarioIdScan": "ID Document Scan",
709
+ "scenarioInsuranceCard": "Insurance Card Capture",
710
+ "scenarioReceiptExtract": "Receipt Extraction",
711
+ "scenarioBusinessCard": "Business Card Reader",
712
+ "scenarioPrescriptionLabel": "Prescription Label"
713
+ },
714
+ "synergies": {
715
+ "synergyKnowledgeForm": "Informed Lead Capture",
716
+ "synergyKnowledgeFormDesc": "Answer product questions to build trust, then capture interested leads with contextual forms",
717
+ "scenarioQualifyThenCapture": "Qualify then capture",
718
+ "scenarioAnswerThenCollect": "Answer then collect",
719
+ "scenarioContextualForms": "Contextual forms",
720
+ "scenarioEducateThenConvert": "Educate then convert",
721
+ "scenarioSupportToLead": "Support → Lead",
722
+ "synergyKnowledgeAppointments": "Consultative Booking",
723
+ "synergyKnowledgeAppointmentsDesc": "Educate users about services/products, then let them book when ready",
724
+ "scenarioInformThenBook": "Inform then book",
725
+ "scenarioSmartScheduling": "Smart scheduling",
726
+ "scenarioPreQualifyBooking": "Pre-qualify bookings",
727
+ "scenarioServiceExplainer": "Service explainer → Book",
728
+ "scenarioPricingToDemo": "Pricing FAQ → Demo",
729
+ "synergyKnowledgeTriage": "Intelligent Escalation",
730
+ "synergyKnowledgeTriageDesc": "Self-serve answers for common questions, seamless handoff for complex issues",
731
+ "scenarioAnswerOrEscalate": "Answer or escalate",
732
+ "scenarioSmartRouting": "Smart routing",
733
+ "scenarioTieredSupport": "Tiered support",
734
+ "scenarioDeflectOrRoute": "Deflect or route",
735
+ "scenarioL1Automation": "L1 automation",
736
+ "synergyKnowledgeOpticalRead": "Scan & Explain",
737
+ "synergyKnowledgeOpticalReadDesc": "Extract data from an uploaded image, then answer follow-up questions grounded in your knowledge base",
738
+ "scenarioScanThenAsk": "Scan then ask",
739
+ "scenarioDocumentExplainer": "Document explainer",
740
+ "scenarioCardToPolicy": "Card → policy lookup",
741
+ "scenarioPrescriptionExplainer": "Prescription explainer",
742
+ "scenarioReceiptToReturns": "Receipt → returns FAQ",
743
+ "synergyFormAppointments": "Intake to Booking",
744
+ "synergyFormAppointmentsDesc": "Collect qualifying information, then offer personalized appointment slots",
745
+ "scenarioIntakeSchedule": "Intake then schedule",
746
+ "scenarioBookAndCapture": "Book and capture",
747
+ "scenarioQualifyBook": "Qualify then book",
748
+ "scenarioPreVisitForm": "Pre-visit form → Book",
749
+ "scenarioNeedsAssessment": "Needs assessment → Schedule",
750
+ "synergyFormTriage": "Smart Lead Routing",
751
+ "synergyFormTriageDesc": "Gather user details, then route to the perfect team member or department",
752
+ "scenarioCollectThenRoute": "Collect then route",
753
+ "scenarioFormBasedRouting": "Form-based routing",
754
+ "scenarioLeadDistribution": "Lead distribution",
755
+ "scenarioSkillBasedRouting": "Skill-based routing",
756
+ "scenarioTerritoryAssignment": "Territory assignment",
757
+ "synergyAppointmentsTriage": "Specialist Booking",
758
+ "synergyAppointmentsTriageDesc": "Identify the right specialist for the user's needs, then book directly",
759
+ "scenarioRouteToCalendar": "Route to calendar",
760
+ "scenarioSpecialistBooking": "Specialist booking",
761
+ "scenarioSmartDelegation": "Smart delegation",
762
+ "scenarioExpertMatch": "Expert matching",
763
+ "scenarioAvailabilityRouting": "Availability-based routing",
764
+ "synergyTriple1": "Full Sales Funnel",
765
+ "synergyTriple1Desc": "Complete sales journey: educate prospects, capture leads, and book qualified demos",
766
+ "scenarioFullSalesFlow": "Complete sales flow",
767
+ "scenarioCompleteOnboarding": "Complete onboarding",
768
+ "scenarioNurtureToClose": "Nurture to close",
769
+ "scenarioInboundSales": "Inbound sales automation",
770
+ "synergyTriple2": "Support Hub",
771
+ "synergyTriple2Desc": "Self-service knowledge base, ticket creation, and intelligent escalation to agents",
772
+ "scenarioSupportEscalation": "Support escalation",
773
+ "scenarioIntelligentTicketing": "Intelligent ticketing",
774
+ "scenarioHelpDeskAuto": "Help desk automation",
775
+ "scenarioIssueCapture": "Issue capture → Route",
776
+ "synergyTriple3": "Consultation Flow",
777
+ "synergyTriple3Desc": "Answer questions, match to the right expert, and enable direct calendar booking",
778
+ "scenarioMultiSpecialistBooking": "Multi-specialist booking",
779
+ "scenarioSmartConsultation": "Smart consultation",
780
+ "scenarioAdvisoryFlow": "Advisory service flow",
781
+ "scenarioExpertConnect": "Expert connect",
782
+ "synergyTriple4": "Complete Intake",
783
+ "synergyTriple4Desc": "Structured intake forms, smart routing to teams, and automated scheduling",
784
+ "scenarioIntakeRouteBook": "Intake → Route → Book",
785
+ "scenarioCompleteLeadFlow": "Complete lead flow",
786
+ "scenarioPatientIntake": "Patient intake flow",
787
+ "scenarioClientOnboarding": "Client onboarding",
788
+ "synergyAll": "Enterprise Assistant",
789
+ "synergyAllDesc": "Full-featured concierge: answer questions, collect data, route intelligently, and book appointments",
790
+ "scenarioEnterpriseBot": "Enterprise assistant",
791
+ "scenarioFullServiceAssistant": "Full-service bot",
792
+ "scenarioDigitalConcierge": "Digital concierge",
793
+ "scenarioVirtualReceptionist": "Virtual receptionist",
794
+ "scenarioUnifiedSupport": "Unified support hub"
795
+ }
796
+ }
797
+ },
798
+ "modular": {
799
+ "addCalendarProvider": "Add Calendar Provider",
800
+ "addUrlDestination": "Add URL Destination",
801
+ "redirectToBot": "Redirect to Bot",
802
+ "addRoutingDestination": "Add Routing Destination",
803
+ "selectedBot": "Selected Bot",
804
+ "displayName": "Display Name",
805
+ "displayNamePlaceholder": "e.g., Sales Support, Technical Help",
806
+ "description": "Description",
807
+ "descriptionPlaceholder": "Describe when users should be routed here...",
808
+ "url": "URL",
809
+ "urlPlaceholder": "https://example.com/support",
810
+ "paradigm": "Paradigm",
811
+ "protocols": "Protocols",
812
+ "set": "Set",
813
+ "notGenerated": "Not generated",
814
+ "calendars": "Calendars",
815
+ "configured": "{count} configured",
816
+ "triageRoutes": "Triage Routes",
817
+ "opticalReadFields": "Optical Read Fields",
818
+ "required": "Required",
819
+ "displayNameRequired": "Display name is required",
820
+ "descriptionRequired": "Description is required",
821
+ "urlRequired": "URL is required",
822
+ "urlInvalid": "Please enter a valid URL",
823
+ "addOpticalReadField": "Add Extraction Field",
824
+ "editOpticalReadField": "Edit Extraction Field",
825
+ "updateOpticalReadField": "Update Extraction Field"
826
+ },
827
+ "tabs": {
828
+ "desktop": "Desktop",
829
+ "documents": "Documents",
830
+ "fieldsDisplay": "Fields Display",
831
+ "flow": "Flow",
832
+ "jsonView": "JSON View",
833
+ "fields": "Fields",
834
+ "preview": "Preview"
835
+ },
836
+ "identity": {
837
+ "chatDisplayName": "Chat Window Display Name",
838
+ "chatDisplayNameHelper": "Name shown in the chat interface header",
839
+ "personaObjective": "Persona & Objective",
840
+ "personaObjectivePlaceholder": "Describe your bot's purpose, personality, and custom instructions",
841
+ "personaObjectiveHelper": "Define how your bot should behave, what it should help with, and any specific guidelines.",
842
+ "welcomeMessage": "Welcome Message",
843
+ "welcomeMessagePlaceholder": "Hello! How can I help you today?",
844
+ "welcomeMessageHelper": "The first message users see when they start a conversation.",
845
+ "suggestedPrompts": "Suggested Prompts (Optional)",
846
+ "suggestedPromptsHelper": "Provide quick-start prompts to help users begin conversations",
847
+ "inputPlaceholder": "Input Placeholder",
848
+ "inputPlaceholderHelper": "Placeholder text in the message input field",
849
+ "inputPlaceholderDefault": "Type your message...",
850
+ "promptPlaceholder": "What can you help me with?",
851
+ "chatDisplayNamePlaceholder": "Bot",
852
+ "promptItemLabel": "Prompt"
853
+ },
854
+ "resources": {
855
+ "botName": "Set Unique Bot Name",
856
+ "botNameHelper": "This will be used as your unique resource identifier. Max 50 characters.",
857
+ "botNamePlaceholder": "My Awesome Bot",
858
+ "aboutBotNames": "About Bot Names",
859
+ "botNameInfo": "Resource names are searchable on the dashboard. Use meaningful descriptions or implement your own system.",
860
+ "botNameWarning": "Name cannot be changed after deployment.",
861
+ "provider": "Provider",
862
+ "selectProvider": "Select a provider",
863
+ "model": "Model",
864
+ "selectModel": "Select a model",
865
+ "apiKey": "API Key",
866
+ "apiKeyEnter": "Enter your API key",
867
+ "apiKeySelectProviderFirst": "Select a provider first",
868
+ "apiKeySavedPlaceholder": "•••••••• (using saved key)",
869
+ "apiKeyExistingPlaceholder": "•••••••• (existing key on file — leave blank to keep)",
870
+ "apiKeyUsingSaved": "Using saved API key:",
871
+ "apiKeyExistingConfigured": "Existing API key configured — will be reused unless you enter a new one",
872
+ "apiKeyIsSet": "API key is set",
873
+ "apiKeyClear": "Clear",
874
+ "apiKeyAbout": "About API Keys",
875
+ "apiKeyTooltip": "Your API key is encrypted and stored securely. It will be used to power your chatbot's responses. You can manage your saved API keys in the settings.",
876
+ "apiKeyEncryptedHelper": "Your API key is encrypted and stored securely",
877
+ "apiKeyLoadingSaved": "Loading saved keys...",
878
+ "apiKeyOrUseSaved": "Or use a saved API key:",
879
+ "ollamaNoCredsNeeded": "Ollama runs against your own endpoint — no API key needed.",
880
+ "ollamaHost": "Ollama host URL",
881
+ "ollamaHostHelper": "The endpoint your bot will hit. Leave blank to default to http://localhost:11434. If your bot runs in Docker and Ollama runs on the host, use http://host.docker.internal:11434 (Mac/Windows) or your host's LAN IP (Linux). Cloud deploys need a publicly reachable Ollama endpoint. Requires Ollama ≥ 0.5.0 for envelope-validity guarantees — older daemons work but fall back to best-effort JSON parsing.",
882
+ "ollamaHostSavedPlaceholder": "Using saved host — clear to type a fresh URL",
883
+ "ollamaHostUsingSaved": "Using saved Ollama host:",
884
+ "ollamaHostOrUseSaved": "Or use a saved Ollama host:",
885
+ "awsCredentialsUsing": "Using saved AWS credentials:",
886
+ "awsCredentialsExisting": "Existing AWS credentials configured — will be reused unless you enter new ones below",
887
+ "awsUseIamRole": "Use IAM Role (recommended for EKS/EC2)",
888
+ "awsUseIamRoleHelper": "Uses the instance/pod IAM role instead of explicit credentials",
889
+ "awsAccessKeyId": "AWS Access Key ID",
890
+ "awsAccessKeyIdPlaceholder": "AKIAIOSFODNN7EXAMPLE",
891
+ "awsSecretAccessKey": "AWS Secret Access Key",
892
+ "awsSecretAccessKeyPlaceholder": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
893
+ "bedrockRegion": "Bedrock Region",
894
+ "bedrockRegionOption": "{name} ({geoPrefix} cross-region)",
895
+ "bedrockCrossRegion": "Cross-region inference routes requests to available capacity across the {regionName} region",
896
+ "regionUS": "US",
897
+ "regionEU": "EU",
898
+ "regionAPAC": "APAC",
899
+ "awsUsingIamRoleStatus": "Using IAM Role",
900
+ "awsCredentialsConfigured": "AWS credentials configured",
901
+ "awsLoadingCredentials": "Loading saved credentials...",
902
+ "awsOrUseSaved": "Or use saved AWS credentials:"
903
+ },
904
+ "knowledge": {
905
+ "loadingDocuments": "Loading documents...",
906
+ "noDocumentsInSpace": "No documents in this bot space yet.",
907
+ "selectFromBotSpace": "Select from Bot Space Files",
908
+ "selected": "Selected",
909
+ "select": "Select",
910
+ "skipRag": "Skip RAG",
911
+ "skipRagHelper": "Objective prompt will be the sole source of knowledge"
912
+ },
913
+ "infoGathering": {
914
+ "formRegion": "Form Region",
915
+ "formRegionHelper": "Sets validation patterns, field formats, and labels for your target region",
916
+ "describeInfo": "Describe the information you want to collect",
917
+ "describeInfoPlaceholder": "I want to collect the user's name, email, and company name...",
918
+ "describeInfoHelperEdit": "Add a description and regenerate, or edit the JSON directly in the JSON View tab",
919
+ "describeInfoHelper": "Describe the form fields in plain text",
920
+ "aiFormGeneration": "AI-Powered Form Generation",
921
+ "regenerateDescription": "Regenerate form structure from your new description",
922
+ "generateDescription": "Generate a structured form from your description",
923
+ "errorNoDescription": "Please describe the information you want to collect",
924
+ "errorNoApiKey": "API key is missing. Please go back to Step 1 and enter your API key.",
925
+ "formSubmissionOptions": "Form Submission Options",
926
+ "sendToControlPlane": "Send to Control Plane",
927
+ "sendToControlPlaneHelper": "Store completed form submissions in your dashboard for viewing and export",
928
+ "webhookUrl": "External Webhook URL (Optional)",
929
+ "webhookUrlPlaceholder": "https://your-webhook-url.com/endpoint",
930
+ "webhookUrlHelper": "Also send form data to an external webhook (e.g., Zapier, Make, custom endpoint)",
931
+ "afterSubmitMessage": "After-Submit Chat Message",
932
+ "afterSubmitPlaceholder": "Thank you! Let's get started...",
933
+ "afterSubmitHelper": "Message shown to users after they submit the form",
934
+ "termsAndConditions": "Terms and Conditions",
935
+ "termsPlaceholder": "Enter your terms and conditions text here. Supports markdown formatting...",
936
+ "termsHelper": "If provided, a required checkbox will appear as the final form field. Leave empty to skip.",
937
+ "termsInfo": "Users can click the \"Terms and Conditions\" link to view the full text in a popup before accepting.",
938
+ "jsonViewTip": "Tip: Switch to the \"JSON View\" tab on the right to edit the generated form structure."
939
+ },
940
+ "triage": {
941
+ "addRoute": "Add Chatbot Route",
942
+ "deleteRoute": "Delete Route",
943
+ "deleteDestination": "Delete Destination",
944
+ "selectedBotUrl": "Selected Bot URL",
945
+ "editBotDestination": "Edit Bot Destination",
946
+ "editUrlDestination": "Edit URL Destination",
947
+ "selectBot": "Select Bot",
948
+ "loadingBots": "Loading bots...",
949
+ "noBotsAvailable": "No bots available. Create a bot first.",
950
+ "descriptionHelper": "Used for RAG matching to determine when to route users here",
951
+ "updateDestination": "Update Destination"
952
+ },
953
+ "opticalRead": {
954
+ "addField": "Add Extraction Field",
955
+ "deleteField": "Delete Field",
956
+ "label": "Label",
957
+ "labelPlaceholder": "Date of Birth",
958
+ "labelRequired": "Label is required",
959
+ "idName": "ID Name",
960
+ "idNamePlaceholder": "dob",
961
+ "idNameHelper": "snake_case key used in extractedFields",
962
+ "idNameRequired": "ID name is required",
963
+ "idNameInvalid": "Use lowercase letters, numbers, and underscores only",
964
+ "idNameDuplicate": "ID name must be unique",
965
+ "hint": "Hint",
966
+ "hintPlaceholder": "MM/DD/YYYY, front of license",
967
+ "hintHelper": "Optional: prime location or format. The hint is the load-bearing tuning primitive.",
968
+ "noFieldsYet": "Add at least one extraction field to enable Optical Read.",
969
+ "providerNotSupported": "Optical Read requires a vision-capable provider. Anthropic and OpenAI are supported.",
970
+ "intro": "Name the slots you want extracted. The model resolves them against its own visual prior — the optional hint primes location or format.",
971
+ "showUploadOnStart": "Show upload button as a starter prompt",
972
+ "showUploadOnStartHelper": "Renders an upload card alongside the bot's first-message suggestions. Skips the conversational warm-up — the user can upload immediately.",
973
+ "afterSubmitMessage": "After-Submit Chat Message (Optional)",
974
+ "afterSubmitMessagePlaceholder": "Thanks! We've received your details.",
975
+ "afterSubmitMessageHelper": "Bot reply rendered in the chat after the user submits the extracted fields. Leave empty to skip."
976
+ },
977
+ "appointments": {
978
+ "addAppointment": "Add Appointment Type",
979
+ "deleteAppointment": "Delete Appointment",
980
+ "editCalendarProvider": "Edit Calendar Provider",
981
+ "updateCalendarProvider": "Update Calendar Provider",
982
+ "calendarId": "Calendar ID",
983
+ "calendarIdPlaceholder": "e.g., dr-smith-general",
984
+ "calendarIdHelper": "Unique identifier returned as calendarId in the response",
985
+ "calendarIdRequired": "Calendar ID is required",
986
+ "calendarIdExists": "This calendar ID already exists",
987
+ "providerName": "Provider Name",
988
+ "providerNameRequired": "Provider name is required",
989
+ "providerNameHelper": "Calendar provider service",
990
+ "popupUrl": "Popup URL",
991
+ "popupUrlPlaceholder": "https://calendly.com/dr-smith",
992
+ "popupUrlHelper": "URL launched when user clicks the calendar button",
993
+ "popupUrlRequired": "Popup URL is required",
994
+ "popupUrlInvalid": "Please enter a valid URL",
995
+ "descriptionPlaceholder": "Describe when users should book with this calendar provider...",
996
+ "descriptionRequired": "Description is required",
997
+ "descriptionHelper": "Used for RAG matching to determine which calendar to show"
998
+ },
999
+ "deployment": {
1000
+ "inProgress": "Deployment in progress...",
1001
+ "testDeployment": "Test Deployment",
1002
+ "currentDeployment": "Current Deployment",
1003
+ "testBotLive": "Your test bot is live at this URL:",
1004
+ "botLive": "Your bot is live at this URL:",
1005
+ "testSuccess": "Test Deployment Successful!",
1006
+ "testSuccessMessage": "Your test bot is live and running. You can test it in the preview panel on the right.",
1007
+ "productionSuccess": "Production Deployment Successful!",
1008
+ "productionSuccessMessage": "Your bot is now live and ready for production use.",
1009
+ "deployToProduction": "Deploy to Production",
1010
+ "viewDeployments": "View Bots",
1011
+ "previewChanges": "Preview Changes (Test)",
1012
+ "deployToTest": "Deploy to Test",
1013
+ "updateProduction": "Update Production Bot",
1014
+ "editMode": "Edit Mode",
1015
+ "editModeMessage": "Deploying will update the existing bot with your changes. The bot URL will remain the same.",
1016
+ "configSummary": "Configuration Summary",
1017
+ "botName": "Bot Name:",
1018
+ "provider": "Provider:",
1019
+ "model": "Model:",
1020
+ "documents": "Documents:",
1021
+ "formCollection": "Form Collection:",
1022
+ "uploaded": "uploaded",
1023
+ "enabled": "Enabled",
1024
+ "embeddings": "Embeddings",
1025
+ "embeddingsChunks": "{count} chunks",
1026
+ "editConfiguration": "Edit configuration",
1027
+ "aboutDeployments": "About Deployments",
1028
+ "testDeploymentInfo": "Test deployment: Creates a persistent url for testing.",
1029
+ "productionDeploymentInfo": "Production deployment: Creates your live bot that will be publicly accessible.",
1030
+ "deploymentRegion": "Deployment Region",
1031
+ "useOrgDefault": "Use organization default ({region})",
1032
+ "regionHelp": "Select the AWS region where your bot will be deployed. This affects latency and data residency.",
1033
+ "none": "None",
1034
+ "saving": "Saving…",
1035
+ "saveChanges": "Save Changes",
1036
+ "saveConfiguration": "Save Configuration",
1037
+ "saveFailed": "Save failed",
1038
+ "saveErrorFallback": "Failed to save configuration",
1039
+ "buildFailed": "Build failed",
1040
+ "buildErrorFallback": "Failed to build artifact",
1041
+ "building": "Building…",
1042
+ "buildArtifact": "Build Artifact",
1043
+ "configurationSaved": "Configuration saved",
1044
+ "configurationSavedDesc": "Saved as <mono>{name}</mono>. Build the runnable ZIP when you're ready.",
1045
+ "artifactReadyCached": "Artifact ready (cached)",
1046
+ "artifactBuilt": "Artifact built",
1047
+ "artifactReadyDesc": "Your bot artifact <mono>{name}</mono> is ready to download.",
1048
+ "downloadArtifact": "Download Artifact",
1049
+ "downloadArtifactWithDocs": "Download with Docs",
1050
+ "previewHelp": "Try your bot live in the panel on the right. When the responses feel right, save then download the configuration. Build the runnable artifact whenever you're ready."
1051
+ },
1052
+ "previews": {
1053
+ "identity": {
1054
+ "fallbackBotName": "Bot",
1055
+ "fallbackPlaceholder": "Type your message...",
1056
+ "fallbackFirstMessage": "Hello! How can I help you today?",
1057
+ "minimize": "Minimize",
1058
+ "minimizeChat": "Minimize chat",
1059
+ "botMessage": "Bot message",
1060
+ "suggestedPrompts": "Suggested prompts",
1061
+ "chatMessage": "Chat message",
1062
+ "typeYourMessageAria": "Type your message",
1063
+ "sendMessage": "Send message"
1064
+ },
1065
+ "appointments": {
1066
+ "fallbackBotName": "Appointments Bot",
1067
+ "noProviders": "No calendar providers configured yet",
1068
+ "noProvidersHint": "Click \"Add Calendar Provider\" to get started",
1069
+ "userQuery": "User Query",
1070
+ "calendarIconAlt": "Calendar Icon"
1071
+ },
1072
+ "triage": {
1073
+ "fallbackBotName": "Triage Bot",
1074
+ "noRoutes": "No routing destinations configured yet",
1075
+ "noRoutesHint": "Click \"Add Routing Destination\" to get started",
1076
+ "user": "User",
1077
+ "evaluatesAndRoutes": "Evaluates & Routes"
1078
+ },
1079
+ "opticalRead": {
1080
+ "noFields": "No extraction fields configured yet",
1081
+ "noFieldsHint": "Click \"Add Extraction Field\" to get started",
1082
+ "clientPreviewLabel": "How users will see it",
1083
+ "editButton": "Edit",
1084
+ "sendButton": "Send",
1085
+ "previewNote": "Inputs render disabled until extraction. Users tap Edit to correct, Send to submit."
1086
+ },
1087
+ "knowledge": {
1088
+ "unlinkTitle": "Unlink from this bot (file remains in bot space)",
1089
+ "deleteTitle": "Delete document permanently",
1090
+ "deleteConfirm": "Are you sure you want to delete \"{name}\"? This will permanently remove the file and cannot be undone.",
1091
+ "deleteError": "Failed to delete file",
1092
+ "uploadedDocuments": "Uploaded Documents",
1093
+ "noUploadedDocs": "No uploaded documents",
1094
+ "uploadDocsLeft": "Upload documents on the left",
1095
+ "linkedFromBotSpace": "Linked from Bot Space",
1096
+ "noLinkedDocs": "No linked documents",
1097
+ "selectSharedFilesHint": "Select shared files from the bot space",
1098
+ "linkedTooltip": "Uploaded docs become part of this botspace by default",
1099
+ "linkedFooter": "Linked documents remain in the bot space when unlinked from this bot.",
1100
+ "ragInfo": "These documents will be processed and used to provide context for your bot's responses through RAG (Retrieval-Augmented Generation).",
1101
+ "fileCount": "{count} {count, plural, one {file} other {files}}",
1102
+ "untitled": "Untitled",
1103
+ "unknown": "Unknown",
1104
+ "fileFallback": "FILE",
1105
+ "embedding": {
1106
+ "title": "Vector Embeddings",
1107
+ "ready": "Ready",
1108
+ "notGenerated": "Not generated",
1109
+ "chunks": "Chunks",
1110
+ "model": "Model",
1111
+ "sourceDocuments": "Source Documents",
1112
+ "generated": "Generated",
1113
+ "embeddedFiles": "Embedded files",
1114
+ "technicalDetails": "Technical details",
1115
+ "noEmbeddingsYet": "No embeddings yet",
1116
+ "uploadFirst": "Upload documents in the Documents tab first.",
1117
+ "clickToGenerate": "Click below to chunk and embed your documents locally.",
1118
+ "generating": "Generating…",
1119
+ "embeddingDocs": "Embedding documents…",
1120
+ "regenerate": "Regenerate Embeddings",
1121
+ "generate": "Generate Vector Embeddings",
1122
+ "errorNoDocuments": "Please upload at least one document first",
1123
+ "errorGenerationFailed": "Failed to generate embeddings",
1124
+ "doneStatus": "Done! {count} chunks embedded with {model}.",
1125
+ "regenWarning": "If you change the document set, regenerate to keep the artifact in sync.",
1126
+ "vectorModeInfo": "In vector mode, the bot embeds queries in-process using the bundled multilingual-e5-small ONNX model and runs cosine similarity locally. No factory dependency at runtime."
1127
+ }
1128
+ },
1129
+ "form": {
1130
+ "validate": "Validate",
1131
+ "validateInput": "Validate input",
1132
+ "selectOption": "Select an option...",
1133
+ "noStructure": "No form structure generated",
1134
+ "noStructureHint": "Generate a form to see the preview",
1135
+ "editJsonTitle": "Edit Form Structure (JSON)",
1136
+ "openLargerView": "Open in larger view",
1137
+ "expand": "Expand",
1138
+ "generatedJsonLabel": "Generated Form Structure (JSON)",
1139
+ "validJson": "Valid JSON",
1140
+ "invalidJson": "Invalid JSON",
1141
+ "jsonParseError": "JSON Parse Error:",
1142
+ "editJsonHelper": "Edit this JSON to customize the form structure. Changes will be reflected in the Fields Display tab.",
1143
+ "branches": "Branches",
1144
+ "requiredBadge": "Required",
1145
+ "piiBadge": "PII"
1146
+ },
1147
+ "bot": {
1148
+ "missingConfig": "Add a provider, model, and API key in step 1 to start the preview bot.",
1149
+ "livePreview": "Live preview",
1150
+ "resetPreview": "Reset preview",
1151
+ "iframeTitle": "Bot preview",
1152
+ "skippedInPreview": "(skipped in preview)",
1153
+ "webhookSideEffect": "Webhook would POST to {url}",
1154
+ "webhookNoUrl": "(no URL)",
1155
+ "submitFormSideEffect": "Form would submit to control plane",
1156
+ "genericSideEffect": "Side effect skipped in preview"
1157
+ }
1158
+ },
1159
+ "botSummary": {
1160
+ "title": "Bot Summary",
1161
+ "whyFillThis": "Why fill this out?",
1162
+ "tooltipLine1": "The bot summary helps other bots in your network understand what this bot does and what knowledge it holds.",
1163
+ "tooltipLine2": "This enables smarter routing, triage, and multi-bot orchestration.",
1164
+ "description": "Describe this bot's role in your network.",
1165
+ "notSystemPrompt": "Not a System Prompt",
1166
+ "placeholder": "Describe what this bot does and the knowledge it has. E.g., 'Handles billing inquiries with access to pricing docs and FAQs.'",
1167
+ "characters": "characters",
1168
+ "optionalBadge": "Optional - Deploy to save and use this summary in your network."
1169
+ }
1170
+ },
1171
+ "settings": {
1172
+ "title": "Settings",
1173
+ "subtitle": "Manage your account settings and preferences",
1174
+ "tabs": {
1175
+ "apiKeys": "API Keys",
1176
+ "account": "Account",
1177
+ "servicePlan": "Service Plan",
1178
+ "languages": "Languages",
1179
+ "botSpaces": "Bot Spaces",
1180
+ "builderConfig": "Builder Config",
1181
+ "region": "Region",
1182
+ "auditLogs": "Audit Logs",
1183
+ "admin": "Admin"
1184
+ },
1185
+ "languages": {
1186
+ "title": "Language Preferences",
1187
+ "description": "Choose your preferred language for the interface",
1188
+ "preferredLanguage": "Preferred Language",
1189
+ "languageHelper": "This setting will be applied across all your sessions",
1190
+ "saveLanguage": "Save Language",
1191
+ "saveSuccess": "Language preference saved successfully",
1192
+ "saveError": "Failed to save language preference",
1193
+ "aboutTitle": "About Language Settings",
1194
+ "aboutItem1": "Your language preference is stored in your account",
1195
+ "aboutItem2": "Changes will take effect after saving",
1196
+ "aboutItem3": "Some content may not be translated yet",
1197
+ "locales": {
1198
+ "en": "English",
1199
+ "es": "Spanish (Español)",
1200
+ "fr": "French (Français)",
1201
+ "de": "German (Deutsch)",
1202
+ "pt": "Portuguese (Português)",
1203
+ "ja": "Japanese (日本語)",
1204
+ "zh": "Chinese (中文)",
1205
+ "ko": "Korean (한국어)",
1206
+ "uk": "Ukrainian (Українська)",
1207
+ "ar": "Arabic (العربية)",
1208
+ "nl": "Dutch (Nederlands)",
1209
+ "sw": "Swahili (Kiswahili)"
1210
+ }
1211
+ },
1212
+ "region": {
1213
+ "title": "Deployment Region",
1214
+ "description": "Configure the default AWS region for bot deployments",
1215
+ "currentRegion": "Current Default Region",
1216
+ "selectRegion": "Select Default Region",
1217
+ "regionHelp": "New deployments will use this region by default. Users can override this setting per deployment.",
1218
+ "saveSuccess": "Default region updated successfully",
1219
+ "unsavedChanges": "You have unsaved changes",
1220
+ "infoTitle": "About Region Settings",
1221
+ "infoDescription": "The deployment region determines where your bot's infrastructure runs. Choosing a region closer to your users can improve response times. Individual deployments can override this default setting."
1222
+ },
1223
+ "account": {
1224
+ "title": "Account Information",
1225
+ "emailAddress": "Email Address",
1226
+ "userId": "User ID",
1227
+ "logout": "Logout",
1228
+ "loggingOut": "Logging out...",
1229
+ "logoutConfirm": "Are you sure you want to logout?",
1230
+ "logoutNote": "You will be signed out of your account",
1231
+ "dangerZone": "Danger Zone",
1232
+ "deleteAccount": "Delete Account",
1233
+ "deleteAdminWarning": "Permanently delete your account and all associated data including bots, bot spaces, and contributor accounts that are only affiliated with your organization. This action cannot be undone.",
1234
+ "deleteUserWarning": "Permanently delete your account and all your personal data including bots, documents, and API keys. Your bot space memberships will be removed. This action cannot be undone."
1235
+ },
1236
+ "servicePlan": {
1237
+ "title": "Service Plan",
1238
+ "description": "View your current plan, usage, and available features",
1239
+ "currentPlan": "Your current subscription plan",
1240
+ "usage": "Current Usage",
1241
+ "deployedBots": "Deployed Bots",
1242
+ "botSpaces": "Bot Spaces",
1243
+ "users": "Users",
1244
+ "includedFeatures": "Included Features",
1245
+ "allPlans": "Available Plans",
1246
+ "current": "Current",
1247
+ "bots": "bots",
1248
+ "spaces": "spaces",
1249
+ "usersLabel": "users",
1250
+ "organization": "Organization",
1251
+ "needMore": "Need More?",
1252
+ "contactUs": "Contact us to discuss upgrading your plan or custom enterprise solutions."
1253
+ },
1254
+ "apiKeys": {
1255
+ "title": "API Keys",
1256
+ "description": "Save your LLM provider API keys for easy reuse across deployments",
1257
+ "addKey": "+ Add API Key",
1258
+ "addNewKey": "Add New API Key",
1259
+ "name": "Name",
1260
+ "namePlaceholder": "e.g., My OpenAI Key",
1261
+ "provider": "Provider",
1262
+ "apiKey": "API Key",
1263
+ "apiKeyPlaceholder": "Enter your API key",
1264
+ "saving": "Saving...",
1265
+ "saveKey": "Save API Key",
1266
+ "loading": "Loading API keys...",
1267
+ "noKeys": "No API keys saved yet",
1268
+ "noKeysHint": "Add your first API key to get started",
1269
+ "added": "Added {date}",
1270
+ "deleteConfirm": "Are you sure you want to delete this API key?",
1271
+ "saveSuccess": "API key saved successfully",
1272
+ "deleteSuccess": "API key deleted successfully",
1273
+ "loadError": "Failed to load API keys",
1274
+ "saveError": "Failed to save API key",
1275
+ "deleteError": "Failed to delete API key",
1276
+ "nameAndKeyRequired": "Name and API key are required",
1277
+ "awsRegion": "AWS Region",
1278
+ "authentication": "Authentication",
1279
+ "useIamRole": "Use IAM Role",
1280
+ "useIamRoleHint": "Uses the IAM role attached to the Kubernetes pod (recommended for production)",
1281
+ "useExplicitCredentials": "Use Explicit Credentials",
1282
+ "useExplicitCredentialsHint": "Provide AWS access key and secret key directly",
1283
+ "awsAccessKeyId": "AWS Access Key ID",
1284
+ "awsSecretAccessKey": "AWS Secret Access Key",
1285
+ "defaultBotConfig": {
1286
+ "title": "Default Bot Configuration",
1287
+ "description": "Select an API key and model to use as the default when creating new bots with the builder.",
1288
+ "selectKey": "Default API Key",
1289
+ "selectModel": "Default Model",
1290
+ "noDefault": "No default (use auto-select)",
1291
+ "selectModelPlaceholder": "Select a model",
1292
+ "selectKeyFirst": "Select an API key to see available models",
1293
+ "currentSelection": "Current default",
1294
+ "noModel": "No model selected",
1295
+ "save": "Save Default"
1296
+ }
1297
+ },
1298
+ "botSpaces": {
1299
+ "title": "Bot Spaces",
1300
+ "description": "Organize chatbots into spaces and control contributor access",
1301
+ "createSpace": "+ Create Bot Space",
1302
+ "createNewSpace": "Create New Bot Space",
1303
+ "name": "Name",
1304
+ "namePlaceholder": "e.g., customer-support",
1305
+ "nameHint": "Only letters, numbers, underscores, and hyphens allowed",
1306
+ "descriptionLabel": "Description",
1307
+ "descriptionPlaceholder": "Optional description for this bot space",
1308
+ "creating": "Creating...",
1309
+ "create": "Create Bot Space",
1310
+ "loading": "Loading bot spaces...",
1311
+ "noSpaces": "No bot spaces created yet",
1312
+ "noSpacesHint": "Create your first bot space to organize your chatbots",
1313
+ "botCount": "{count} bots",
1314
+ "created": "Created {date}",
1315
+ "invite": "Invite",
1316
+ "manage": "Manage",
1317
+ "deleteConfirm": "Are you sure you want to delete this bot space? All bots inside it will be permanently deleted.",
1318
+ "createSuccess": "Bot space created successfully",
1319
+ "deleteSuccess": "Bot space deleted successfully",
1320
+ "loadError": "Failed to load bot spaces",
1321
+ "createError": "Failed to create bot space",
1322
+ "deleteError": "Failed to delete bot space",
1323
+ "nameRequired": "Name is required",
1324
+ "nameInvalid": "Name can only contain letters, numbers, underscores, and hyphens",
1325
+ "aboutTitle": "About Bot Spaces",
1326
+ "aboutItem1": "Bot spaces let you group related chatbots together",
1327
+ "aboutItem2": "Grant contributors read or write access to specific spaces",
1328
+ "aboutItem3": "Admins have full access to all bot spaces in the organization",
1329
+ "invitationSent": "Invitation sent successfully"
1330
+ },
1331
+ "auditLogs": {
1332
+ "title": "Audit Logs",
1333
+ "description": "View all actions performed in your organization",
1334
+ "exportCsv": "Export CSV",
1335
+ "exportJson": "Export JSON",
1336
+ "loadError": "Failed to load audit logs",
1337
+ "externalIntegration": "External Integration",
1338
+ "webhookDescription": "Send audit logs to an external SIEM or logging service via webhook.",
1339
+ "webhookUrl": "Webhook URL",
1340
+ "webhookUrlPlaceholder": "https://your-siem.example.com/webhook",
1341
+ "enableWebhook": "Enable webhook",
1342
+ "hmacEnabled": "HMAC signing enabled",
1343
+ "webhookSecretWarning": "Webhook Secret (copy now - won't be shown again)",
1344
+ "saveSettings": "Save Settings",
1345
+ "testWebhook": "Test Webhook",
1346
+ "regenerateSecret": "Regenerate Secret",
1347
+ "regenerateConfirm": "Regenerate the webhook secret? You will need to update your receiving endpoint.",
1348
+ "webhookSaved": "Webhook settings saved",
1349
+ "secretRegenerated": "New secret generated",
1350
+ "testSuccess": "Test webhook sent successfully",
1351
+ "saveError": "Failed to save webhook settings",
1352
+ "testError": "Webhook test failed",
1353
+ "regenerateError": "Failed to regenerate secret",
1354
+ "payloadFormat": "Webhook Payload Format",
1355
+ "payloadDescription": "Each audit event is sent as a POST request with headers:",
1356
+ "headerEvent": "X-Audit-Event: event_type",
1357
+ "headerTimestamp": "X-Audit-Timestamp: ISO timestamp",
1358
+ "headerSignature": "X-Audit-Signature: sha256=hmac (if secret configured)"
1359
+ },
1360
+ "admin": {
1361
+ "title": "Admin Dashboard",
1362
+ "description": "Manage users and view system-wide information",
1363
+ "allUsers": "All Users",
1364
+ "loadingUsers": "Loading users...",
1365
+ "noUsers": "No users found",
1366
+ "loadError": "Failed to load users",
1367
+ "tableHeaders": {
1368
+ "name": "Name",
1369
+ "email": "Email",
1370
+ "organization": "Organization",
1371
+ "role": "Role",
1372
+ "created": "Created"
1373
+ },
1374
+ "you": "You",
1375
+ "stats": {
1376
+ "totalUsers": "Total Users",
1377
+ "admins": "Admins",
1378
+ "contributors": "Contributors"
1379
+ }
1380
+ },
1381
+ "builderConfig": {
1382
+ "title": "Builder Configuration",
1383
+ "description": "Configure which AI model powers the bot builder and set defaults for bot creation",
1384
+ "builderTitle": "Builder Model Driver",
1385
+ "builderDescription": "Select which AI model powers the bot builder interface. This model handles conversations and tool execution.",
1386
+ "defaultBotTitle": "Default Model for Bot Creation",
1387
+ "defaultBotDescription": "Pre-select these settings when creating new bots via the builder. Users can override during deployment.",
1388
+ "provider": "Provider",
1389
+ "apiKey": "API Key",
1390
+ "model": "Model",
1391
+ "selectProvider": "Select provider...",
1392
+ "selectKey": "Select API key...",
1393
+ "selectModel": "Select model...",
1394
+ "noKeysForProvider": "No API keys saved for this provider. Add one in API Keys tab.",
1395
+ "useSameAsBuilder": "Use same settings as builder",
1396
+ "saveConfig": "Save Configuration",
1397
+ "saveSuccess": "Builder configuration saved successfully",
1398
+ "saveError": "Failed to save builder configuration",
1399
+ "aboutTitle": "About Builder Configuration",
1400
+ "aboutItem1": "The builder model handles the conversational bot creation interface",
1401
+ "aboutItem2": "Default bot settings are pre-selected when deploying via the builder",
1402
+ "aboutItem3": "Tool-use is supported by Claude, GPT, Gemini, and more",
1403
+ "displaySettings": {
1404
+ "title": "Display Settings",
1405
+ "description": "Configure how the Modulo assistant appears in the interface",
1406
+ "disableAnimation": "Disable helper animation",
1407
+ "disableAnimationHint": "Shows Modulo as a static icon instead of an animated helper"
1408
+ }
1409
+ },
1410
+ "mojulo": {
1411
+ "title": "Settings",
1412
+ "subtitle": "Configure the API keys that power your bots and the cloud credentials used to deploy them.",
1413
+ "noKeyGate": "The builders need an LLM provider key to run. Add one in the LLM Keys tab and head back.",
1414
+ "tabs": {
1415
+ "llm": "LLM Keys",
1416
+ "provider": "Provider Keys",
1417
+ "language": "Language Setting"
1418
+ },
1419
+ "form": {
1420
+ "addKey": "Add a key",
1421
+ "name": "Display name",
1422
+ "provider": "Provider",
1423
+ "apiKey": "API key",
1424
+ "ollamaHost": "Host URL",
1425
+ "makeDefault": "Make this the default key",
1426
+ "ollamaNoDefault": "Ollama can't be the default — the chat builder needs a cloud provider.",
1427
+ "saving": "Saving…",
1428
+ "save": "Save key",
1429
+ "saveError": "Save failed"
1430
+ },
1431
+ "list": {
1432
+ "title": "Stored keys",
1433
+ "loading": "Loading…",
1434
+ "empty": "No keys yet.",
1435
+ "defaultBadge": "default",
1436
+ "makeDefault": "Make default",
1437
+ "delete": "Delete"
1438
+ },
1439
+ "llm": {
1440
+ "title": "LLM Keys",
1441
+ "description": "Powers the bot builder and gets baked into every bot you compile.",
1442
+ "defaultName": "Default",
1443
+ "placeholder": "sk-…",
1444
+ "bedrockPlaceholder": "{\"region\":\"us-east-1\",\"accessKeyId\":\"…\",\"secretAccessKey\":\"…\"}",
1445
+ "ollamaPlaceholder": "http://localhost:11434",
1446
+ "providers": {
1447
+ "anthropic": "Anthropic",
1448
+ "openai": "OpenAI",
1449
+ "bedrock": "AWS Bedrock (paste JSON credentials)",
1450
+ "ollama": "Ollama (local — paste host URL)"
1451
+ }
1452
+ },
1453
+ "provider": {
1454
+ "title": "Provider Keys",
1455
+ "description": "Cloud-host credentials. Used when you deploy a bot to a cloud provider from the control plane.",
1456
+ "defaultName": "Fly.io",
1457
+ "placeholder": "fo1_…",
1458
+ "providers": {
1459
+ "fly": "Fly.io"
1460
+ }
1461
+ },
1462
+ "language": {
1463
+ "title": "Language Setting",
1464
+ "description": "Choose the language used in the control plane interface.",
1465
+ "label": "Interface language"
1466
+ }
1467
+ }
1468
+ },
1469
+ "deployments": {
1470
+ "title": "Deployments",
1471
+ "loading": "Loading deployments...",
1472
+ "empty": "No deployments in this bot space",
1473
+ "columns": {
1474
+ "botName": "Bot Name",
1475
+ "status": "Status",
1476
+ "deployed": "Deployed",
1477
+ "by": "By"
1478
+ },
1479
+ "history": {
1480
+ "title": "Deployment History",
1481
+ "noHistory": "No deployment history yet",
1482
+ "historyWillAppear": "History will appear after the next deployment",
1483
+ "event": "Event",
1484
+ "status": "Status",
1485
+ "date": "Date",
1486
+ "by": "By",
1487
+ "config": "Config"
1488
+ },
1489
+ "embed": {
1490
+ "title": "Embed Script",
1491
+ "description": "Copy this script to embed the chatbot on your website:"
1492
+ },
1493
+ "confirmDelete": "Are you sure you want to delete \"{name}\"? This will destroy the deployment and cannot be undone."
1494
+ },
1495
+ "cloudDeploy": {
1496
+ "title": "Deploy to Cloud",
1497
+ "backToDashboard": "← Back to dashboard",
1498
+ "loading": "Loading…",
1499
+ "botLabel": "Bot:",
1500
+ "protocolsLabel": "protocols: {protocols}",
1501
+ "statusPills": {
1502
+ "pending": "Pending",
1503
+ "deploying": "Deploying",
1504
+ "running": "Running",
1505
+ "paused": "Paused",
1506
+ "failed": "Failed",
1507
+ "destroyed": "Destroyed"
1508
+ },
1509
+ "artifact": {
1510
+ "title": "Latest artifact",
1511
+ "status": "Status",
1512
+ "configHash": "Config hash",
1513
+ "lastBuiltHash": "Last built hash",
1514
+ "artifactPath": "Artifact path",
1515
+ "notBuiltYet": "— (not built yet)",
1516
+ "staleWarning": "Config edited since last build. Cloud deploy will rebuild automatically, or you can rebuild now.",
1517
+ "missingWarning": "No artifact yet. Cloud deploy will build it automatically, or you can build now to preview.",
1518
+ "buildZip": "Build ZIP",
1519
+ "rebuildZip": "Rebuild ZIP",
1520
+ "downloadZip": "Download .zip"
1521
+ },
1522
+ "provider": {
1523
+ "title": "Provider",
1524
+ "fly": {
1525
+ "name": "Fly.io",
1526
+ "description": "Single-region machine + persistent volume"
1527
+ }
1528
+ },
1529
+ "fly": {
1530
+ "title": "Fly.io options",
1531
+ "region": "Region",
1532
+ "regionHint": "3-letter Fly region code (iad, sjc, lhr, nrt, etc.)",
1533
+ "volumeSize": "Volume size (GB)",
1534
+ "volumeHint": "Persistent storage for SQLite (1GB is plenty for most bots)",
1535
+ "cpuCount": "CPU count",
1536
+ "cpuHint": "shared CPUs",
1537
+ "memory": "Memory (MB)",
1538
+ "memoryHint": "1024 MB recommended",
1539
+ "tokenNote": "Uses your <mono>FLY_API_TOKEN</mono> from the control plane env. Your account, your bill.",
1540
+ "deploy": "Deploy",
1541
+ "redeploy": "Redeploy",
1542
+ "deploying": "Deploying…"
1543
+ },
1544
+ "status": {
1545
+ "title": "Status",
1546
+ "provider": "Provider",
1547
+ "appName": "App name",
1548
+ "url": "URL",
1549
+ "region": "Region",
1550
+ "lastDeployed": "Last deployed",
1551
+ "errorPrefix": "error: {error}",
1552
+ "destroy": "Destroy"
1553
+ },
1554
+ "errors": {
1555
+ "deployFailed": "Deploy failed ({status})",
1556
+ "destroyFailed": "Destroy failed ({status})",
1557
+ "buildFailed": "Build failed ({status})"
1558
+ },
1559
+ "confirmDestroy": "Destroy the cloud app, machine, and volume? Conversation data on the volume will be permanently deleted."
1560
+ },
1561
+ "analytics": {
1562
+ "title": "Analytics",
1563
+ "loading": "Loading analytics...",
1564
+ "loadingConversations": "Loading conversation analytics...",
1565
+ "analyzingQuestions": "Analyzing user questions...",
1566
+ "failedToLoad": "Failed to load deployment",
1567
+ "failedToLoadAnalytics": "Failed to load analytics data",
1568
+ "chatbotMetrics": "Chatbot Metrics",
1569
+ "conversationAnalytics": "Conversation Analytics",
1570
+ "topQuestions": "Top User Questions & Topics",
1571
+ "metrics": {
1572
+ "age": "Age",
1573
+ "uptime": "Uptime",
1574
+ "documents": "Documents",
1575
+ "lastUpdated": "Last Updated",
1576
+ "totalConversations": "Total Conversations",
1577
+ "totalMessages": "Total Messages",
1578
+ "formStarts": "Form Starts",
1579
+ "formCompletes": "Form Completes",
1580
+ "completionRate": "{rate}% completion rate",
1581
+ "avgMessagesPerConv": "Avg Messages/Conv"
1582
+ },
1583
+ "badges": {
1584
+ "formCollection": "Form Collection",
1585
+ "live": "Live"
1586
+ },
1587
+ "searchTerms": {
1588
+ "longPhrases": "Long Phrases",
1589
+ "phrases": "Phrases",
1590
+ "words": "Words",
1591
+ "analyzed": "Analyzed {count} user messages",
1592
+ "noData": "No conversation data available yet",
1593
+ "noDataHint": "Data will appear here after users interact with your chatbot"
1594
+ },
1595
+ "uptime": {
1596
+ "inProgress": "In progress...",
1597
+ "failed": "Failed",
1598
+ "notAvailable": "N/A"
1599
+ }
1600
+ },
1601
+ "conversations": {
1602
+ "title": "Conversations",
1603
+ "totalConversations": "{count} total conversations",
1604
+ "total": "{count} total",
1605
+ "dashboardLink": "← Dashboard",
1606
+ "backToDashboard": "← Back to dashboard",
1607
+ "tabs": {
1608
+ "conversations": "Conversations",
1609
+ "storage": "Storage"
1610
+ },
1611
+ "unreachable": {
1612
+ "title": "Bot unreachable",
1613
+ "message": "The control plane could not reach this bot. It may be stopped, or the URL or API key may have changed. Reconnect from the dashboard to view conversations.",
1614
+ "reconnect": "Reconnect"
1615
+ },
1616
+ "search": {
1617
+ "dataSource": "Data Source",
1618
+ "conversationId": "Conversation ID",
1619
+ "partialId": "Partial ID...",
1620
+ "partialIdShort": "partial id",
1621
+ "from": "From",
1622
+ "to": "To",
1623
+ "search": "Search",
1624
+ "searching": "Searching...",
1625
+ "last24h": "Last 24h",
1626
+ "last7days": "Last 7 days",
1627
+ "clear": "Clear",
1628
+ "resultsFound": "{count} result found",
1629
+ "resultsFoundPlural": "{count} results found",
1630
+ "result": "{count} result",
1631
+ "results": "{count} results",
1632
+ "noMatch": "No conversations match your search",
1633
+ "noMatchShort": "No conversations match.",
1634
+ "searchToFind": "Search to find conversations",
1635
+ "searchByIdOrDate": "Search by ID or date to find conversations.",
1636
+ "useIdOrDate": "Use conversation ID, date range, or both"
1637
+ },
1638
+ "timeAgo": {
1639
+ "days": "{count}d ago",
1640
+ "hours": "{count}h ago",
1641
+ "minutes": "{count}m ago"
1642
+ },
1643
+ "detail": {
1644
+ "started": "Started:",
1645
+ "startedAt": "Started {timestamp}",
1646
+ "turns": "{count} turns",
1647
+ "last": "Last:",
1648
+ "lastAt": "Last {timestamp}",
1649
+ "turn": "Turn {number}",
1650
+ "user": "User",
1651
+ "assistant": "Assistant",
1652
+ "ragContext": "RAG Context",
1653
+ "ragContextShort": "RAG context",
1654
+ "verifyChain": "Verify Chain",
1655
+ "showMetadata": "Show sources & metadata",
1656
+ "showMetadataShort": "Show metadata",
1657
+ "selectConversation": "Select a conversation to view messages",
1658
+ "selectConversationShort": "Select a conversation to view its turns.",
1659
+ "loadingMessages": "Loading messages...",
1660
+ "loading": "Loading…"
1661
+ },
1662
+ "storage": {
1663
+ "loading": "Loading storage info...",
1664
+ "loadingShort": "Loading…",
1665
+ "volumeCapacity": "Volume Capacity",
1666
+ "volumeCapacityShort": "Volume capacity",
1667
+ "used": "{used} used of {total}",
1668
+ "usedOfTotal": "{used} of {total}",
1669
+ "available": "{amount} available",
1670
+ "statsConversations": "Conversations",
1671
+ "statsTurns": "Total Turns",
1672
+ "statsTurnsShort": "Turns",
1673
+ "statsDbSize": "Database Size",
1674
+ "statsDbSizeShort": "DB size",
1675
+ "autoExtendPolicy": "Auto-Extend Policy",
1676
+ "autoExtendDescription": "Volume auto-extends at {threshold}% capacity, adding {increment}GB per expansion, up to a maximum of {limit}GB.",
1677
+ "exportTitle": "Export Conversations",
1678
+ "exportTitleShort": "Export",
1679
+ "exportDescription": "Download all conversations as a JSON file.",
1680
+ "exportDescriptionShort": "Download all conversations from this bot as JSON.",
1681
+ "exportButton": "Export All Conversations (JSON)",
1682
+ "exportButtonShort": "Export JSON",
1683
+ "exporting": "Exporting...",
1684
+ "refresh": "Refresh storage info",
1685
+ "retry": "Retry"
1686
+ },
1687
+ "loadMore": "Load more",
1688
+ "loadingMore": "Loading…",
1689
+ "errors": {
1690
+ "fetchConversations": "Failed to fetch conversations",
1691
+ "fetchDetails": "Failed to fetch conversation details",
1692
+ "fetchStorage": "Failed to fetch storage info",
1693
+ "exportFailed": "Failed to export conversations",
1694
+ "close": "Close"
1695
+ }
1696
+ },
1697
+ "submissions": {
1698
+ "title": "Form Submissions",
1699
+ "description": "View form submissions collected from {botName}",
1700
+ "total": "({count} total)",
1701
+ "dashboardLink": "← Dashboard",
1702
+ "backToDashboard": "← Back to dashboard",
1703
+ "unreachable": {
1704
+ "title": "Bot unreachable",
1705
+ "message": "The control plane could not reach this bot. It may be stopped, or the URL or API key may have changed. Reconnect from the dashboard to view submissions.",
1706
+ "reconnect": "Reconnect"
1707
+ },
1708
+ "search": {
1709
+ "last24h": "Last 24h",
1710
+ "last7days": "Last 7 days",
1711
+ "last30days": "Last 30 days",
1712
+ "from": "From",
1713
+ "to": "To",
1714
+ "search": "Search",
1715
+ "searching": "Searching...",
1716
+ "export": "Export CSV"
1717
+ },
1718
+ "list": {
1719
+ "title": "Submissions",
1720
+ "shown": "({count} shown)",
1721
+ "loading": "Loading...",
1722
+ "noSubmissions": "No submissions found for this period.",
1723
+ "searchToView": "Search to view submissions.",
1724
+ "fields": "{count} fields"
1725
+ },
1726
+ "detail": {
1727
+ "title": "Submission Details",
1728
+ "conversationId": "Conversation ID:",
1729
+ "submitted": "Submitted:",
1730
+ "formData": "Form Data",
1731
+ "field": "Field",
1732
+ "value": "Value",
1733
+ "metadata": "Metadata",
1734
+ "selectSubmission": "Select a submission to view details"
1735
+ }
1736
+ },
1737
+ "logs": {
1738
+ "title": "Live Logs",
1739
+ "refresh": "Refresh Logs",
1740
+ "refreshing": "Refreshing...",
1741
+ "loading": "Loading logs...",
1742
+ "search": {
1743
+ "label": "Search Logs",
1744
+ "placeholder": "Search messages, levels, instances..."
1745
+ },
1746
+ "lineCount": {
1747
+ "label": "Lines to Show",
1748
+ "lines": "{count} lines"
1749
+ },
1750
+ "autoRefresh": {
1751
+ "label": "Auto-refresh",
1752
+ "every10s": "Refresh every 10 seconds"
1753
+ },
1754
+ "noLogs": "No logs available",
1755
+ "noMatch": "No logs match your search",
1756
+ "showing": "Showing {filtered} of {total} log entries",
1757
+ "filteredBy": "(filtered by \"{query}\")"
1758
+ },
1759
+ "accessLevels": {
1760
+ "owner": "owner",
1761
+ "admin": "admin",
1762
+ "write": "write",
1763
+ "read": "read"
1764
+ },
1765
+ "errors": {
1766
+ "generic": "An error occurred. Please try again.",
1767
+ "failedToFetch": "Failed to fetch data",
1768
+ "failedToLoad": "Failed to load",
1769
+ "failedToSave": "Failed to save",
1770
+ "failedToDelete": "Failed to delete deployment",
1771
+ "failedToAssign": "Failed to assign bot space",
1772
+ "notFound": "Not found",
1773
+ "error": "Error"
1774
+ },
1775
+ "deleteAccount": {
1776
+ "title": "Delete Account",
1777
+ "loadingInfo": "Loading account information...",
1778
+ "permanentWarning": "This action is permanent and cannot be undone.",
1779
+ "willBeDeleted": "The following will be permanently deleted:",
1780
+ "deployments": "Deployments (Bots)",
1781
+ "documents": "Documents",
1782
+ "apiKeys": "API Keys",
1783
+ "botSpaces": "Bot Spaces",
1784
+ "contributorsToDelete": "Contributor accounts to be deleted",
1785
+ "contributorsNote": "These contributors are only members of your organization's bot spaces.",
1786
+ "organization": "Organization",
1787
+ "adminDeleteNote": "As an admin, deleting your account will also delete all organization data and contributor accounts that are only affiliated with your organization.",
1788
+ "userDeleteNote": "Your bot space memberships will be removed, but bot spaces and other users will not be affected.",
1789
+ "continue": "Continue",
1790
+ "confirmPrompt": "To confirm deletion, please type your email address:",
1791
+ "confirmEmail": "Confirm your email",
1792
+ "emailPlaceholder": "Type your email to confirm",
1793
+ "deleting": "Deleting...",
1794
+ "deleteMyAccount": "Delete My Account",
1795
+ "errors": {
1796
+ "loadFailed": "Failed to load account information",
1797
+ "loadError": "Error loading account information",
1798
+ "emailMismatch": "Please type your email address exactly to confirm",
1799
+ "deleteFailed": "Failed to delete account",
1800
+ "deleteError": "Error deleting account"
1801
+ }
1802
+ },
1803
+ "botSpaceInvite": {
1804
+ "title": "Invite to {spaceName}",
1805
+ "description": "Send an invitation to collaborate on this bot space. They'll receive an email with a link to join.",
1806
+ "emailLabel": "Email Address",
1807
+ "emailPlaceholder": "colleague@company.com",
1808
+ "accessLabel": "Access Level",
1809
+ "accessRead": "Read - Can view bots in this space",
1810
+ "accessWrite": "Write - Can create and edit bots",
1811
+ "accessAdmin": "Admin - Full access including inviting others",
1812
+ "accessNote": "Invited users will join as contributors to your organization.",
1813
+ "sending": "Sending...",
1814
+ "sendInvitation": "Send Invitation",
1815
+ "errors": {
1816
+ "sendFailed": "Failed to send invitation"
1817
+ }
1818
+ },
1819
+ "auditLogTable": {
1820
+ "loading": "Loading audit logs...",
1821
+ "noLogs": "No audit logs found",
1822
+ "noLogsHint": "Logs will appear here as actions are performed",
1823
+ "headers": {
1824
+ "time": "Time",
1825
+ "event": "Event",
1826
+ "actor": "Actor",
1827
+ "resource": "Resource",
1828
+ "outcome": "Outcome"
1829
+ },
1830
+ "events": {
1831
+ "authLoginSuccess": "Login",
1832
+ "authLoginFailure": "Login Failed",
1833
+ "authLogout": "Logout",
1834
+ "authSignup": "Signup",
1835
+ "deploymentCreate": "Deploy Created",
1836
+ "deploymentRedeploy": "Redeployed",
1837
+ "deploymentDelete": "Deploy Deleted",
1838
+ "botSpaceCreate": "Space Created",
1839
+ "botSpaceDelete": "Space Deleted",
1840
+ "botSpaceMemberAdd": "Member Added",
1841
+ "botSpaceMemberRemove": "Member Removed",
1842
+ "documentUpload": "Doc Uploaded",
1843
+ "documentDelete": "Doc Deleted",
1844
+ "apiKeyCreate": "API Key Created",
1845
+ "apiKeyDelete": "API Key Deleted",
1846
+ "userInvite": "User Invited",
1847
+ "userInviteAccept": "Invite Accepted",
1848
+ "auditWebhookUpdate": "Webhook Updated",
1849
+ "auditLogsExport": "Logs Exported"
1850
+ },
1851
+ "outcomes": {
1852
+ "success": "success",
1853
+ "failure": "failure",
1854
+ "denied": "denied"
1855
+ },
1856
+ "details": {
1857
+ "timestamp": "Full Timestamp",
1858
+ "requestId": "Request ID",
1859
+ "ipAddress": "IP Address",
1860
+ "userAgent": "User Agent",
1861
+ "resource": "Resource",
1862
+ "metadata": "Metadata"
1863
+ },
1864
+ "showing": "Showing {shown} of {total} logs",
1865
+ "loadMore": "Load More"
1866
+ },
1867
+ "auditLogFilters": {
1868
+ "eventTypes": {
1869
+ "allEvents": "All Events",
1870
+ "authentication": "Authentication",
1871
+ "deployments": "Deployments",
1872
+ "botSpaces": "Bot Spaces",
1873
+ "documents": "Documents",
1874
+ "apiKeys": "API Keys",
1875
+ "usersInvites": "Users & Invites",
1876
+ "conversations": "Conversations",
1877
+ "settings": "Settings",
1878
+ "auditSystem": "Audit System"
1879
+ },
1880
+ "outcomes": {
1881
+ "all": "All",
1882
+ "success": "Success",
1883
+ "failure": "Failure",
1884
+ "denied": "Denied"
1885
+ },
1886
+ "dateRange": "Date Range",
1887
+ "from": "From",
1888
+ "to": "To",
1889
+ "clear": "Clear"
1890
+ },
1891
+ "data": {
1892
+ "navLabel": "Data",
1893
+ "title": "Fleet Data",
1894
+ "subtitle": "Browse and aggregate conversation activity across every connected bot. Conversation content stays on the bot — only counts are merged in-process.",
1895
+ "loading": "Loading…",
1896
+ "tabs": {
1897
+ "explorer": "Explorer",
1898
+ "sql": "SQL",
1899
+ "analytics": "Analytics"
1900
+ },
1901
+ "fleet": {
1902
+ "unreachableBanner": "{unreachable} of {total} bots unreachable — results may be partial."
1903
+ },
1904
+ "explorer": {
1905
+ "filters": {
1906
+ "conversationId": "Conversation ID contains",
1907
+ "startDate": "Started after",
1908
+ "endDate": "Started before"
1909
+ },
1910
+ "search": "Search",
1911
+ "searching": "Searching…",
1912
+ "clear": "Clear",
1913
+ "hint": "Enter a conversation ID fragment or a date range to fan a search out across every connected bot.",
1914
+ "pagination": {
1915
+ "showing": "Showing {start} – {end} of {total}",
1916
+ "previous": "Previous",
1917
+ "next": "Next",
1918
+ "truncatedNotice": "Result set capped at the first 500 conversations across the fleet. Narrow your date range for older results."
1919
+ },
1920
+ "noConversations": "No conversations matched your filter."
1921
+ },
1922
+ "sql": {
1923
+ "placeholder": "SELECT bot_name, conversations_7d FROM bot_health ORDER BY conversations_7d DESC",
1924
+ "runQuery": "Run query",
1925
+ "running": "Running…",
1926
+ "exportCsv": "Export CSV",
1927
+ "exportJson": "Export JSON",
1928
+ "keyboardHint": "Press Cmd/Ctrl + Enter to run",
1929
+ "rowCount": "{count} rows",
1930
+ "truncated": "(truncated to 10,000)",
1931
+ "noResults": "No rows",
1932
+ "help": "Starter queries",
1933
+ "starterQueries": {
1934
+ "title": "Starter queries",
1935
+ "hint": "Each query reads from the in-memory rollup tables assembled per request from each bot's analytics endpoints. Click to load.",
1936
+ "dailyStats": "Daily conversation stats across the fleet",
1937
+ "botHealth": "Bot health (last 7 days)",
1938
+ "protocolDistribution": "Protocol usage distribution",
1939
+ "mostActiveBots": "Most active bots this week",
1940
+ "staleBots": "Bots not seen in the last 24h",
1941
+ "dailyByBot": "Daily activity joined to bot names"
1942
+ }
1943
+ },
1944
+ "schema": {
1945
+ "availableTables": "Schema reference",
1946
+ "clickToShow": "(click to show)",
1947
+ "clickToHide": "(click to hide)",
1948
+ "note": "Note:",
1949
+ "scopeNote": "These tables are built in process memory each query — one row per bot for the rollup tables, populated by calling each connected bot's analytics endpoints. Raw turn content is not exposed; for that, use the Explorer tab to drill into a single conversation."
1950
+ },
1951
+ "analytics": {
1952
+ "loading": "Loading fleet rollups…",
1953
+ "dateRange": {
1954
+ "last7days": "Last 7 days",
1955
+ "last14days": "Last 14 days",
1956
+ "last30days": "Last 30 days",
1957
+ "last90days": "Last 90 days"
1958
+ },
1959
+ "summary": {
1960
+ "totalConversations": "Conversations",
1961
+ "totalTurns": "Turns",
1962
+ "avgTurnsPerConversation": "Avg turns/conv",
1963
+ "activeBots": "Reachable bots"
1964
+ },
1965
+ "charts": {
1966
+ "dailyConversations": "Daily turn volume",
1967
+ "topBotsByActivity": "Top bots by turn volume",
1968
+ "activityHeatmap": "Activity heatmap (last 7 days)"
1969
+ },
1970
+ "noData": "No activity in this period.",
1971
+ "noActivityData": "No activity in the last 7 days.",
1972
+ "convs": "convs",
1973
+ "days": {
1974
+ "sun": "Sun",
1975
+ "mon": "Mon",
1976
+ "tue": "Tue",
1977
+ "wed": "Wed",
1978
+ "thu": "Thu",
1979
+ "fri": "Fri",
1980
+ "sat": "Sat"
1981
+ }
1982
+ },
1983
+ "table": {
1984
+ "headers": {
1985
+ "bot": "Bot",
1986
+ "started": "Started",
1987
+ "duration": "Duration",
1988
+ "turns": "Turns",
1989
+ "conversationId": "Conversation ID"
1990
+ }
1991
+ }
1992
+ },
1993
+ "documentUploader": {
1994
+ "title": "Upload Documents",
1995
+ "description": "Upload documents that your chatbot will use for RAG (Retrieval-Augmented Generation)",
1996
+ "uploading": "Uploading...",
1997
+ "chooseFiles": "Choose Files",
1998
+ "dropFilesHere": "Drop files here",
1999
+ "dragAndDropHint": "or drag and drop files here",
2000
+ "fileTypes": "PDF, TXT, MD, DOC, DOCX",
2001
+ "uploadedDocuments": "Uploaded Documents ({count})",
2002
+ "noDocumentsYet": "No documents uploaded yet",
2003
+ "noDocumentsHint": "Click \"Choose Files\" to get started",
2004
+ "skippedFiles": "Some files were skipped. Only PDF, TXT, MD, DOC, DOCX files are supported.",
2005
+ "deleteConfirm": "Are you sure you want to delete this file?",
2006
+ "uploadFailed": "Upload failed",
2007
+ "uploadFailedFallback": "Failed to upload files",
2008
+ "deleteFailed": "Delete failed",
2009
+ "deleteFailedFallback": "Failed to delete file"
2010
+ },
2011
+ "chatBuilder": {
2012
+ "title": "AI Bot Builder",
2013
+ "subtitle": "Describe the bot you want to build and I'll create it for you",
2014
+ "loading": "Loading AI Builder...",
2015
+ "newChat": "New Chat",
2016
+ "recentChats": "Recent Chats",
2017
+ "noPreviousChats": "No previous chats",
2018
+ "botPreview": "Bot Preview",
2019
+ "viewDeployedBot": "View deployed bot",
2020
+ "selectWorkspace": "Select workspace",
2021
+ "selectWorkspacePrompt": "Select a workspace to start building",
2022
+ "noWorkspaces": "No workspaces available",
2023
+ "createWorkspaceFirst": "Create one first",
2024
+ "backToDashboard": "Back to Dashboard",
2025
+ "welcome": {
2026
+ "title": "Build a Bot with AI",
2027
+ "description": "Describe the bot you want to create, upload relevant documents, and I'll help you configure and deploy it. No coding required.",
2028
+ "quickPrompts": {
2029
+ "customerSupport": {
2030
+ "title": "Customer Support Bot",
2031
+ "description": "Answer product questions",
2032
+ "prompt": "I need a customer support bot that can answer questions about our product"
2033
+ },
2034
+ "leadCapture": {
2035
+ "title": "Lead Capture Bot",
2036
+ "description": "Collect visitor information",
2037
+ "prompt": "Create a lead capture bot that collects name, email, and company info"
2038
+ },
2039
+ "faqAssistant": {
2040
+ "title": "FAQ Assistant",
2041
+ "description": "Answer common questions",
2042
+ "prompt": "Help me build an FAQ bot using our documentation"
2043
+ },
2044
+ "onboarding": {
2045
+ "title": "Onboarding Bot",
2046
+ "description": "Guide new users",
2047
+ "prompt": "I want to create a bot that helps onboard new customers"
2048
+ }
2049
+ }
2050
+ },
2051
+ "input": {
2052
+ "placeholder": "Describe the bot you want to build...",
2053
+ "defaultPlaceholder": "Type a message...",
2054
+ "dropFilesHere": "Drop files here...",
2055
+ "dropToAttach": "Drop files to attach them to your message",
2056
+ "hint": "Press Enter to send, Shift+Enter for new line. Drag files or click the clip to attach.",
2057
+ "hintShort": "Press Enter to send, Shift+Enter for new line",
2058
+ "hintWithAttach": "Drag & drop files or click attach. Press Enter to send.",
2059
+ "attachFiles": "Attach files",
2060
+ "attachDocuments": "Attach documents"
2061
+ },
2062
+ "tools": {
2063
+ "toolsExecuted": "{count} tool executed",
2064
+ "toolsExecutedPlural": "{count} tools executed",
2065
+ "uploadDocument": "Upload Document",
2066
+ "generateForm": "Generate Form",
2067
+ "deployBot": "Deploy Bot",
2068
+ "listDeployments": "List Deployments",
2069
+ "checkDeploymentStatus": "Check Deployment Status",
2070
+ "destroyDeployment": "Destroy Deployment",
2071
+ "getAnalytics": "Get Analytics",
2072
+ "getFormSubmissions": "Get Form Submissions",
2073
+ "listWorkspaces": "List Workspaces",
2074
+ "listDocuments": "List Documents",
2075
+ "listApiKeys": "List API Keys"
2076
+ },
2077
+ "documentPicker": {
2078
+ "title": "Select Documents",
2079
+ "noDocuments": "No documents in this workspace",
2080
+ "uploadFirst": "Upload documents first to use them for your bot",
2081
+ "selected": "{count} document selected",
2082
+ "selectedPlural": "{count} documents selected",
2083
+ "useSelected": "Use Selected"
2084
+ },
2085
+ "errors": {
2086
+ "failedToSend": "Failed to send message",
2087
+ "failedToLoadSession": "Failed to load session",
2088
+ "failedToLoadDocuments": "Failed to load documents"
2089
+ },
2090
+ "invertedPanel": {
2091
+ "createABot": "Create a Bot",
2092
+ "editBot": "Edit {name}",
2093
+ "fallbackBotName": "Bot",
2094
+ "private": "Private",
2095
+ "createTitle": "What kind of bot can I help you build?",
2096
+ "createDescription": "You can also attach documents to give it knowledge. Upload a file, or ask to refer to docs in the bot space.",
2097
+ "buildWithWizard": "Build with Wizard (Step by step configuration)",
2098
+ "editTitle": "Modify {name}",
2099
+ "editFallbackName": "your bot",
2100
+ "editDescription": "Tell me what you'd like to change. I'll load your current configuration and help you update it.",
2101
+ "editExamples": "Examples: \"Change the greeting\", \"Add a new form field\", \"Update the bot name\"",
2102
+ "errorPrefix": "Error:",
2103
+ "inputPlaceholder": "Describe what your bot should do...",
2104
+ "adjustMessage": "I'd like to adjust the configuration"
2105
+ },
2106
+ "status": {
2107
+ "ready": "Ready",
2108
+ "processing": "Processing",
2109
+ "awaitingConfirmation": "Awaiting confirmation",
2110
+ "deploying": "Deploying",
2111
+ "deployed": "Deployed",
2112
+ "editing": "Editing"
2113
+ },
2114
+ "success": {
2115
+ "botBuilt": "Bot built!",
2116
+ "botSaved": "Bot saved",
2117
+ "botBuiltMessage": "Your bot <strong>{name}</strong> is built and ready to download.",
2118
+ "botSavedMessage": "Your bot <strong>{name}</strong> is saved. Build it from your Bot Space when you're ready.",
2119
+ "liveUrl": "Live URL",
2120
+ "embedCode": "Embed Code",
2121
+ "downloadArtifact": "Download Artifact",
2122
+ "downloadWithDocs": "Download with Docs",
2123
+ "openBot": "Open Bot",
2124
+ "viewInBotSpace": "View in Bot Space"
2125
+ }
2126
+ },
2127
+ "login": {
2128
+ "subtitle": "Sign in to continue",
2129
+ "username": "Username",
2130
+ "password": "Password",
2131
+ "signIn": "Sign in",
2132
+ "signingIn": "Signing in…",
2133
+ "signOut": "Sign out",
2134
+ "invalid": "Invalid username or password"
2135
+ }
2136
+ }