@agent-native/core 0.186.0-nightly-20260923174435 → 0.186.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 (105) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/templates/analytics/CHANGELOG.md +6 -0
  3. package/corpus/templates/analytics/app/components/Markdown.tsx +3 -3
  4. package/corpus/templates/analytics/app/i18n/en-US.ts +1513 -3
  5. package/corpus/templates/analytics/app/routes/$.tsx +2 -2
  6. package/corpus/templates/analytics/app/routes/agents.tsx +2 -2
  7. package/corpus/templates/analytics/app/routes/analyses.$id.tsx +2 -2
  8. package/corpus/templates/analytics/app/routes/analyses._index.tsx +2 -2
  9. package/corpus/templates/analytics/app/routes/ask.tsx +2 -2
  10. package/corpus/templates/analytics/app/routes/dashboards.$id.tsx +2 -2
  11. package/corpus/templates/analytics/app/routes/data-dictionary.tsx +2 -2
  12. package/corpus/templates/analytics/app/routes/data-sources.tsx +2 -2
  13. package/corpus/templates/analytics/app/routes/extensions.$id.tsx +2 -2
  14. package/corpus/templates/analytics/app/routes/extensions._index.tsx +2 -2
  15. package/corpus/templates/analytics/app/routes/monitoring._index.tsx +2 -2
  16. package/corpus/templates/analytics/app/routes/sessions.$recordingId.tsx +2 -2
  17. package/corpus/templates/analytics/app/routes/sessions._index.tsx +2 -2
  18. package/corpus/templates/analytics/app/routes/settings.tsx +2 -2
  19. package/corpus/templates/analytics/app/routes/team.tsx +2 -2
  20. package/corpus/templates/analytics/changelog/2026-09-23-analytics-opens-faster-by-loading-translation-catalogs-and-r.md +6 -0
  21. package/corpus/templates/calendar/CHANGELOG.md +12 -0
  22. package/corpus/templates/calendar/app/i18n/en-US.ts +985 -3
  23. package/corpus/templates/calendar/app/i18n/index.ts +16 -11
  24. package/corpus/templates/calendar/app/routes/_app.$.tsx +2 -2
  25. package/corpus/templates/calendar/app/routes/_app.agent.tsx +2 -2
  26. package/corpus/templates/calendar/app/routes/_app.booking-links.tsx +2 -2
  27. package/corpus/templates/calendar/app/routes/_app.settings.tsx +2 -2
  28. package/corpus/templates/calendar/app/routes/_app.shared-availability.add.tsx +2 -4
  29. package/corpus/templates/calendar/app/routes/_app.team.tsx +2 -2
  30. package/corpus/templates/calendar/app/routes/booking-og-meta.ts +2 -2
  31. package/corpus/templates/calendar/app/routes/booking.manage.$token.tsx +2 -2
  32. package/corpus/templates/calendar/app/routes/event.tsx +2 -2
  33. package/corpus/templates/calendar/changelog/2026-09-23-calendar-opens-faster-by-loading-translated-catalogs-only-wh.md +6 -0
  34. package/corpus/templates/clips/CHANGELOG.md +10 -0
  35. package/corpus/templates/clips/app/components/library/recording-card.tsx +1 -1
  36. package/corpus/templates/clips/app/components/player/agent-view-count.tsx +61 -0
  37. package/corpus/templates/clips/app/components/player/recording-views-badge.tsx +57 -72
  38. package/corpus/templates/clips/changelog/2026-09-23-insights-charts-load-only-when-opened-keeping-the-recording-.md +6 -0
  39. package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +1 -1
  40. package/corpus/templates/content/app/components/layout/Header.tsx +1 -1
  41. package/corpus/templates/content/app/components/layout/Layout.tsx +5 -5
  42. package/corpus/templates/content/app/root.tsx +2 -1
  43. package/corpus/templates/design/.agents/skills/design-editor-architecture/SKILL.md +2 -2
  44. package/corpus/templates/design/CHANGELOG.md +7 -0
  45. package/corpus/templates/design/app/components/editor/PromptDialog.tsx +55 -20
  46. package/corpus/templates/design/app/i18n/en-US.ts +1964 -21
  47. package/corpus/templates/design/app/pages/Index.tsx +5 -1
  48. package/corpus/templates/design/app/pages/Templates.tsx +5 -1
  49. package/corpus/templates/design/app/routes/$.tsx +2 -2
  50. package/corpus/templates/design/app/routes/design-systems.tsx +2 -2
  51. package/corpus/templates/design/app/routes/design-systems_.setup.tsx +2 -2
  52. package/corpus/templates/design/app/routes/design.$id.tsx +2 -2
  53. package/corpus/templates/design/app/routes/extensions.$id.tsx +2 -2
  54. package/corpus/templates/design/app/routes/extensions._index.tsx +2 -2
  55. package/corpus/templates/design/app/routes/extensions.tsx +2 -2
  56. package/corpus/templates/design/app/routes/observability.tsx +2 -2
  57. package/corpus/templates/design/app/routes/present.$id.tsx +2 -2
  58. package/corpus/templates/design/app/routes/settings.tsx +2 -2
  59. package/corpus/templates/design/app/routes/team.tsx +2 -2
  60. package/corpus/templates/design/app/routes/templates.tsx +2 -2
  61. package/corpus/templates/design/app/routes/visual-edit.tsx +2 -2
  62. package/corpus/templates/design/app/routes/visual-edit_.$id.tsx +2 -2
  63. package/corpus/templates/design/changelog/2026-09-23-design-loads-translated-catalogs-and-ai-prompt-tools-only-wh.md +6 -0
  64. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +56 -13
  65. package/corpus/templates/plan/app/lib/plan-local-bridge.ts +2 -9
  66. package/corpus/templates/plan/app/lib/plan-return-path.ts +8 -0
  67. package/corpus/templates/slides/CHANGELOG.md +6 -0
  68. package/corpus/templates/slides/app/components/editor/AddSlidePopover.tsx +6 -17
  69. package/corpus/templates/slides/app/components/editor/DeferredPopoverFallback.tsx +148 -0
  70. package/corpus/templates/slides/app/components/editor/EditorActionCluster.tsx +7 -1
  71. package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +66 -42
  72. package/corpus/templates/slides/app/components/editor/PromptDialog.tsx +7 -284
  73. package/corpus/templates/slides/app/lib/deferred-editor-surfaces.ts +25 -0
  74. package/corpus/templates/slides/app/lib/portaled-layer.ts +7 -0
  75. package/corpus/templates/slides/app/lib/prompt-file-uploads.ts +269 -0
  76. package/corpus/templates/slides/app/pages/DeckEditor.tsx +3 -0
  77. package/corpus/templates/slides/app/pages/Index.tsx +139 -52
  78. package/corpus/templates/slides/changelog/2026-09-23-slides-loads-ai-prompt-tools-and-extra-slide-controls-only-w.md +6 -0
  79. package/dist/client/agent-chat/index.d.ts +2 -1
  80. package/dist/client/agent-chat/index.js +1 -1
  81. package/dist/client/chat/assistant-chat-history-version.d.ts +13 -0
  82. package/dist/client/chat/assistant-chat-history-version.js +18 -0
  83. package/dist/client/chat/message-components.d.ts +3 -8
  84. package/dist/client/chat/message-components.js +2 -18
  85. package/dist/client/chat/run-recovery.js +2 -1
  86. package/dist/client/lazy-chunk-retry-fallback.d.ts +3 -0
  87. package/dist/client/lazy-chunk-retry-fallback.js +9 -0
  88. package/dist/client/settings/deferred-builder-connect-popover.d.ts +1 -3
  89. package/dist/client/settings/deferred-builder-connect-popover.js +3 -9
  90. package/dist/collab/awareness.d.ts +2 -2
  91. package/dist/collab/routes.d.ts +1 -1
  92. package/dist/file-upload/actions/upload-image.d.ts +2 -2
  93. package/dist/notifications/routes.d.ts +3 -3
  94. package/dist/observability/routes.d.ts +8 -8
  95. package/dist/org/index.d.ts +1 -1
  96. package/dist/progress/routes.d.ts +1 -1
  97. package/dist/provider-api/actions/custom-provider-registration.d.ts +8 -8
  98. package/dist/provider-api/actions/provider-api.d.ts +12 -12
  99. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  100. package/dist/secrets/routes.d.ts +3 -3
  101. package/dist/server/agent-engine-ollama-models-route.d.ts +1 -1
  102. package/package.json +8 -4
  103. package/corpus/templates/analytics/app/i18n-data.ts +0 -13975
  104. package/corpus/templates/calendar/app/i18n-data.ts +0 -10572
  105. package/corpus/templates/design/app/i18n-data.ts +0 -17719
@@ -1,3 +1,1513 @@
1
- import { messagesByLocale } from "../i18n-data";
2
-
3
- export default messagesByLocale["en-US"];
1
+ export default {
2
+ creativeContext: {
3
+ title: "Library",
4
+ description:
5
+ "Reusable creative context that helps agents stay consistent across work.",
6
+ modeLabel: "Use creative context",
7
+ automatic: "Automatic",
8
+ automaticDescription:
9
+ "Let the agent choose the most relevant sources and context pack.",
10
+ off: "Off",
11
+ offDescription: "Create without applying saved creative context.",
12
+ activePack: "Current context pack",
13
+ noActivePack: "No context pack has been used in this session yet.",
14
+ pinned: "Pinned",
15
+ pin: "Pin",
16
+ unpin: "Unpin",
17
+ sourcesTitle: "Sources",
18
+ sourcesDescription:
19
+ "References, documents, and prior work available for creative reuse.",
20
+ searchTitle: "Search context",
21
+ searchDescription:
22
+ "Find exact details before reusing a claim, style, or decision.",
23
+ searchPlaceholder: "Search creative context",
24
+ searchPrompt: "Search across the sources in this library.",
25
+ noResults: "No matching context found.",
26
+ resultsLabel: "Results: {{count}}",
27
+ noSourcesTitle: "No creative context yet",
28
+ noSourcesDescription:
29
+ "Connect a source or ask the agent to capture reusable context for future work.",
30
+ connectSources: "Open connections",
31
+ refresh: "Refresh",
32
+ refreshing: "Refreshing…",
33
+ refreshed: "Refresh started",
34
+ refreshFailed: "Could not refresh this source.",
35
+ itemsLabel: "Items: {{count}}",
36
+ discoveredItems: "Discovered: {{count}}",
37
+ selectedItems: "Selected: {{count}}",
38
+ selectAll: "Select all",
39
+ clearSelection: "Clear",
40
+ packsTitle: "Context packs",
41
+ noPacks: "No context packs have been assembled yet.",
42
+ loading: "Loading creative context…",
43
+ unavailable: "Creative context is unavailable right now.",
44
+ stateSaveFailed: "Could not save the creative context preference.",
45
+ sourceError: "Needs attention",
46
+ personal: "Personal",
47
+ organization: "Organization",
48
+ addSource: "Add a source",
49
+ addToContext: "Add to context…",
50
+ sourceName: "Source name",
51
+ sourceReference: "Source reference",
52
+ preview: "Preview",
53
+ startImport: "Start import",
54
+ importing: "Importing…",
55
+ importComplete: "Import complete",
56
+ importFailed: "Import failed",
57
+ brandDnaTitle: "Inferred brand context",
58
+ publishedBrandContext: "Published brand context",
59
+ applyBrandContext: "Apply as my brand context",
60
+ applyingBrandContext: "Applying brand context…",
61
+ brandContextPublished: "Brand context published",
62
+ restrictedItems: "Restricted items: {{count}}",
63
+ unknownAccess: "Access unknown",
64
+ reviewRestricted: "Review restricted items",
65
+ approve: "Approve",
66
+ exclude: "Exclude",
67
+ packDetails: "Details",
68
+ influence: "Influence",
69
+ cancel: "Close",
70
+ saveFailed: "Could not save these changes.",
71
+ updateAvailable: "Update available",
72
+ submitUpdate: "Submit update",
73
+ submittingUpdate: "Submitting…",
74
+ submitUpdateTitle: "Submit the latest version?",
75
+ submitUpdateDescription:
76
+ 'Capture the current version of "{{name}}" and send it through this context’s approval policy. This may publish it to a broader audience.',
77
+ submitUpdateFailed: "Could not submit the latest version.",
78
+ chooseFiles: "Choose files",
79
+ chooseFolder: "Choose folder",
80
+ dropFiles: "Drop PPTX, DOCX, PDF, or image files here.",
81
+ promoteToOrganization: "Share with organization",
82
+ promotionDescription:
83
+ "Confirm the exact container and imported inventory before sharing this governed copy.",
84
+ promotionComplete: "Shared with the organization.",
85
+ manage: "Manage source",
86
+ pause: "Pause",
87
+ restore: "Restore",
88
+ delete: "Delete",
89
+ sourcePaused: "Source paused.",
90
+ sourceRestored: "Source restored.",
91
+ deleteSourceTitle: "Delete source?",
92
+ deleteSourceDescription:
93
+ "{{name}} will disappear immediately. Its imported context will be purged in the background.",
94
+ deletionQueued: "Source removed. Imported context is being purged.",
95
+ curateItems: "Curate items",
96
+ exemplar: "Exemplar",
97
+ ignore: "Ignore",
98
+ deprecated: "Deprecated",
99
+ star: "Star",
100
+ unstar: "Unstar",
101
+ deprecate: "Deprecate",
102
+ colors: "Colors",
103
+ fonts: "Fonts",
104
+ layouts: "Layout examples",
105
+ voice: "Voice",
106
+ generateWithContext: "Generate with this context",
107
+ chooseConnection: "Choose a workspace connection",
108
+ setupConnection: "Connect this provider before importing a source.",
109
+ connectProvider: "Connect provider",
110
+ choosePresentations: "Choose presentations",
111
+ googlePickerDescription:
112
+ "Choose the presentations Google should make available to this Library connection. No Drive-wide permission is requested.",
113
+ suggestions: "Review suggestions",
114
+ logo: "Canonical logo",
115
+ share: {
116
+ title: "Creative context",
117
+ documentation: "Creative Context documentation",
118
+ tabLabel: "Context",
119
+ pendingResource: "Pending resource",
120
+ publishedResource: "Published resource",
121
+ canonical: "Canonical",
122
+ reference: "Reference",
123
+ pendingReview: "Pending review",
124
+ published: "Published",
125
+ withdraw: "Withdraw",
126
+ requestChanges: "Request changes",
127
+ remove: "Remove",
128
+ chooseContext: "Choose a context",
129
+ selectedResources: "{{count}} selected resources",
130
+ noContexts: "No contexts are available yet.",
131
+ purpose: "Purpose",
132
+ reviewerNote: "Note for reviewers",
133
+ submit: "Submit",
134
+ broaderPublication:
135
+ "This context is shared more broadly than this resource. Publishing creates a governed copy available to the context's audience.",
136
+ newContextName: "New context name",
137
+ new: "New",
138
+ partialSubmission:
139
+ "{{submitted}} submitted; {{failed}} could not be submitted.",
140
+ resourceSubmitted: "{{count}} resource submitted.",
141
+ resourcesSubmitted: "{{count}} resources submitted.",
142
+ },
143
+ },
144
+ root: {
145
+ whatsNew: "What's new",
146
+ },
147
+ navigation: {
148
+ brand: "Analytics",
149
+ ask: "Ask",
150
+ overview: "Overview",
151
+ dashboard: "Dashboard",
152
+ dataSources: "Data Sources",
153
+ dataDictionary: "Data Dictionary",
154
+ sessions: "Sessions",
155
+ monitoring: "Monitoring",
156
+ monitoringUptime: "Uptime",
157
+ monitoringErrors: "Errors",
158
+ admin: "Admin",
159
+ agents: "Agents",
160
+ dashboards: "Dashboards",
161
+ analyses: "Analyses",
162
+ explorer: "Explorer",
163
+ team: "Team",
164
+ settings: "Settings",
165
+ navigation: "Navigation",
166
+ openNavigation: "Open navigation",
167
+ loadingDashboardTitle: "Loading dashboard title",
168
+ templateCatalog: "Catalog",
169
+ },
170
+ dashboardHeader: {
171
+ updated: "Updated {{date}}",
172
+ created: "Created {{date}}",
173
+ },
174
+ dashboard: {
175
+ sqlDashboard: "SQL dashboard",
176
+ historyTitle: "Dashboard history",
177
+ historyDescription:
178
+ "Restore a previous dashboard state. Restoring snapshots the current state first.",
179
+ historyEmpty:
180
+ "No history yet. Changes are saved here automatically after the next edit.",
181
+ historyRestore: "Restore",
182
+ historyRestored: "Dashboard restored",
183
+ historyRestoreFailed: "Couldn't restore dashboard",
184
+ historyRestoreQuestion: "Restore this dashboard version?",
185
+ historyRestoreWarning:
186
+ "This replaces the current dashboard layout and saves the current state in history.",
187
+ undo: "Undo",
188
+ undoSuccess: "Dashboard change undone",
189
+ undoFailed: "Couldn't undo dashboard change",
190
+ undoFailedWithMessage: "Couldn't undo dashboard change: {{message}}",
191
+ redo: "Redo",
192
+ redoSuccess: "Dashboard change redone",
193
+ redoFailed: "Couldn't redo dashboard change",
194
+ redoFailedWithMessage: "Couldn't redo dashboard change: {{message}}",
195
+ panelSettings: "Panel settings",
196
+ revenueOverTime: "Revenue over time",
197
+ recentSales: "Recent Sales",
198
+ recentSalesDescription: "You made 265 sales this month.",
199
+ },
200
+ dashboardOverview: {
201
+ title: "Dashboards",
202
+ description: "All dashboards you can access, organized your way.",
203
+ searchPlaceholder: "Search dashboards...",
204
+ newFolder: "New folder",
205
+ folderName: "Folder name",
206
+ folderScope: "Folder type",
207
+ personal: "Personal",
208
+ shared: "Shared",
209
+ createFolder: "Create folder",
210
+ loading: "Loading dashboards...",
211
+ loadFailed: "Couldn't load dashboards",
212
+ loadFailedDescription: "Try again to refresh your dashboard overview.",
213
+ empty: "No dashboards yet",
214
+ emptyDescription: "Dashboards you create or can access will appear here.",
215
+ noDashboards: "No dashboards in this folder.",
216
+ unfiled: "Unfiled",
217
+ moveDashboard: "Move dashboard",
218
+ folderCreateFailed: "Couldn't create folder",
219
+ moveFailed: "Couldn't move dashboard",
220
+ },
221
+ sidebar: {
222
+ collapseSidebar: "Collapse sidebar",
223
+ expandSidebar: "Expand sidebar",
224
+ collapseAsk: "Collapse Ask",
225
+ expandAsk: "Expand Ask",
226
+ collapseDashboards: "Collapse dashboards",
227
+ expandDashboards: "Expand dashboards",
228
+ collapseAnalyses: "Collapse analyses",
229
+ expandAnalyses: "Expand analyses",
230
+ showLess: "Show less",
231
+ showMore: "Show {{count}} more",
232
+ noAnalysesYet: "No analyses yet",
233
+ dashboardsLoadFailed: "Couldn't load dashboards.",
234
+ analysesLoadFailed: "Couldn't load analyses.",
235
+ favoritesUnavailable: "Favorites are unavailable right now",
236
+ retry: "Retry",
237
+ search: "Search",
238
+ searchShortcut: "Search ({{shortcut}})",
239
+ sectionSettings: "{{label}} settings",
240
+ show: "Show",
241
+ sortBy: "Sort by",
242
+ showHidden: "Show hidden",
243
+ used: "Used",
244
+ alphabetical: "A-Z",
245
+ manual: "Manual",
246
+ sortMostUsed: "Sort by most used",
247
+ sortMostUsedPersonal: "Sort by your opens in this browser",
248
+ sortAlphabetically: "Sort alphabetically",
249
+ sortManually: "Sort manually",
250
+ personalControlsNote:
251
+ "Used, sort, and manual order are personal to this browser.",
252
+ usedExplainer: "Counts how often you've opened each item in this browser.",
253
+ visibilityAll: "All",
254
+ visibilityPrivateOnly: "Mine",
255
+ visibilitySharedOnly: "Shared",
256
+ visibilityAllDescription: "Show all items",
257
+ visibilityPrivateOnlyDescription: "Show items visible only to you",
258
+ visibilitySharedOnlyDescription: "Show org-shared and public items",
259
+ hiddenAnalyses: "Hidden analyses",
260
+ shareWithOrg: "Share with org",
261
+ makePrivate: "Make private",
262
+ rename: "Rename",
263
+ copyLink: "Copy link",
264
+ unhide: "Unhide",
265
+ hide: "Hide",
266
+ archive: "Archive",
267
+ edit: "Edit",
268
+ delete: "Delete",
269
+ deletePermanently: "Delete permanently",
270
+ deletePermanentlyTitle: "Delete permanently?",
271
+ deletePermanentlyDescription:
272
+ "This permanently deletes “{{name}}” and cannot be undone.",
273
+ deletePermanentlyArchiveHint:
274
+ " To keep it recoverable, choose Archive instead.",
275
+ cancel: "Cancel",
276
+ deleteView: "Delete view {{name}}?",
277
+ deleteViewFailed: "Couldn't delete view",
278
+ deleteViewFailedWithMessage: "Couldn't delete view: {{message}}",
279
+ deleting: "Deleting...",
280
+ signOut: "Sign out",
281
+ signOutTitle: "Sign out?",
282
+ yes: "Yes",
283
+ favorite: "Favorite",
284
+ unfavorite: "Unfavorite",
285
+ favoritePersonal: "Favorite (personal to you)",
286
+ unfavoritePersonal: "Unfavorite (personal to you)",
287
+ itemActions: "{{name}} actions",
288
+ dragItem: "Drag {{name}}",
289
+ dragItemPersonal: "Drag {{name}} in your personal order",
290
+ visibilityPrivate: "Private",
291
+ visibilityOrg: "Shared with org",
292
+ visibilityPublic: "Public",
293
+ visibilityWithOwner: "{{visibility}} · {{owner}}",
294
+ linkCopied: "Link copied",
295
+ copyLinkFailed: "Couldn't copy link",
296
+ renameFailed: "Couldn't rename {{name}}",
297
+ renameFailedWithMessage: "Couldn't rename {{name}}: {{message}}",
298
+ deleteFailed: "Couldn't delete {{name}}",
299
+ deleteFailedWithMessage: "Couldn't delete {{name}}: {{message}}",
300
+ archiveFailed: "Couldn't archive {{name}}",
301
+ archiveFailedWithMessage: "Couldn't archive {{name}}: {{message}}",
302
+ hideFailed: "Couldn't hide {{name}}",
303
+ hideFailedWithMessage: "Couldn't hide {{name}}: {{message}}",
304
+ unhideFailed: "Couldn't unhide {{name}}",
305
+ unhideFailedWithMessage: "Couldn't unhide {{name}}: {{message}}",
306
+ updateVisibilityFailed: "Couldn't update visibility",
307
+ updateVisibilityFailedWithMessage:
308
+ "Couldn't update visibility: {{message}}",
309
+ archivedName: "Archived “{{name}}”",
310
+ nameSharedWithOrg: "“{{name}}” shared with org",
311
+ nameMadePrivate: "“{{name}}” made private",
312
+ nameHidden: "“{{name}}” hidden",
313
+ nameUnhidden: "“{{name}}” unhidden",
314
+ darkMode: "Dark mode",
315
+ lightMode: "Light mode",
316
+ untitledDashboard: "Untitled dashboard",
317
+ untitledAnalysis: "Untitled analysis",
318
+ },
319
+ commandPalette: {
320
+ searchPlaceholder: "Search dashboards, extensions, charts...",
321
+ noResults: "No results found.",
322
+ whatsNew: "What's new",
323
+ groupExplorerDashboards: "Explorer Dashboards",
324
+ groupSqlDashboards: "SQL Dashboards",
325
+ groupExtensions: "Extensions",
326
+ groupDashboards: "Dashboards",
327
+ groupTools: "Tools",
328
+ groupAppearance: "Appearance",
329
+ groupHelp: "Help",
330
+ groupSavedCharts: "Saved Charts",
331
+ loadFailed: "Some results couldn't be loaded.",
332
+ hidden: "Hidden",
333
+ toggleLightMode: "Toggle light mode",
334
+ toggleDarkMode: "Toggle dark mode",
335
+ toolExplorer: "Explorer",
336
+ toolCustomerHealth: "Customer Health",
337
+ untitledDashboard: "Untitled dashboard",
338
+ },
339
+ settings: {
340
+ agentTitle: "Manage agent",
341
+ agentDescription:
342
+ "Manage the agent's model, API keys, automations, voice, and other controls.",
343
+ openAgentSettings: "Manage agent",
344
+ account: "Account",
345
+ signedInAs: "Signed in as",
346
+ credentials: "Data Source Credentials",
347
+ credentialsDescription:
348
+ "API keys and credentials are managed on the Data Sources page.",
349
+ manageDataSources: "Manage Data Sources",
350
+ languageTitle: "Language",
351
+ languageLabel: "Interface language",
352
+ errorEmailNotifications: "Email new error alerts",
353
+ errorEmailNotificationsDescription:
354
+ "Send an email when a new JavaScript error is captured. Off by default.",
355
+ errorEmailNotificationsSaveFailed: "Couldn't save the email preference.",
356
+ bellSound: "Bell sound",
357
+ bellSoundDescription:
358
+ "Play a sound when the agent finishes a run. Off by default.",
359
+ bellSoundSaveFailed: "Couldn't save the sound preference.",
360
+ replayStorage: "Session replay storage",
361
+ replayStorageDescription:
362
+ "Session replay recordings need a configured file-upload provider. Connect Builder.io for free-tier object storage, or use your own S3-compatible bucket.",
363
+ connected: "Connected",
364
+ connectBuilder: "Connect Builder.io",
365
+ checkingBuilder: "Checking Builder.io...",
366
+ builderConnected: "Builder.io connected",
367
+ builderConnectedToast: "Builder.io connected",
368
+ builderConnectedFor: "Connected to {{orgName}}.",
369
+ builderConnectedGeneric: "Replay chunks are stored with Builder.io.",
370
+ builderIncludes:
371
+ "Builder.io's free tier includes object storage for replay chunks.",
372
+ s3Title: "S3-compatible storage",
373
+ secondary: "Secondary",
374
+ active: "Active",
375
+ s3BuilderConnectedDescription:
376
+ "Optional. Use your own bucket instead of Builder.io storage.",
377
+ s3CurrentProvider: "Current provider: {{providerName}}.",
378
+ s3OwnBucketDescription:
379
+ "AWS S3, Cloudflare R2, DigitalOcean Spaces, MinIO, or any S3-compatible service.",
380
+ configureS3: "Configure S3",
381
+ hideS3: "Hide",
382
+ s3EndpointLabel: "Endpoint URL",
383
+ s3BucketLabel: "Bucket name",
384
+ s3AccessKeyLabel: "Access key ID",
385
+ s3SecretAccessKeyLabel: "Secret access key",
386
+ s3RegionLabel: "Region (optional)",
387
+ s3PublicBaseUrlLabel: "Public base URL (optional)",
388
+ saveStorage: "Save storage",
389
+ storageRequired: "Enter the required storage fields.",
390
+ storageSaved: "Storage settings saved.",
391
+ storageSaveFailed: "Couldn't save storage settings.",
392
+ alertsTitle: "Alerts",
393
+ alertsDescription:
394
+ "Manage first-party analytics event rules and notification delivery.",
395
+ alertRunNow: "Run check",
396
+ alertNew: "New alert",
397
+ alertsEmptyTitle: "No alert rules yet",
398
+ alertsEmptyDescription:
399
+ "Create a rule to watch event volume, distinct users, or filtered event slices.",
400
+ alertRuleColumn: "Rule",
401
+ alertConditionColumn: "Condition",
402
+ alertDeliveryColumn: "Delivery",
403
+ alertStatusColumn: "Status",
404
+ alertActionsColumn: "Actions",
405
+ alertToggleLabel: "Toggle {{name}}",
406
+ alertSeverityCritical: "Critical",
407
+ alertSeverityWarning: "Warning",
408
+ alertAllEvents: "All events",
409
+ alertScopeWithFilters: "{{scope}} + {{count}} filters",
410
+ alertDistinctThresholdSummary: "{{count}} distinct {{field}} in {{window}}",
411
+ alertEventThresholdSummary: "{{count}} events in {{window}}",
412
+ alertChannelInbox: "Inbox",
413
+ alertChannelEmail: "Email",
414
+ alertChannelSlack: "Slack",
415
+ alertChannelWebhook: "Webhook",
416
+ alertLastChecked: "Checked {{date}}",
417
+ alertNever: "Never",
418
+ alertStatusOk: "OK",
419
+ alertStatusTriggered: "Triggered",
420
+ alertStatusCooldown: "Cooling down",
421
+ alertStatusError: "Error",
422
+ alertStatusRunning: "Running",
423
+ alertStatusNever: "Not checked",
424
+ alertEditLabel: "Edit {{name}}",
425
+ alertDeleteLabel: "Delete {{name}}",
426
+ alertDeleteTitle: "Delete alert rule?",
427
+ alertDeleteDescription:
428
+ "This deletes “{{name}}” and stops future notifications for this rule.",
429
+ alertEdit: "Edit alert",
430
+ alertCreate: "Create alert",
431
+ alertDialogDescription:
432
+ "Alert rules run on first-party analytics events and notify the selected channels.",
433
+ alertName: "Name",
434
+ alertNamePlaceholder: "Hosted app 5xx spike",
435
+ alertDescription: "Description",
436
+ alertEventName: "Event name",
437
+ alertEventNamePlaceholder: "http.response",
438
+ alertSeverity: "Severity",
439
+ alertThresholdMode: "Threshold mode",
440
+ alertModeEventCount: "Event count",
441
+ alertModeDistinctCount: "Distinct count",
442
+ alertThreshold: "Threshold",
443
+ alertDistinctBy: "Distinct by",
444
+ alertWindowMinutes: "Window minutes",
445
+ alertCooldownMinutes: "Cooldown minutes",
446
+ alertFilters: "Filters JSON",
447
+ alertChannels: "Channels",
448
+ alertCustomChannels: "Additional channels",
449
+ alertCustomChannelsPlaceholder: "pagerduty, opsgenie",
450
+ alertSlackWebhookUrl: "Slack webhook URL",
451
+ alertSlackWebhookUrlPlaceholder: "https://hooks.slack.com/services/...",
452
+ alertSlackWebhookUrlHint:
453
+ "Leave blank to use the workspace default, if configured.",
454
+ alertWebhookUrl: "Webhook URL",
455
+ alertWebhookUrlPlaceholder: "https://example.com/webhook",
456
+ alertWebhookUrlHint:
457
+ "Leave blank to use the workspace default, if configured.",
458
+ alertEmailRecipients: "Email recipients",
459
+ alertEmailRecipientsPlaceholder: "analytics@example.com, ops@example.com",
460
+ alertEnabled: "Enabled",
461
+ alertEnabledDescription: "Disabled rules stay saved but are skipped.",
462
+ alertUpdate: "Update alert",
463
+ alertSave: "Save alert",
464
+ alertFiltersInvalid: "Invalid filters JSON: {{message}}",
465
+ alertNameRequired: "Add an alert name.",
466
+ alertChannelRequired: "Select at least one notification channel.",
467
+ alertSlackWebhookUrlInvalid: "Enter a valid Slack webhook http(s) URL.",
468
+ alertWebhookUrlInvalid: "Enter a valid webhook http(s) URL.",
469
+ alertSaved: "Alert rule saved.",
470
+ alertSaveFailed: "Couldn't save alert rule: {{message}}",
471
+ alertEnabledToast: "Alert enabled.",
472
+ alertDisabledToast: "Alert disabled.",
473
+ alertDeleted: "Alert rule deleted.",
474
+ alertDeleteFailed: "Couldn't delete alert rule: {{message}}",
475
+ alertRunComplete:
476
+ "Alert check finished: {{processed}} checked, {{triggered}} triggered, {{failed}} failed.",
477
+ alertRunFailed: "Couldn't run alert check: {{message}}",
478
+ },
479
+ chat: {
480
+ emptyState:
481
+ "Ask me to analyze a dashboard, compare trends, or dig into data...",
482
+ recentChats: "Recent chats",
483
+ newChat: "New chat",
484
+ untitledChat: "Untitled chat",
485
+ renameChat: "Rename chat",
486
+ renameThread: "Rename {{title}}",
487
+ renameFailed: "Couldn't rename chat",
488
+ optionsFor: "Options for {{title}}",
489
+ pinChat: "Pin chat",
490
+ unpinChat: "Unpin chat",
491
+ archiveChat: "Archive chat",
492
+ archiveFailed: "Couldn't archive chat",
493
+ suggestionArrGrowth: "What's driving ARR growth this quarter?",
494
+ suggestionChurn: "Show me churn trends over the last 6 months",
495
+ suggestionAnomalies: "Analyze the HubSpot Sales dashboard for anomalies",
496
+ suggestionMrr: "Compare MRR between enterprise and SMB",
497
+ },
498
+ guidedQuestions: {
499
+ title: "Clarify the dashboard",
500
+ description:
501
+ "A few choices help the agent pick the right source, metrics, cuts, and layout before it writes SQL.",
502
+ },
503
+ dialogs: {
504
+ newDashboard: "New Dashboard",
505
+ newDashboardTitle: "New dashboard",
506
+ newDashboardPlaceholder: "Describe the dashboard you want to create...",
507
+ newAnalysis: "New Analysis",
508
+ newAnalysisTitle: "New analysis",
509
+ checkingDataSources: "Checking data sources",
510
+ sourcesConfigured: "{{count}} source{{plural}} configured",
511
+ noDataSourcesConfigured: "No data sources configured",
512
+ more: "+{{count}} more",
513
+ connectSourceFirst:
514
+ "Connect a source first, or ask the agent to help wire one up.",
515
+ manageSources: "Manage sources",
516
+ newAnalysisPlaceholder: "Describe the question you want to investigate...",
517
+ },
518
+ common: {
519
+ cancel: "Cancel",
520
+ docs: "Docs",
521
+ noData: "No data",
522
+ noDataAvailable: "No data available",
523
+ rowsPerPage: "Rows per page:",
524
+ returnToDashboard: "Return to Dashboard",
525
+ pageNotFound: "Page Not Found",
526
+ pageNotFoundDescription:
527
+ "The page you are looking for doesn't exist or has been moved.",
528
+ pageUnderConstruction:
529
+ "This page is currently under construction. Please check back later or return to the dashboard.",
530
+ askAnalytics: "Ask Analytics about your data.",
531
+ askPlaceholder: "Ask about data, dashboards, metrics, or sources...",
532
+ askIntroTitle: "What should we explore?",
533
+ askIntroBody: "Data, dashboards, metrics, or sources.",
534
+ emptyDashboard: "Empty Dashboard",
535
+ emptyDashboardDescription:
536
+ 'This dashboard is empty. Tell the AI assistant what charts and data you want to see here — for example, "show me signups by attribution source over the last 90 days" — and it will populate this dashboard for you.',
537
+ editSqlQuery: "Edit SQL Query",
538
+ chartUnavailable: "Chart unavailable",
539
+ failedToDecodePanel: "Failed to decode panel",
540
+ untitledAnalysis: "Untitled analysis",
541
+ untitledDashboard: "Untitled dashboard",
542
+ },
543
+ routeTitles: {
544
+ notFound: "Not Found - Analytics",
545
+ analysis: "Analysis - Analytics",
546
+ analyses: "Analyses - Analytics",
547
+ ask: "Ask - Analytics",
548
+ dashboard: "Dashboard - Analytics",
549
+ dataDictionary: "Data Dictionary - Analytics",
550
+ dataSources: "Data Sources - Analytics",
551
+ sessions: "Sessions - Analytics",
552
+ monitoring: "Monitoring - Analytics",
553
+ agents: "Admin - Analytics",
554
+ session: "Session Replay - Analytics",
555
+ tool: "Tool - Analytics",
556
+ extensions: "Extensions - Analytics",
557
+ overview: "Overview - Analytics",
558
+ settings: "Settings - Analytics",
559
+ team: "Team - Analytics",
560
+ },
561
+ markdown: {
562
+ embedBlocked: "Embed blocked",
563
+ sameOriginEmbedsOnly: "Only same-origin embed paths are allowed.",
564
+ embeddedContent: "Embedded content",
565
+ },
566
+ agents: {
567
+ title: "Admin",
568
+ description:
569
+ "Monitor agent runs, dashboard usage, evals, experiments, feedback, and connected app databases that admins can inspect behind the scenes.",
570
+ monitoring: "Monitoring",
571
+ monitoringDescription:
572
+ "Core observability stays here: runs, traces, evals, experiments, and feedback. Install the LLM observability dashboard from the catalog when you want first-party token, latency, and cost charts.",
573
+ dashboardUsage: "Dashboard Usage",
574
+ dashboardUsageTitle: "Dashboard usage",
575
+ dashboardUsageDescription:
576
+ "Audit dashboard lifecycle, traffic, engagement, and ownership across the active organization. Existing dashboards only show a modifier after they are changed with updated attribution.",
577
+ dashboardUsageTotal: "Dashboards",
578
+ dashboardUsageActive: "{{count}} active",
579
+ dashboardUsageViews: "Views",
580
+ dashboardUsageEdits: "Edits",
581
+ dashboardUsageSort: "Sort dashboards",
582
+ dashboardUsageMostViewed: "Most viewed",
583
+ dashboardUsageMostEdited: "Most edited",
584
+ dashboardUsageTop: "Top: {{name}}",
585
+ dashboardUsageEngagements: "Engagements",
586
+ dashboardUsageEngagementsHint: "Non-pageview events plus saved views",
587
+ dashboardUsageStale: "No views",
588
+ dashboardUsageStaleHint: "Active dashboards without tracked views",
589
+ dashboardUsageDashboard: "Dashboard",
590
+ dashboardUsageOwner: "Owner",
591
+ dashboardUsageUsers: "Users",
592
+ dashboardUsageModified: "Modified",
593
+ dashboardUsageCreated: "Created",
594
+ dashboardMetadataCreated: "Created",
595
+ dashboardMetadataCreatedBy: "Created by",
596
+ dashboardMetadataUpdated: "Updated",
597
+ dashboardMetadataUpdatedBy: "Updated by",
598
+ dashboardUsageState: "State",
599
+ dashboardUsagePanels: "{{count}} panels",
600
+ dashboardUsageSavedViews: "{{count}} saved views",
601
+ dashboardUsageHidden: "Hidden",
602
+ dashboardUsageArchived: "Archived",
603
+ dashboardUsageEmpty: "No dashboards yet",
604
+ dashboardUsageEmptyDescription:
605
+ "Dashboards created in this organization will appear here with usage and cleanup signals.",
606
+ adminOnlyTitle: "Admin access required",
607
+ adminOnlyDescription:
608
+ "Only organization owners and admins can open Analytics admin tools.",
609
+ roleUnavailableTitle: "Couldn't verify your access",
610
+ roleUnavailableDescription:
611
+ "We couldn't check your organization role: {{message}}",
612
+ notTracked: "Not tracked",
613
+ visibilityprivate: "Private",
614
+ visibilityorg: "Shared with org",
615
+ visibilitypublic: "Public",
616
+ advanced: "Advanced",
617
+ openCatalog: "Open catalog",
618
+ database: "App Databases",
619
+ dbConnectionsTitle: "Connected app databases",
620
+ dbConnectionsDescription:
621
+ "Connect other agent-native app databases for admin-only inspection and repair. This does not expose Analytics data to every user.",
622
+ selectConnection: "Select database",
623
+ connectDatabase: "Connect database",
624
+ connectDatabaseDescription:
625
+ "Use the target app's database connection string. Only organization owners and admins can read or write connected database data.",
626
+ connectedDatabase: "Connected database",
627
+ noConnections: "No app databases connected",
628
+ noConnectionsDescription:
629
+ "Add an agent-native app database to browse tables, inspect rows, or run SQL from Analytics.",
630
+ connectionName: "Name",
631
+ connectionAppId: "App ID",
632
+ connectionAppUrl: "App URL",
633
+ connectionDatabaseUrl: "Database URL",
634
+ saveConnection: "Save connection",
635
+ deleteConnection: "Delete connection",
636
+ deleteConnectionTitle: "Delete database connection?",
637
+ deleteConnectionDescription:
638
+ "This removes {{name}} from Analytics and deletes its stored connection secrets. The target app database is not modified.",
639
+ featureFlags: "Feature flags",
640
+ featureFlagsDescription:
641
+ "Review registered app flags and make deliberate, reversible rollout changes.",
642
+ reloadFlags: "Reload flags",
643
+ loading: "Loading",
644
+ flagsUnavailable: "Feature flags are unavailable",
645
+ flagsUnreachable:
646
+ "The workspace directory could not be reached. Retry when its connection is available.",
647
+ flagsEmpty: "No workspace apps reported flags",
648
+ flagsEmptyDetail:
649
+ "Registered flags will appear here when connected apps are ready.",
650
+ flagsNotReady:
651
+ "This app is {{status}}. Its flag state is not assumed to be off.",
652
+ noFlagDefinitions: "This ready app has no registered flag definitions.",
653
+ noFlagDescription: "No description supplied.",
654
+ selected: "Selected",
655
+ openFlag: "Open feature flag",
656
+ confirm: "Confirm",
657
+ name: "Name",
658
+ appId: "App ID",
659
+ flagKey: "Feature flag",
660
+ },
661
+ providerCorpusNotifier: {
662
+ completed: "Provider corpus job completed",
663
+ incomplete: "Provider corpus job incomplete",
664
+ quotaWait: "Provider corpus job waiting for quota",
665
+ failed: "Provider corpus job failed",
666
+ resumeAfter: "Resume after {{date}}",
667
+ jobId: "Job {{id}}",
668
+ openAsk: "Open Ask",
669
+ batches: "{{count}} batches",
670
+ pages: "{{count}} pages",
671
+ truncatedHits: "{{stored}}/{{total}} hits stored",
672
+ hits: "{{count}} hits",
673
+ coverageSummary:
674
+ "{{items}} items, {{matched}} matched, {{hits}}, {{units}}",
675
+ },
676
+ explorer: {
677
+ title: "Explorer",
678
+ selectEvent: "Select event...",
679
+ searchEvents: "Search events...",
680
+ noEventsFound: "No events found.",
681
+ commonEvents: "Common Events",
682
+ allEvents: "All Events ({{count}})",
683
+ eventNames: "Event Names ({{count}})",
684
+ events: "Events",
685
+ addEvent: "Add Event",
686
+ addEventToSeeResults: "Add an event and select it to see results",
687
+ queryError: "Query error: {{message}}",
688
+ noDataReturned: "No data returned",
689
+ rowsRange: "{{start}}-{{end}} of {{total}}",
690
+ filterBy: "Filter by",
691
+ pickPropertyToFilter: "Pick a property to filter",
692
+ property: "property",
693
+ groupedBy: "grouped by",
694
+ pickProperty: "Pick a property",
695
+ groupBy: "Group-by",
696
+ selectProperty: "Select property...",
697
+ searchOrTypeProperty: "Search or type property...",
698
+ useValue: 'Use "{{value}}"',
699
+ noPropertiesFound: "No properties found.",
700
+ joined: "joined",
701
+ dataProperties: "Data Properties ({{count}})",
702
+ value: "value",
703
+ searchOrTypeValue: "Search or type value...",
704
+ noValuesFound: "No values found.",
705
+ topValuesForProperty: "Top values for {{property}}",
706
+ sqlQuery: "SQL Query",
707
+ chartType: "Chart Type",
708
+ saving: "Saving...",
709
+ save: "Save",
710
+ load: "Load",
711
+ newExplorer: "New Explorer",
712
+ saveAs: "Save As...",
713
+ saveExplorer: "Save Explorer",
714
+ dashboardNamePlaceholder: "Dashboard name...",
715
+ untitled: "Untitled",
716
+ deleteSavedExplorerTitle: "Delete saved explorer?",
717
+ deleteSavedExplorerDescription: 'Delete "{{name}}"? This cannot be undone.',
718
+ },
719
+ explorerDashboard: {
720
+ untitledDashboard: "Untitled Dashboard",
721
+ dashboardFallback: "dashboard",
722
+ archived: 'Archived "{{name}}"',
723
+ unhid: 'Unhid "{{name}}"',
724
+ archiveFailed: "Couldn't archive dashboard",
725
+ unhideFailed: "Couldn't unhide dashboard",
726
+ viewOnly: "You can view this dashboard, but only editors can change it.",
727
+ noDashboardSelected: "No dashboard selected",
728
+ dashboard: "Dashboard",
729
+ hiddenDescription:
730
+ "This dashboard is hidden from regular lists. It remains searchable and openable by direct link.",
731
+ addChart: "Add Chart",
732
+ dashboardActions: "Dashboard actions",
733
+ moreActions: "More actions",
734
+ deletePermanentlyTitle: "Delete permanently?",
735
+ deletePermanentlyDescription:
736
+ 'This permanently deletes "{{name}}" and cannot be undone. To keep it recoverable, choose Archive instead.',
737
+ deletePermanently: "Delete permanently",
738
+ noSavedExplorerCharts:
739
+ "No saved explorer charts yet. Create one in the Explorer tool first.",
740
+ noChartsYet:
741
+ "No charts yet. Add saved explorer charts to build your dashboard.",
742
+ configNotFound: "Config not found",
743
+ halfWidth: "Half width",
744
+ fullWidth: "Full width",
745
+ editInExplorer: "Edit in Explorer",
746
+ chatWithChart: "Chat with chart",
747
+ removeChart: "Remove chart",
748
+ removeChartTitle: "Remove chart?",
749
+ removeChartDescription:
750
+ 'Remove "{{name}}" from this dashboard? This cannot be undone.',
751
+ },
752
+ sqlDashboard: {
753
+ untitledDashboard: "Untitled Dashboard",
754
+ dashboardFallback: "dashboard",
755
+ viewOnly: "You have view-only access to this dashboard.",
756
+ saveFailed: "Couldn't save dashboard",
757
+ saveFailedWithMessage: "Couldn't save dashboard: {{message}}",
758
+ archived: 'Archived "{{name}}"',
759
+ unhid: 'Unhid "{{name}}"',
760
+ archiveFailed: "Couldn't archive dashboard",
761
+ unhideFailed: "Couldn't unhide dashboard",
762
+ addPanel: "Add panel",
763
+ dashboardActions: "Dashboard details and actions",
764
+ certifyForAi: "Certify for AI queries",
765
+ certifiedForAi: "Certified for AI queries",
766
+ certificationSaved: "Dashboard certified for AI queries",
767
+ certificationFailed: "Couldn't certify dashboard: {{message}}",
768
+ details: "Details",
769
+ updated: "Updated {{date}}",
770
+ public: "Public",
771
+ sharedWithOrg: "Shared with org",
772
+ private: "Private",
773
+ hidden: "Hidden",
774
+ deletePermanentlyTitle: "Delete permanently?",
775
+ deletePermanentlyDescription:
776
+ 'This permanently deletes "{{name}}" and cannot be undone. To keep it recoverable, choose Archive instead.',
777
+ deletePermanently: "Delete permanently",
778
+ noDashboardSelected: "No dashboard selected",
779
+ hiddenDescription:
780
+ "This dashboard is hidden from regular lists. It remains searchable and openable by direct link.",
781
+ demoIntroTitle: "You're viewing a live demo",
782
+ demoIntroDescription:
783
+ "This dashboard uses the built-in demo Prometheus endpoint, not your connected sources or provider slots. Start with app metrics here, switch to Node for system metrics, and archive or delete it from the dashboard menu whenever you're done.",
784
+ dismissDemoIntro: "Dismiss demo intro",
785
+ addDescription: "Add description",
786
+ addDescriptionPlaceholder: "Add a description",
787
+ noPanels: "This dashboard has no panels yet.",
788
+ addFirstPanel: "Add your first panel",
789
+ filters: "Filters",
790
+ autoApplied: "auto-applied",
791
+ saveView: "Save view",
792
+ clearAll: "Clear all",
793
+ collapseFilters: "Collapse filters",
794
+ expandFilters: "Expand filters",
795
+ filterSeries: "Filter",
796
+ hide: "Hide",
797
+ show: "Show",
798
+ saveAsView: "Save as View",
799
+ viewNameRecentPlaceholder: "View name (e.g. 'Recent articles only')",
800
+ to: "to",
801
+ on: "On",
802
+ off: "Off",
803
+ since: "Since",
804
+ sectionOptions: "Section options",
805
+ extensionMissingId: "This custom block has no source selected.",
806
+ extensionUnavailable:
807
+ "This custom block isn't shared with you, or it no longer exists.",
808
+ panelOptions: "Panel options",
809
+ chatWithPanel: "Chat with panel",
810
+ customBlock: "Custom block",
811
+ customBlockProvenance: "Sandboxed dashboard block",
812
+ customBlockAgentProvenance: "Agent-authored dashboard patch",
813
+ promoteToAppCode: "Promote to app code",
814
+ promoteCustomBlockMessage:
815
+ 'Promote the custom block "{{title}}" into reusable native Analytics app code.',
816
+ fullScreen: "Full screen",
817
+ refresh: "Refresh",
818
+ refreshing: "Refreshing...",
819
+ downloadCsv: "Download CSV",
820
+ copyTable: "Copy table",
821
+ multiColumnSortHelp: "Click to sort. Shift-click to add another sort.",
822
+ exportToGoogleSheets: "Export to Google Sheets",
823
+ exportingToGoogleSheets: "Exporting to Google Sheets...",
824
+ googleSheetsExported: "Exported to Google Sheets",
825
+ openGoogleSheet: "Open sheet",
826
+ googleSheetsExportFailed: "Couldn't export to Google Sheets: {{message}}",
827
+ viewSql: "View SQL",
828
+ dragToReorder: "Drag to reorder",
829
+ deleteSectionTitle: "Delete section?",
830
+ deleteSectionDescription: 'Delete "{{title}}"? This cannot be undone.',
831
+ deletePanelTitle: "Delete panel?",
832
+ deletePanelDescription: 'Delete "{{title}}"? This cannot be undone.',
833
+ failedToSave: "Failed to save",
834
+ copied: "Copied",
835
+ copy: "Copy",
836
+ couldNotCopySql: "Couldn't copy SQL",
837
+ couldNotCopyTable: "Couldn't copy table",
838
+ failedToFormatSql: "Failed to format SQL",
839
+ close: "Close",
840
+ save: "Save",
841
+ saving: "Saving...",
842
+ discardChanges: "Discard changes",
843
+ reset: "Reset",
844
+ format: "Format",
845
+ formatSql: "Format SQL",
846
+ copyResolvedSql: "Copy resolved SQL",
847
+ copySql: "Copy SQL",
848
+ filterInterpolationHelp:
849
+ "Use {{example}} to interpolate filter values. Press {{shortcut}} to save.",
850
+ showResolvedSql: "Show resolved SQL (with filter values)",
851
+ hideResolvedSql: "Hide resolved SQL (with filter values)",
852
+ savedViews: "Saved views",
853
+ views: "Views",
854
+ noSavedViews: "No saved views yet.",
855
+ deleteView: "Delete {{name}}",
856
+ saveCurrentView: "Save current view",
857
+ viewNameEnterprisePlaceholder: "View name (e.g. 'Enterprise only')",
858
+ noActiveFilters:
859
+ "No filters are currently active - this view will apply the default filter state.",
860
+ deleteViewTitle: "Delete view?",
861
+ deleteViewDescription: 'Delete view "{{name}}"? This cannot be undone.',
862
+ emailReports: "Email reports",
863
+ emailReportsDescription: 'Daily email snapshot for "{{name}}".',
864
+ existingReportSubscriptions: "Subscriptions",
865
+ newSubscription: "New",
866
+ noReportSubscriptions: "No subscriptions yet.",
867
+ reportName: "Name",
868
+ reportRecipients: "Recipients",
869
+ reportRecipientsPlaceholder: "analytics@example.com, ops@example.com",
870
+ reportRecipientsRequired: "Add at least one recipient.",
871
+ reportSendTime: "Send time",
872
+ reportTimezone: "Timezone",
873
+ reportEnabled: "Enabled",
874
+ reportFilterSnapshot: "{{count}} saved filters used by this report",
875
+ reportUseCurrentFilters: "Use current filters",
876
+ reportLastRun: "Last sent",
877
+ reportNextRun: "Next send",
878
+ reportSendNow: "Send now",
879
+ reportSending: "Sending...",
880
+ saveSubscription: "Save subscription",
881
+ updateSubscription: "Update subscription",
882
+ reportSubscriptionSaved: "Email report subscription saved.",
883
+ reportSubscriptionDeleted: "Email report subscription deleted.",
884
+ reportSent: "Dashboard report sent.",
885
+ reportQueued: "Dashboard report queued.",
886
+ reportSubscriptionSaveFailed: "Couldn't save subscription: {{message}}",
887
+ reportSubscriptionDeleteFailed: "Couldn't delete subscription: {{message}}",
888
+ reportSendFailed: "Couldn't send report: {{message}}",
889
+ never: "Never",
890
+ },
891
+ analyses: {
892
+ description: "Ad-hoc analyses that can be re-run anytime for fresh results",
893
+ searchPlaceholder: "Search analyses...",
894
+ noResults: "No results",
895
+ noAnalysesYet: "No analyses yet",
896
+ noResultsForQuery: 'No analyses match "{{query}}".',
897
+ emptyDescription:
898
+ "Ask the AI assistant to run an analysis with your configured data sources, and it will save the results here with the evidence it queried.",
899
+ examplePrompt:
900
+ "Run an ad-hoc analysis using my configured data sources and summarize the key findings",
901
+ tryExamplePrompt: "Try an example prompt",
902
+ justNow: "just now",
903
+ minutesAgo: "{{count}}m ago",
904
+ hoursAgo: "{{count}}h ago",
905
+ daysAgo: "{{count}}d ago",
906
+ byAuthor: "by {{author}}",
907
+ rerun: "Re-run",
908
+ rerunTooltip:
909
+ "Re-run this analysis with the latest data and update the saved results",
910
+ rerunMessage:
911
+ 'Re-run the analysis "{{name}}" with the latest data and update the saved results.',
912
+ deleteTitle: "Delete analysis?",
913
+ deleteDescription:
914
+ 'This will permanently delete "{{name}}" and its results.',
915
+ notFound: "Analysis not found",
916
+ mayHaveBeenDeleted: "This analysis may have been deleted.",
917
+ backToAnalyses: "Back to analyses",
918
+ allAnalyses: "All analyses",
919
+ updated: "Updated {{date}}",
920
+ created: "Created {{date}}",
921
+ historyTitle: "Analysis history",
922
+ historyDescription:
923
+ "Restore a previous saved analysis state. Restoring snapshots the current state first.",
924
+ historyEmpty:
925
+ "No history yet. Changes are saved here automatically after the next re-run.",
926
+ historyRestore: "Restore",
927
+ historyRestored: "Analysis restored",
928
+ historyRestoreFailed: "Couldn't restore analysis",
929
+ historyRestoreQuestion: "Restore this analysis version?",
930
+ historyRestoreWarning:
931
+ "This replaces the current saved findings and keeps the current state in history.",
932
+ public: "Public",
933
+ sharedWithOrg: "Shared with org",
934
+ private: "Private",
935
+ },
936
+ overview: {
937
+ title: "Overview",
938
+ description: "Dashboards and analyses shared with the org",
939
+ untitledDashboard: "Untitled dashboard",
940
+ untitledAnalysis: "Untitled analysis",
941
+ today: "today",
942
+ yesterday: "yesterday",
943
+ daysAgo: "{{count}}d ago",
944
+ nothingShared: "Nothing shared yet",
945
+ nothingSharedDescription:
946
+ "When teammates share dashboards or analyses with the org, they appear here. Use the menu in the sidebar to share any item.",
947
+ dashboard: "Dashboard",
948
+ analysis: "Analysis",
949
+ byAuthor: "by {{author}}",
950
+ },
951
+ dataDictionary: {
952
+ intro:
953
+ "The catalog of metrics, tables, and business definitions the analytics agent uses when building dashboards from prompts. Keep entries accurate and the agent will stop guessing about your data.",
954
+ searchPlaceholder: "Search metrics, definitions...",
955
+ noEntriesTitle: "No entries yet",
956
+ noEntriesDescription:
957
+ "Define the metrics and tables your team uses most. The agent reads these before writing SQL so dashboards match your definitions, not its guesses.",
958
+ addEntry: "Add an entry",
959
+ askAgent: "Ask the agent to help populate it",
960
+ populateAgentPrompt:
961
+ "Help me populate the data dictionary. Ask me where my team's metric definitions currently live (docs, spreadsheets, dbt, Notion, Confluence, a wiki, etc.) and then save each one via the save-data-dictionary-entry action.",
962
+ approved: "approved",
963
+ suggestion: "suggestion",
964
+ unreviewed: "unreviewed",
965
+ ai: "AI",
966
+ source: "source",
967
+ deleteTitle: 'Delete "{{metric}}"?',
968
+ deleteDescription:
969
+ "This removes the entry from the data dictionary. The agent will no longer consult this definition when building dashboards.",
970
+ editEntry: "Edit entry",
971
+ newDictionaryEntry: "New dictionary entry",
972
+ dialogDescription:
973
+ "Document a metric, table, or concept the analytics agent should know about.",
974
+ metric: "Metric",
975
+ metricPlaceholder: "e.g. Active Paying Accounts",
976
+ definition: "Definition",
977
+ definitionPlaceholder:
978
+ "Plain-English description of what this metric means",
979
+ department: "Department",
980
+ departmentPlaceholder: "Sales / Marketing / Product / Data",
981
+ owner: "Owner",
982
+ ownerPlaceholder: "e.g. data-team@",
983
+ approvedTitle: "Approved",
984
+ approvedDescription:
985
+ "Approved entries are treated as canonical by the agent.",
986
+ aiGeneratedTitle: "AI-generated suggestion",
987
+ aiGeneratedDescription:
988
+ "Unapproved AI suggestions are visible for review but are not treated as truth.",
989
+ sourceTables: "Source table(s)",
990
+ sourceTablesPlaceholder: "e.g. analytics.fact_signups",
991
+ columnsUsed: "Columns used",
992
+ columnsUsedPlaceholder: "e.g. user_id, signup_at, plan_tier",
993
+ standardCuts: "Standard cuts / dimensions",
994
+ standardCutsPlaceholder: "e.g. week, channel, region",
995
+ queryTemplate: "Query template",
996
+ queryTemplatePlaceholder:
997
+ "SELECT date_trunc('week', signup_at) AS week, COUNT(*) ...",
998
+ updateFrequency: "Update frequency",
999
+ updateFrequencyPlaceholder: "hourly / daily",
1000
+ dataLag: "Data lag",
1001
+ dataLagPlaceholder: "~15min / next day",
1002
+ knownGotchas: "Known gotchas",
1003
+ knownGotchasPlaceholder: "Edge cases, nulls, known data quality issues",
1004
+ commonQuestions: "Common questions",
1005
+ commonQuestionsPlaceholder: "Frequently asked questions about this metric",
1006
+ exampleUseCase: "Example use case",
1007
+ exampleUseCasePlaceholder: "When should someone reach for this metric?",
1008
+ saving: "Saving...",
1009
+ saveEntry: "Save entry",
1010
+ },
1011
+ dataSources: {
1012
+ uploadFile: "Upload file",
1013
+ googleSheetsExport: "Google Sheets export",
1014
+ googleSheetsExportDescription:
1015
+ "Export dashboard reports to Google Sheets through a shared Google connection.",
1016
+ connected: "Connected",
1017
+ googleSheets: "Google Sheets",
1018
+ open: "Open",
1019
+ savedValueHint:
1020
+ "A value is already saved. Leave blank to keep it, or enter a new value to replace it.",
1021
+ githubOAuth: "GitHub OAuth",
1022
+ githubOAuthDescription:
1023
+ "Grant repository access so the agent can search source code and read files without a manual token.",
1024
+ opening: "Opening...",
1025
+ reconnect: "Reconnect",
1026
+ connect: "Connect",
1027
+ connectedAs: "Connected as {{viewer}}",
1028
+ githubConnected: "GitHub is connected",
1029
+ githubReconnectNeeded: "Saved GitHub token needs to be reconnected.",
1030
+ githubOAuthRequest:
1031
+ "OAuth will request repo read access for code search, file reads, pull requests, and issues.",
1032
+ githubOAuthUnavailable:
1033
+ "OAuth app credentials are not configured on this deployment. Use the personal access token field below.",
1034
+ sharedIntegration: "Shared integration",
1035
+ workspaceAdminRequiredTitle: "Organization connection requires an admin",
1036
+ workspaceAdminRequiredDescription:
1037
+ "Ask an organization owner or admin to connect {{name}} for everyone in this organization.",
1038
+ sharedReady:
1039
+ "Analytics can use this provider through a workspace connection granted from Dispatch.",
1040
+ sharedNeedsGrant:
1041
+ "A workspace connection exists. Open Dispatch to grant Analytics access.",
1042
+ sharedLocalCredentials:
1043
+ "Using credentials saved in this app. For reuse across apps, connect and grant this provider in Dispatch.",
1044
+ sharedFallback:
1045
+ "Connect or grant this provider in Dispatch to reuse it across apps, or save local credentials below.",
1046
+ workspaceReadyDescription:
1047
+ "This source is ready through a shared workspace connection. Manage shared access in Dispatch, or add local credentials for this app only.",
1048
+ testing: "Testing...",
1049
+ testConnection: "Test connection",
1050
+ addLocalCredentials: "Add local credentials",
1051
+ docs: "Docs",
1052
+ connectionSuccessful: "Connection successful",
1053
+ connectionFailed: "Connection failed",
1054
+ clearSavedValue: "Clear saved value",
1055
+ willClearOnSave: "Will be cleared on save (back to default).",
1056
+ undo: "Undo",
1057
+ saving: "Saving...",
1058
+ saveChanges: "Save Changes",
1059
+ configured: "Configured",
1060
+ optional: "Optional",
1061
+ missing: "Missing",
1062
+ sourceActions: "{{name}} actions",
1063
+ editCredentials: "Edit credentials",
1064
+ openDocs: "Open docs",
1065
+ disconnecting: "Disconnecting...",
1066
+ disconnect: "Disconnect",
1067
+ disconnectTitle: "Disconnect {{name}}?",
1068
+ disconnectDescription:
1069
+ "This will clear credentials shared with {{sources}}. Those sources may stop working until the shared credentials are added again.",
1070
+ sharedCredentials: "Shared credentials: {{credentials}}",
1071
+ ready: "Ready",
1072
+ notConfigured: "Not configured",
1073
+ statusUnknown: "Couldn't check connection status",
1074
+ statusUnknownDescription:
1075
+ "The connection status couldn't be read, so this source may already be connected. Reload to check again before adding credentials.",
1076
+ back: "Back",
1077
+ continue: "Continue",
1078
+ saveCredentials: "Save Credentials",
1079
+ credentialsSaved: "Credentials saved.",
1080
+ adding: "Adding...",
1081
+ addDataSource: "Add Data Source",
1082
+ addDataSourceTitle: "Add a Data Source",
1083
+ addDataSourceDescription:
1084
+ "Don't see the integration you need? Describe it and the agent will add it.",
1085
+ addDataSourcePlaceholder:
1086
+ 'e.g., "Add Salesforce integration so I can query CRM data"',
1087
+ firstPartyAnalytics: "First-party Analytics",
1088
+ firstPartyDescription:
1089
+ "Receive product, session, and $ai_generation events through the same first-party endpoint for dashboarding and LLM observability.",
1090
+ bigQueryRecommendationTitle: "BigQuery is recommended for this data",
1091
+ bigQueryRecommendationDescription:
1092
+ "Neon is still the default. Connect BigQuery when you have 1M+ observed events or repeated slow queries/timeouts, then use it for high-volume or historical analysis.",
1093
+ bigQueryConnectedTitle: "BigQuery is ready for heavier queries",
1094
+ bigQueryConnectedDescription:
1095
+ "Use BigQuery for high-volume or historical tracking queries. Neon remains available for recent operational analytics.",
1096
+ bigQuerySetup: "Set up BigQuery",
1097
+ bigQueryMonitorDescription:
1098
+ "Neon is still a good fit. Keep an eye on event volume and query latency; this card will recommend BigQuery if pressure grows.",
1099
+ bigQueryHealthyDescription:
1100
+ "Neon is a good fit for this first-party data right now. We will flag this again if volume or query latency grows.",
1101
+ bigQueryHealthUnavailable:
1102
+ "We could not check first-party analytics pressure right now. Reload and try again before changing backends.",
1103
+ analyticsEventCount: "Observed events",
1104
+ slowQueries24h: "Slow queries (24h)",
1105
+ maxQueryDuration: "Max query time",
1106
+ defaultKeyName: "Hosted templates",
1107
+ endpoint: "Endpoint",
1108
+ serverEnv: "Server env",
1109
+ browserEnv: "Browser env",
1110
+ keyNamePlaceholder: "Key name",
1111
+ generating: "Generating...",
1112
+ generateKey: "Generate Key",
1113
+ newKeyGenerated: "New key generated",
1114
+ copied: "Copied",
1115
+ copy: "Copy",
1116
+ keyActions: "{{name}} key actions",
1117
+ lastUsed: "last used {{date}}",
1118
+ neverUsed: "never used",
1119
+ revoking: "Revoking...",
1120
+ revoke: "Revoke",
1121
+ intro:
1122
+ "Connect your data sources, then ask the agent to create dashboards.",
1123
+ configuredCount: "{{count}} configured",
1124
+ searchPlaceholder: "Search data sources...",
1125
+ noMatch: 'No data sources match "{{search}}"',
1126
+ customApi: {
1127
+ title: "Custom API",
1128
+ description:
1129
+ "Connect an API endpoint and query its data in Analytics. Use a public HTTPS endpoint; hosted Analytics cannot reach localhost.",
1130
+ expand: "Expand",
1131
+ collapse: "Collapse",
1132
+ endpointLabel: "Endpoint URL",
1133
+ endpointPlaceholder: "https://api.example.com/v1/data",
1134
+ methodLabel: "HTTP method",
1135
+ authLabel: "Authentication",
1136
+ authNone: "No authentication",
1137
+ authApiKey: "API key",
1138
+ authBearer: "Bearer token",
1139
+ apiKeyLabel: "API key",
1140
+ apiKeyPlaceholder: "Enter API key",
1141
+ bearerTokenLabel: "Bearer token",
1142
+ bearerTokenPlaceholder: "Enter bearer token",
1143
+ setup: "Set up connection",
1144
+ save: "Save connection",
1145
+ test: "Test connection",
1146
+ testing: "Testing connection…",
1147
+ saving: "Saving connection…",
1148
+ settingsKeyGuidance:
1149
+ "Store secrets in Settings to reuse this connection.",
1150
+ openSettings: "Open Settings",
1151
+ connectionResult: "Connection result",
1152
+ sampleResponse: "Sample response",
1153
+ handoffButton: "Ask the agent to finish setup",
1154
+ handoffPrompt: "Help me finish setting up this Custom API connection.",
1155
+ requiredEndpoint: "Enter an endpoint URL.",
1156
+ invalidEndpoint: "Enter a valid HTTP or HTTPS URL.",
1157
+ requiredCredential:
1158
+ "Enter the credential for this authentication method.",
1159
+ testFailed: "Connection test failed. Check the endpoint and credentials.",
1160
+ saveFailed: "Could not save this connection. Try again.",
1161
+ authBasic: "Basic authentication",
1162
+ invalidQuery: "Enter valid JSON query parameters.",
1163
+ registerError: "Could not register this API.",
1164
+ testError: "Could not test this API.",
1165
+ agentPrompt: "Save this Custom API query as a reusable data program.",
1166
+ keyHint: "Credential key:",
1167
+ register: "Register API",
1168
+ unknown: "Unknown",
1169
+ rowCount: "Rows",
1170
+ columns: "Columns",
1171
+ fields: {
1172
+ label: "Name",
1173
+ baseUrl: "Base URL",
1174
+ path: "Query path",
1175
+ query: "Query parameters",
1176
+ itemsPath: "Items path",
1177
+ docsUrl: "Documentation URL",
1178
+ authType: "Authentication type",
1179
+ usernameKey: "Username key",
1180
+ passwordKey: "Password key",
1181
+ credentialKey: "Credential key",
1182
+ headerName: "Header name",
1183
+ },
1184
+ placeholders: {
1185
+ label: "e.g. Weather API",
1186
+ baseUrl: "https://api.example.com",
1187
+ path: "/v1/forecast",
1188
+ query: '{ "limit": 100 }',
1189
+ itemsPath: "e.g. data.items",
1190
+ docsUrl: "https://docs.example.com",
1191
+ },
1192
+ },
1193
+ },
1194
+ analyticsBackend: {
1195
+ recommendationTitle: "Use an external analytics backend for heavy history",
1196
+ recommendationDescription:
1197
+ "Neon remains the default for recent operational analytics. Connect BigQuery for warehouse SQL and historical analysis, or Amplitude for product analytics, funnels, and retention. Connecting one does not automatically move /track events or backfill existing Neon data.",
1198
+ connectedTitle: "External analytics backends are ready",
1199
+ connectedDescription:
1200
+ "Use BigQuery for warehouse SQL and historical analysis, or Amplitude for product analytics, funnels, and retention. The built-in /track collector continues to write to first-party Analytics unless you explicitly configure another collection path.",
1201
+ options: "External options",
1202
+ monitorDescription:
1203
+ "Neon is still a good fit. Keep an eye on event volume and query latency; this card will suggest an external backend if pressure grows.",
1204
+ healthyDescription:
1205
+ "Neon is a good fit for this first-party data right now. We will suggest BigQuery or Amplitude if volume or query latency grows.",
1206
+ unavailableDescription:
1207
+ "We could not check first-party Analytics pressure right now. Reload and try again before changing backends.",
1208
+ configured: "Configured",
1209
+ setUp: "Set up",
1210
+ },
1211
+ panelEditor: {
1212
+ chartTypeLine: "Line",
1213
+ chartTypeArea: "Area",
1214
+ chartTypeBar: "Bar",
1215
+ chartTypePie: "Pie",
1216
+ chartTypeMetric: "Metric",
1217
+ chartTypeTable: "Table",
1218
+ chartTypeFunnel: "Funnel",
1219
+ chartTypeHeatmap: "Heatmap",
1220
+ chartTypeCallout: "Callout",
1221
+ chartTypeSection: "Section",
1222
+ chartTypeExtension: "Custom visualization",
1223
+ failedToSavePanel: "Failed to save panel",
1224
+ failedToFormatSql: "Failed to format SQL",
1225
+ title: "Title",
1226
+ titlePlaceholder: "e.g. Weekly signups",
1227
+ chartType: "Chart type",
1228
+ source: "Source",
1229
+ extensionDisplay: "Custom block display",
1230
+ sharedExtension: "Shared custom block",
1231
+ perViewerSlot: "Per-viewer slot",
1232
+ extension: "Custom block",
1233
+ loadingExtensions: "Loading custom blocks...",
1234
+ selectExtension: "Select a custom block",
1235
+ noExtensions:
1236
+ "No visible custom blocks. Ask the agent to create one first.",
1237
+ sharedExtensionHelp:
1238
+ "The selected custom block is shared with this dashboard and appears in scheduled reports. Viewers still need access to it.",
1239
+ slotIdOptional: "Slot ID (optional)",
1240
+ perViewerSlotHelp:
1241
+ "Each viewer installs their own extension. Scheduled reports may show an empty slot. Leave blank to generate a stable ID.",
1242
+ sectionColumns: "Section columns",
1243
+ format: "Format",
1244
+ filterInterpolation: "Use {{example}} to interpolate filter values.",
1245
+ dataProgram: "Data program",
1246
+ loadingDataPrograms: "Loading data programs...",
1247
+ selectDataProgram: "Select a data program",
1248
+ noDataPrograms:
1249
+ "No data programs yet. Ask the agent to save one with save-data-program, then pick it here.",
1250
+ programParamsOptionalJson: "Params (optional JSON)",
1251
+ programParamsHelp:
1252
+ "Passed to the program as its frozen params global. Leave blank to use the program's saved default params.",
1253
+ descriptionOptional: "Description (optional)",
1254
+ descriptionPlaceholder: "Short description shown under the panel title",
1255
+ cancel: "Cancel",
1256
+ saving: "Saving...",
1257
+ saveChanges: "Save changes",
1258
+ describe: "Describe",
1259
+ manual: "Manual",
1260
+ whatToChart: "What do you want to chart?",
1261
+ promptPlaceholder:
1262
+ "e.g. Weekly signups by channel over the last 6 months, stacked area",
1263
+ describeHelp:
1264
+ "The agent will consult the data dictionary, write the SQL, and append the panel. Press {{shortcut}} to submit.",
1265
+ generating: "Generating...",
1266
+ generate: "Generate",
1267
+ addPanel: "Add panel",
1268
+ editPanel: "Edit panel",
1269
+ untitledPanel: "Untitled panel",
1270
+ },
1271
+ legacyFusion: {
1272
+ payloadMissingTitle: "Legacy Fusion payload missing",
1273
+ payloadMissingDescription:
1274
+ "This migrated analysis is a legacy React dashboard, but its compact dashboard payload is not present in SQL. Sentry has captured this state so the migration can be repaired instead of silently showing a text placeholder.",
1275
+ closedLostEyebrow: "Fusion closed lost",
1276
+ closedLostTitle: "Loss reasons, stage leakage, and re-engagement paths",
1277
+ closedLostDescription:
1278
+ "Migrated from the legacy Fusion dashboard with compact Gong, HubSpot, Slack, and business-pain evidence preserved in SQL.",
1279
+ closedLostDeals: "Closed-lost deals",
1280
+ withGongCoverage: "{{count}} with Gong coverage",
1281
+ lostPipeline: "Lost pipeline",
1282
+ averageDeal: "{{amount}} average deal",
1283
+ customerEvidence: "Customer evidence",
1284
+ evidenceDetail: "{{transcripts}} transcripts, {{emails}} emails",
1285
+ reengageCandidates: "Re-engage candidates",
1286
+ reengageDetail: "Ranked by deal size and explicit revisit signals",
1287
+ overview: "Overview",
1288
+ lossThemes: "Loss themes",
1289
+ businessPain: "Business pain",
1290
+ reengage: "Re-engage",
1291
+ stageLeakage: "Stage leakage",
1292
+ stageLeakageDescription:
1293
+ "Where closed-lost value reached before the opportunity stopped.",
1294
+ pipeline: "{{amount}} pipeline",
1295
+ largestLosses: "Largest losses",
1296
+ largestLossesDescription:
1297
+ "Highest-value closed-lost opportunities in the preserved dataset.",
1298
+ operationalPains: "Operational pains",
1299
+ operationalPainsDescription:
1300
+ "Recurring day-to-day friction across lost deals.",
1301
+ businessPains: "Business pains",
1302
+ businessPainsDescription:
1303
+ "Economic and strategic impact attached to the same accounts.",
1304
+ painByDeal: "Pain by deal",
1305
+ painByDealDescription:
1306
+ "Compact evidence preserved from the business-pain enrichment file.",
1307
+ bestReengagementPaths: "Best re-engagement paths",
1308
+ bestReengagementPathsDescription:
1309
+ "Deals with revisit language, delayed timing, inherited-pipeline cleanup, or post-security reopen signals.",
1310
+ closedWonEyebrow: "Fusion closed won",
1311
+ closedWonTitle: "What turned technical interest into signed new business",
1312
+ closedWonDescription:
1313
+ "Migrated from the legacy Fusion closed-won dashboard with compact deal, Gong, Slack, email, and persona evidence preserved in SQL.",
1314
+ closedWonDeals: "Closed-won deals",
1315
+ wonArr: "Won ARR",
1316
+ evidenceCaptured: "Evidence captured",
1317
+ evidenceCapturedDetail: "{{emails}} emails, {{slack}} Slack messages",
1318
+ buyerPersonas: "Buyer personas",
1319
+ personaGroups: "{{count}} company/persona groups",
1320
+ winThemes: "Win themes",
1321
+ painThemes: "Pain themes",
1322
+ coverage: "Coverage",
1323
+ wonDeals: "Won deals",
1324
+ wonDealsDescription: "Closed-won Fusion opportunities ranked by ARR.",
1325
+ personaCoverage: "Persona coverage",
1326
+ personaCoverageDescription:
1327
+ "Buyer and stakeholder company coverage from the preserved persona map.",
1328
+ contacts: "{{count}} contacts",
1329
+ operationalThemes: "Operational themes",
1330
+ operationalThemesDescription:
1331
+ "The workflow frictions that opened the buying motion.",
1332
+ businessThemes: "Business themes",
1333
+ businessThemesDescription:
1334
+ "The executive-level stakes attached to those frictions.",
1335
+ evidenceCoverageByDeal: "Evidence coverage by deal",
1336
+ evidenceCoverageByDealDescription:
1337
+ "Gong, email, Slack, contact, and persona coverage preserved from the matched dataset.",
1338
+ dataRefreshed: "Data refreshed {{date}}",
1339
+ noRowsAvailable: "No rows available",
1340
+ noThemesAvailable: "No themes available",
1341
+ deals: "{{count}} deals",
1342
+ noDealsAvailable: "No deals available",
1343
+ noPainRowsAvailable: "No pain rows available",
1344
+ deal: "Deal",
1345
+ amount: "Amount",
1346
+ stage: "Stage",
1347
+ reason: "Reason",
1348
+ closed: "Closed",
1349
+ calls: "Calls",
1350
+ emails: "Emails",
1351
+ slack: "Slack",
1352
+ contactsColumn: "Contacts",
1353
+ unknown: "Unknown",
1354
+ operationalPain: "Operational pain",
1355
+ untitledTheme: "Untitled theme",
1356
+ },
1357
+ sessions: {
1358
+ title: "Sessions",
1359
+ description:
1360
+ "Review first-party browser sessions and replay recordings captured by Agent-Native Analytics.",
1361
+ filters: "Filters",
1362
+ segmentFilters: "Segment filters",
1363
+ sessionPlaylist: "Session playlist",
1364
+ userFilters: "User filters",
1365
+ eventFilters: "Event filters",
1366
+ anyActivity: "Any activity",
1367
+ filtersDescription:
1368
+ "Filters are stored in the URL so the agent and shared links see the same session list.",
1369
+ refresh: "Refresh",
1370
+ searchPlaceholder: "Search session, visitor, URL, path...",
1371
+ appPlaceholder: "App or template",
1372
+ range: "Range",
1373
+ replay: "Replay",
1374
+ replayAll: "All sessions",
1375
+ replayWith: "With replay",
1376
+ replayWithout: "Without replay",
1377
+ last24h: "Last 24h",
1378
+ last7d: "Last 7d",
1379
+ last30d: "Last 30d",
1380
+ last90d: "Last 90d",
1381
+ allTime: "All time",
1382
+ showing: "{{count}} sessions",
1383
+ eventCountCompact: "{{count}} events",
1384
+ pageCountCompactSingular: "{{count}} page",
1385
+ pageCountCompact: "{{count}} pages",
1386
+ truncated: "Showing the first replay events only.",
1387
+ session: "Session",
1388
+ visitor: "Visitor",
1389
+ app: "App",
1390
+ unknownApp: "Unknown app",
1391
+ lastSeen: "Last seen",
1392
+ duration: "Duration",
1393
+ events: "Events",
1394
+ chunks: "Chunks",
1395
+ pages: "Pages",
1396
+ replayReady: "Replay",
1397
+ watchReplay: "Watch replay",
1398
+ metadataOnly: "Replay unavailable",
1399
+ noSessions: "No sessions found",
1400
+ noSessionsDescription:
1401
+ "Create an Analytics public key, configure tracking with session replay enabled, then visit the app in a browser.",
1402
+ emptyStepKey: "Create key",
1403
+ emptyStepEnv: "Configure SDK",
1404
+ emptyStepVisit: "Visit app",
1405
+ installSnippetTitle: "Add session replay",
1406
+ backToSessions: "Back to sessions",
1407
+ copyForAgent: "Copy for agent",
1408
+ copyForAgentTooltip:
1409
+ "Copy a temporary private link an agent can use to inspect this replay.",
1410
+ copiedForAgent: "Copied",
1411
+ askAgent: "Ask agent",
1412
+ askAgentTooltip: "Ask the Analytics agent about this replay.",
1413
+ askSessionTitle: "Ask about this session",
1414
+ askSessionDescription:
1415
+ "Send a focused prompt to the Analytics agent with this replay attached as context.",
1416
+ askSessionPlaceholder: "What happened in this session?",
1417
+ replayPlayer: "Replay player",
1418
+ replayLoading: "Loading replay...",
1419
+ replayLoadingProgress: "{{loaded}} of {{total}} replay chunks loaded",
1420
+ replayUnavailable: "No playable replay for this session",
1421
+ replayUnavailableDescription:
1422
+ "This recording has metadata, but no playable replay events were found.",
1423
+ unavailableChunks: "{{count}} replay segments could not be loaded.",
1424
+ replayChunks: "Replay chunks",
1425
+ replayChunksDescription:
1426
+ "Scoped chunks used to reconstruct this replay. Provider URLs stay private.",
1427
+ chunkAndEventCount: "{{chunks}} chunks, {{events}} replay events",
1428
+ replayEventCount: "{{events}} replay events",
1429
+ timeline: "Event timeline",
1430
+ replayTimeline: "Replay timeline",
1431
+ timelineDescription: "Showing {{count}} of {{total}} useful events.",
1432
+ timelineSearch: "Search events...",
1433
+ timelineNoMatches: "No timeline events match the current search.",
1434
+ noTimelineEvents: "No timeline markers found",
1435
+ sequence: "Sequence",
1436
+ size: "Size",
1437
+ checksum: "Checksum",
1438
+ started: "Started",
1439
+ signedIn: "Signed in",
1440
+ anonymous: "Anonymous",
1441
+ errors: "Errors",
1442
+ errorCount: "{{count}} errors",
1443
+ rageClicks: "{{count}} rage clicks",
1444
+ replayEvents: "Replay events",
1445
+ restart: "Restart",
1446
+ play: "Play",
1447
+ pause: "Pause",
1448
+ skipBack: "Back 5 seconds",
1449
+ skipForward: "Forward 5 seconds",
1450
+ skipInactive: "Skip inactivity",
1451
+ skipInactiveOn: "Skipping inactive gaps",
1452
+ skipInactiveOff: "Playing inactive gaps",
1453
+ loadFailed: "Couldn't load session replay: {{message}}",
1454
+ noReplayEvents: "No rrweb events were found for this replay.",
1455
+ chunkCount: "{{count}} replay chunks",
1456
+ url: "URL",
1457
+ path: "Path",
1458
+ eventName: "Event",
1459
+ time: "Time",
1460
+ storageSetupTitle: "Connect replay storage",
1461
+ storageSetupDescription:
1462
+ "Session replay recordings need storage before chunks can be saved. Connect Builder.io for free-tier storage, or configure your own S3-compatible bucket.",
1463
+ storageConnected: "Storage connected",
1464
+ connectBuilder: "Use Builder.io",
1465
+ configureS3: "Configure S3 storage",
1466
+ devtools: "Dev Tools",
1467
+ devtoolsResize: "Resize Dev Tools",
1468
+ devtoolsIssueCount: "{{count}} issues detected",
1469
+ devtoolsConsoleTab: "Console ({{count}})",
1470
+ devtoolsNetworkTab: "Network ({{count}})",
1471
+ devtoolsFilterAll: "All ({{count}})",
1472
+ devtoolsFilterLog: "Log ({{count}})",
1473
+ devtoolsFilterInfo: "Info ({{count}})",
1474
+ devtoolsFilterWarning: "Warning ({{count}})",
1475
+ devtoolsFilterError: "Error ({{count}})",
1476
+ devtoolsFilterFetch: "Fetch ({{count}})",
1477
+ devtoolsFilterXhr: "XHR ({{count}})",
1478
+ devtoolsFilterFailed: "Failed ({{count}})",
1479
+ devtoolsConsoleSearch: "Filter console messages...",
1480
+ devtoolsNetworkSearch: "Filter requests...",
1481
+ devtoolsJumpTo: "Jump to",
1482
+ devtoolsToggleDetails: "Toggle details",
1483
+ devtoolsMessage: "Message",
1484
+ devtoolsArgs: "Logged arguments",
1485
+ devtoolsStack: "Stack trace",
1486
+ devtoolsResponseBody: "Response body",
1487
+ devtoolsRepeatCount: "×{{count}}",
1488
+ devtoolsFailedStatus: "failed",
1489
+ devtoolsDurationMs: "{{ms}} ms",
1490
+ devtoolsNoConsole: "No console activity was captured for this session.",
1491
+ devtoolsNoNetwork: "No network activity was captured for this session.",
1492
+ devtoolsNoConsoleMatches: "No console messages match the current filters.",
1493
+ devtoolsNoNetworkMatches: "No requests match the current filters.",
1494
+ },
1495
+ catalog: {
1496
+ description: "Install a dashboard template when you need a starting point.",
1497
+ noTemplatesFound: "No templates found",
1498
+ tryDifferentCategory: "Try a different catalog category.",
1499
+ templatesCount: "{{count}} templates",
1500
+ installedCount: "{{count}} installed",
1501
+ demo: "Demo",
1502
+ recommended: "Recommended",
1503
+ panels: "{{count}} panels",
1504
+ installedAs: "Installed as {{name}}",
1505
+ installsPrivateSqlDashboard: "Installs as a private SQL dashboard",
1506
+ open: "Open",
1507
+ install: "Install",
1508
+ installing: "Installing",
1509
+ installSuccess: "Installed {{name}}",
1510
+ installFailed: "Couldn't install {{name}}",
1511
+ installFailedWithMessage: "Couldn't install {{name}}: {{message}}",
1512
+ },
1513
+ };