@linxiraos/pi-stats 1.1.26 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -5
- package/build.ts +4 -0
- package/dist/client/favicon.ico +0 -0
- package/dist/client/index.css +1 -1
- package/dist/client/index.html +1 -0
- package/dist/client/index.js +96 -96
- package/dist/types/aggregator.d.ts +4 -1
- package/dist/types/client/api.d.ts +5 -1
- package/dist/types/client/app/nav.d.ts +5 -2
- package/dist/types/client/data/formatters.d.ts +7 -2
- package/dist/types/client/data/live.d.ts +16 -11
- package/dist/types/client/data/query-store.d.ts +39 -0
- package/dist/types/client/data/query.d.ts +10 -5
- package/dist/types/client/data/range.d.ts +4 -3
- package/dist/types/client/i18n/format.d.ts +9 -0
- package/dist/types/client/i18n/index.d.ts +18 -0
- package/dist/types/client/i18n/messages/charts.d.ts +8 -0
- package/dist/types/client/i18n/messages/common.d.ts +153 -0
- package/dist/types/client/i18n/messages/costs.d.ts +92 -0
- package/dist/types/client/i18n/messages/en.d.ts +1255 -0
- package/dist/types/client/i18n/messages/errors.d.ts +78 -0
- package/dist/types/client/i18n/messages/frustration.d.ts +191 -0
- package/dist/types/client/i18n/messages/gain.d.ts +54 -0
- package/dist/types/client/i18n/messages/models.d.ts +94 -0
- package/dist/types/client/i18n/messages/nav.d.ts +46 -0
- package/dist/types/client/i18n/messages/overview.d.ts +80 -0
- package/dist/types/client/i18n/messages/projects.d.ts +84 -0
- package/dist/types/client/i18n/messages/providers.d.ts +142 -0
- package/dist/types/client/i18n/messages/requests.d.ts +72 -0
- package/dist/types/client/i18n/messages/tools.d.ts +119 -0
- package/dist/types/client/i18n/messages/traces.d.ts +144 -0
- package/dist/types/client/i18n/messages/ui.d.ts +44 -0
- package/dist/types/client/i18n/messages/zh-CN.d.ts +13 -0
- package/dist/types/client/i18n/types.d.ts +15 -0
- package/dist/types/client/traces/Minimap.d.ts +2 -0
- package/dist/types/client/traces/TimelineCanvas.d.ts +29 -8
- package/dist/types/client/traces/TranscriptList.d.ts +3 -1
- package/dist/types/db.d.ts +14 -21
- package/dist/types/embedded-client.d.ts +5 -0
- package/dist/types/frustration.d.ts +18 -9
- package/dist/types/live.d.ts +5 -3
- package/dist/types/locale.d.ts +16 -0
- package/dist/types/parser.d.ts +0 -17
- package/dist/types/rollup.d.ts +9 -1
- package/dist/types/server.d.ts +6 -0
- package/dist/types/shared-types.d.ts +7 -0
- package/dist/types/trace.d.ts +18 -6
- package/dist/types/types.d.ts +13 -1
- package/dist/types/user-metrics.d.ts +23 -1
- package/package.json +5 -5
- package/src/aggregator.ts +31 -11
- package/src/client/api.ts +40 -5
- package/src/client/app/LiveChip.tsx +14 -13
- package/src/client/app/Shell.tsx +19 -13
- package/src/client/app/ThemeToggle.tsx +4 -3
- package/src/client/app/nav.ts +19 -16
- package/src/client/data/formatters.ts +80 -13
- package/src/client/data/live.tsx +85 -45
- package/src/client/data/query-store.ts +108 -0
- package/src/client/data/query.ts +47 -56
- package/src/client/data/range.ts +34 -14
- package/src/client/data/series.ts +7 -1
- package/src/client/favicon.ico +0 -0
- package/src/client/i18n/format.ts +28 -0
- package/src/client/i18n/index.ts +53 -0
- package/src/client/i18n/messages/charts.ts +8 -0
- package/src/client/i18n/messages/common.ts +157 -0
- package/src/client/i18n/messages/costs.ts +104 -0
- package/src/client/i18n/messages/en.ts +40 -0
- package/src/client/i18n/messages/errors.ts +80 -0
- package/src/client/i18n/messages/frustration.ts +198 -0
- package/src/client/i18n/messages/gain.ts +54 -0
- package/src/client/i18n/messages/models.ts +94 -0
- package/src/client/i18n/messages/nav.ts +46 -0
- package/src/client/i18n/messages/overview.ts +90 -0
- package/src/client/i18n/messages/projects.ts +84 -0
- package/src/client/i18n/messages/providers.ts +165 -0
- package/src/client/i18n/messages/requests.ts +73 -0
- package/src/client/i18n/messages/tools.ts +120 -0
- package/src/client/i18n/messages/traces.ts +160 -0
- package/src/client/i18n/messages/ui.ts +46 -0
- package/src/client/i18n/messages/zh-CN.ts +43 -0
- package/src/client/i18n/types.ts +19 -0
- package/src/client/index.tsx +4 -0
- package/src/client/routes/CostsRoute.tsx +61 -48
- package/src/client/routes/ErrorsRoute.tsx +71 -47
- package/src/client/routes/FrustrationRoute.tsx +131 -116
- package/src/client/routes/GainRoute.tsx +42 -30
- package/src/client/routes/ModelsRoute.tsx +90 -73
- package/src/client/routes/OverviewRoute.tsx +109 -63
- package/src/client/routes/ProjectsRoute.tsx +73 -46
- package/src/client/routes/ProvidersRoute.tsx +151 -114
- package/src/client/routes/RequestsRoute.tsx +69 -46
- package/src/client/routes/ToolsRoute.tsx +108 -94
- package/src/client/routes/TracesRoute.tsx +25 -23
- package/src/client/styles.css +5 -2
- package/src/client/traces/AggregatesPanel.tsx +19 -8
- package/src/client/traces/Minimap.tsx +65 -27
- package/src/client/traces/SpanDrawer.tsx +46 -21
- package/src/client/traces/SummaryStrip.tsx +27 -11
- package/src/client/traces/TimelineCanvas.tsx +245 -116
- package/src/client/traces/TraceView.tsx +51 -36
- package/src/client/traces/TranscriptList.tsx +20 -11
- package/src/client/traces/traces.css +26 -0
- package/src/client/ui/JsonBlock.tsx +3 -2
- package/src/client/ui/Modal.tsx +3 -2
- package/src/client/ui/RequestDrawer.tsx +33 -30
- package/src/client/ui/SearchInput.tsx +2 -1
- package/src/client/ui/States.tsx +3 -2
- package/src/client/ui/Table.tsx +7 -3
- package/src/db.ts +150 -135
- package/src/embedded-client.ts +9 -0
- package/src/frustration.ts +9 -30
- package/src/index.ts +2 -1
- package/src/live.ts +36 -11
- package/src/locale.ts +29 -0
- package/src/parser.ts +37 -72
- package/src/port-conflict.ts +1 -1
- package/src/prompts/judge/frustration.json +19 -0
- package/src/rollup.ts +41 -20
- package/src/server.ts +67 -27
- package/src/shared-types.ts +7 -0
- package/src/trace.ts +54 -40
- package/src/types.ts +13 -1
- package/src/user-metrics.ts +220 -6
|
@@ -0,0 +1,1255 @@
|
|
|
1
|
+
/** Every English message: the source of truth for the key set. */
|
|
2
|
+
export declare const enMessages: {
|
|
3
|
+
readonly "nav.usage": "Usage";
|
|
4
|
+
readonly "nav.activity": "Activity";
|
|
5
|
+
readonly "nav.insights": "Insights";
|
|
6
|
+
readonly "nav.overview": "Overview";
|
|
7
|
+
readonly "nav.models": "Models";
|
|
8
|
+
readonly "nav.providers": "Providers";
|
|
9
|
+
readonly "nav.costs": "Costs";
|
|
10
|
+
readonly "nav.requests": "Requests";
|
|
11
|
+
readonly "nav.errors": "Errors";
|
|
12
|
+
readonly "nav.traces": "Traces";
|
|
13
|
+
readonly "nav.tools": "Tools";
|
|
14
|
+
readonly "nav.frustration": "Frustration";
|
|
15
|
+
readonly "nav.projects": "Projects";
|
|
16
|
+
readonly "nav.gain": "Gain";
|
|
17
|
+
readonly "nav.dashboard": "zetacode stats";
|
|
18
|
+
readonly "nav.breadcrumb-stats": "stats";
|
|
19
|
+
readonly "nav.pages": "Pages";
|
|
20
|
+
readonly "nav.open-navigation": "Open navigation";
|
|
21
|
+
readonly "common.provider": "Provider";
|
|
22
|
+
readonly "common.providers": "Providers";
|
|
23
|
+
readonly "common.model": "Model";
|
|
24
|
+
readonly "common.models": "Models";
|
|
25
|
+
readonly "common.requests": "Requests";
|
|
26
|
+
readonly "common.request": "Request";
|
|
27
|
+
readonly "common.tokens": "Tokens";
|
|
28
|
+
readonly "common.share": "Share";
|
|
29
|
+
readonly "common.cost": "Cost";
|
|
30
|
+
readonly "common.error-rate": "Error rate";
|
|
31
|
+
readonly "common.tokens-per-second": "Tokens/s";
|
|
32
|
+
readonly "common.output-tokens-per-second": "Output tokens/s";
|
|
33
|
+
readonly "common.premium": "Premium";
|
|
34
|
+
readonly "common.premium-requests": "Premium requests";
|
|
35
|
+
readonly "common.duration": "Duration";
|
|
36
|
+
readonly "common.started": "Started";
|
|
37
|
+
readonly "common.request-id": "Request id";
|
|
38
|
+
readonly "common.session-entry": "Session entry";
|
|
39
|
+
readonly "common.entry-id": "Entry id";
|
|
40
|
+
readonly "common.input": "Input";
|
|
41
|
+
readonly "common.output": "Output";
|
|
42
|
+
readonly "common.output-message": "Output message";
|
|
43
|
+
readonly "common.cache-read": "Cache read";
|
|
44
|
+
readonly "common.cache-write": "Cache write";
|
|
45
|
+
readonly "common.project": "Project";
|
|
46
|
+
readonly "common.pages": "Pages";
|
|
47
|
+
readonly "common.filter": "Filter…";
|
|
48
|
+
readonly "common.no-data-in-range": "No data in this range";
|
|
49
|
+
readonly "common.nothing-here-yet": "Nothing here yet";
|
|
50
|
+
readonly "common.show-more": "Show more";
|
|
51
|
+
readonly "common.total": "Total";
|
|
52
|
+
readonly "common.average": "Average";
|
|
53
|
+
readonly "common.unknown": "Unknown";
|
|
54
|
+
readonly "common.root": "(root)";
|
|
55
|
+
readonly "common.other-n": "Other ({count})";
|
|
56
|
+
readonly "common.time-range": "Time range";
|
|
57
|
+
readonly "common.range-1h": "1h";
|
|
58
|
+
readonly "common.range-24h": "24h";
|
|
59
|
+
readonly "common.range-7d": "7d";
|
|
60
|
+
readonly "common.range-30d": "30d";
|
|
61
|
+
readonly "common.range-90d": "90d";
|
|
62
|
+
readonly "common.range-all": "All";
|
|
63
|
+
readonly "common.window-1h": "the last hour";
|
|
64
|
+
readonly "common.window-24h": "the last 24 hours";
|
|
65
|
+
readonly "common.window-7d": "the last 7 days";
|
|
66
|
+
readonly "common.window-30d": "the last 30 days";
|
|
67
|
+
readonly "common.window-90d": "the last 90 days";
|
|
68
|
+
readonly "common.window-all": "all time";
|
|
69
|
+
readonly "common.copy": "Copy";
|
|
70
|
+
readonly "common.copied": "Copied";
|
|
71
|
+
readonly "common.close": "Close";
|
|
72
|
+
readonly "common.cancel": "Cancel";
|
|
73
|
+
readonly "common.aborted": "Aborted";
|
|
74
|
+
readonly "common.failed": "Failed";
|
|
75
|
+
readonly "common.error": "Error";
|
|
76
|
+
readonly "shell.live": "Live";
|
|
77
|
+
readonly "shell.reconnecting": "Reconnecting";
|
|
78
|
+
readonly "shell.syncing": "Syncing";
|
|
79
|
+
readonly "shell.sync-failed": "Sync failed";
|
|
80
|
+
readonly "shell.indexing": "Indexing";
|
|
81
|
+
readonly "shell.lost-connection": "Lost the live connection to the stats server; retrying";
|
|
82
|
+
readonly "shell.ingesting": "Ingesting session files";
|
|
83
|
+
readonly "shell.building-rollups": "Building hourly rollups; older ranges fill in as it goes";
|
|
84
|
+
readonly "shell.sync-now": "Click to sync session files now";
|
|
85
|
+
readonly "shell.just-now": "just now";
|
|
86
|
+
readonly "shell.system-theme": "System theme";
|
|
87
|
+
readonly "shell.dark-theme": "Dark theme";
|
|
88
|
+
readonly "shell.light-theme": "Light theme";
|
|
89
|
+
readonly "shell.range-suffix": "range";
|
|
90
|
+
readonly "shell.jump-hint": "then letter to jump";
|
|
91
|
+
readonly "overview.title": "Overview";
|
|
92
|
+
readonly "overview.description": "Everything zeta did across your sessions in {window}.";
|
|
93
|
+
readonly "overview.api-equivalent-cost": "API-equivalent cost";
|
|
94
|
+
readonly "overview.api-cost-title": "What this usage would cost at public API rates";
|
|
95
|
+
readonly "overview.unpriced-n": "{count} unpriced";
|
|
96
|
+
readonly "overview.failed-n": "{count} failed";
|
|
97
|
+
readonly "overview.conversation-tokens": "Conversation tokens";
|
|
98
|
+
readonly "overview.tokens-title": "Uncached input + cache reads + cache writes + output";
|
|
99
|
+
readonly "overview.output-n": "{count} output";
|
|
100
|
+
readonly "overview.cache-rate": "Cache rate";
|
|
101
|
+
readonly "overview.cache-rate-title": "Cache reads ÷ (uncached input + cache reads)";
|
|
102
|
+
readonly "overview.cache-saved": "{value} saved";
|
|
103
|
+
readonly "overview.succeeded-n": "{count} succeeded";
|
|
104
|
+
readonly "overview.uncached-input": "Uncached input";
|
|
105
|
+
readonly "overview.avg-latency": "Avg latency";
|
|
106
|
+
readonly "overview.avg-ttft": "Avg TTFT";
|
|
107
|
+
readonly "overview.activity": "Activity";
|
|
108
|
+
readonly "overview.per-5m": "Per 5 minutes";
|
|
109
|
+
readonly "overview.per-hour": "Per hour";
|
|
110
|
+
readonly "overview.per-day": "Per day";
|
|
111
|
+
readonly "overview.succeeded": "Succeeded";
|
|
112
|
+
readonly "overview.api-equivalent": "API-equivalent";
|
|
113
|
+
readonly "overview.token-mix": "Token mix";
|
|
114
|
+
readonly "overview.token-mix-description": "Where conversation tokens went";
|
|
115
|
+
readonly "overview.by-agent": "By agent";
|
|
116
|
+
readonly "overview.requests-short": "{count} req";
|
|
117
|
+
readonly "overview.main-agent": "Main agent";
|
|
118
|
+
readonly "overview.subagents": "Subagents";
|
|
119
|
+
readonly "overview.advisor": "Advisor";
|
|
120
|
+
readonly "overview.latest-requests": "Latest requests";
|
|
121
|
+
readonly "overview.latest-requests-description": "Most recent model calls across every session";
|
|
122
|
+
readonly "overview.all-requests": "All requests";
|
|
123
|
+
readonly "overview.when": "When";
|
|
124
|
+
readonly "overview.status": "Status";
|
|
125
|
+
readonly "overview.ok": "OK";
|
|
126
|
+
readonly "models.subtitle": "Which models did the work in {window}, and how fast they answered.";
|
|
127
|
+
readonly "models.empty-title": "No model usage in this range";
|
|
128
|
+
readonly "models.empty-hint": "Pick a wider range in the top bar.";
|
|
129
|
+
readonly "models.used": "Models used";
|
|
130
|
+
readonly "models.across-providers-one": "across {count} provider";
|
|
131
|
+
readonly "models.across-providers": "across {count} providers";
|
|
132
|
+
readonly "models.most-used": "Most used";
|
|
133
|
+
readonly "models.most-used-hint": "{share} of requests · {provider}";
|
|
134
|
+
readonly "models.failed-n": "{count} failed";
|
|
135
|
+
readonly "models.api-cost": "API-equivalent cost";
|
|
136
|
+
readonly "models.api-cost-title": "What this usage would cost at public API rates";
|
|
137
|
+
readonly "models.unpriced-n": "{count} unpriced";
|
|
138
|
+
readonly "models.request-share": "Request share";
|
|
139
|
+
readonly "models.share-desc": "Each model's share of requests per {bucket}";
|
|
140
|
+
readonly "models.count-desc": "Requests per {bucket}, stacked by model";
|
|
141
|
+
readonly "models.share-mode-aria": "Share chart mode";
|
|
142
|
+
readonly "models.all-models": "All models";
|
|
143
|
+
readonly "models.table-desc": "Click a row for latency and throughput over time";
|
|
144
|
+
readonly "models.cost-title": "API-equivalent estimate at public rates";
|
|
145
|
+
readonly "models.tokens-title": "Uncached input + cache reads + cache writes + output";
|
|
146
|
+
readonly "models.cache-rate": "Cache rate";
|
|
147
|
+
readonly "models.cache-title": "Cache reads ÷ (uncached input + cache reads)";
|
|
148
|
+
readonly "models.errors": "Errors";
|
|
149
|
+
readonly "models.tps-title": "Average output tokens per second";
|
|
150
|
+
readonly "models.ttft": "TTFT";
|
|
151
|
+
readonly "models.ttft-title": "Average time to first token";
|
|
152
|
+
readonly "models.trend": "Trend";
|
|
153
|
+
readonly "models.trend-title": "Requests per {bucket}";
|
|
154
|
+
readonly "models.efficiency": "Efficiency";
|
|
155
|
+
readonly "models.latency": "Latency";
|
|
156
|
+
readonly "models.cache-savings": "Cache savings";
|
|
157
|
+
readonly "models.avg-duration": "Avg duration";
|
|
158
|
+
readonly "models.avg-ttft": "Avg TTFT";
|
|
159
|
+
readonly "models.uncached-input": "Uncached input";
|
|
160
|
+
readonly "models.first-last-seen": "First seen {first} · last seen {last}";
|
|
161
|
+
readonly "models.performance-per-bucket": "Performance per active {bucket}";
|
|
162
|
+
readonly "models.no-samples-title": "No performance samples";
|
|
163
|
+
readonly "models.no-samples-hint": "Timing is recorded for streamed responses.";
|
|
164
|
+
readonly "models.tok-per-second": "{value} tok/s";
|
|
165
|
+
readonly "models.bucket-5m": "5 minutes";
|
|
166
|
+
readonly "models.bucket-hour": "hour";
|
|
167
|
+
readonly "models.bucket-day": "day";
|
|
168
|
+
readonly "providers.description": "Burn, reliability and subscription headroom per provider over {window}.";
|
|
169
|
+
readonly "providers.most-tokens": "Most tokens: {provider}";
|
|
170
|
+
readonly "providers.failed-n": "{count} failed";
|
|
171
|
+
readonly "providers.succeeded-n": "{count} succeeded";
|
|
172
|
+
readonly "providers.tokens-title": "Uncached input + cache reads + cache writes + output";
|
|
173
|
+
readonly "providers.api-equivalent-cost": "API-equivalent cost";
|
|
174
|
+
readonly "providers.api-cost-title": "What this usage would cost at public API rates";
|
|
175
|
+
readonly "providers.unpriced-n": "{count} unpriced";
|
|
176
|
+
readonly "providers.totals": "Provider totals";
|
|
177
|
+
readonly "providers.totals-description": "Cost is an API-equivalent estimate. Select a row for its token mix.";
|
|
178
|
+
readonly "providers.totals-description-unpriced-one": "Cost is an API-equivalent estimate and excludes {count} unpriced subscription request. Select a row for its token mix.";
|
|
179
|
+
readonly "providers.totals-description-unpriced-n": "Cost is an API-equivalent estimate and excludes {count} unpriced subscription requests. Select a row for its token mix.";
|
|
180
|
+
readonly "providers.no-requests-in-range": "No requests in this range";
|
|
181
|
+
readonly "providers.models-title": "Distinct models used through this provider";
|
|
182
|
+
readonly "providers.share-title": "Fraction of all tokens in range";
|
|
183
|
+
readonly "providers.cost-title": "API-equivalent estimate";
|
|
184
|
+
readonly "providers.tps-title": "Average output throughput";
|
|
185
|
+
readonly "providers.premium-title": "Premium requests (subscription multiplier units)";
|
|
186
|
+
readonly "providers.burn": "Burn by provider";
|
|
187
|
+
readonly "providers.burn-estimate-description": "API-equivalent estimate per {bucket}; excludes unpriced subscription requests";
|
|
188
|
+
readonly "providers.burn-description": "Per {bucket}, top {count} providers stacked";
|
|
189
|
+
readonly "providers.bucket-5m": "5 minutes";
|
|
190
|
+
readonly "providers.bucket-hour": "hour";
|
|
191
|
+
readonly "providers.bucket-day": "day";
|
|
192
|
+
readonly "providers.no-provider-activity": "No provider activity in this range";
|
|
193
|
+
readonly "providers.peak-burn-hours": "Peak burn hours";
|
|
194
|
+
readonly "providers.peak-hours-description": "Tokens by local hour of day; peak at {hour}";
|
|
195
|
+
readonly "providers.hours-description": "Tokens by local hour of day";
|
|
196
|
+
readonly "providers.all-providers": "All providers";
|
|
197
|
+
readonly "providers.tokens-peak-hour": "Tokens (peak hour)";
|
|
198
|
+
readonly "providers.no-activity-in-range": "No activity in this range";
|
|
199
|
+
readonly "providers.subscription-windows": "Subscription windows";
|
|
200
|
+
readonly "providers.subscription-windows-description": "What one usage window buys you and how many accounts peak demand needs. Select a row to chart it.";
|
|
201
|
+
readonly "providers.window": "Window";
|
|
202
|
+
readonly "providers.accounts": "Accounts";
|
|
203
|
+
readonly "providers.accounts-title": "Accounts with at least one snapshot for this window in range";
|
|
204
|
+
readonly "providers.resets": "Resets";
|
|
205
|
+
readonly "providers.resets-title": "Window resets observed (drops in used fraction)";
|
|
206
|
+
readonly "providers.windows-burned": "Windows burned";
|
|
207
|
+
readonly "providers.windows-burned-title": "Subscription-window equivalents consumed in range (sum of used-fraction increases across accounts)";
|
|
208
|
+
readonly "providers.tokens-per-window": "Tokens / window";
|
|
209
|
+
readonly "providers.tokens-per-window-title": "Provider tokens burned in range ÷ windows burned — what one full window is worth";
|
|
210
|
+
readonly "providers.too-little-consumed": "Too little of the window was consumed to extrapolate";
|
|
211
|
+
readonly "providers.peak-utilization": "Peak utilization";
|
|
212
|
+
readonly "providers.peak-utilization-title": "Peak of summed used fraction across accounts at any sampled instant; the bar is relative to fleet capacity";
|
|
213
|
+
readonly "providers.accounts-needed": "Accounts needed";
|
|
214
|
+
readonly "providers.accounts-needed-title": "Accounts needed to keep peak demand under 90% of fleet capacity";
|
|
215
|
+
readonly "providers.ideal-accounts": "{ideal} · have {have}";
|
|
216
|
+
readonly "providers.exhaustions": "Exhaustions";
|
|
217
|
+
readonly "providers.exhaustions-title": "Transitions into an exhausted state observed in range";
|
|
218
|
+
readonly "providers.exhausted-n": "{count} exhausted";
|
|
219
|
+
readonly "providers.no-snapshots-in-range": "No usage snapshots in this range";
|
|
220
|
+
readonly "providers.snapshot-hint": "Usage snapshots accumulate whenever usage limits are fetched (TUI footer, /usage, zeta-c usage).";
|
|
221
|
+
readonly "providers.utilization": "Window utilization";
|
|
222
|
+
readonly "providers.utilization-description": "{window} used fraction per account, {from} – {to}";
|
|
223
|
+
readonly "providers.utilization-description-plain": "Recorded limit utilization per account";
|
|
224
|
+
readonly "providers.no-utilization-readings": "No utilization readings for this window";
|
|
225
|
+
readonly "providers.exhausted": "Exhausted";
|
|
226
|
+
readonly "providers.no-reading": "No reading";
|
|
227
|
+
readonly "providers.high": "High";
|
|
228
|
+
readonly "providers.account": "Account";
|
|
229
|
+
readonly "providers.latest-used": "Latest used";
|
|
230
|
+
readonly "providers.status": "Status";
|
|
231
|
+
readonly "providers.peak-in-range": "Peak in range";
|
|
232
|
+
readonly "providers.snapshots": "Snapshots";
|
|
233
|
+
readonly "providers.recorded": "Recorded";
|
|
234
|
+
readonly "costs.title": "Costs";
|
|
235
|
+
readonly "costs.description": "What {window} of usage would cost at public API rates. Subscription usage without a public price is counted as unpriced, not free.";
|
|
236
|
+
readonly "costs.no-usage-in-range": "No usage in this range";
|
|
237
|
+
readonly "costs.empty-hint": "Pick a wider range in the top bar.";
|
|
238
|
+
readonly "costs.daily-estimate": "Daily estimate";
|
|
239
|
+
readonly "costs.daily-by-model": "Per UTC day, stacked by model";
|
|
240
|
+
readonly "costs.daily-by-component": "Per UTC day, stacked by billing component";
|
|
241
|
+
readonly "costs.split-by": "Split by";
|
|
242
|
+
readonly "costs.by-model": "By model";
|
|
243
|
+
readonly "costs.by-component": "By component";
|
|
244
|
+
readonly "costs.no-priced-usage": "No priced usage in this range";
|
|
245
|
+
readonly "costs.unpriced-requests": "Unpriced requests";
|
|
246
|
+
readonly "costs.where-it-went": "Where it went";
|
|
247
|
+
readonly "costs.estimate-by-component": "Estimate by billing component";
|
|
248
|
+
readonly "costs.unpriced-note-one": "{count} unpriced subscription request is not included.";
|
|
249
|
+
readonly "costs.unpriced-note-n": "{count} unpriced subscription requests are not included.";
|
|
250
|
+
readonly "costs.by-model-description": "Estimate per model with its input, output and cache split";
|
|
251
|
+
readonly "costs.estimate": "Estimate";
|
|
252
|
+
readonly "costs.estimate-title": "API-equivalent estimate at public rates";
|
|
253
|
+
readonly "costs.split": "Split";
|
|
254
|
+
readonly "costs.split-title": "Input · output · cache read · cache write";
|
|
255
|
+
readonly "costs.per-request": "Per request";
|
|
256
|
+
readonly "costs.per-request-title": "Estimate ÷ priced requests";
|
|
257
|
+
readonly "costs.unpriced": "Unpriced";
|
|
258
|
+
readonly "costs.unpriced-column-title": "Requests with no public-equivalent price";
|
|
259
|
+
readonly "costs.api-equivalent-estimate": "API-equivalent estimate";
|
|
260
|
+
readonly "costs.api-estimate-title": "What this usage would cost at public API rates";
|
|
261
|
+
readonly "costs.requests-n": "{count} requests";
|
|
262
|
+
readonly "costs.average-per-day": "Average per day";
|
|
263
|
+
readonly "costs.average-per-day-title": "Estimate ÷ days with any usage";
|
|
264
|
+
readonly "costs.active-days-one": "over {count} active day";
|
|
265
|
+
readonly "costs.active-days-n": "over {count} active days";
|
|
266
|
+
readonly "costs.top-model": "Top model";
|
|
267
|
+
readonly "costs.top-model-hint": "{cost} · {share} of estimate";
|
|
268
|
+
readonly "costs.nothing-priced-yet": "Nothing priced yet";
|
|
269
|
+
readonly "costs.per-priced-request": "Per priced request";
|
|
270
|
+
readonly "costs.per-priced-request-title": "Estimate ÷ requests that have a public price";
|
|
271
|
+
readonly "costs.priced-n": "{count} priced";
|
|
272
|
+
readonly "costs.unpriced-title": "Subscription usage with no public-equivalent price; excluded from the estimate";
|
|
273
|
+
readonly "costs.unpriced-hint": "excluded from the estimate";
|
|
274
|
+
readonly "costs.all-priced": "all usage priced";
|
|
275
|
+
readonly "requests.description": "Every model call zeta made in {window}, newest first. Open a row for its full payload.";
|
|
276
|
+
readonly "requests.loading": "Loading…";
|
|
277
|
+
readonly "requests.load-latest": "Load latest {count}";
|
|
278
|
+
readonly "requests.status": "Status";
|
|
279
|
+
readonly "requests.status-all": "All";
|
|
280
|
+
readonly "requests.none-in-window": "none in {window}";
|
|
281
|
+
readonly "requests.since": "since {time}";
|
|
282
|
+
readonly "requests.failed-hint": "{rate} · {count} aborted";
|
|
283
|
+
readonly "requests.tokens-hint": "Total tokens across these requests";
|
|
284
|
+
readonly "requests.api-equivalent-cost": "API-equivalent cost";
|
|
285
|
+
readonly "requests.cost-hint": "What these requests would cost at public API rates";
|
|
286
|
+
readonly "requests.unpriced-n": "{count} unpriced";
|
|
287
|
+
readonly "requests.median-duration": "Median duration";
|
|
288
|
+
readonly "requests.p95": "p95 {value}";
|
|
289
|
+
readonly "requests.median-ttft": "Median TTFT";
|
|
290
|
+
readonly "requests.ttft": "TTFT";
|
|
291
|
+
readonly "requests.ttft-hint": "Time to first token";
|
|
292
|
+
readonly "requests.log-title": "Request log";
|
|
293
|
+
readonly "requests.log-loading": "Loading the latest requests…";
|
|
294
|
+
readonly "requests.log-count-in-window": "{shown} of {total} requests in {window}";
|
|
295
|
+
readonly "requests.log-count-latest": "{shown} of the latest {total} requests";
|
|
296
|
+
readonly "requests.search-placeholder": "Model, provider or project";
|
|
297
|
+
readonly "requests.footer": "Showing the latest {count} requests, back to {time}. Older requests in {window} are not loaded.";
|
|
298
|
+
readonly "requests.empty-in-window": "No requests in {window}";
|
|
299
|
+
readonly "requests.empty-no-match": "No requests match";
|
|
300
|
+
readonly "requests.empty-no-match-hint": "Clear the search or status filter.";
|
|
301
|
+
readonly "requests.when": "When";
|
|
302
|
+
readonly "requests.uncached-input": "Uncached input tokens";
|
|
303
|
+
readonly "requests.cache-read-title": "Cache read tokens (hover a cell for cache writes)";
|
|
304
|
+
readonly "requests.cache-write": "Cache write: {count}";
|
|
305
|
+
readonly "requests.cost-estimate": "API-equivalent estimate";
|
|
306
|
+
readonly "errors.title": "Errors";
|
|
307
|
+
readonly "errors.description": "Failed model requests in {window}, grouped by error signature. Open a failure for its full payload.";
|
|
308
|
+
readonly "errors.footer": "Showing the latest {count} failures in {window}; older ones are not loaded.";
|
|
309
|
+
readonly "errors.loading": "Loading…";
|
|
310
|
+
readonly "errors.load-latest": "Load latest {count}";
|
|
311
|
+
readonly "errors.failures": "Failures";
|
|
312
|
+
readonly "errors.hint-in-window": "in {window}";
|
|
313
|
+
readonly "errors.hint-latest-loaded": "latest {count} loaded";
|
|
314
|
+
readonly "errors.signatures": "Signatures";
|
|
315
|
+
readonly "errors.signatures-hint": "Distinct error messages after normalizing ids and numbers";
|
|
316
|
+
readonly "errors.signatures-top": "top: {count} failures";
|
|
317
|
+
readonly "errors.affected-models": "Affected models";
|
|
318
|
+
readonly "errors.last-failure": "Last failure";
|
|
319
|
+
readonly "errors.none-in-window": "none in {window}";
|
|
320
|
+
readonly "errors.error-signatures": "Error signatures";
|
|
321
|
+
readonly "errors.signatures-card-description": "Same message with ids and counters normalized. Select one to filter the failures below.";
|
|
322
|
+
readonly "errors.empty-no-failures": "No failures in {window}";
|
|
323
|
+
readonly "errors.empty-all-succeeded": "Every request succeeded or was aborted.";
|
|
324
|
+
readonly "errors.by-model": "By model";
|
|
325
|
+
readonly "errors.by-model-description": "Failures per model. Select one to filter.";
|
|
326
|
+
readonly "errors.empty-no-affected-models": "No affected models";
|
|
327
|
+
readonly "errors.loading-failures": "Loading failures…";
|
|
328
|
+
readonly "errors.filtered-of-total": "{shown} of {total} failures, newest first";
|
|
329
|
+
readonly "errors.search-placeholder": "Message, model or project";
|
|
330
|
+
readonly "errors.no-match": "No failures match";
|
|
331
|
+
readonly "errors.no-match-hint": "Clear the search or the selected filters.";
|
|
332
|
+
readonly "errors.signature": "Signature";
|
|
333
|
+
readonly "errors.more-models": "+{count} more";
|
|
334
|
+
readonly "errors.last-seen": "Last seen";
|
|
335
|
+
readonly "errors.unknown-error": "Unknown error";
|
|
336
|
+
readonly "errors.group-meta": "{count} failures · first {first} · last {last}";
|
|
337
|
+
readonly "errors.open-latest": "Open latest";
|
|
338
|
+
readonly "errors.when": "When";
|
|
339
|
+
readonly "errors.cost-hint": "API-equivalent estimate";
|
|
340
|
+
readonly "trace.title": "Traces";
|
|
341
|
+
readonly "trace.description": "Recent sessions with subagent activity folded in. Open one to inspect its timeline.";
|
|
342
|
+
readonly "trace.sessions": "Sessions";
|
|
343
|
+
readonly "trace.session": "Session";
|
|
344
|
+
readonly "trace.most-recent": "{count} most recent";
|
|
345
|
+
readonly "trace.most-recent-filtered": "{shown} of {total} most recent";
|
|
346
|
+
readonly "trace.filter-placeholder": "Filter by title, project, model…";
|
|
347
|
+
readonly "trace.empty-title": "No sessions found";
|
|
348
|
+
readonly "trace.empty-hint": "Run a sync to index recent activity.";
|
|
349
|
+
readonly "trace.no-matching-title": "No matching sessions";
|
|
350
|
+
readonly "trace.no-matching-hint": "Try a different filter.";
|
|
351
|
+
readonly "trace.tool": "Tool";
|
|
352
|
+
readonly "trace.tools": "Tools";
|
|
353
|
+
readonly "trace.agent": "Agent";
|
|
354
|
+
readonly "trace.agents": "Agents";
|
|
355
|
+
readonly "trace.background": "Background";
|
|
356
|
+
readonly "trace.bg": "Bg";
|
|
357
|
+
readonly "trace.refresh": "Refresh trace";
|
|
358
|
+
readonly "trace.timeline": "Timeline";
|
|
359
|
+
readonly "trace.timeline-hint": "W/S zoom · A/D pan · drag pan · wheel zoom · 0 fit · F focus selection · dbl-click focus · Esc deselect";
|
|
360
|
+
readonly "trace.expand-all": "Expand all";
|
|
361
|
+
readonly "trace.collapse-all": "Collapse all";
|
|
362
|
+
readonly "trace.axis-mode": "Axis mode";
|
|
363
|
+
readonly "trace.mode-time-title": "Real wall-clock time";
|
|
364
|
+
readonly "trace.mode-turns-title": "Equal width per user turn";
|
|
365
|
+
readonly "trace.mode-calls-title": "Equal width per model/tool call boundary";
|
|
366
|
+
readonly "trace.turns": "Turns";
|
|
367
|
+
readonly "trace.calls": "Calls";
|
|
368
|
+
readonly "trace.compress-idle": "Compress idle";
|
|
369
|
+
readonly "trace.search-placeholder": "Search spans…";
|
|
370
|
+
readonly "trace.previous-match": "Previous match";
|
|
371
|
+
readonly "trace.next-match": "Next match";
|
|
372
|
+
readonly "trace.transcript": "Transcript";
|
|
373
|
+
readonly "trace.transcript-description": "Every span and marker in order; click to inspect";
|
|
374
|
+
readonly "trace.no-matching-events": "No matching events";
|
|
375
|
+
readonly "trace.canvas-aria": "Trace timeline. W and S zoom, A and D pan, 0 fits all, F focuses the selection.";
|
|
376
|
+
readonly "trace.minimap-aria": "Timeline overview brush";
|
|
377
|
+
readonly "trace.expand-track": "Expand {track}";
|
|
378
|
+
readonly "trace.collapse-track": "Collapse {track}";
|
|
379
|
+
readonly "trace.unterminated": "unterminated";
|
|
380
|
+
readonly "trace.tok": "tok";
|
|
381
|
+
readonly "trace.ttft": "TTFT";
|
|
382
|
+
readonly "trace.wall-time": "Wall time";
|
|
383
|
+
readonly "trace.model-time": "Model time";
|
|
384
|
+
readonly "trace.tool-time": "Tool time";
|
|
385
|
+
readonly "trace.idle": "Idle";
|
|
386
|
+
readonly "trace.tool-calls-n": "{count} tool calls";
|
|
387
|
+
readonly "trace.of-wall": "{percent} of wall";
|
|
388
|
+
readonly "trace.tool-aggregates": "Tool aggregates";
|
|
389
|
+
readonly "trace.tool-aggregates-desc": "{count} tools, by total time";
|
|
390
|
+
readonly "trace.errors": "Errors";
|
|
391
|
+
readonly "trace.failed-n": "{count} failed";
|
|
392
|
+
readonly "trace.avg": "Avg";
|
|
393
|
+
readonly "trace.max": "Max";
|
|
394
|
+
readonly "trace.start": "Start";
|
|
395
|
+
readonly "trace.track": "Track";
|
|
396
|
+
readonly "trace.io-cached": "Input / output / cached";
|
|
397
|
+
readonly "trace.stop-reason": "Stop reason";
|
|
398
|
+
readonly "trace.copy-json": "Copy raw JSON";
|
|
399
|
+
readonly "trace.error-message": "Error message";
|
|
400
|
+
readonly "trace.task": "Task";
|
|
401
|
+
readonly "trace.open-child-track": "Open child track";
|
|
402
|
+
readonly "trace.args": "Args";
|
|
403
|
+
readonly "trace.thinking": "Thinking";
|
|
404
|
+
readonly "trace.text": "Text";
|
|
405
|
+
readonly "trace.raw-entry": "Raw entry";
|
|
406
|
+
readonly "trace.load-failed": "Failed to load entry: {message}";
|
|
407
|
+
readonly "tools.title": "Tools";
|
|
408
|
+
readonly "tools.description": "Which tools zeta called in {window}, how often they failed, and what they cost.";
|
|
409
|
+
readonly "tools.tool-calls": "Tool calls";
|
|
410
|
+
readonly "tools.failed-n": "{count} failed";
|
|
411
|
+
readonly "tools.distinct-tools": "Distinct tools";
|
|
412
|
+
readonly "tools.most-used": "Most used: {tool}";
|
|
413
|
+
readonly "tools.error-rate-title": "Tool results that came back flagged as errors";
|
|
414
|
+
readonly "tools.succeeded-n": "{count} succeeded";
|
|
415
|
+
readonly "tools.attributed-tokens": "Attributed tokens";
|
|
416
|
+
readonly "tools.tokens-output": "{tokens} output";
|
|
417
|
+
readonly "tools.attributed-cost": "Attributed cost";
|
|
418
|
+
readonly "tools.attribution-note": "Tokens and API-equivalent cost of each invoking turn, split evenly across that turn's tool calls";
|
|
419
|
+
readonly "tools.attribution-estimate": "{note}; API-equivalent estimate";
|
|
420
|
+
readonly "tools.unpriced-requests-n": "{count} unpriced requests";
|
|
421
|
+
readonly "tools.api-equivalent": "API-equivalent";
|
|
422
|
+
readonly "tools.result-text": "Result text";
|
|
423
|
+
readonly "tools.result-chars-title": "Characters of tool-result text fed back into context";
|
|
424
|
+
readonly "tools.chars": "{count} chars";
|
|
425
|
+
readonly "tools.call-arguments": "Call arguments";
|
|
426
|
+
readonly "tools.args-chars-title": "Characters of serialized tool-call arguments";
|
|
427
|
+
readonly "tools.avg-result-per-call": "Avg result per call";
|
|
428
|
+
readonly "tools.avg-args-per-call": "Avg arguments per call";
|
|
429
|
+
readonly "tools.calls-over-time": "Calls over time";
|
|
430
|
+
readonly "tools.errors-over-time": "Errors over time";
|
|
431
|
+
readonly "tools.chart-description": "Per {bucket}, top {count} tools stacked";
|
|
432
|
+
readonly "tools.bucket-5m": "5 minutes";
|
|
433
|
+
readonly "tools.bucket-hour": "hour";
|
|
434
|
+
readonly "tools.bucket-day": "day";
|
|
435
|
+
readonly "tools.calls": "Calls";
|
|
436
|
+
readonly "tools.errors": "Errors";
|
|
437
|
+
readonly "tools.no-tool-errors": "No tool errors in this range";
|
|
438
|
+
readonly "tools.by-tool": "By tool";
|
|
439
|
+
readonly "tools.by-tool-description": "{note}. Select a tool to break it down by model.";
|
|
440
|
+
readonly "tools.by-tool-and-model": "By tool and model";
|
|
441
|
+
readonly "tools.by-tool-and-model-description": "Which models call which tools, and how often those calls fail";
|
|
442
|
+
readonly "tools.filter-by-tool": "Filter by tool";
|
|
443
|
+
readonly "tools.all-tools": "All tools";
|
|
444
|
+
readonly "tools.clear-tool-filter": "Clear tool filter";
|
|
445
|
+
readonly "tools.no-tool-calls": "No tool calls in this range";
|
|
446
|
+
readonly "tools.no-calls-to-tool": "No calls to {tool} in this range";
|
|
447
|
+
readonly "tools.tool": "Tool";
|
|
448
|
+
readonly "tools.trend": "Trend";
|
|
449
|
+
readonly "tools.trend-title": "Calls per bucket over the range";
|
|
450
|
+
readonly "tools.share-of-calls": "{percent} of all tool calls";
|
|
451
|
+
readonly "tools.errors-title": "Calls whose result came back flagged as an error";
|
|
452
|
+
readonly "tools.args": "Args";
|
|
453
|
+
readonly "tools.result": "Result";
|
|
454
|
+
readonly "tools.result-per-call": "Result / call";
|
|
455
|
+
readonly "tools.result-per-call-title": "Mean tool-result characters per call";
|
|
456
|
+
readonly "tools.attr-tokens": "Attr. tokens";
|
|
457
|
+
readonly "tools.share-of-tokens": "{percent} of attributed tokens";
|
|
458
|
+
readonly "tools.attr-cost": "Attr. cost";
|
|
459
|
+
readonly "tools.share-of-cost": "{percent} of attributed cost";
|
|
460
|
+
readonly "tools.last-used": "Last used";
|
|
461
|
+
readonly "frustration.estimate-note": "Identical messages share one verdict, and verdicts are cached, so later runs only pay for new messages. Nothing is spent until you proceed.";
|
|
462
|
+
readonly "frustration.column-model-ids": "Model IDs";
|
|
463
|
+
readonly "frustration.column-messages": "Messages";
|
|
464
|
+
readonly "frustration.column-judged": "Judged";
|
|
465
|
+
readonly "frustration.model-versions": "Model versions";
|
|
466
|
+
readonly "frustration.no-model-match": "No model versions match the filters";
|
|
467
|
+
readonly "frustration.small-models-title": "Models with fewer than {count} messages have noisy rates";
|
|
468
|
+
readonly "frustration.hide-regex-title": "Hide models with under {share}% judged messages (rates from regex signals)";
|
|
469
|
+
readonly "frustration.hatch-title": "Under {share}% of these messages are judged; their rates come from regex signals";
|
|
470
|
+
readonly "frustration.regex-badge": "regex";
|
|
471
|
+
readonly "frustration.legend-annoyed-any": "Annoyed, any target";
|
|
472
|
+
readonly "frustration.table-description": "Rates are shares of user messages; rows follow the chart filters.";
|
|
473
|
+
readonly "frustration.running": "Running";
|
|
474
|
+
readonly "frustration.estimating": "Estimating cost…";
|
|
475
|
+
readonly "frustration.failed-n": "{count} failed";
|
|
476
|
+
readonly "frustration.cost-so-far": "cost so far";
|
|
477
|
+
readonly "frustration.elapsed": "elapsed {time}";
|
|
478
|
+
readonly "frustration.in-flight": "{count} in flight";
|
|
479
|
+
readonly "frustration.messages-progress": "{done}/{total} messages";
|
|
480
|
+
readonly "frustration.failed-suffix": ", {count} failed";
|
|
481
|
+
readonly "frustration.judge-with": " with {judge}";
|
|
482
|
+
readonly "frustration.in-time": " in {time}";
|
|
483
|
+
readonly "frustration.run-done-line": "Last run judged {progress}{failed}{judge}{elapsed} for {cost}.";
|
|
484
|
+
readonly "frustration.run-cancelled-line": "Last run cancelled after {progress}{failed}; spent {cost}.";
|
|
485
|
+
readonly "frustration.run-failed-line": "Last run failed after {progress}{failed}: {error}. Spent {cost}.";
|
|
486
|
+
readonly "frustration.title": "Frustration";
|
|
487
|
+
readonly "frustration.description": "How often your messages sound annoyed, per model version, in {window}.";
|
|
488
|
+
readonly "frustration.user-messages": "User messages";
|
|
489
|
+
readonly "frustration.user-messages-title": "User messages with prose in range";
|
|
490
|
+
readonly "frustration.judge-coverage": "Judge coverage";
|
|
491
|
+
readonly "frustration.judge-coverage-title": "Messages with a cached judge verdict; the rest use the regex lexicons";
|
|
492
|
+
readonly "frustration.coverage-hint": "{judged} judged · {regex} regex";
|
|
493
|
+
readonly "frustration.coverage-unscored": " · {count} unscored (no lexicon)";
|
|
494
|
+
readonly "frustration.unscored-line": "Messages in a language without a lexicon: {count} — unscored, not calm.";
|
|
495
|
+
readonly "frustration.annoyed": "Annoyed";
|
|
496
|
+
readonly "frustration.annoyed-title": "Messages annoyed at any target";
|
|
497
|
+
readonly "frustration.at-assistant": "At assistant";
|
|
498
|
+
readonly "frustration.at-assistant-title": "Messages annoyed at the assistant";
|
|
499
|
+
readonly "frustration.angry": "Angry";
|
|
500
|
+
readonly "frustration.angry-title": "Messages angry or hostile toward the assistant";
|
|
501
|
+
readonly "frustration.messages-n": "{count} messages";
|
|
502
|
+
readonly "frustration.judge-panel": "Judge classification";
|
|
503
|
+
readonly "frustration.judge-description": "Cached LLM verdicts replace the regex lexicons; unjudged messages fall back to regex signals. Messages in a language no lexicon covers are reported as unscored rather than counted as calm.";
|
|
504
|
+
readonly "frustration.classify": "Classify with judge";
|
|
505
|
+
readonly "frustration.proceed": "Proceed";
|
|
506
|
+
readonly "frustration.starting": "Starting…";
|
|
507
|
+
readonly "frustration.judge-running": "A judge run is in progress";
|
|
508
|
+
readonly "frustration.quote-title": "Quote the cost of judging every unjudged message in range";
|
|
509
|
+
readonly "frustration.estimated-cost": "Estimated cost";
|
|
510
|
+
readonly "frustration.unjudged-messages": "Unjudged unique messages";
|
|
511
|
+
readonly "frustration.prose-chars": "Prose characters";
|
|
512
|
+
readonly "frustration.input-tokens": "Estimated input tokens";
|
|
513
|
+
readonly "frustration.judge-model": "Judge";
|
|
514
|
+
readonly "frustration.all-judged": "Everything in this range is already judged. There is nothing left to classify.";
|
|
515
|
+
readonly "frustration.no-run-yet": "No judge run yet. Classify the unjudged messages to replace regex estimates with verdicts.";
|
|
516
|
+
readonly "frustration.last-run-done": "Last run done";
|
|
517
|
+
readonly "frustration.last-run-cancelled": "Last run cancelled";
|
|
518
|
+
readonly "frustration.last-run-failed": "Last run failed";
|
|
519
|
+
readonly "frustration.not-run-yet": "Not run yet";
|
|
520
|
+
readonly "frustration.regex-only": "Regex only";
|
|
521
|
+
readonly "frustration.cancel-run": "Cancel run";
|
|
522
|
+
readonly "frustration.cancelling": "Cancelling…";
|
|
523
|
+
readonly "frustration.run-judged": "Last run judged {progress}";
|
|
524
|
+
readonly "frustration.run-cancelled-after": "Last run cancelled after {progress}";
|
|
525
|
+
readonly "frustration.run-failed-after": "Last run failed after {progress}";
|
|
526
|
+
readonly "frustration.by-model": "Frustration by model version";
|
|
527
|
+
readonly "frustration.by-model-description": "Share of user messages per model version. Each bar reaches the annoyed rate; the subsets aimed at the assistant stack inside it.";
|
|
528
|
+
readonly "frustration.all-classes": "All";
|
|
529
|
+
readonly "frustration.every-model-class": "Every model class";
|
|
530
|
+
readonly "frustration.model-class": "Model class";
|
|
531
|
+
readonly "frustration.include-small": "Include < {count} messages";
|
|
532
|
+
readonly "frustration.unclassified": "unclassified";
|
|
533
|
+
readonly "frustration.legend-angry": "Angry at assistant";
|
|
534
|
+
readonly "frustration.legend-assistant": "At assistant, not angry";
|
|
535
|
+
readonly "frustration.legend-other": "Annoyed at other targets";
|
|
536
|
+
readonly "frustration.legend-trend": "At assistant trend";
|
|
537
|
+
readonly "frustration.legend-hatched": "Hatched: mostly regex fallback";
|
|
538
|
+
readonly "frustration.legend-hatched-run": "Hatched: mostly regex fallback (run the judge)";
|
|
539
|
+
readonly "frustration.legend-hue": "Hue = model family";
|
|
540
|
+
readonly "frustration.no-messages": "No user messages in this range";
|
|
541
|
+
readonly "frustration.try-longer-range": "Try a longer range.";
|
|
542
|
+
readonly "frustration.mostly-regex": "Mostly regex fallback: run the judge for accurate rates";
|
|
543
|
+
readonly "frustration.row-mostly-regex": " · mostly regex fallback";
|
|
544
|
+
readonly "frustration.stack-relation": "annoyed ⊇ atAssistant ⊇ angry";
|
|
545
|
+
readonly "frustration.unknown-error": "unknown error";
|
|
546
|
+
readonly "frustration.cancelled": "Cancelled";
|
|
547
|
+
readonly "frustration.failed": "Failed";
|
|
548
|
+
readonly "frustration.done": "Done";
|
|
549
|
+
readonly "projects.title": "Projects";
|
|
550
|
+
readonly "projects.description": "Usage by session folder in {window}.";
|
|
551
|
+
readonly "projects.folders": "Folders";
|
|
552
|
+
readonly "projects.folder": "Folder";
|
|
553
|
+
readonly "projects.temporary-n": "{count} temporary";
|
|
554
|
+
readonly "projects.failed-n": "{count} failed";
|
|
555
|
+
readonly "projects.api-equivalent-cost": "API-equivalent cost";
|
|
556
|
+
readonly "projects.api-equivalent-cost-hint": "What this usage would cost at public API rates";
|
|
557
|
+
readonly "projects.unpriced-n": "{count} unpriced";
|
|
558
|
+
readonly "projects.conversation-tokens": "Conversation tokens";
|
|
559
|
+
readonly "projects.conversation-tokens-hint": "Uncached input + cache reads + cache writes + output";
|
|
560
|
+
readonly "projects.cache-rate": "Cache rate";
|
|
561
|
+
readonly "projects.cache-rate-hint": "Cache reads ÷ (uncached input + cache reads)";
|
|
562
|
+
readonly "projects.cache-rate-hint-all": "Cache reads ÷ (uncached input + cache reads), across every folder";
|
|
563
|
+
readonly "projects.top-by-cost": "Top by cost";
|
|
564
|
+
readonly "projects.top-by-cost-description": "Share of API-equivalent cost";
|
|
565
|
+
readonly "projects.top-by-requests": "Top by requests";
|
|
566
|
+
readonly "projects.top-by-requests-description": "Share of all requests";
|
|
567
|
+
readonly "projects.folders-n": "{count} folders";
|
|
568
|
+
readonly "projects.folders-of-n": "{count} of {total} folders";
|
|
569
|
+
readonly "projects.hide-temporary": "Hide temporary ({count})";
|
|
570
|
+
readonly "projects.hide-temporary-hint": "Session folders under /tmp or /var/folders";
|
|
571
|
+
readonly "projects.filter-placeholder": "Filter folders…";
|
|
572
|
+
readonly "projects.empty-no-folders": "No project folders in this range";
|
|
573
|
+
readonly "projects.empty-only-temporary": "Only temporary folders in this range";
|
|
574
|
+
readonly "projects.empty-no-match": "No folders match";
|
|
575
|
+
readonly "projects.hint-longer-range": "Try a longer range.";
|
|
576
|
+
readonly "projects.hint-temporary-hidden": "Temporary folders are hidden.";
|
|
577
|
+
readonly "projects.temp": "temp";
|
|
578
|
+
readonly "projects.share-of-requests": "{share} of all requests";
|
|
579
|
+
readonly "projects.share-of-cost": "{share} of all cost";
|
|
580
|
+
readonly "projects.api-equivalent-cost-rates": "API-equivalent cost at public API rates";
|
|
581
|
+
readonly "projects.cache-savings": "Cache savings";
|
|
582
|
+
readonly "projects.cache-savings-hint": "Prompt-input cost saved versus billing the same tokens uncached";
|
|
583
|
+
readonly "projects.errors": "Errors";
|
|
584
|
+
readonly "projects.avg-duration": "Avg duration";
|
|
585
|
+
readonly "projects.last-active": "Last active";
|
|
586
|
+
readonly "gain.title": "Gain";
|
|
587
|
+
readonly "gain.description": "Tokens snapcompact kept out of context in {window}.";
|
|
588
|
+
readonly "gain.description-scoped": "Tokens snapcompact kept out of context for {project} in {window}.";
|
|
589
|
+
readonly "gain.all-projects": "All projects";
|
|
590
|
+
readonly "gain.empty-title": "No savings recorded in {window}";
|
|
591
|
+
readonly "gain.empty-title-scoped": "No savings recorded for {project} in {window}";
|
|
592
|
+
readonly "gain.empty-hint-all": "Savings appear here once snapcompact compacts tool output.";
|
|
593
|
+
readonly "gain.empty-hint-longer-range": "Try a longer range.";
|
|
594
|
+
readonly "gain.saved-tokens": "Saved tokens";
|
|
595
|
+
readonly "gain.saved-bytes": "Saved bytes";
|
|
596
|
+
readonly "gain.reduction": "Reduction";
|
|
597
|
+
readonly "gain.reduction-title": "Saved bytes ÷ original bytes, when the original size is known";
|
|
598
|
+
readonly "gain.reduction-unknown": "original size not recorded";
|
|
599
|
+
readonly "gain.hits": "Hits";
|
|
600
|
+
readonly "gain.saved-per-hit": "Saved per hit";
|
|
601
|
+
readonly "gain.savings-over-time": "Savings over time";
|
|
602
|
+
readonly "gain.savings-over-time-description": "Tokens saved per UTC day, with the running total";
|
|
603
|
+
readonly "gain.saved-per-day": "Saved per day";
|
|
604
|
+
readonly "gain.cumulative": "Cumulative";
|
|
605
|
+
readonly "gain.by-source": "By source";
|
|
606
|
+
readonly "gain.by-source-description": "Savings per subsystem";
|
|
607
|
+
readonly "gain.source": "Source";
|
|
608
|
+
readonly "ui.table-shown-of": "{shown} of {total}";
|
|
609
|
+
readonly "ui.show-fewer": "Show fewer";
|
|
610
|
+
readonly "ui.retry": "Retry";
|
|
611
|
+
readonly "ui.delta-new": "new";
|
|
612
|
+
readonly "ui.json": "JSON";
|
|
613
|
+
readonly "ui.trace": "Trace";
|
|
614
|
+
readonly "ui.open-trace": "Open this request's session in the trace view";
|
|
615
|
+
readonly "ui.status-ok": "OK";
|
|
616
|
+
readonly "ui.section-timing": "Timing";
|
|
617
|
+
readonly "ui.time-to-first-token": "Time to first token";
|
|
618
|
+
readonly "ui.uncached-input": "Uncached input";
|
|
619
|
+
readonly "ui.section-cost": "API-equivalent cost";
|
|
620
|
+
readonly "ui.section-identity": "Identity";
|
|
621
|
+
readonly "ui.stop-reason": "Stop reason";
|
|
622
|
+
readonly "ui.api": "API";
|
|
623
|
+
readonly "ui.session-file": "Session file";
|
|
624
|
+
readonly "ui.stats-row": "Stats row";
|
|
625
|
+
};
|
|
626
|
+
/** Keys the dashboard may translate. A `t("…")` call with an unknown key is a type error. */
|
|
627
|
+
export type MessageKey = keyof typeof enMessages;
|
|
628
|
+
/** The English locale pack, as the registry consumes it. */
|
|
629
|
+
export declare const enLocale: {
|
|
630
|
+
readonly id: "en";
|
|
631
|
+
readonly messages: {
|
|
632
|
+
readonly "nav.usage": "Usage";
|
|
633
|
+
readonly "nav.activity": "Activity";
|
|
634
|
+
readonly "nav.insights": "Insights";
|
|
635
|
+
readonly "nav.overview": "Overview";
|
|
636
|
+
readonly "nav.models": "Models";
|
|
637
|
+
readonly "nav.providers": "Providers";
|
|
638
|
+
readonly "nav.costs": "Costs";
|
|
639
|
+
readonly "nav.requests": "Requests";
|
|
640
|
+
readonly "nav.errors": "Errors";
|
|
641
|
+
readonly "nav.traces": "Traces";
|
|
642
|
+
readonly "nav.tools": "Tools";
|
|
643
|
+
readonly "nav.frustration": "Frustration";
|
|
644
|
+
readonly "nav.projects": "Projects";
|
|
645
|
+
readonly "nav.gain": "Gain";
|
|
646
|
+
readonly "nav.dashboard": "zetacode stats";
|
|
647
|
+
readonly "nav.breadcrumb-stats": "stats";
|
|
648
|
+
readonly "nav.pages": "Pages";
|
|
649
|
+
readonly "nav.open-navigation": "Open navigation";
|
|
650
|
+
readonly "common.provider": "Provider";
|
|
651
|
+
readonly "common.providers": "Providers";
|
|
652
|
+
readonly "common.model": "Model";
|
|
653
|
+
readonly "common.models": "Models";
|
|
654
|
+
readonly "common.requests": "Requests";
|
|
655
|
+
readonly "common.request": "Request";
|
|
656
|
+
readonly "common.tokens": "Tokens";
|
|
657
|
+
readonly "common.share": "Share";
|
|
658
|
+
readonly "common.cost": "Cost";
|
|
659
|
+
readonly "common.error-rate": "Error rate";
|
|
660
|
+
readonly "common.tokens-per-second": "Tokens/s";
|
|
661
|
+
readonly "common.output-tokens-per-second": "Output tokens/s";
|
|
662
|
+
readonly "common.premium": "Premium";
|
|
663
|
+
readonly "common.premium-requests": "Premium requests";
|
|
664
|
+
readonly "common.duration": "Duration";
|
|
665
|
+
readonly "common.started": "Started";
|
|
666
|
+
readonly "common.request-id": "Request id";
|
|
667
|
+
readonly "common.session-entry": "Session entry";
|
|
668
|
+
readonly "common.entry-id": "Entry id";
|
|
669
|
+
readonly "common.input": "Input";
|
|
670
|
+
readonly "common.output": "Output";
|
|
671
|
+
readonly "common.output-message": "Output message";
|
|
672
|
+
readonly "common.cache-read": "Cache read";
|
|
673
|
+
readonly "common.cache-write": "Cache write";
|
|
674
|
+
readonly "common.project": "Project";
|
|
675
|
+
readonly "common.pages": "Pages";
|
|
676
|
+
readonly "common.filter": "Filter…";
|
|
677
|
+
readonly "common.no-data-in-range": "No data in this range";
|
|
678
|
+
readonly "common.nothing-here-yet": "Nothing here yet";
|
|
679
|
+
readonly "common.show-more": "Show more";
|
|
680
|
+
readonly "common.total": "Total";
|
|
681
|
+
readonly "common.average": "Average";
|
|
682
|
+
readonly "common.unknown": "Unknown";
|
|
683
|
+
readonly "common.root": "(root)";
|
|
684
|
+
readonly "common.other-n": "Other ({count})";
|
|
685
|
+
readonly "common.time-range": "Time range";
|
|
686
|
+
readonly "common.range-1h": "1h";
|
|
687
|
+
readonly "common.range-24h": "24h";
|
|
688
|
+
readonly "common.range-7d": "7d";
|
|
689
|
+
readonly "common.range-30d": "30d";
|
|
690
|
+
readonly "common.range-90d": "90d";
|
|
691
|
+
readonly "common.range-all": "All";
|
|
692
|
+
readonly "common.window-1h": "the last hour";
|
|
693
|
+
readonly "common.window-24h": "the last 24 hours";
|
|
694
|
+
readonly "common.window-7d": "the last 7 days";
|
|
695
|
+
readonly "common.window-30d": "the last 30 days";
|
|
696
|
+
readonly "common.window-90d": "the last 90 days";
|
|
697
|
+
readonly "common.window-all": "all time";
|
|
698
|
+
readonly "common.copy": "Copy";
|
|
699
|
+
readonly "common.copied": "Copied";
|
|
700
|
+
readonly "common.close": "Close";
|
|
701
|
+
readonly "common.cancel": "Cancel";
|
|
702
|
+
readonly "common.aborted": "Aborted";
|
|
703
|
+
readonly "common.failed": "Failed";
|
|
704
|
+
readonly "common.error": "Error";
|
|
705
|
+
readonly "shell.live": "Live";
|
|
706
|
+
readonly "shell.reconnecting": "Reconnecting";
|
|
707
|
+
readonly "shell.syncing": "Syncing";
|
|
708
|
+
readonly "shell.sync-failed": "Sync failed";
|
|
709
|
+
readonly "shell.indexing": "Indexing";
|
|
710
|
+
readonly "shell.lost-connection": "Lost the live connection to the stats server; retrying";
|
|
711
|
+
readonly "shell.ingesting": "Ingesting session files";
|
|
712
|
+
readonly "shell.building-rollups": "Building hourly rollups; older ranges fill in as it goes";
|
|
713
|
+
readonly "shell.sync-now": "Click to sync session files now";
|
|
714
|
+
readonly "shell.just-now": "just now";
|
|
715
|
+
readonly "shell.system-theme": "System theme";
|
|
716
|
+
readonly "shell.dark-theme": "Dark theme";
|
|
717
|
+
readonly "shell.light-theme": "Light theme";
|
|
718
|
+
readonly "shell.range-suffix": "range";
|
|
719
|
+
readonly "shell.jump-hint": "then letter to jump";
|
|
720
|
+
readonly "overview.title": "Overview";
|
|
721
|
+
readonly "overview.description": "Everything zeta did across your sessions in {window}.";
|
|
722
|
+
readonly "overview.api-equivalent-cost": "API-equivalent cost";
|
|
723
|
+
readonly "overview.api-cost-title": "What this usage would cost at public API rates";
|
|
724
|
+
readonly "overview.unpriced-n": "{count} unpriced";
|
|
725
|
+
readonly "overview.failed-n": "{count} failed";
|
|
726
|
+
readonly "overview.conversation-tokens": "Conversation tokens";
|
|
727
|
+
readonly "overview.tokens-title": "Uncached input + cache reads + cache writes + output";
|
|
728
|
+
readonly "overview.output-n": "{count} output";
|
|
729
|
+
readonly "overview.cache-rate": "Cache rate";
|
|
730
|
+
readonly "overview.cache-rate-title": "Cache reads ÷ (uncached input + cache reads)";
|
|
731
|
+
readonly "overview.cache-saved": "{value} saved";
|
|
732
|
+
readonly "overview.succeeded-n": "{count} succeeded";
|
|
733
|
+
readonly "overview.uncached-input": "Uncached input";
|
|
734
|
+
readonly "overview.avg-latency": "Avg latency";
|
|
735
|
+
readonly "overview.avg-ttft": "Avg TTFT";
|
|
736
|
+
readonly "overview.activity": "Activity";
|
|
737
|
+
readonly "overview.per-5m": "Per 5 minutes";
|
|
738
|
+
readonly "overview.per-hour": "Per hour";
|
|
739
|
+
readonly "overview.per-day": "Per day";
|
|
740
|
+
readonly "overview.succeeded": "Succeeded";
|
|
741
|
+
readonly "overview.api-equivalent": "API-equivalent";
|
|
742
|
+
readonly "overview.token-mix": "Token mix";
|
|
743
|
+
readonly "overview.token-mix-description": "Where conversation tokens went";
|
|
744
|
+
readonly "overview.by-agent": "By agent";
|
|
745
|
+
readonly "overview.requests-short": "{count} req";
|
|
746
|
+
readonly "overview.main-agent": "Main agent";
|
|
747
|
+
readonly "overview.subagents": "Subagents";
|
|
748
|
+
readonly "overview.advisor": "Advisor";
|
|
749
|
+
readonly "overview.latest-requests": "Latest requests";
|
|
750
|
+
readonly "overview.latest-requests-description": "Most recent model calls across every session";
|
|
751
|
+
readonly "overview.all-requests": "All requests";
|
|
752
|
+
readonly "overview.when": "When";
|
|
753
|
+
readonly "overview.status": "Status";
|
|
754
|
+
readonly "overview.ok": "OK";
|
|
755
|
+
readonly "models.subtitle": "Which models did the work in {window}, and how fast they answered.";
|
|
756
|
+
readonly "models.empty-title": "No model usage in this range";
|
|
757
|
+
readonly "models.empty-hint": "Pick a wider range in the top bar.";
|
|
758
|
+
readonly "models.used": "Models used";
|
|
759
|
+
readonly "models.across-providers-one": "across {count} provider";
|
|
760
|
+
readonly "models.across-providers": "across {count} providers";
|
|
761
|
+
readonly "models.most-used": "Most used";
|
|
762
|
+
readonly "models.most-used-hint": "{share} of requests · {provider}";
|
|
763
|
+
readonly "models.failed-n": "{count} failed";
|
|
764
|
+
readonly "models.api-cost": "API-equivalent cost";
|
|
765
|
+
readonly "models.api-cost-title": "What this usage would cost at public API rates";
|
|
766
|
+
readonly "models.unpriced-n": "{count} unpriced";
|
|
767
|
+
readonly "models.request-share": "Request share";
|
|
768
|
+
readonly "models.share-desc": "Each model's share of requests per {bucket}";
|
|
769
|
+
readonly "models.count-desc": "Requests per {bucket}, stacked by model";
|
|
770
|
+
readonly "models.share-mode-aria": "Share chart mode";
|
|
771
|
+
readonly "models.all-models": "All models";
|
|
772
|
+
readonly "models.table-desc": "Click a row for latency and throughput over time";
|
|
773
|
+
readonly "models.cost-title": "API-equivalent estimate at public rates";
|
|
774
|
+
readonly "models.tokens-title": "Uncached input + cache reads + cache writes + output";
|
|
775
|
+
readonly "models.cache-rate": "Cache rate";
|
|
776
|
+
readonly "models.cache-title": "Cache reads ÷ (uncached input + cache reads)";
|
|
777
|
+
readonly "models.errors": "Errors";
|
|
778
|
+
readonly "models.tps-title": "Average output tokens per second";
|
|
779
|
+
readonly "models.ttft": "TTFT";
|
|
780
|
+
readonly "models.ttft-title": "Average time to first token";
|
|
781
|
+
readonly "models.trend": "Trend";
|
|
782
|
+
readonly "models.trend-title": "Requests per {bucket}";
|
|
783
|
+
readonly "models.efficiency": "Efficiency";
|
|
784
|
+
readonly "models.latency": "Latency";
|
|
785
|
+
readonly "models.cache-savings": "Cache savings";
|
|
786
|
+
readonly "models.avg-duration": "Avg duration";
|
|
787
|
+
readonly "models.avg-ttft": "Avg TTFT";
|
|
788
|
+
readonly "models.uncached-input": "Uncached input";
|
|
789
|
+
readonly "models.first-last-seen": "First seen {first} · last seen {last}";
|
|
790
|
+
readonly "models.performance-per-bucket": "Performance per active {bucket}";
|
|
791
|
+
readonly "models.no-samples-title": "No performance samples";
|
|
792
|
+
readonly "models.no-samples-hint": "Timing is recorded for streamed responses.";
|
|
793
|
+
readonly "models.tok-per-second": "{value} tok/s";
|
|
794
|
+
readonly "models.bucket-5m": "5 minutes";
|
|
795
|
+
readonly "models.bucket-hour": "hour";
|
|
796
|
+
readonly "models.bucket-day": "day";
|
|
797
|
+
readonly "providers.description": "Burn, reliability and subscription headroom per provider over {window}.";
|
|
798
|
+
readonly "providers.most-tokens": "Most tokens: {provider}";
|
|
799
|
+
readonly "providers.failed-n": "{count} failed";
|
|
800
|
+
readonly "providers.succeeded-n": "{count} succeeded";
|
|
801
|
+
readonly "providers.tokens-title": "Uncached input + cache reads + cache writes + output";
|
|
802
|
+
readonly "providers.api-equivalent-cost": "API-equivalent cost";
|
|
803
|
+
readonly "providers.api-cost-title": "What this usage would cost at public API rates";
|
|
804
|
+
readonly "providers.unpriced-n": "{count} unpriced";
|
|
805
|
+
readonly "providers.totals": "Provider totals";
|
|
806
|
+
readonly "providers.totals-description": "Cost is an API-equivalent estimate. Select a row for its token mix.";
|
|
807
|
+
readonly "providers.totals-description-unpriced-one": "Cost is an API-equivalent estimate and excludes {count} unpriced subscription request. Select a row for its token mix.";
|
|
808
|
+
readonly "providers.totals-description-unpriced-n": "Cost is an API-equivalent estimate and excludes {count} unpriced subscription requests. Select a row for its token mix.";
|
|
809
|
+
readonly "providers.no-requests-in-range": "No requests in this range";
|
|
810
|
+
readonly "providers.models-title": "Distinct models used through this provider";
|
|
811
|
+
readonly "providers.share-title": "Fraction of all tokens in range";
|
|
812
|
+
readonly "providers.cost-title": "API-equivalent estimate";
|
|
813
|
+
readonly "providers.tps-title": "Average output throughput";
|
|
814
|
+
readonly "providers.premium-title": "Premium requests (subscription multiplier units)";
|
|
815
|
+
readonly "providers.burn": "Burn by provider";
|
|
816
|
+
readonly "providers.burn-estimate-description": "API-equivalent estimate per {bucket}; excludes unpriced subscription requests";
|
|
817
|
+
readonly "providers.burn-description": "Per {bucket}, top {count} providers stacked";
|
|
818
|
+
readonly "providers.bucket-5m": "5 minutes";
|
|
819
|
+
readonly "providers.bucket-hour": "hour";
|
|
820
|
+
readonly "providers.bucket-day": "day";
|
|
821
|
+
readonly "providers.no-provider-activity": "No provider activity in this range";
|
|
822
|
+
readonly "providers.peak-burn-hours": "Peak burn hours";
|
|
823
|
+
readonly "providers.peak-hours-description": "Tokens by local hour of day; peak at {hour}";
|
|
824
|
+
readonly "providers.hours-description": "Tokens by local hour of day";
|
|
825
|
+
readonly "providers.all-providers": "All providers";
|
|
826
|
+
readonly "providers.tokens-peak-hour": "Tokens (peak hour)";
|
|
827
|
+
readonly "providers.no-activity-in-range": "No activity in this range";
|
|
828
|
+
readonly "providers.subscription-windows": "Subscription windows";
|
|
829
|
+
readonly "providers.subscription-windows-description": "What one usage window buys you and how many accounts peak demand needs. Select a row to chart it.";
|
|
830
|
+
readonly "providers.window": "Window";
|
|
831
|
+
readonly "providers.accounts": "Accounts";
|
|
832
|
+
readonly "providers.accounts-title": "Accounts with at least one snapshot for this window in range";
|
|
833
|
+
readonly "providers.resets": "Resets";
|
|
834
|
+
readonly "providers.resets-title": "Window resets observed (drops in used fraction)";
|
|
835
|
+
readonly "providers.windows-burned": "Windows burned";
|
|
836
|
+
readonly "providers.windows-burned-title": "Subscription-window equivalents consumed in range (sum of used-fraction increases across accounts)";
|
|
837
|
+
readonly "providers.tokens-per-window": "Tokens / window";
|
|
838
|
+
readonly "providers.tokens-per-window-title": "Provider tokens burned in range ÷ windows burned — what one full window is worth";
|
|
839
|
+
readonly "providers.too-little-consumed": "Too little of the window was consumed to extrapolate";
|
|
840
|
+
readonly "providers.peak-utilization": "Peak utilization";
|
|
841
|
+
readonly "providers.peak-utilization-title": "Peak of summed used fraction across accounts at any sampled instant; the bar is relative to fleet capacity";
|
|
842
|
+
readonly "providers.accounts-needed": "Accounts needed";
|
|
843
|
+
readonly "providers.accounts-needed-title": "Accounts needed to keep peak demand under 90% of fleet capacity";
|
|
844
|
+
readonly "providers.ideal-accounts": "{ideal} · have {have}";
|
|
845
|
+
readonly "providers.exhaustions": "Exhaustions";
|
|
846
|
+
readonly "providers.exhaustions-title": "Transitions into an exhausted state observed in range";
|
|
847
|
+
readonly "providers.exhausted-n": "{count} exhausted";
|
|
848
|
+
readonly "providers.no-snapshots-in-range": "No usage snapshots in this range";
|
|
849
|
+
readonly "providers.snapshot-hint": "Usage snapshots accumulate whenever usage limits are fetched (TUI footer, /usage, zeta-c usage).";
|
|
850
|
+
readonly "providers.utilization": "Window utilization";
|
|
851
|
+
readonly "providers.utilization-description": "{window} used fraction per account, {from} – {to}";
|
|
852
|
+
readonly "providers.utilization-description-plain": "Recorded limit utilization per account";
|
|
853
|
+
readonly "providers.no-utilization-readings": "No utilization readings for this window";
|
|
854
|
+
readonly "providers.exhausted": "Exhausted";
|
|
855
|
+
readonly "providers.no-reading": "No reading";
|
|
856
|
+
readonly "providers.high": "High";
|
|
857
|
+
readonly "providers.account": "Account";
|
|
858
|
+
readonly "providers.latest-used": "Latest used";
|
|
859
|
+
readonly "providers.status": "Status";
|
|
860
|
+
readonly "providers.peak-in-range": "Peak in range";
|
|
861
|
+
readonly "providers.snapshots": "Snapshots";
|
|
862
|
+
readonly "providers.recorded": "Recorded";
|
|
863
|
+
readonly "costs.title": "Costs";
|
|
864
|
+
readonly "costs.description": "What {window} of usage would cost at public API rates. Subscription usage without a public price is counted as unpriced, not free.";
|
|
865
|
+
readonly "costs.no-usage-in-range": "No usage in this range";
|
|
866
|
+
readonly "costs.empty-hint": "Pick a wider range in the top bar.";
|
|
867
|
+
readonly "costs.daily-estimate": "Daily estimate";
|
|
868
|
+
readonly "costs.daily-by-model": "Per UTC day, stacked by model";
|
|
869
|
+
readonly "costs.daily-by-component": "Per UTC day, stacked by billing component";
|
|
870
|
+
readonly "costs.split-by": "Split by";
|
|
871
|
+
readonly "costs.by-model": "By model";
|
|
872
|
+
readonly "costs.by-component": "By component";
|
|
873
|
+
readonly "costs.no-priced-usage": "No priced usage in this range";
|
|
874
|
+
readonly "costs.unpriced-requests": "Unpriced requests";
|
|
875
|
+
readonly "costs.where-it-went": "Where it went";
|
|
876
|
+
readonly "costs.estimate-by-component": "Estimate by billing component";
|
|
877
|
+
readonly "costs.unpriced-note-one": "{count} unpriced subscription request is not included.";
|
|
878
|
+
readonly "costs.unpriced-note-n": "{count} unpriced subscription requests are not included.";
|
|
879
|
+
readonly "costs.by-model-description": "Estimate per model with its input, output and cache split";
|
|
880
|
+
readonly "costs.estimate": "Estimate";
|
|
881
|
+
readonly "costs.estimate-title": "API-equivalent estimate at public rates";
|
|
882
|
+
readonly "costs.split": "Split";
|
|
883
|
+
readonly "costs.split-title": "Input · output · cache read · cache write";
|
|
884
|
+
readonly "costs.per-request": "Per request";
|
|
885
|
+
readonly "costs.per-request-title": "Estimate ÷ priced requests";
|
|
886
|
+
readonly "costs.unpriced": "Unpriced";
|
|
887
|
+
readonly "costs.unpriced-column-title": "Requests with no public-equivalent price";
|
|
888
|
+
readonly "costs.api-equivalent-estimate": "API-equivalent estimate";
|
|
889
|
+
readonly "costs.api-estimate-title": "What this usage would cost at public API rates";
|
|
890
|
+
readonly "costs.requests-n": "{count} requests";
|
|
891
|
+
readonly "costs.average-per-day": "Average per day";
|
|
892
|
+
readonly "costs.average-per-day-title": "Estimate ÷ days with any usage";
|
|
893
|
+
readonly "costs.active-days-one": "over {count} active day";
|
|
894
|
+
readonly "costs.active-days-n": "over {count} active days";
|
|
895
|
+
readonly "costs.top-model": "Top model";
|
|
896
|
+
readonly "costs.top-model-hint": "{cost} · {share} of estimate";
|
|
897
|
+
readonly "costs.nothing-priced-yet": "Nothing priced yet";
|
|
898
|
+
readonly "costs.per-priced-request": "Per priced request";
|
|
899
|
+
readonly "costs.per-priced-request-title": "Estimate ÷ requests that have a public price";
|
|
900
|
+
readonly "costs.priced-n": "{count} priced";
|
|
901
|
+
readonly "costs.unpriced-title": "Subscription usage with no public-equivalent price; excluded from the estimate";
|
|
902
|
+
readonly "costs.unpriced-hint": "excluded from the estimate";
|
|
903
|
+
readonly "costs.all-priced": "all usage priced";
|
|
904
|
+
readonly "requests.description": "Every model call zeta made in {window}, newest first. Open a row for its full payload.";
|
|
905
|
+
readonly "requests.loading": "Loading…";
|
|
906
|
+
readonly "requests.load-latest": "Load latest {count}";
|
|
907
|
+
readonly "requests.status": "Status";
|
|
908
|
+
readonly "requests.status-all": "All";
|
|
909
|
+
readonly "requests.none-in-window": "none in {window}";
|
|
910
|
+
readonly "requests.since": "since {time}";
|
|
911
|
+
readonly "requests.failed-hint": "{rate} · {count} aborted";
|
|
912
|
+
readonly "requests.tokens-hint": "Total tokens across these requests";
|
|
913
|
+
readonly "requests.api-equivalent-cost": "API-equivalent cost";
|
|
914
|
+
readonly "requests.cost-hint": "What these requests would cost at public API rates";
|
|
915
|
+
readonly "requests.unpriced-n": "{count} unpriced";
|
|
916
|
+
readonly "requests.median-duration": "Median duration";
|
|
917
|
+
readonly "requests.p95": "p95 {value}";
|
|
918
|
+
readonly "requests.median-ttft": "Median TTFT";
|
|
919
|
+
readonly "requests.ttft": "TTFT";
|
|
920
|
+
readonly "requests.ttft-hint": "Time to first token";
|
|
921
|
+
readonly "requests.log-title": "Request log";
|
|
922
|
+
readonly "requests.log-loading": "Loading the latest requests…";
|
|
923
|
+
readonly "requests.log-count-in-window": "{shown} of {total} requests in {window}";
|
|
924
|
+
readonly "requests.log-count-latest": "{shown} of the latest {total} requests";
|
|
925
|
+
readonly "requests.search-placeholder": "Model, provider or project";
|
|
926
|
+
readonly "requests.footer": "Showing the latest {count} requests, back to {time}. Older requests in {window} are not loaded.";
|
|
927
|
+
readonly "requests.empty-in-window": "No requests in {window}";
|
|
928
|
+
readonly "requests.empty-no-match": "No requests match";
|
|
929
|
+
readonly "requests.empty-no-match-hint": "Clear the search or status filter.";
|
|
930
|
+
readonly "requests.when": "When";
|
|
931
|
+
readonly "requests.uncached-input": "Uncached input tokens";
|
|
932
|
+
readonly "requests.cache-read-title": "Cache read tokens (hover a cell for cache writes)";
|
|
933
|
+
readonly "requests.cache-write": "Cache write: {count}";
|
|
934
|
+
readonly "requests.cost-estimate": "API-equivalent estimate";
|
|
935
|
+
readonly "errors.title": "Errors";
|
|
936
|
+
readonly "errors.description": "Failed model requests in {window}, grouped by error signature. Open a failure for its full payload.";
|
|
937
|
+
readonly "errors.footer": "Showing the latest {count} failures in {window}; older ones are not loaded.";
|
|
938
|
+
readonly "errors.loading": "Loading…";
|
|
939
|
+
readonly "errors.load-latest": "Load latest {count}";
|
|
940
|
+
readonly "errors.failures": "Failures";
|
|
941
|
+
readonly "errors.hint-in-window": "in {window}";
|
|
942
|
+
readonly "errors.hint-latest-loaded": "latest {count} loaded";
|
|
943
|
+
readonly "errors.signatures": "Signatures";
|
|
944
|
+
readonly "errors.signatures-hint": "Distinct error messages after normalizing ids and numbers";
|
|
945
|
+
readonly "errors.signatures-top": "top: {count} failures";
|
|
946
|
+
readonly "errors.affected-models": "Affected models";
|
|
947
|
+
readonly "errors.last-failure": "Last failure";
|
|
948
|
+
readonly "errors.none-in-window": "none in {window}";
|
|
949
|
+
readonly "errors.error-signatures": "Error signatures";
|
|
950
|
+
readonly "errors.signatures-card-description": "Same message with ids and counters normalized. Select one to filter the failures below.";
|
|
951
|
+
readonly "errors.empty-no-failures": "No failures in {window}";
|
|
952
|
+
readonly "errors.empty-all-succeeded": "Every request succeeded or was aborted.";
|
|
953
|
+
readonly "errors.by-model": "By model";
|
|
954
|
+
readonly "errors.by-model-description": "Failures per model. Select one to filter.";
|
|
955
|
+
readonly "errors.empty-no-affected-models": "No affected models";
|
|
956
|
+
readonly "errors.loading-failures": "Loading failures…";
|
|
957
|
+
readonly "errors.filtered-of-total": "{shown} of {total} failures, newest first";
|
|
958
|
+
readonly "errors.search-placeholder": "Message, model or project";
|
|
959
|
+
readonly "errors.no-match": "No failures match";
|
|
960
|
+
readonly "errors.no-match-hint": "Clear the search or the selected filters.";
|
|
961
|
+
readonly "errors.signature": "Signature";
|
|
962
|
+
readonly "errors.more-models": "+{count} more";
|
|
963
|
+
readonly "errors.last-seen": "Last seen";
|
|
964
|
+
readonly "errors.unknown-error": "Unknown error";
|
|
965
|
+
readonly "errors.group-meta": "{count} failures · first {first} · last {last}";
|
|
966
|
+
readonly "errors.open-latest": "Open latest";
|
|
967
|
+
readonly "errors.when": "When";
|
|
968
|
+
readonly "errors.cost-hint": "API-equivalent estimate";
|
|
969
|
+
readonly "trace.title": "Traces";
|
|
970
|
+
readonly "trace.description": "Recent sessions with subagent activity folded in. Open one to inspect its timeline.";
|
|
971
|
+
readonly "trace.sessions": "Sessions";
|
|
972
|
+
readonly "trace.session": "Session";
|
|
973
|
+
readonly "trace.most-recent": "{count} most recent";
|
|
974
|
+
readonly "trace.most-recent-filtered": "{shown} of {total} most recent";
|
|
975
|
+
readonly "trace.filter-placeholder": "Filter by title, project, model…";
|
|
976
|
+
readonly "trace.empty-title": "No sessions found";
|
|
977
|
+
readonly "trace.empty-hint": "Run a sync to index recent activity.";
|
|
978
|
+
readonly "trace.no-matching-title": "No matching sessions";
|
|
979
|
+
readonly "trace.no-matching-hint": "Try a different filter.";
|
|
980
|
+
readonly "trace.tool": "Tool";
|
|
981
|
+
readonly "trace.tools": "Tools";
|
|
982
|
+
readonly "trace.agent": "Agent";
|
|
983
|
+
readonly "trace.agents": "Agents";
|
|
984
|
+
readonly "trace.background": "Background";
|
|
985
|
+
readonly "trace.bg": "Bg";
|
|
986
|
+
readonly "trace.refresh": "Refresh trace";
|
|
987
|
+
readonly "trace.timeline": "Timeline";
|
|
988
|
+
readonly "trace.timeline-hint": "W/S zoom · A/D pan · drag pan · wheel zoom · 0 fit · F focus selection · dbl-click focus · Esc deselect";
|
|
989
|
+
readonly "trace.expand-all": "Expand all";
|
|
990
|
+
readonly "trace.collapse-all": "Collapse all";
|
|
991
|
+
readonly "trace.axis-mode": "Axis mode";
|
|
992
|
+
readonly "trace.mode-time-title": "Real wall-clock time";
|
|
993
|
+
readonly "trace.mode-turns-title": "Equal width per user turn";
|
|
994
|
+
readonly "trace.mode-calls-title": "Equal width per model/tool call boundary";
|
|
995
|
+
readonly "trace.turns": "Turns";
|
|
996
|
+
readonly "trace.calls": "Calls";
|
|
997
|
+
readonly "trace.compress-idle": "Compress idle";
|
|
998
|
+
readonly "trace.search-placeholder": "Search spans…";
|
|
999
|
+
readonly "trace.previous-match": "Previous match";
|
|
1000
|
+
readonly "trace.next-match": "Next match";
|
|
1001
|
+
readonly "trace.transcript": "Transcript";
|
|
1002
|
+
readonly "trace.transcript-description": "Every span and marker in order; click to inspect";
|
|
1003
|
+
readonly "trace.no-matching-events": "No matching events";
|
|
1004
|
+
readonly "trace.canvas-aria": "Trace timeline. W and S zoom, A and D pan, 0 fits all, F focuses the selection.";
|
|
1005
|
+
readonly "trace.minimap-aria": "Timeline overview brush";
|
|
1006
|
+
readonly "trace.expand-track": "Expand {track}";
|
|
1007
|
+
readonly "trace.collapse-track": "Collapse {track}";
|
|
1008
|
+
readonly "trace.unterminated": "unterminated";
|
|
1009
|
+
readonly "trace.tok": "tok";
|
|
1010
|
+
readonly "trace.ttft": "TTFT";
|
|
1011
|
+
readonly "trace.wall-time": "Wall time";
|
|
1012
|
+
readonly "trace.model-time": "Model time";
|
|
1013
|
+
readonly "trace.tool-time": "Tool time";
|
|
1014
|
+
readonly "trace.idle": "Idle";
|
|
1015
|
+
readonly "trace.tool-calls-n": "{count} tool calls";
|
|
1016
|
+
readonly "trace.of-wall": "{percent} of wall";
|
|
1017
|
+
readonly "trace.tool-aggregates": "Tool aggregates";
|
|
1018
|
+
readonly "trace.tool-aggregates-desc": "{count} tools, by total time";
|
|
1019
|
+
readonly "trace.errors": "Errors";
|
|
1020
|
+
readonly "trace.failed-n": "{count} failed";
|
|
1021
|
+
readonly "trace.avg": "Avg";
|
|
1022
|
+
readonly "trace.max": "Max";
|
|
1023
|
+
readonly "trace.start": "Start";
|
|
1024
|
+
readonly "trace.track": "Track";
|
|
1025
|
+
readonly "trace.io-cached": "Input / output / cached";
|
|
1026
|
+
readonly "trace.stop-reason": "Stop reason";
|
|
1027
|
+
readonly "trace.copy-json": "Copy raw JSON";
|
|
1028
|
+
readonly "trace.error-message": "Error message";
|
|
1029
|
+
readonly "trace.task": "Task";
|
|
1030
|
+
readonly "trace.open-child-track": "Open child track";
|
|
1031
|
+
readonly "trace.args": "Args";
|
|
1032
|
+
readonly "trace.thinking": "Thinking";
|
|
1033
|
+
readonly "trace.text": "Text";
|
|
1034
|
+
readonly "trace.raw-entry": "Raw entry";
|
|
1035
|
+
readonly "trace.load-failed": "Failed to load entry: {message}";
|
|
1036
|
+
readonly "tools.title": "Tools";
|
|
1037
|
+
readonly "tools.description": "Which tools zeta called in {window}, how often they failed, and what they cost.";
|
|
1038
|
+
readonly "tools.tool-calls": "Tool calls";
|
|
1039
|
+
readonly "tools.failed-n": "{count} failed";
|
|
1040
|
+
readonly "tools.distinct-tools": "Distinct tools";
|
|
1041
|
+
readonly "tools.most-used": "Most used: {tool}";
|
|
1042
|
+
readonly "tools.error-rate-title": "Tool results that came back flagged as errors";
|
|
1043
|
+
readonly "tools.succeeded-n": "{count} succeeded";
|
|
1044
|
+
readonly "tools.attributed-tokens": "Attributed tokens";
|
|
1045
|
+
readonly "tools.tokens-output": "{tokens} output";
|
|
1046
|
+
readonly "tools.attributed-cost": "Attributed cost";
|
|
1047
|
+
readonly "tools.attribution-note": "Tokens and API-equivalent cost of each invoking turn, split evenly across that turn's tool calls";
|
|
1048
|
+
readonly "tools.attribution-estimate": "{note}; API-equivalent estimate";
|
|
1049
|
+
readonly "tools.unpriced-requests-n": "{count} unpriced requests";
|
|
1050
|
+
readonly "tools.api-equivalent": "API-equivalent";
|
|
1051
|
+
readonly "tools.result-text": "Result text";
|
|
1052
|
+
readonly "tools.result-chars-title": "Characters of tool-result text fed back into context";
|
|
1053
|
+
readonly "tools.chars": "{count} chars";
|
|
1054
|
+
readonly "tools.call-arguments": "Call arguments";
|
|
1055
|
+
readonly "tools.args-chars-title": "Characters of serialized tool-call arguments";
|
|
1056
|
+
readonly "tools.avg-result-per-call": "Avg result per call";
|
|
1057
|
+
readonly "tools.avg-args-per-call": "Avg arguments per call";
|
|
1058
|
+
readonly "tools.calls-over-time": "Calls over time";
|
|
1059
|
+
readonly "tools.errors-over-time": "Errors over time";
|
|
1060
|
+
readonly "tools.chart-description": "Per {bucket}, top {count} tools stacked";
|
|
1061
|
+
readonly "tools.bucket-5m": "5 minutes";
|
|
1062
|
+
readonly "tools.bucket-hour": "hour";
|
|
1063
|
+
readonly "tools.bucket-day": "day";
|
|
1064
|
+
readonly "tools.calls": "Calls";
|
|
1065
|
+
readonly "tools.errors": "Errors";
|
|
1066
|
+
readonly "tools.no-tool-errors": "No tool errors in this range";
|
|
1067
|
+
readonly "tools.by-tool": "By tool";
|
|
1068
|
+
readonly "tools.by-tool-description": "{note}. Select a tool to break it down by model.";
|
|
1069
|
+
readonly "tools.by-tool-and-model": "By tool and model";
|
|
1070
|
+
readonly "tools.by-tool-and-model-description": "Which models call which tools, and how often those calls fail";
|
|
1071
|
+
readonly "tools.filter-by-tool": "Filter by tool";
|
|
1072
|
+
readonly "tools.all-tools": "All tools";
|
|
1073
|
+
readonly "tools.clear-tool-filter": "Clear tool filter";
|
|
1074
|
+
readonly "tools.no-tool-calls": "No tool calls in this range";
|
|
1075
|
+
readonly "tools.no-calls-to-tool": "No calls to {tool} in this range";
|
|
1076
|
+
readonly "tools.tool": "Tool";
|
|
1077
|
+
readonly "tools.trend": "Trend";
|
|
1078
|
+
readonly "tools.trend-title": "Calls per bucket over the range";
|
|
1079
|
+
readonly "tools.share-of-calls": "{percent} of all tool calls";
|
|
1080
|
+
readonly "tools.errors-title": "Calls whose result came back flagged as an error";
|
|
1081
|
+
readonly "tools.args": "Args";
|
|
1082
|
+
readonly "tools.result": "Result";
|
|
1083
|
+
readonly "tools.result-per-call": "Result / call";
|
|
1084
|
+
readonly "tools.result-per-call-title": "Mean tool-result characters per call";
|
|
1085
|
+
readonly "tools.attr-tokens": "Attr. tokens";
|
|
1086
|
+
readonly "tools.share-of-tokens": "{percent} of attributed tokens";
|
|
1087
|
+
readonly "tools.attr-cost": "Attr. cost";
|
|
1088
|
+
readonly "tools.share-of-cost": "{percent} of attributed cost";
|
|
1089
|
+
readonly "tools.last-used": "Last used";
|
|
1090
|
+
readonly "frustration.estimate-note": "Identical messages share one verdict, and verdicts are cached, so later runs only pay for new messages. Nothing is spent until you proceed.";
|
|
1091
|
+
readonly "frustration.column-model-ids": "Model IDs";
|
|
1092
|
+
readonly "frustration.column-messages": "Messages";
|
|
1093
|
+
readonly "frustration.column-judged": "Judged";
|
|
1094
|
+
readonly "frustration.model-versions": "Model versions";
|
|
1095
|
+
readonly "frustration.no-model-match": "No model versions match the filters";
|
|
1096
|
+
readonly "frustration.small-models-title": "Models with fewer than {count} messages have noisy rates";
|
|
1097
|
+
readonly "frustration.hide-regex-title": "Hide models with under {share}% judged messages (rates from regex signals)";
|
|
1098
|
+
readonly "frustration.hatch-title": "Under {share}% of these messages are judged; their rates come from regex signals";
|
|
1099
|
+
readonly "frustration.regex-badge": "regex";
|
|
1100
|
+
readonly "frustration.legend-annoyed-any": "Annoyed, any target";
|
|
1101
|
+
readonly "frustration.table-description": "Rates are shares of user messages; rows follow the chart filters.";
|
|
1102
|
+
readonly "frustration.running": "Running";
|
|
1103
|
+
readonly "frustration.estimating": "Estimating cost…";
|
|
1104
|
+
readonly "frustration.failed-n": "{count} failed";
|
|
1105
|
+
readonly "frustration.cost-so-far": "cost so far";
|
|
1106
|
+
readonly "frustration.elapsed": "elapsed {time}";
|
|
1107
|
+
readonly "frustration.in-flight": "{count} in flight";
|
|
1108
|
+
readonly "frustration.messages-progress": "{done}/{total} messages";
|
|
1109
|
+
readonly "frustration.failed-suffix": ", {count} failed";
|
|
1110
|
+
readonly "frustration.judge-with": " with {judge}";
|
|
1111
|
+
readonly "frustration.in-time": " in {time}";
|
|
1112
|
+
readonly "frustration.run-done-line": "Last run judged {progress}{failed}{judge}{elapsed} for {cost}.";
|
|
1113
|
+
readonly "frustration.run-cancelled-line": "Last run cancelled after {progress}{failed}; spent {cost}.";
|
|
1114
|
+
readonly "frustration.run-failed-line": "Last run failed after {progress}{failed}: {error}. Spent {cost}.";
|
|
1115
|
+
readonly "frustration.title": "Frustration";
|
|
1116
|
+
readonly "frustration.description": "How often your messages sound annoyed, per model version, in {window}.";
|
|
1117
|
+
readonly "frustration.user-messages": "User messages";
|
|
1118
|
+
readonly "frustration.user-messages-title": "User messages with prose in range";
|
|
1119
|
+
readonly "frustration.judge-coverage": "Judge coverage";
|
|
1120
|
+
readonly "frustration.judge-coverage-title": "Messages with a cached judge verdict; the rest use the regex lexicons";
|
|
1121
|
+
readonly "frustration.coverage-hint": "{judged} judged · {regex} regex";
|
|
1122
|
+
readonly "frustration.coverage-unscored": " · {count} unscored (no lexicon)";
|
|
1123
|
+
readonly "frustration.unscored-line": "Messages in a language without a lexicon: {count} — unscored, not calm.";
|
|
1124
|
+
readonly "frustration.annoyed": "Annoyed";
|
|
1125
|
+
readonly "frustration.annoyed-title": "Messages annoyed at any target";
|
|
1126
|
+
readonly "frustration.at-assistant": "At assistant";
|
|
1127
|
+
readonly "frustration.at-assistant-title": "Messages annoyed at the assistant";
|
|
1128
|
+
readonly "frustration.angry": "Angry";
|
|
1129
|
+
readonly "frustration.angry-title": "Messages angry or hostile toward the assistant";
|
|
1130
|
+
readonly "frustration.messages-n": "{count} messages";
|
|
1131
|
+
readonly "frustration.judge-panel": "Judge classification";
|
|
1132
|
+
readonly "frustration.judge-description": "Cached LLM verdicts replace the regex lexicons; unjudged messages fall back to regex signals. Messages in a language no lexicon covers are reported as unscored rather than counted as calm.";
|
|
1133
|
+
readonly "frustration.classify": "Classify with judge";
|
|
1134
|
+
readonly "frustration.proceed": "Proceed";
|
|
1135
|
+
readonly "frustration.starting": "Starting…";
|
|
1136
|
+
readonly "frustration.judge-running": "A judge run is in progress";
|
|
1137
|
+
readonly "frustration.quote-title": "Quote the cost of judging every unjudged message in range";
|
|
1138
|
+
readonly "frustration.estimated-cost": "Estimated cost";
|
|
1139
|
+
readonly "frustration.unjudged-messages": "Unjudged unique messages";
|
|
1140
|
+
readonly "frustration.prose-chars": "Prose characters";
|
|
1141
|
+
readonly "frustration.input-tokens": "Estimated input tokens";
|
|
1142
|
+
readonly "frustration.judge-model": "Judge";
|
|
1143
|
+
readonly "frustration.all-judged": "Everything in this range is already judged. There is nothing left to classify.";
|
|
1144
|
+
readonly "frustration.no-run-yet": "No judge run yet. Classify the unjudged messages to replace regex estimates with verdicts.";
|
|
1145
|
+
readonly "frustration.last-run-done": "Last run done";
|
|
1146
|
+
readonly "frustration.last-run-cancelled": "Last run cancelled";
|
|
1147
|
+
readonly "frustration.last-run-failed": "Last run failed";
|
|
1148
|
+
readonly "frustration.not-run-yet": "Not run yet";
|
|
1149
|
+
readonly "frustration.regex-only": "Regex only";
|
|
1150
|
+
readonly "frustration.cancel-run": "Cancel run";
|
|
1151
|
+
readonly "frustration.cancelling": "Cancelling…";
|
|
1152
|
+
readonly "frustration.run-judged": "Last run judged {progress}";
|
|
1153
|
+
readonly "frustration.run-cancelled-after": "Last run cancelled after {progress}";
|
|
1154
|
+
readonly "frustration.run-failed-after": "Last run failed after {progress}";
|
|
1155
|
+
readonly "frustration.by-model": "Frustration by model version";
|
|
1156
|
+
readonly "frustration.by-model-description": "Share of user messages per model version. Each bar reaches the annoyed rate; the subsets aimed at the assistant stack inside it.";
|
|
1157
|
+
readonly "frustration.all-classes": "All";
|
|
1158
|
+
readonly "frustration.every-model-class": "Every model class";
|
|
1159
|
+
readonly "frustration.model-class": "Model class";
|
|
1160
|
+
readonly "frustration.include-small": "Include < {count} messages";
|
|
1161
|
+
readonly "frustration.unclassified": "unclassified";
|
|
1162
|
+
readonly "frustration.legend-angry": "Angry at assistant";
|
|
1163
|
+
readonly "frustration.legend-assistant": "At assistant, not angry";
|
|
1164
|
+
readonly "frustration.legend-other": "Annoyed at other targets";
|
|
1165
|
+
readonly "frustration.legend-trend": "At assistant trend";
|
|
1166
|
+
readonly "frustration.legend-hatched": "Hatched: mostly regex fallback";
|
|
1167
|
+
readonly "frustration.legend-hatched-run": "Hatched: mostly regex fallback (run the judge)";
|
|
1168
|
+
readonly "frustration.legend-hue": "Hue = model family";
|
|
1169
|
+
readonly "frustration.no-messages": "No user messages in this range";
|
|
1170
|
+
readonly "frustration.try-longer-range": "Try a longer range.";
|
|
1171
|
+
readonly "frustration.mostly-regex": "Mostly regex fallback: run the judge for accurate rates";
|
|
1172
|
+
readonly "frustration.row-mostly-regex": " · mostly regex fallback";
|
|
1173
|
+
readonly "frustration.stack-relation": "annoyed ⊇ atAssistant ⊇ angry";
|
|
1174
|
+
readonly "frustration.unknown-error": "unknown error";
|
|
1175
|
+
readonly "frustration.cancelled": "Cancelled";
|
|
1176
|
+
readonly "frustration.failed": "Failed";
|
|
1177
|
+
readonly "frustration.done": "Done";
|
|
1178
|
+
readonly "projects.title": "Projects";
|
|
1179
|
+
readonly "projects.description": "Usage by session folder in {window}.";
|
|
1180
|
+
readonly "projects.folders": "Folders";
|
|
1181
|
+
readonly "projects.folder": "Folder";
|
|
1182
|
+
readonly "projects.temporary-n": "{count} temporary";
|
|
1183
|
+
readonly "projects.failed-n": "{count} failed";
|
|
1184
|
+
readonly "projects.api-equivalent-cost": "API-equivalent cost";
|
|
1185
|
+
readonly "projects.api-equivalent-cost-hint": "What this usage would cost at public API rates";
|
|
1186
|
+
readonly "projects.unpriced-n": "{count} unpriced";
|
|
1187
|
+
readonly "projects.conversation-tokens": "Conversation tokens";
|
|
1188
|
+
readonly "projects.conversation-tokens-hint": "Uncached input + cache reads + cache writes + output";
|
|
1189
|
+
readonly "projects.cache-rate": "Cache rate";
|
|
1190
|
+
readonly "projects.cache-rate-hint": "Cache reads ÷ (uncached input + cache reads)";
|
|
1191
|
+
readonly "projects.cache-rate-hint-all": "Cache reads ÷ (uncached input + cache reads), across every folder";
|
|
1192
|
+
readonly "projects.top-by-cost": "Top by cost";
|
|
1193
|
+
readonly "projects.top-by-cost-description": "Share of API-equivalent cost";
|
|
1194
|
+
readonly "projects.top-by-requests": "Top by requests";
|
|
1195
|
+
readonly "projects.top-by-requests-description": "Share of all requests";
|
|
1196
|
+
readonly "projects.folders-n": "{count} folders";
|
|
1197
|
+
readonly "projects.folders-of-n": "{count} of {total} folders";
|
|
1198
|
+
readonly "projects.hide-temporary": "Hide temporary ({count})";
|
|
1199
|
+
readonly "projects.hide-temporary-hint": "Session folders under /tmp or /var/folders";
|
|
1200
|
+
readonly "projects.filter-placeholder": "Filter folders…";
|
|
1201
|
+
readonly "projects.empty-no-folders": "No project folders in this range";
|
|
1202
|
+
readonly "projects.empty-only-temporary": "Only temporary folders in this range";
|
|
1203
|
+
readonly "projects.empty-no-match": "No folders match";
|
|
1204
|
+
readonly "projects.hint-longer-range": "Try a longer range.";
|
|
1205
|
+
readonly "projects.hint-temporary-hidden": "Temporary folders are hidden.";
|
|
1206
|
+
readonly "projects.temp": "temp";
|
|
1207
|
+
readonly "projects.share-of-requests": "{share} of all requests";
|
|
1208
|
+
readonly "projects.share-of-cost": "{share} of all cost";
|
|
1209
|
+
readonly "projects.api-equivalent-cost-rates": "API-equivalent cost at public API rates";
|
|
1210
|
+
readonly "projects.cache-savings": "Cache savings";
|
|
1211
|
+
readonly "projects.cache-savings-hint": "Prompt-input cost saved versus billing the same tokens uncached";
|
|
1212
|
+
readonly "projects.errors": "Errors";
|
|
1213
|
+
readonly "projects.avg-duration": "Avg duration";
|
|
1214
|
+
readonly "projects.last-active": "Last active";
|
|
1215
|
+
readonly "gain.title": "Gain";
|
|
1216
|
+
readonly "gain.description": "Tokens snapcompact kept out of context in {window}.";
|
|
1217
|
+
readonly "gain.description-scoped": "Tokens snapcompact kept out of context for {project} in {window}.";
|
|
1218
|
+
readonly "gain.all-projects": "All projects";
|
|
1219
|
+
readonly "gain.empty-title": "No savings recorded in {window}";
|
|
1220
|
+
readonly "gain.empty-title-scoped": "No savings recorded for {project} in {window}";
|
|
1221
|
+
readonly "gain.empty-hint-all": "Savings appear here once snapcompact compacts tool output.";
|
|
1222
|
+
readonly "gain.empty-hint-longer-range": "Try a longer range.";
|
|
1223
|
+
readonly "gain.saved-tokens": "Saved tokens";
|
|
1224
|
+
readonly "gain.saved-bytes": "Saved bytes";
|
|
1225
|
+
readonly "gain.reduction": "Reduction";
|
|
1226
|
+
readonly "gain.reduction-title": "Saved bytes ÷ original bytes, when the original size is known";
|
|
1227
|
+
readonly "gain.reduction-unknown": "original size not recorded";
|
|
1228
|
+
readonly "gain.hits": "Hits";
|
|
1229
|
+
readonly "gain.saved-per-hit": "Saved per hit";
|
|
1230
|
+
readonly "gain.savings-over-time": "Savings over time";
|
|
1231
|
+
readonly "gain.savings-over-time-description": "Tokens saved per UTC day, with the running total";
|
|
1232
|
+
readonly "gain.saved-per-day": "Saved per day";
|
|
1233
|
+
readonly "gain.cumulative": "Cumulative";
|
|
1234
|
+
readonly "gain.by-source": "By source";
|
|
1235
|
+
readonly "gain.by-source-description": "Savings per subsystem";
|
|
1236
|
+
readonly "gain.source": "Source";
|
|
1237
|
+
readonly "ui.table-shown-of": "{shown} of {total}";
|
|
1238
|
+
readonly "ui.show-fewer": "Show fewer";
|
|
1239
|
+
readonly "ui.retry": "Retry";
|
|
1240
|
+
readonly "ui.delta-new": "new";
|
|
1241
|
+
readonly "ui.json": "JSON";
|
|
1242
|
+
readonly "ui.trace": "Trace";
|
|
1243
|
+
readonly "ui.open-trace": "Open this request's session in the trace view";
|
|
1244
|
+
readonly "ui.status-ok": "OK";
|
|
1245
|
+
readonly "ui.section-timing": "Timing";
|
|
1246
|
+
readonly "ui.time-to-first-token": "Time to first token";
|
|
1247
|
+
readonly "ui.uncached-input": "Uncached input";
|
|
1248
|
+
readonly "ui.section-cost": "API-equivalent cost";
|
|
1249
|
+
readonly "ui.section-identity": "Identity";
|
|
1250
|
+
readonly "ui.stop-reason": "Stop reason";
|
|
1251
|
+
readonly "ui.api": "API";
|
|
1252
|
+
readonly "ui.session-file": "Session file";
|
|
1253
|
+
readonly "ui.stats-row": "Stats row";
|
|
1254
|
+
};
|
|
1255
|
+
};
|