@proofhound/web-ui 0.1.7 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/dist/hooks/annotation.d.ts +37 -16
  2. package/dist/hooks/annotation.d.ts.map +1 -1
  3. package/dist/hooks/canary-release.d.ts +62 -37
  4. package/dist/hooks/canary-release.d.ts.map +1 -1
  5. package/dist/hooks/dataset.d.ts +101 -0
  6. package/dist/hooks/dataset.d.ts.map +1 -1
  7. package/dist/hooks/dataset.js +27 -0
  8. package/dist/hooks/dataset.js.map +1 -1
  9. package/dist/hooks/optimization.d.ts +1 -1
  10. package/dist/hooks/production-release.d.ts +8 -4
  11. package/dist/hooks/production-release.d.ts.map +1 -1
  12. package/dist/hooks/prompt.d.ts +149 -38
  13. package/dist/hooks/prompt.d.ts.map +1 -1
  14. package/dist/hooks/prompt.js +20 -0
  15. package/dist/hooks/prompt.js.map +1 -1
  16. package/dist/hooks/release-line.d.ts +2522 -72
  17. package/dist/hooks/release-line.d.ts.map +1 -1
  18. package/dist/hooks/release-line.js +125 -0
  19. package/dist/hooks/release-line.js.map +1 -1
  20. package/dist/hooks/run-result.d.ts +9 -6
  21. package/dist/hooks/run-result.d.ts.map +1 -1
  22. package/dist/hooks/run-result.js +2 -1
  23. package/dist/hooks/run-result.js.map +1 -1
  24. package/dist/i18n/index.d.ts +652 -160
  25. package/dist/i18n/index.d.ts.map +1 -1
  26. package/dist/i18n/index.js +652 -160
  27. package/dist/i18n/index.js.map +1 -1
  28. package/dist/lib/releases/release-line-model.d.ts +8 -2
  29. package/dist/lib/releases/release-line-model.d.ts.map +1 -1
  30. package/dist/lib/releases/release-line-model.js +66 -29
  31. package/dist/lib/releases/release-line-model.js.map +1 -1
  32. package/dist/screens/annotations/annotation-detail-page.js +1 -1
  33. package/dist/screens/annotations/annotation-new-page.d.ts.map +1 -1
  34. package/dist/screens/annotations/annotation-new-page.js +213 -49
  35. package/dist/screens/annotations/annotation-new-page.js.map +1 -1
  36. package/dist/screens/annotations/annotation-task-model.d.ts +3 -2
  37. package/dist/screens/annotations/annotation-task-model.d.ts.map +1 -1
  38. package/dist/screens/annotations/annotation-task-model.js +5 -4
  39. package/dist/screens/annotations/annotation-task-model.js.map +1 -1
  40. package/dist/screens/annotations/annotation-ui.d.ts.map +1 -1
  41. package/dist/screens/annotations/annotation-ui.js +9 -4
  42. package/dist/screens/annotations/annotation-ui.js.map +1 -1
  43. package/dist/screens/annotations/annotations-list-page.js +1 -1
  44. package/dist/screens/connectors/connector-detail-page.js +2 -2
  45. package/dist/screens/connectors/connector-detail-page.js.map +1 -1
  46. package/dist/screens/connectors/connector-form-page.js +1 -1
  47. package/dist/screens/connectors/connector-form-page.js.map +1 -1
  48. package/dist/screens/connectors/connector-ui.d.ts +6 -0
  49. package/dist/screens/connectors/connector-ui.d.ts.map +1 -1
  50. package/dist/screens/connectors/connector-ui.js +7 -1
  51. package/dist/screens/connectors/connector-ui.js.map +1 -1
  52. package/dist/screens/connectors/connectors-list-page.d.ts.map +1 -1
  53. package/dist/screens/connectors/connectors-list-page.js +5 -5
  54. package/dist/screens/connectors/connectors-list-page.js.map +1 -1
  55. package/dist/screens/dashboard/dashboard-screen.d.ts.map +1 -1
  56. package/dist/screens/dashboard/dashboard-screen.js +27 -15
  57. package/dist/screens/dashboard/dashboard-screen.js.map +1 -1
  58. package/dist/screens/datasets/dataset-mappers.js +1 -1
  59. package/dist/screens/datasets/dataset-mappers.js.map +1 -1
  60. package/dist/screens/datasets/dataset-types.d.ts +1 -1
  61. package/dist/screens/datasets/dataset-types.d.ts.map +1 -1
  62. package/dist/screens/datasets/dataset-ui.d.ts +1 -1
  63. package/dist/screens/datasets/dataset-ui.d.ts.map +1 -1
  64. package/dist/screens/datasets/dataset-ui.js +2 -2
  65. package/dist/screens/datasets/dataset-ui.js.map +1 -1
  66. package/dist/screens/datasets/datasets-list-page.d.ts.map +1 -1
  67. package/dist/screens/datasets/datasets-list-page.js +35 -24
  68. package/dist/screens/datasets/datasets-list-page.js.map +1 -1
  69. package/dist/screens/experiments/experiment-detail-page.js +1 -1
  70. package/dist/screens/experiments/experiment-detail-page.js.map +1 -1
  71. package/dist/screens/experiments/run-result-labels.d.ts.map +1 -1
  72. package/dist/screens/experiments/run-result-labels.js +3 -4
  73. package/dist/screens/experiments/run-result-labels.js.map +1 -1
  74. package/dist/screens/prompts/prompt-detail-page.d.ts.map +1 -1
  75. package/dist/screens/prompts/prompt-detail-page.js +9 -10
  76. package/dist/screens/prompts/prompt-detail-page.js.map +1 -1
  77. package/dist/screens/prompts/prompt-model.d.ts +5 -2
  78. package/dist/screens/prompts/prompt-model.d.ts.map +1 -1
  79. package/dist/screens/prompts/prompt-model.js +3 -1
  80. package/dist/screens/prompts/prompt-model.js.map +1 -1
  81. package/dist/screens/prompts/prompts-list-page.d.ts.map +1 -1
  82. package/dist/screens/prompts/prompts-list-page.js +44 -20
  83. package/dist/screens/prompts/prompts-list-page.js.map +1 -1
  84. package/dist/screens/releases/release-input-route-editor.d.ts +39 -0
  85. package/dist/screens/releases/release-input-route-editor.d.ts.map +1 -0
  86. package/dist/screens/releases/release-input-route-editor.js +355 -0
  87. package/dist/screens/releases/release-input-route-editor.js.map +1 -0
  88. package/dist/screens/releases/release-line-detail-page.d.ts +62 -0
  89. package/dist/screens/releases/release-line-detail-page.d.ts.map +1 -1
  90. package/dist/screens/releases/release-line-detail-page.js +1877 -323
  91. package/dist/screens/releases/release-line-detail-page.js.map +1 -1
  92. package/dist/screens/releases/release-line-ui.d.ts.map +1 -1
  93. package/dist/screens/releases/release-line-ui.js +55 -39
  94. package/dist/screens/releases/release-line-ui.js.map +1 -1
  95. package/dist/screens/releases/release-new-model.d.ts.map +1 -1
  96. package/dist/screens/releases/release-new-model.js +1 -6
  97. package/dist/screens/releases/release-new-model.js.map +1 -1
  98. package/dist/screens/releases/release-new-page.d.ts.map +1 -1
  99. package/dist/screens/releases/release-new-page.js +101 -66
  100. package/dist/screens/releases/release-new-page.js.map +1 -1
  101. package/dist/screens/releases/release-topology-canvas.d.ts +11 -2
  102. package/dist/screens/releases/release-topology-canvas.d.ts.map +1 -1
  103. package/dist/screens/releases/release-topology-canvas.js +1015 -174
  104. package/dist/screens/releases/release-topology-canvas.js.map +1 -1
  105. package/dist/screens/releases/releases-list-page.d.ts.map +1 -1
  106. package/dist/screens/releases/releases-list-page.js +81 -32
  107. package/dist/screens/releases/releases-list-page.js.map +1 -1
  108. package/package.json +5 -4
@@ -65,9 +65,9 @@ declare const dictionaries: {
65
65
  readonly 'annotations.claim.submit': "开始标注";
66
66
  readonly 'annotations.claim.cancel': "取消";
67
67
  readonly 'annotations.title': "标注";
68
- readonly 'annotations.subtitle': "手动创建标注任务,按发布名称、发布组合与灰度 / 生产数据筛选样本,并选择正确分类写入 expected_output。";
68
+ readonly 'annotations.subtitle': "手动创建标注任务,按发布名称、发布版本与灰度 / 生产数据筛选样本,并选择正确分类写入 expected_output。";
69
69
  readonly 'annotations.search': "搜索任务、提示词、模型或样本来源";
70
- readonly 'annotations.empty': "暂无标注任务,请从发布名称和发布组合手动创建";
70
+ readonly 'annotations.empty': "暂无标注任务,请从发布名称和发布版本手动创建";
71
71
  readonly 'annotations.loadFailed': "标注任务加载失败,请刷新重试";
72
72
  readonly 'annotations.action.new': "新建标注任务";
73
73
  readonly 'annotations.action.open': "打开详情";
@@ -96,6 +96,7 @@ declare const dictionaries: {
96
96
  readonly 'annotations.table.updatedAt': "更新时间";
97
97
  readonly 'annotations.scope.canary': "灰度候选";
98
98
  readonly 'annotations.scope.online': "生产数据";
99
+ readonly 'annotations.scope.all': "全部数据";
99
100
  readonly 'annotations.status.active': "进行中";
100
101
  readonly 'annotations.status.completed': "已完成";
101
102
  readonly 'annotations.status.archived': "已归档";
@@ -115,43 +116,67 @@ declare const dictionaries: {
115
116
  readonly 'annotations.lifecycle.submitDetail': "{count} 条已提交";
116
117
  readonly 'annotations.new.breadcrumb': "新建";
117
118
  readonly 'annotations.new.title': "新建标注任务";
118
- readonly 'annotations.new.subtitle': "选择发布名称、发布组合与数据范围,系统会展示当前筛选条件下可标注的最大数据量。";
119
+ readonly 'annotations.new.subtitle': "选择发布名称和发布版本后,按总量随机抽取或按当前分类数量指定标注数据量。";
119
120
  readonly 'annotations.new.action.openTask': "打开任务";
120
121
  readonly 'annotations.new.action.createCanary': "新建灰度发布";
121
122
  readonly 'annotations.new.action.create': "创建任务";
122
123
  readonly 'annotations.new.action.creating': "创建中...";
124
+ readonly 'annotations.new.section.name': "任务名称";
125
+ readonly 'annotations.new.section.nameDetail': "先为本次标注任务命名";
123
126
  readonly 'annotations.new.section.source': "任务来源";
124
127
  readonly 'annotations.new.section.sourceDetail': "标注任务绑定灰度候选或线上正式发布样本";
125
128
  readonly 'annotations.new.section.config': "标注配置";
126
129
  readonly 'annotations.new.section.configDetail': "定义抽样规模与人工判断字段";
127
- readonly 'annotations.new.section.release': "选择发布名称";
128
- readonly 'annotations.new.section.releaseDetail': "标注任务绑定到一条发布线路";
129
- readonly 'annotations.new.section.variant': "选择发布组合";
130
- readonly 'annotations.new.section.variantDetail': "用组合 ID、提示词版本和模型确认要标注的数据";
131
- readonly 'annotations.new.section.sample': "选择数据范围与数量";
132
- readonly 'annotations.new.section.sampleDetail': "选择灰度或生产数据,并控制抽样数量";
130
+ readonly 'annotations.new.section.release': "选择发布名称和发布版本";
131
+ readonly 'annotations.new.section.releaseDetail': "标注任务绑定到一条发布线路和一个发布版本";
132
+ readonly 'annotations.new.section.version': "选择发布版本";
133
+ readonly 'annotations.new.section.versionDetail': "用版本号、提示词版本和模型确认要标注的数据";
134
+ readonly 'annotations.new.section.sample': "标注数据量";
135
+ readonly 'annotations.new.section.sampleDetail': "选择随机抽取或按分类指定数量";
133
136
  readonly 'annotations.new.scope.label': "标注范围";
134
137
  readonly 'annotations.new.onlineHint': "线上抽样标注会绑定正式发布事件;当前可先在发布详情中查看线上入口。";
135
138
  readonly 'annotations.new.emptyCanary': "暂无可用灰度任务,请先创建灰度发布并让 runner 写入运行结果。";
136
139
  readonly 'annotations.new.emptyRelease': "暂无可用发布,请先创建发布并写入运行结果。";
137
140
  readonly 'annotations.new.selectReleaseFirst': "请先选择发布名称。";
138
- readonly 'annotations.new.emptyVariant': "该发布名称下暂无发布组合。";
141
+ readonly 'annotations.new.emptyVersion': "该发布名称下暂无发布版本。";
142
+ readonly 'annotations.new.releaseSearchPlaceholder': "搜索发布名称、提示词或版本";
143
+ readonly 'annotations.new.versionSearchPlaceholder': "搜索版本号、提示词、模型或数量";
144
+ readonly 'annotations.new.noMatches': "没有匹配项";
145
+ readonly 'annotations.new.dropdown.prompt': "提示词";
146
+ readonly 'annotations.new.dropdown.model': "模型";
147
+ readonly 'annotations.new.dropdown.runResults': "数量 - {count}";
148
+ readonly 'annotations.new.dropdown.runResultsLabel': "数量";
149
+ readonly 'annotations.new.dropdown.versionCount': "{count} 个版本";
139
150
  readonly 'annotations.new.field.name': "任务名称";
140
151
  readonly 'annotations.new.field.namePlaceholder': "例如 annotation-20260523";
141
152
  readonly 'annotations.new.field.sampleLimit': "标注数量";
142
- readonly 'annotations.new.maxSamples': "当前筛选条件最多 {count} 条";
153
+ readonly 'annotations.new.maxSamples': "当前发布版本最多 {count} 条";
143
154
  readonly 'annotations.new.expectedOutputOnly': "标注字段固定为 expected_output,提交时从提示词分类中选择当前样本的正确分类。";
144
155
  readonly 'annotations.new.noCategoryOptions': "未从提示词获得分类选项";
145
- readonly 'annotations.new.categoryOptionsRequired': "当前发布组合缺少提示词分类选项,请先在提示词输出 Schema 中维护分类。";
156
+ readonly 'annotations.new.categoryOptionsRequired': "当前发布版本缺少提示词分类选项,请先在提示词输出 Schema 中维护分类。";
157
+ readonly 'annotations.new.samplingMode.label': "抽样方式";
158
+ readonly 'annotations.new.samplingMode.random': "随机抽取";
159
+ readonly 'annotations.new.samplingMode.perCategory': "按分类指定";
160
+ readonly 'annotations.new.categorySample.category': "分类";
161
+ readonly 'annotations.new.categorySample.available': "可用数量";
162
+ readonly 'annotations.new.categorySample.count': "标注数量";
163
+ readonly 'annotations.new.categorySample.total': "已选择 {count} / {max} 条";
164
+ readonly 'annotations.new.categorySampleExceeded': "某个分类的标注数量超过了当前可用数量。";
165
+ readonly 'annotations.new.versionScope.label': "版本范围";
166
+ readonly 'annotations.new.versionScope.exact': "精确版本";
167
+ readonly 'annotations.new.versionScope.journey': "发布旅程";
168
+ readonly 'annotations.new.versionScopeIncompatible': "该发布旅程中的版本分类选项不一致,不能合并创建标注任务。";
146
169
  readonly 'annotations.new.summary.title': "任务摘要";
147
170
  readonly 'annotations.new.summary.scope': "范围";
148
171
  readonly 'annotations.new.summary.release': "发布名称";
149
- readonly 'annotations.new.summary.variant': "发布组合";
172
+ readonly 'annotations.new.summary.version': "发布版本";
173
+ readonly 'annotations.new.summary.versionScope': "版本范围";
174
+ readonly 'annotations.new.summary.samplingMode': "抽样方式";
150
175
  readonly 'annotations.new.summary.samples': "标注量 / 最大";
151
176
  readonly 'annotations.new.summary.field': "标注字段";
152
177
  readonly 'annotations.new.summary.categories': "分类";
153
178
  readonly 'annotations.new.submitReady': "筛选条件有效,可创建任务并进入标注工作台。";
154
- readonly 'annotations.new.submitDisabled': "请选择发布名称、发布组合和不超过最大值的标注数量。";
179
+ readonly 'annotations.new.submitDisabled': "请选择发布名称、发布版本,并填写不超过可用数量的标注数据量。";
155
180
  readonly 'annotations.detail.notFound': "未找到标注任务";
156
181
  readonly 'annotations.detail.metric.open': "待处理";
157
182
  readonly 'annotations.detail.metric.openHint': "未提交样本";
@@ -172,7 +197,7 @@ declare const dictionaries: {
172
197
  readonly 'annotations.detail.samples.result': "标注值";
173
198
  readonly 'annotations.detail.samples.judgment': "判定";
174
199
  readonly 'annotations.detail.samples.createdAt': "创建时间";
175
- readonly 'annotations.detail.empty': "该任务暂无样本,请检查创建时选择的发布组合、数据范围与标注数量";
200
+ readonly 'annotations.detail.empty': "该任务暂无样本,请检查创建时选择的发布版本、数据范围与标注数量";
176
201
  readonly 'annotations.detail.workspace.empty': "请选择一个样本开始标注";
177
202
  readonly 'annotations.workspace.inputVariables': "输入变量";
178
203
  readonly 'annotations.workspace.fullPrompt': "完整 Prompt 渲染";
@@ -277,7 +302,7 @@ declare const dictionaries: {
277
302
  readonly 'dashboard.refresh': "刷新";
278
303
  readonly 'dashboard.assets.title': "资产数量";
279
304
  readonly 'dashboard.assets.createAction': "新建 {resource}";
280
- readonly 'dashboard.assets.promptsDetail': "上线 {online} · 灰度 {gray}";
305
+ readonly 'dashboard.assets.promptsDetail': "上线 {online} · 灰度 {canary}";
281
306
  readonly 'dashboard.assets.datasetsDetail': "样本 {samples}";
282
307
  readonly 'dashboard.assets.modelsDetail': "启用 {enabled} · 图像 {image}";
283
308
  readonly 'dashboard.assets.connectorsDetail': "输入 {input} · 输出 {output}";
@@ -371,7 +396,7 @@ declare const dictionaries: {
371
396
  readonly 'projectOverview.resource.samples': "{count} 样本";
372
397
  readonly 'projectOverview.summary.title': "资产数量";
373
398
  readonly 'projectOverview.summary.create': "新建";
374
- readonly 'projectOverview.summary.promptsDetail': "在线 {online} · 灰度 {gray}";
399
+ readonly 'projectOverview.summary.promptsDetail': "在线 {online} · 灰度 {canary}";
375
400
  readonly 'projectOverview.summary.datasetsDetail': "样本 {samples}";
376
401
  readonly 'projectOverview.summary.modelsDetail': "文本模型 {text} · 图像模型 {image}";
377
402
  readonly 'projectOverview.summary.connectorsDetail': "输入 {input} · 输出 {output}";
@@ -382,7 +407,7 @@ declare const dictionaries: {
382
407
  readonly 'projectOverview.metric.f1': "F1";
383
408
  readonly 'projectOverview.metric.fpr': "FPR";
384
409
  readonly 'projectOverview.metric.best': "最佳指标";
385
- readonly 'projectOverview.metric.variants': "组合";
410
+ readonly 'projectOverview.metric.versions': "版本";
386
411
  readonly 'projectOverview.metric.outputs': "输出";
387
412
  readonly 'projectOverview.event.release': "发布";
388
413
  readonly 'projectOverview.actions.title': "快速动作";
@@ -444,7 +469,14 @@ declare const dictionaries: {
444
469
  readonly 'releases.title': "发布";
445
470
  readonly 'releases.subtitle': "按发布线路组织真实流量:每条线路绑定一个提示词和一个上游连接器,最多包含 1 个正式发布 lane 与 1 个 running 灰度候选 lane。";
446
471
  readonly 'releases.action.new': "新建发布";
447
- readonly 'releases.action.enter': "进入详情";
472
+ readonly 'releases.action.stop': "停止";
473
+ readonly 'releases.action.start': "开始运行";
474
+ readonly 'releases.action.archive': "归档";
475
+ readonly 'releases.action.unarchive': "取消归档";
476
+ readonly 'releases.stopReason': "从发布列表停止发布线";
477
+ readonly 'releases.startReason': "从发布列表开始运行发布线";
478
+ readonly 'releases.archiveReason': "从发布列表归档发布线";
479
+ readonly 'releases.unarchiveReason': "从发布列表取消归档发布线";
448
480
  readonly 'releases.search': "搜索发布名称 / 提示词 / 模型 / 上游连接器…";
449
481
  readonly 'releases.filter.all': "全部";
450
482
  readonly 'releases.filter.production': "production";
@@ -455,18 +487,21 @@ declare const dictionaries: {
455
487
  readonly 'releases.empty': "暂无发布线路";
456
488
  readonly 'releases.metric.totalLines': "发布线路 · 全部";
457
489
  readonly 'releases.metric.totalLinesHint': "提示词 × 上游连接器";
490
+ readonly 'releases.metric.running': "running";
491
+ readonly 'releases.metric.runningHint': "至少有一个 lane 正在运行";
492
+ readonly 'releases.metric.stopped': "stopped";
493
+ readonly 'releases.metric.stoppedHint': "{count} 条已归档";
458
494
  readonly 'releases.metric.production': "production";
459
495
  readonly 'releases.metric.productionHint': "{count} 条同时有灰度候选";
460
496
  readonly 'releases.metric.canary': "灰度中";
461
497
  readonly 'releases.metric.canaryHint': "{count} 条待标注样本";
462
- readonly 'releases.metric.failureRate': "失败率 · canary";
498
+ readonly 'releases.metric.failureRate': "失败率";
463
499
  readonly 'releases.metric.failureRateHint': "{count} 个失败";
464
- readonly 'releases.metric.processed': "已处理 · canary";
465
- readonly 'releases.metric.processedHint': "来自灰度运行结果聚合";
466
- readonly 'releases.status.production': "production";
467
- readonly 'releases.status.productionCanary': "production + 灰度";
468
- readonly 'releases.status.canary': "canary";
500
+ readonly 'releases.metric.processed': "已处理";
501
+ readonly 'releases.metric.processedHint': "来自发布运行结果聚合";
502
+ readonly 'releases.status.running': "running";
469
503
  readonly 'releases.status.stopped': "stopped";
504
+ readonly 'releases.status.archived': "archived";
470
505
  readonly 'releases.event.createCanary': "create_canary";
471
506
  readonly 'releases.event.ratioChange': "ratio_change";
472
507
  readonly 'releases.event.canaryTerminal': "canary_terminal";
@@ -476,9 +511,15 @@ declare const dictionaries: {
476
511
  readonly 'releases.event.operation.stopLane': "stop_lane";
477
512
  readonly 'releases.event.operation.resumeLane': "resume_lane";
478
513
  readonly 'releases.event.operation.cancelCanary': "cancel_canary";
514
+ readonly 'releases.event.operation.restoreToProduction': "restore_to_production";
515
+ readonly 'releases.event.operation.restoreToCanary': "restore_to_canary";
479
516
  readonly 'releases.event.operation.archiveLine': "archive_line";
517
+ readonly 'releases.event.operation.unarchiveLine': "unarchive_line";
480
518
  readonly 'releases.traffic.offline': "offline";
481
519
  readonly 'releases.traffic.productionFull': "production 100%";
520
+ readonly 'releases.traffic.productionLane': "正式发布";
521
+ readonly 'releases.traffic.canarySplit': "灰度切流";
522
+ readonly 'releases.traffic.canaryDualRun': "灰度双跑";
482
523
  readonly 'releases.traffic.passThrough': "pass-through";
483
524
  readonly 'releases.lane.production': "正式发布";
484
525
  readonly 'releases.lane.canary': "灰度候选 lane";
@@ -492,27 +533,74 @@ declare const dictionaries: {
492
533
  readonly 'releases.detail.tab.overview': "概览";
493
534
  readonly 'releases.detail.tab.config': "流量配置";
494
535
  readonly 'releases.detail.tab.monitoring': "实时指标";
495
- readonly 'releases.detail.tab.variants': "发布组合";
496
536
  readonly 'releases.detail.tab.results': "运行结果";
497
537
  readonly 'releases.detail.tab.annotation': "质量指标";
498
538
  readonly 'releases.detail.tab.quality': "质量指标";
499
539
  readonly 'releases.detail.tab.history': "历史";
540
+ readonly 'releases.detail.tab.settings': "设置";
500
541
  readonly 'releases.detail.history.productionLane': "生产";
501
542
  readonly 'releases.detail.history.canaryLane': "灰度";
502
543
  readonly 'releases.detail.notFound': "未找到该发布线路";
503
- readonly 'releases.detail.confirmStopProduction': "确认下线当前正式发布?此动作会让该线上 lane 下线。";
504
- readonly 'releases.detail.stopReason': "从发布线路详情下线正式发布";
505
- readonly 'releases.detail.action.stopProduction': "下线";
506
- readonly 'releases.detail.stopDialog.title': "下线正式发布";
507
- readonly 'releases.detail.stopDialog.description': "下线后该发布线路会离线,但发布记录和历史事件会继续保留。";
544
+ readonly 'releases.detail.confirmStopProduction': "确认停止当前发布线?此动作会停止正在运行的 lane";
545
+ readonly 'releases.detail.stopReason': "从发布线路详情停止发布线";
546
+ readonly 'releases.detail.startReason': "从发布线路详情开始运行发布线";
547
+ readonly 'releases.detail.archiveReason': "从发布线路详情归档发布线";
548
+ readonly 'releases.detail.unarchiveReason': "从发布线路详情取消归档发布线";
549
+ readonly 'releases.detail.deleteReason': "从发布线路详情彻底删除发布线";
550
+ readonly 'releases.detail.deleteFailed': "发布线删除失败,请稍后重试。";
551
+ readonly 'releases.detail.action.stopProduction': "停止";
552
+ readonly 'releases.detail.action.start': "开始运行";
553
+ readonly 'releases.detail.action.starting': "启动中...";
554
+ readonly 'releases.detail.action.archive': "归档";
555
+ readonly 'releases.detail.action.archiving': "归档中...";
556
+ readonly 'releases.detail.action.unarchive': "取消归档";
557
+ readonly 'releases.detail.action.unarchiving': "取消归档中...";
558
+ readonly 'releases.detail.stopDialog.title': "停止发布线";
559
+ readonly 'releases.detail.stopDialog.description': "停止后该发布线路不再处理流量,但发布记录和历史事件会继续保留。";
508
560
  readonly 'releases.detail.stopDialog.releaseName': "发布名称";
509
561
  readonly 'releases.detail.stopDialog.inputLabel': "输入发布名称确认";
510
562
  readonly 'releases.detail.stopDialog.inputPlaceholder': "输入 {name}";
511
563
  readonly 'releases.detail.stopDialog.mismatch': "发布名称不匹配。";
512
- readonly 'releases.detail.stopDialog.confirm': "确认下线";
513
- readonly 'releases.detail.stopDialog.stopping': "下线中...";
564
+ readonly 'releases.detail.stopDialog.confirm': "确认停止";
565
+ readonly 'releases.detail.stopDialog.stopping': "停止中...";
566
+ readonly 'releases.archiveDialog.title': "归档发布线";
567
+ readonly 'releases.archiveDialog.description': "归档后该发布线会从运行入口移除,历史事件和运行结果继续保留。";
568
+ readonly 'releases.archiveDialog.confirm': "确认归档";
569
+ readonly 'releases.archiveDialog.archiving': "归档中...";
570
+ readonly 'releases.detail.settings.title': "设置";
571
+ readonly 'releases.detail.settings.description': "管理当前发布线的低频操作。";
572
+ readonly 'releases.detail.delete.dangerTitle': "危险操作";
573
+ readonly 'releases.detail.delete.open': "删除发布";
574
+ readonly 'releases.detail.delete.title': "彻底删除发布";
575
+ readonly 'releases.detail.delete.description': "此操作会物理删除当前发布线、发布版本、事件、发布运行结果和标注任务,且不可恢复。";
576
+ readonly 'releases.detail.delete.dialogDescription': "输入发布名称后才能彻底删除。此操作不可恢复。";
577
+ readonly 'releases.detail.delete.releaseName': "发布名称";
578
+ readonly 'releases.detail.delete.inputLabel': "输入发布名称确认";
579
+ readonly 'releases.detail.delete.inputPlaceholder': "输入 {name}";
580
+ readonly 'releases.detail.delete.mismatch': "发布名称不匹配。";
581
+ readonly 'releases.detail.delete.confirm': "彻底删除";
582
+ readonly 'releases.detail.delete.deleting': "删除中...";
583
+ readonly 'releases.deleteImpact.loading': "正在检查删除影响...";
584
+ readonly 'releases.deleteImpact.empty': "未发现发布事件、版本、运行结果或标注任务。";
585
+ readonly 'releases.deleteImpact.event': "事件";
586
+ readonly 'releases.deleteImpact.version': "版本";
587
+ readonly 'releases.deleteImpact.annotationTask': "标注任务";
588
+ readonly 'releases.deleteImpact.events': "事件";
589
+ readonly 'releases.deleteImpact.eventsHint': "发布线事件流";
590
+ readonly 'releases.deleteImpact.versions': "版本";
591
+ readonly 'releases.deleteImpact.versionsHint': "发布版本";
592
+ readonly 'releases.deleteImpact.runResults': "运行结果";
593
+ readonly 'releases.deleteImpact.runResultsHint': "source=release";
594
+ readonly 'releases.deleteImpact.annotationTasks': "标注任务";
595
+ readonly 'releases.deleteImpact.annotationTasksHint': "发布抽样标注";
596
+ readonly 'releases.deleteImpact.more': "还有 {count} 个对象";
514
597
  readonly 'releases.detail.action.changeProduction': "改正式发布配置";
515
598
  readonly 'releases.detail.action.addCanary': "新增灰度候选";
599
+ readonly 'releases.detail.action.replaceCanary': "新建灰度候选";
600
+ readonly 'releases.detail.action.promoteCanary': "提升为正式";
601
+ readonly 'releases.detail.action.stopCanary': "停止灰度";
602
+ readonly 'releases.detail.action.resumeCanary': "恢复灰度";
603
+ readonly 'releases.detail.action.cancelCanary': "取消灰度";
516
604
  readonly 'releases.detail.action.newAnnotation': "新建标注";
517
605
  readonly 'releases.detail.action.adjustTraffic': "调整流量";
518
606
  readonly 'releases.detail.trafficDialog.title': "调整灰度流量";
@@ -544,6 +632,8 @@ declare const dictionaries: {
544
632
  readonly 'releases.detail.topology.badge.canary': "灰度";
545
633
  readonly 'releases.detail.topology.traffic.production': "生产";
546
634
  readonly 'releases.detail.topology.traffic.canary': "灰度";
635
+ readonly 'releases.detail.topology.lane.production': "production";
636
+ readonly 'releases.detail.topology.lane.canary': "canary";
547
637
  readonly 'releases.detail.topology.outputRoute': "输出路由";
548
638
  readonly 'releases.detail.topology.outputRouteTitle': "下游分发";
549
639
  readonly 'releases.detail.topology.ingress': "真实请求";
@@ -561,7 +651,6 @@ declare const dictionaries: {
561
651
  readonly 'releases.detail.topology.filterEmpty': "未启用过滤";
562
652
  readonly 'releases.detail.topology.outputMappingEmpty': "未配置输出映射";
563
653
  readonly 'releases.detail.topology.inspector': "节点详情";
564
- readonly 'releases.detail.topology.clickHint': "点击拓扑节点查看详情";
565
654
  readonly 'releases.detail.topology.field.connectorId': "连接器 ID";
566
655
  readonly 'releases.detail.topology.field.connectorName': "连接器名称";
567
656
  readonly 'releases.detail.topology.field.connectorType': "连接器类型";
@@ -576,6 +665,7 @@ declare const dictionaries: {
576
665
  readonly 'releases.detail.topology.field.tpmLimit': "TPM";
577
666
  readonly 'releases.detail.topology.field.concurrency': "并发";
578
667
  readonly 'releases.detail.topology.field.temperature': "温度";
668
+ readonly 'releases.detail.topology.field.termination': "终止条件";
579
669
  readonly 'releases.detail.topology.field.imageEncoding': "图片编码";
580
670
  readonly 'releases.detail.topology.field.imageEncodingUrl': "URL";
581
671
  readonly 'releases.detail.topology.field.imageEncodingBase64': "Base64";
@@ -584,18 +674,83 @@ declare const dictionaries: {
584
674
  readonly 'releases.detail.topology.field.outputScope': "输出范围";
585
675
  readonly 'releases.detail.topology.scope.production': "正式发布";
586
676
  readonly 'releases.detail.topology.scope.canary': "灰度";
587
- readonly 'releases.detail.topology.field.routeStatus': "路由状态";
588
677
  readonly 'releases.detail.topology.field.fieldMapping': "字段映射";
589
678
  readonly 'releases.detail.topology.field.filterRules': "过滤规则";
679
+ readonly 'releases.detail.topology.field.inputFields': "输入字段";
590
680
  readonly 'releases.detail.topology.field.outputMapping': "输出映射";
591
681
  readonly 'releases.detail.topology.trafficBox': "流量比例";
592
682
  readonly 'releases.detail.topology.noCanaryToAdjust': "暂无可调整的灰度候选";
593
- readonly 'releases.detail.topology.runConfig.title': "运行配置";
683
+ readonly 'releases.detail.topology.inputFields.empty': "暂未识别到输入字段";
684
+ readonly 'releases.detail.topology.inputRoute.saveFailed': "输入路由保存失败。";
685
+ readonly 'releases.detail.topology.inputRoute.invalid': "请输入合法的字段映射和过滤规则。";
686
+ readonly 'releases.detail.topology.inputRoute.noLane': "暂无可配置的正式发布或灰度发布 lane。";
687
+ readonly 'releases.detail.topology.inputRoute.editFilter': "编辑过滤";
688
+ readonly 'releases.detail.topology.inputRoute.hideFilter': "收起编辑";
689
+ readonly 'releases.detail.topology.outputRoute.saveFailed': "输出路由保存失败。";
690
+ readonly 'releases.detail.topology.outputRoute.noLane': "暂无可配置的正式发布或灰度发布 lane。";
691
+ readonly 'releases.detail.topology.outputRoute.noConnector': "暂无输出连接器。";
692
+ readonly 'releases.detail.topology.outputRoute.edit': "编辑输出路由";
693
+ readonly 'releases.detail.topology.outputRoute.dialogTitle': "编辑输出路由";
694
+ readonly 'releases.detail.topology.outputRoute.dialogDescription': "分别配置正式发布和灰度发布使用的输出连接器,以及每个连接器自己的输出映射。";
695
+ readonly 'releases.detail.topology.outputRoute.newConnector': "新建输出连接器";
696
+ readonly 'releases.detail.topology.outputRoute.connectorFilter': "筛选输出连接器";
697
+ readonly 'releases.detail.topology.outputRoute.connectorSelect': "选择输出连接器";
698
+ readonly 'releases.detail.topology.outputRoute.noAddableConnector': "没有可添加的输出连接器";
699
+ readonly 'releases.detail.topology.outputRoute.availableConnectors': "可用输出连接器";
700
+ readonly 'releases.detail.topology.outputRoute.selectedConnectors': "已选连接器与映射";
701
+ readonly 'releases.detail.topology.outputRoute.noSelectedConnector': "当前 lane 暂无输出连接器。";
702
+ readonly 'releases.detail.topology.outputRoute.addConnector': "添加下游连接器";
703
+ readonly 'releases.detail.topology.outputRoute.removeConnector': "移除";
704
+ readonly 'releases.detail.topology.outputRoute.passThrough': "默认输出";
705
+ readonly 'releases.detail.topology.outputRoute.connectorHelp': "选择该 lane 要投递的下游";
706
+ readonly 'releases.detail.topology.outputRoute.mappingHelp': "每个连接器独立配置 source -> target";
707
+ readonly 'releases.detail.topology.outputRoute.source': "source";
708
+ readonly 'releases.detail.topology.outputRoute.target': "target";
709
+ readonly 'releases.detail.topology.outputRoute.sourceDecisionOutput': "判定输出";
710
+ readonly 'releases.detail.topology.outputRoute.sourceParsedOutput': "完整结构化输出";
711
+ readonly 'releases.detail.topology.outputRoute.sourceRawResponse': "原始响应";
712
+ readonly 'releases.detail.topology.outputRoute.sourceRunResultId': "运行结果 ID";
713
+ readonly 'releases.detail.topology.outputRoute.sourceModelOutput': "模型输出字段";
714
+ readonly 'releases.detail.topology.outputRoute.sourceLegacy': "历史映射字段";
715
+ readonly 'releases.detail.topology.outputRoute.productionConnectors': "正式发布连接器";
716
+ readonly 'releases.detail.topology.outputRoute.canaryConnectors': "灰度发布连接器";
717
+ readonly 'releases.detail.topology.outputRoute.productionMapping': "正式发布映射";
718
+ readonly 'releases.detail.topology.outputRoute.canaryMapping': "灰度发布映射";
719
+ readonly 'releases.detail.topology.outputRoute.summaryConnectors': "输出连接器";
720
+ readonly 'releases.detail.topology.outputRoute.summaryMapping': "输出映射";
721
+ readonly 'releases.detail.topology.outputRoute.addMapping': "新增映射";
722
+ readonly 'releases.detail.topology.outputRoute.removeMapping': "删除映射";
723
+ readonly 'releases.detail.topology.outputRoute.saveRoute': "保存路由";
724
+ readonly 'releases.detail.topology.outputRoute.sourceSearch': "搜索字段…";
725
+ readonly 'releases.detail.topology.outputRoute.sourceEmpty': "无匹配字段";
726
+ readonly 'releases.detail.topology.outputRoute.sourcePlaceholder': "选择 source 字段";
727
+ readonly 'releases.detail.topology.outputRoute.sourceGroup.upstream': "上游输入原始字段";
728
+ readonly 'releases.detail.topology.outputRoute.sourceGroup.model': "模型输出";
729
+ readonly 'releases.detail.topology.outputRoute.sourceGroup.meta': "运行元数据";
730
+ readonly 'releases.detail.topology.outputRoute.newBadge': "NEW";
731
+ readonly 'releases.detail.topology.outputRoute.connectorPickerTitle': "选择下游连接器";
732
+ readonly 'releases.detail.topology.outputRoute.noMoreConnectors': "已无可添加的连接器";
733
+ readonly 'releases.detail.topology.outputRoute.laneReadonly': "当前 lane 暂不可编辑。";
734
+ readonly 'releases.detail.topology.outputRoute.connectorCount': "{count} 连接器";
735
+ readonly 'releases.detail.topology.outputRoute.footerSummary': "正式 {production} · 灰度 {canary} 个下游连接器 · 共 {mappings} 条字段映射";
736
+ readonly 'releases.detail.topology.runConfig.title': "运行参数";
594
737
  readonly 'releases.detail.topology.runConfig.invalid': "请输入合法的运行配置。";
595
738
  readonly 'releases.detail.topology.runConfig.updateFailed': "运行配置更新失败。";
596
739
  readonly 'releases.detail.topology.runConfig.modelUnavailable': "暂无可选模型";
597
740
  readonly 'releases.detail.topology.runConfig.modelLimit': "模型上限 {limit}";
598
741
  readonly 'releases.detail.topology.runConfig.unlimited': "不限";
742
+ readonly 'releases.detail.topology.identity.title': "发布信息";
743
+ readonly 'releases.detail.topology.recordMode.title': "记录设置";
744
+ readonly 'releases.detail.topology.recordMode.all': "记录全部";
745
+ readonly 'releases.detail.topology.recordMode.selectedCategories': "按输出分类记录";
746
+ readonly 'releases.detail.topology.recordMode.correctOnly': "按输出分类记录";
747
+ readonly 'releases.detail.topology.recordCategories': "输出分类";
748
+ readonly 'releases.detail.topology.recordCategories.empty': "当前提示词版本未声明可识别的输出分类";
749
+ readonly 'releases.detail.topology.recordCategories.required': "请至少选择一个输出分类。";
750
+ readonly 'releases.detail.topology.recordCategories.selected': "已选择 {count} 个分类";
751
+ readonly 'releases.detail.topology.recordCategories.selectAll': "全选";
752
+ readonly 'releases.detail.topology.recordCategories.clear': "清空";
753
+ readonly 'releases.detail.topology.canaryActionFailed': "灰度操作失败。";
599
754
  readonly 'releases.detail.topology.mode.split': "split 切流";
600
755
  readonly 'releases.detail.topology.mode.dualRun': "dual_run 双跑";
601
756
  readonly 'releases.detail.config.mapping': "字段映射";
@@ -633,9 +788,20 @@ declare const dictionaries: {
633
788
  readonly 'releases.detail.metric.deliveryFailed': "投递失败";
634
789
  readonly 'releases.detail.metric.deliveryFailureRate': "投递失败率";
635
790
  readonly 'releases.detail.quality.title': "质量指标";
636
- readonly 'releases.detail.quality.empty': "请先去标注";
791
+ readonly 'releases.detail.quality.description': "按发布事件观察召回、精确、F1、准确率,可多选发布版本、数据范围和指标。";
792
+ readonly 'releases.detail.quality.empty': "暂无发布质量指标数据";
793
+ readonly 'releases.detail.quality.emptyDescription': "需要先新建标注任务并提交样本,质量指标才会出现在这里。";
794
+ readonly 'releases.detail.quality.emptyAction': "新建标注任务";
637
795
  readonly 'releases.detail.quality.loadFailed': "质量指标加载失败,请稍后刷新。";
638
796
  readonly 'releases.detail.quality.noComparable': "已有提交样本,但暂时没有可比对的模型输出。";
797
+ readonly 'releases.detail.quality.filteredEmpty': "当前筛选条件下暂无质量指标数据。";
798
+ readonly 'releases.detail.quality.scope.overall': "整体";
799
+ readonly 'releases.detail.quality.metric.recall': "召回";
800
+ readonly 'releases.detail.quality.metric.precision': "精确";
801
+ readonly 'releases.detail.quality.metric.f1': "F1";
802
+ readonly 'releases.detail.quality.metric.accuracy': "准确率";
803
+ readonly 'releases.detail.quality.sampleCount': "样本数";
804
+ readonly 'releases.detail.quality.sampleCountShort': "{count} 样本";
639
805
  readonly 'releases.detail.quality.matchRate': "匹配率";
640
806
  readonly 'releases.detail.quality.latestMatchRate': "最新匹配率";
641
807
  readonly 'releases.detail.quality.matched': "匹配";
@@ -652,6 +818,40 @@ declare const dictionaries: {
652
818
  readonly 'releases.detail.quality.submitted': "已提交";
653
819
  readonly 'releases.detail.quality.submittedHint': "历史标注样本";
654
820
  readonly 'releases.detail.quality.chartTitle': "历史质量指标";
821
+ readonly 'releases.detail.quality.footer': "共 {tasks} 个标注任务 · 覆盖 {versions} 个发布版本 · {points} 个质量点";
822
+ readonly 'releases.detail.quality.pendingQuality': "{count} 个任务已创建但尚未形成质量结果";
823
+ readonly 'releases.detail.quality.filter.version': "版本筛选";
824
+ readonly 'releases.detail.quality.filter.scope': "数据范围";
825
+ readonly 'releases.detail.quality.filter.metric': "指标";
826
+ readonly 'releases.detail.quality.filter.allVersions': "全部版本";
827
+ readonly 'releases.detail.quality.filter.selectedVersions': "{count} 个版本";
828
+ readonly 'releases.detail.quality.filter.versionSearch': "搜索发布版本、提示词版本或模型";
829
+ readonly 'releases.detail.quality.filter.selectAll': "全选";
830
+ readonly 'releases.detail.quality.filter.latestOnly': "仅最新";
831
+ readonly 'releases.detail.quality.filter.allProductionVersions': "全部正式版本";
832
+ readonly 'releases.detail.quality.filter.allCanaryVersions': "全部灰度版本";
833
+ readonly 'releases.detail.quality.filter.noVersions': "没有匹配的发布版本";
834
+ readonly 'releases.detail.quality.filter.points': "质量点";
835
+ readonly 'releases.detail.quality.filter.scopeEmpty': "暂无范围";
836
+ readonly 'releases.detail.quality.filter.allMetrics': "全部指标";
837
+ readonly 'releases.detail.quality.filter.selectedMetrics': "{count} 个指标";
838
+ readonly 'releases.detail.quality.filter.metricEmpty': "暂无指标";
839
+ readonly 'releases.detail.quality.filter.tasks': "任务";
840
+ readonly 'releases.detail.quality.filter.allScopes': "全部范围";
841
+ readonly 'releases.detail.quality.filter.selectedScopes': "{count} 个范围";
842
+ readonly 'releases.detail.quality.legend.production': "生产";
843
+ readonly 'releases.detail.quality.legend.canary': "灰度";
844
+ readonly 'releases.detail.quality.chart.zoomIn': "放大";
845
+ readonly 'releases.detail.quality.chart.zoomOut': "缩小";
846
+ readonly 'releases.detail.quality.chart.moveLeft': "向左移动";
847
+ readonly 'releases.detail.quality.chart.moveRight': "向右移动";
848
+ readonly 'releases.detail.quality.chart.resetView': "重置视图";
849
+ readonly 'releases.detail.quality.chart.range': "调整显示范围";
850
+ readonly 'releases.detail.quality.recordsTitle': "质量记录";
851
+ readonly 'releases.detail.quality.table.task': "标注任务";
852
+ readonly 'releases.detail.quality.table.version': "发布版本";
853
+ readonly 'releases.detail.quality.table.scope': "数据范围";
854
+ readonly 'releases.detail.quality.table.updatedAt': "更新时间";
655
855
  readonly 'releases.detail.results.source': "来源";
656
856
  readonly 'releases.detail.results.lane': "lane";
657
857
  readonly 'releases.detail.results.event': "event_id";
@@ -659,7 +859,7 @@ declare const dictionaries: {
659
859
  readonly 'releases.detail.results.input': "输入";
660
860
  readonly 'releases.detail.results.output': "输出";
661
861
  readonly 'releases.detail.results.latency': "耗时";
662
- readonly 'releases.detail.results.variant': "发布组合";
862
+ readonly 'releases.detail.results.version': "发布版本";
663
863
  readonly 'releases.detail.results.promptVersion': "提示词版本";
664
864
  readonly 'releases.detail.results.tokens': "Token";
665
865
  readonly 'releases.detail.results.createdAt': "创建时间";
@@ -668,36 +868,68 @@ declare const dictionaries: {
668
868
  readonly 'releases.detail.results.loadFailed': "运行结果加载失败,请稍后刷新。";
669
869
  readonly 'releases.detail.results.empty': "运行结果会在 runner 写入后出现在这里";
670
870
  readonly 'releases.detail.results.summary': "显示 {from} - {to} / {total} 条";
671
- readonly 'releases.detail.results.variantFilter.all': "全部发布组合";
871
+ readonly 'releases.detail.results.dateFilter.all': "全部日期";
872
+ readonly 'releases.detail.results.dateFilter.ariaLabel': "运行结果日期范围";
873
+ readonly 'releases.detail.results.dateFilter.customRangeAriaLabel': "自定义运行结果日期范围";
874
+ readonly 'releases.detail.results.versionFilter.all': "全部发布版本";
875
+ readonly 'releases.detail.results.versionDropdown.search': "搜索发布版本、提示词版本或模型";
876
+ readonly 'releases.detail.results.versionDropdown.noMatches': "没有匹配的发布版本";
877
+ readonly 'releases.detail.results.versionDropdown.promptVersion': "提示词版本";
878
+ readonly 'releases.detail.results.versionDropdown.model': "模型";
879
+ readonly 'releases.detail.results.versionDropdown.versionId': "版本 ID";
880
+ readonly 'releases.detail.results.versionScope.exact': "精确版本";
881
+ readonly 'releases.detail.results.versionScope.journey': "发布旅程";
672
882
  readonly 'releases.detail.results.promptVersionFilter.all': "全部版本";
673
883
  readonly 'releases.detail.results.sourceFilter.all': "全部来源";
674
884
  readonly 'releases.detail.results.sourceFilter.production': "production";
675
885
  readonly 'releases.detail.results.sourceFilter.canary': "canary";
676
886
  readonly 'releases.detail.results.lane.production': "production";
677
887
  readonly 'releases.detail.results.lane.canary': "canary";
888
+ readonly 'releases.detail.results.status.running': "running";
678
889
  readonly 'releases.detail.results.status.success': "success";
679
- readonly 'releases.detail.results.status.error': "error";
680
- readonly 'releases.detail.results.status.timeout': "timeout";
681
- readonly 'releases.detail.results.status.rate_limited': "rate_limited";
682
- readonly 'releases.detail.variants.empty': "该发布线路暂无发布组合";
683
- readonly 'releases.detail.variants.copyId': "复制 ID";
684
- readonly 'releases.detail.variants.viewResults': "查看运行结果";
685
- readonly 'releases.detail.variants.newAnnotation': "新建标注任务";
686
- readonly 'releases.detail.variants.promptVersion': "提示词版本";
687
- readonly 'releases.detail.variants.model': "模型";
688
- readonly 'releases.detail.variants.provider': "Provider";
689
- readonly 'releases.detail.variants.updatedAt': "最近更新";
690
- readonly 'releases.detail.variants.productionEvents': "生产事件";
691
- readonly 'releases.detail.variants.canaryEvents': "灰度事件";
692
- readonly 'releases.detail.variants.processed': "处理数";
693
- readonly 'releases.detail.variants.errors': "错误";
694
- readonly 'releases.detail.variants.events': "关联事件";
695
- readonly 'releases.detail.variants.noEvents': "暂无关联事件";
696
- readonly 'releases.detail.variants.stage.production_canary': "正式 + 灰度";
697
- readonly 'releases.detail.variants.stage.production': "正式";
698
- readonly 'releases.detail.variants.stage.canary': "灰度";
699
- readonly 'releases.detail.variants.stage.history': "历史";
700
- readonly 'releases.detail.history.variant': "发布组合";
890
+ readonly 'releases.detail.results.status.failed': "failed";
891
+ readonly 'releases.detail.history.version': "发布版本";
892
+ readonly 'releases.detail.history.promptVersion': "提示词版本";
893
+ readonly 'releases.detail.history.model': "模型";
894
+ readonly 'releases.detail.history.traffic': "流量";
895
+ readonly 'releases.detail.history.status': "状态";
896
+ readonly 'releases.detail.history.recordMode': "记录模式";
897
+ readonly 'releases.detail.history.counts': "事件计数";
898
+ readonly 'releases.detail.history.updatedAt': "最近更新";
899
+ readonly 'releases.detail.history.relations': "事件关系";
900
+ readonly 'releases.detail.history.reason': "变更原因";
901
+ readonly 'releases.detail.history.relation.sourceEvent': "来源事件";
902
+ readonly 'releases.detail.history.relation.supersedes': "替换事件";
903
+ readonly 'releases.detail.history.relation.rollbackTarget': "回滚目标";
904
+ readonly 'releases.detail.history.relation.sourceExperiment': "来源实验";
905
+ readonly 'releases.detail.history.versionKind.production': "正式版本";
906
+ readonly 'releases.detail.history.versionKind.candidate': "候选版本";
907
+ readonly 'releases.detail.history.title': "发布历史";
908
+ readonly 'releases.detail.history.runtimeSection': "运行参数";
909
+ readonly 'releases.detail.history.connectorSection': "连接器";
910
+ readonly 'releases.detail.history.reasonSection': "其他";
911
+ readonly 'releases.detail.history.configChanges': "配置调整";
912
+ readonly 'releases.detail.history.moreAvailable': "还有更多历史,加载更多";
913
+ readonly 'releases.detail.history.loadingMore': "正在加载更多历史…";
914
+ readonly 'releases.detail.history.field.prompt': "Prompt";
915
+ readonly 'releases.detail.history.field.trafficMode': "流量模式";
916
+ readonly 'releases.detail.history.field.outputConnectors': "下游连接器";
917
+ readonly 'releases.detail.history.field.noDownstream': "未配置下游连接器";
918
+ readonly 'releases.detail.history.field.snapshot': "快照";
919
+ readonly 'releases.detail.history.change.updated': "已更新";
920
+ readonly 'releases.detail.history.action.moreInfo': "查看 {version} 的更多信息";
921
+ readonly 'releases.detail.history.action.configChanges': "查看 {version} 的配置调整";
922
+ readonly 'releases.detail.history.action.viewResults': "查看 {version} 的运行记录";
923
+ readonly 'releases.detail.history.action.createAnnotation': "对 {version} 范围创建标注";
924
+ readonly 'releases.detail.history.action.moreActions': "{version} 的更多操作";
925
+ readonly 'releases.detail.history.action.restore': "恢复";
926
+ readonly 'releases.detail.history.action.restoring': "恢复中...";
927
+ readonly 'releases.detail.history.action.restoreSuccess': "已恢复到对应槽位";
928
+ readonly 'releases.detail.history.action.restoreFailed': "恢复失败,请刷新后重试";
929
+ readonly 'releases.detail.history.action.restoreToProductionReason': "从历史记录 {version} 恢复正式发布配置";
930
+ readonly 'releases.detail.history.action.restoreToCanaryReason': "从历史记录 {version} 恢复灰度候选配置";
931
+ readonly 'releases.detail.history.action.expandVersion': "展开 {version} 的灰度候选";
932
+ readonly 'releases.detail.history.action.collapseVersion': "收起 {version} 的灰度候选";
701
933
  readonly 'releases.detail.history.empty': "该发布线路暂无事件";
702
934
  readonly 'releases.new.breadcrumb': "新建";
703
935
  readonly 'releases.new.title': "新建发布";
@@ -762,7 +994,9 @@ declare const dictionaries: {
762
994
  readonly 'releases.new.empty.inputConnectors': "暂无上游连接器";
763
995
  readonly 'releases.new.empty.outputConnectors': "暂无下游连接器";
764
996
  readonly 'releases.new.empty.variables': "该版本未声明变量";
765
- readonly 'releases.new.error.requiredMapping': "请补齐必填变量映射:{fields}";
997
+ readonly 'releases.new.error.requiredMapping': "请补齐变量映射:{fields}";
998
+ readonly 'releases.new.error.variableMappingMissing': "请先为所有提示词变量配置上游字段:{fields}";
999
+ readonly 'releases.new.error.variableMappingInvalid': "字段映射与提示词变量不匹配,请重新检查映射。";
766
1000
  readonly 'releases.new.error.externalIdRequired': "队列连接器需要填写外部 ID 字段";
767
1001
  readonly 'releases.new.error.invalidFilterRules': "过滤规则必须是 JSON 对象";
768
1002
  readonly 'releases.new.error.createFailed': "创建发布失败";
@@ -1057,7 +1291,7 @@ declare const dictionaries: {
1057
1291
  readonly 'prompts.filter.all': "全部";
1058
1292
  readonly 'prompts.table.name': "名称";
1059
1293
  readonly 'prompts.table.latestVersion': "最新版本";
1060
- readonly 'prompts.table.grayVersion': "灰度版本";
1294
+ readonly 'prompts.table.canaryVersion': "灰度版本";
1061
1295
  readonly 'prompts.table.onlineVersion': "已发布版本";
1062
1296
  readonly 'prompts.table.labels': "标签";
1063
1297
  readonly 'prompts.table.status': "状态";
@@ -1066,6 +1300,7 @@ declare const dictionaries: {
1066
1300
  readonly 'prompts.table.updatedAt': "最近更新";
1067
1301
  readonly 'prompts.status.editable': "可编辑";
1068
1302
  readonly 'prompts.status.frozen': "冻结";
1303
+ readonly 'prompts.status.archived': "已归档";
1069
1304
  readonly 'prompts.badge.new': "新建";
1070
1305
  readonly 'prompts.badge.latest': "最新";
1071
1306
  readonly 'prompts.badge.online': "线上";
@@ -1074,18 +1309,19 @@ declare const dictionaries: {
1074
1309
  readonly 'prompts.action.startOptimization': "启动优化";
1075
1310
  readonly 'prompts.action.moreActions': "其他操作";
1076
1311
  readonly 'prompts.action.openVersions': "打开版本";
1312
+ readonly 'prompts.action.archive': "归档";
1313
+ readonly 'prompts.action.restore': "恢复";
1077
1314
  readonly 'prompts.action.delete': "删除";
1078
1315
  readonly 'prompts.action.batchDelete': "批量删除";
1079
1316
  readonly 'prompts.deleteBlockedTitle': "确认删除提示词";
1080
- readonly 'prompts.deleteBlockedDescription': "将物理删除该提示词及其版本。受影响的实验 / 优化 / 发布页面可能无法打开,发布环境也无法基于已删除提示词继续更新版本;已运行正式发布会使用发布快照继续服务当前版本。";
1317
+ readonly 'prompts.deleteBlockedDescription': "将彻底删除该提示词及其版本,并连带删除关联实验 / 优化资源;正在运行的发布线会停止,历史发布线保留快照。";
1081
1318
  readonly 'prompts.deleteBlockedReferences': "受影响对象";
1082
1319
  readonly 'prompts.deleteImpactLoading': "正在检查受影响对象...";
1083
- readonly 'prompts.deleteImpactEmpty': "未发现会受影响的实验、优化或发布。";
1320
+ readonly 'prompts.deleteImpactEmpty': "未发现会受影响的发布线、实验或优化。";
1084
1321
  readonly 'prompts.deleteImpactTitle': "可能受影响";
1322
+ readonly 'prompts.deleteImpactReleaseLine': "发布线";
1085
1323
  readonly 'prompts.deleteImpactExperiment': "实验";
1086
1324
  readonly 'prompts.deleteImpactOptimization': "优化";
1087
- readonly 'prompts.deleteImpactCanaryRelease': "灰度发布";
1088
- readonly 'prompts.deleteImpactProductionRelease': "正式发布";
1089
1325
  readonly 'prompts.time.now': "刚刚";
1090
1326
  readonly 'prompts.variableType.text': "文本";
1091
1327
  readonly 'prompts.variableType.image': "图片";
@@ -1184,7 +1420,7 @@ declare const dictionaries: {
1184
1420
  readonly 'prompts.versions.deleteConfirmTitle': "删除版本";
1185
1421
  readonly 'prompts.versions.deleteConfirmBody': "将物理删除版本 {version}。受影响的实验 / 优化 / 发布页面可能无法打开,发布环境也无法基于该版本继续更新;已运行正式发布会使用发布快照继续服务当前版本。";
1186
1422
  readonly 'prompts.labels.system.latest': "最新";
1187
- readonly 'prompts.labels.system.gray': "灰度";
1423
+ readonly 'prompts.labels.system.canary': "灰度";
1188
1424
  readonly 'prompts.labels.system.production': "正式发布";
1189
1425
  readonly 'prompts.labels.empty': "暂无标签";
1190
1426
  readonly 'prompts.labels.remove': "移除标签 {label}";
@@ -1515,7 +1751,8 @@ declare const dictionaries: {
1515
1751
  readonly 'productionReleases.new.field.submitReason': "变更原因";
1516
1752
  readonly 'productionReleases.new.field.submitReasonPlaceholder': "说明本次发布原因";
1517
1753
  readonly 'productionReleases.new.recordMode.all': "保留全部";
1518
- readonly 'productionReleases.new.recordMode.correct_only': "仅保留正确样本";
1754
+ readonly 'productionReleases.new.recordMode.correct_only': "按输出分类保留";
1755
+ readonly 'productionReleases.new.recordMode.selected_categories': "按输出分类保留";
1519
1756
  readonly 'productionReleases.new.required': "必填";
1520
1757
  readonly 'productionReleases.new.optional': "可选";
1521
1758
  readonly 'productionReleases.new.connectorOccupied': "该连接器已被占用";
@@ -1600,6 +1837,7 @@ declare const dictionaries: {
1600
1837
  readonly 'datasets.role.expected': "期望输出";
1601
1838
  readonly 'datasets.role.metadata': "元信息";
1602
1839
  readonly 'datasets.status.deleted': "已删除";
1840
+ readonly 'datasets.status.archived': "已归档";
1603
1841
  readonly 'datasets.category.classes': "类";
1604
1842
  readonly 'datasets.category.noCategoryField': "未提供 label 列";
1605
1843
  readonly 'datasets.category.openOutput': "未配置期望输出";
@@ -1634,6 +1872,8 @@ declare const dictionaries: {
1634
1872
  readonly 'datasets.action.startOptimization': "启动优化";
1635
1873
  readonly 'datasets.action.editName': "编辑名称";
1636
1874
  readonly 'datasets.action.more': "更多";
1875
+ readonly 'datasets.action.archive': "归档";
1876
+ readonly 'datasets.action.restore': "恢复";
1637
1877
  readonly 'datasets.action.delete': "删除";
1638
1878
  readonly 'datasets.action.appendSamples': "追加样本";
1639
1879
  readonly 'datasets.action.saveChanges': "保存改动";
@@ -1641,13 +1881,19 @@ declare const dictionaries: {
1641
1881
  readonly 'datasets.action.replaceImage': "替换图片";
1642
1882
  readonly 'datasets.action.replaceFile': "更换文件";
1643
1883
  readonly 'datasets.deleteConfirmTitle': "删除数据集";
1644
- readonly 'datasets.deleteConfirmDescription': "此操作会物理删除该数据集及其样本,且不可撤销。";
1884
+ readonly 'datasets.deleteConfirmDescription': "此操作会彻底删除该数据集及其样本,并连带删除关联实验 / 优化资源,且不可撤销。";
1645
1885
  readonly 'datasets.deleteConfirmButton': "确认删除";
1646
1886
  readonly 'datasets.deletePending': "删除中...";
1647
1887
  readonly 'datasets.deleteReferencedError': "该数据集已被实验 / 优化引用,无法删除。请刷新列表查看最新引用。";
1648
1888
  readonly 'datasets.deleteFailed': "删除数据集失败,请稍后重试。";
1649
1889
  readonly 'datasets.deleteBlockedTitle': "无法删除该数据集";
1650
1890
  readonly 'datasets.deleteBlockedDescription': "该数据集当前被实验 / 优化引用,删除会被系统拒绝。请先停止引用后再删除。";
1891
+ readonly 'datasets.deleteImpactTitle': "删除影响";
1892
+ readonly 'datasets.deleteImpactLoading': "正在检查受影响对象...";
1893
+ readonly 'datasets.deleteImpactEmpty': "未发现会被连带删除的实验或优化。";
1894
+ readonly 'datasets.deleteImpactExperiment': "实验";
1895
+ readonly 'datasets.deleteImpactOptimization': "优化";
1896
+ readonly 'datasets.deleteImpactMore': "还有 {count} 个对象";
1651
1897
  readonly 'datasets.editNameTitle': "编辑数据集信息";
1652
1898
  readonly 'datasets.editNameDescription': "更新名称与描述后会立即同步到列表和详情页。";
1653
1899
  readonly 'datasets.editNameDuplicate': "该名称已被当前项目中的其他数据集使用。";
@@ -2063,10 +2309,9 @@ declare const dictionaries: {
2063
2309
  readonly 'experiments.detail.samples.col.createdAt': "创建时间";
2064
2310
  readonly 'experiments.detail.samples.image.failed': "无法加载";
2065
2311
  readonly 'experiments.detail.samples.error': "失败";
2312
+ readonly 'experiments.runResult.status.running': "运行中";
2066
2313
  readonly 'experiments.runResult.status.success': "成功";
2067
- readonly 'experiments.runResult.status.error': "失败";
2068
- readonly 'experiments.runResult.status.timeout': "超时";
2069
- readonly 'experiments.runResult.status.rateLimited': "限流";
2314
+ readonly 'experiments.runResult.status.failed': "失败";
2070
2315
  readonly 'experiments.runResult.judgment.correct': "正确";
2071
2316
  readonly 'experiments.runResult.judgment.incorrect': "错误";
2072
2317
  readonly 'experiments.runResult.judgment.parseError': "解析错误";
@@ -2637,6 +2882,10 @@ declare const dictionaries: {
2637
2882
  readonly 'canaryReleases.new.mapping.required': "必填";
2638
2883
  readonly 'canaryReleases.new.mapping.optional': "可选";
2639
2884
  readonly 'canaryReleases.new.mapping.unmapped': "不映射";
2885
+ readonly 'canaryReleases.new.mapping.sourceSearch': "搜索上游字段";
2886
+ readonly 'canaryReleases.new.mapping.sourceEmpty': "没有匹配的上游字段";
2887
+ readonly 'canaryReleases.new.mapping.targetSearch': "搜索提示词变量";
2888
+ readonly 'canaryReleases.new.mapping.targetEmpty': "没有匹配的提示词变量";
2640
2889
  readonly 'canaryReleases.new.field.outputMapping': "输出映射";
2641
2890
  readonly 'canaryReleases.new.field.outputMappingHelp': "prompt 输出字段映射到下游字段";
2642
2891
  readonly 'canaryReleases.new.field.outputMappingUnavailable': "暂不提供输出映射功能;模型输出将按默认结构传递给输出连接器。";
@@ -2669,29 +2918,27 @@ declare const dictionaries: {
2669
2918
  readonly 'canaryReleases.new.field.targetDataset': "写入数据集";
2670
2919
  readonly 'canaryReleases.new.field.targetDatasetHelp': "灰度结果将追加到该数据集(建议 stream 类型)";
2671
2920
  readonly 'canaryReleases.new.field.recordCategories': "记录模式";
2672
- readonly 'canaryReleases.new.field.recordCategoriesHelp': "按提示词输出 schema 中的判定枚举选择保留类别,默认全选";
2921
+ readonly 'canaryReleases.new.field.recordCategoriesHelp': "按当前提示词输出 schema 中 expected_output 可能产出的分类选择记录范围,默认全选";
2673
2922
  readonly 'canaryReleases.new.field.recordCategoriesEmpty': "当前提示词版本未声明可识别的判定枚举";
2674
2923
  readonly 'canaryReleases.new.field.recordCategoriesSelected': "已选择 {count} 个类别";
2675
2924
  readonly 'canaryReleases.new.field.recordCategoriesSelectAll': "全选";
2676
2925
  readonly 'canaryReleases.new.field.recordCategoriesClear': "清空";
2677
2926
  readonly 'canaryReleases.new.field.termination': "终止条件";
2678
- readonly 'canaryReleases.new.field.terminationHelp': "最长运行与最大样本数均可留空,默认手动停止";
2927
+ readonly 'canaryReleases.new.field.terminationHelp': "默认手动停止;可同时选择按时间和按处理样本数,任一条件先达到即终止";
2679
2928
  readonly 'canaryReleases.new.field.termination.manual': "手动停止";
2680
- readonly 'canaryReleases.new.field.termination.manualHelp': "未设置自动条件;可在详情页手动停止灰度";
2681
- readonly 'canaryReleases.new.field.termination.autoHelp': "任一条件达到即自动停止;也可随时手动停止";
2682
2929
  readonly 'canaryReleases.new.field.termination.maxDuration': "最长运行(秒)";
2683
2930
  readonly 'canaryReleases.new.field.termination.maxSamples': "最大样本数";
2684
2931
  readonly 'canaryReleases.new.field.termination.maxDurationPlaceholder': "留空";
2685
2932
  readonly 'canaryReleases.new.field.termination.maxSamplesPlaceholder': "留空";
2686
2933
  readonly 'canaryReleases.new.field.termination.byTime': "按时间";
2687
2934
  readonly 'canaryReleases.new.field.termination.byCount': "按处理样本数";
2688
- readonly 'canaryReleases.new.field.termination.byFailureRate': "按失败率";
2689
2935
  readonly 'canaryReleases.new.field.runMode': "运行模式";
2690
2936
  readonly 'canaryReleases.new.field.runMode.fixed': "固定时长";
2691
2937
  readonly 'canaryReleases.new.field.runMode.manual': "手动控制";
2692
2938
  readonly 'canaryReleases.new.field.recordMode': "记录模式";
2693
2939
  readonly 'canaryReleases.new.field.recordMode.all': "记录全部";
2694
- readonly 'canaryReleases.new.field.recordMode.correct': "仅记录正确";
2940
+ readonly 'canaryReleases.new.field.recordMode.correct': "按输出分类记录";
2941
+ readonly 'canaryReleases.new.field.recordMode.selectedCategories': "按输出分类记录";
2695
2942
  readonly 'canaryReleases.new.field.externalIdField': "业务外部 ID 字段";
2696
2943
  readonly 'canaryReleases.new.field.externalIdFieldHelp': "上游消息中标识每条调用的字段,用于业务侧反查";
2697
2944
  readonly 'canaryReleases.new.field.runConfig.rpm': "RPM 上限";
@@ -2739,7 +2986,6 @@ declare const dictionaries: {
2739
2986
  readonly 'canaryReleases.detail.config.durationLimit': "时长上限";
2740
2987
  readonly 'canaryReleases.detail.config.durationDays': "{days} 天";
2741
2988
  readonly 'canaryReleases.detail.config.sampleLimit': "样本上限";
2742
- readonly 'canaryReleases.detail.config.failureRateLimit': "失败率上限";
2743
2989
  readonly 'canaryReleases.detail.config.targetDataset': "写入数据集";
2744
2990
  readonly 'canaryReleases.detail.config.storageCategories': "存储分类";
2745
2991
  readonly 'canaryReleases.detail.config.allCategories': "全部";
@@ -2895,9 +3141,9 @@ declare const dictionaries: {
2895
3141
  readonly 'annotations.claim.submit': "Start annotation";
2896
3142
  readonly 'annotations.claim.cancel': "Cancel";
2897
3143
  readonly 'annotations.title': "Annotations";
2898
- readonly 'annotations.subtitle': "Create annotation tasks manually, filter samples by release name, release variant, and canary / production scope, then write the selected class to expected_output.";
3144
+ readonly 'annotations.subtitle': "Create annotation tasks manually, filter samples by release name, release version, and canary / production scope, then write the selected class to expected_output.";
2899
3145
  readonly 'annotations.search': "Search tasks, prompts, models, or sources";
2900
- readonly 'annotations.empty': "No annotation tasks yet. Create one from a release name and release variant.";
3146
+ readonly 'annotations.empty': "No annotation tasks yet. Create one from a release name and release version.";
2901
3147
  readonly 'annotations.loadFailed': "Failed to load annotation tasks. Refresh and try again.";
2902
3148
  readonly 'annotations.action.new': "New annotation task";
2903
3149
  readonly 'annotations.action.open': "Open detail";
@@ -2926,6 +3172,7 @@ declare const dictionaries: {
2926
3172
  readonly 'annotations.table.updatedAt': "Updated";
2927
3173
  readonly 'annotations.scope.canary': "Canary candidate";
2928
3174
  readonly 'annotations.scope.online': "Production data";
3175
+ readonly 'annotations.scope.all': "All data";
2929
3176
  readonly 'annotations.status.active': "Active";
2930
3177
  readonly 'annotations.status.completed': "Completed";
2931
3178
  readonly 'annotations.status.archived': "Archived";
@@ -2945,43 +3192,67 @@ declare const dictionaries: {
2945
3192
  readonly 'annotations.lifecycle.submitDetail': "{count} submitted";
2946
3193
  readonly 'annotations.new.breadcrumb': "New";
2947
3194
  readonly 'annotations.new.title': "New annotation task";
2948
- readonly 'annotations.new.subtitle': "Choose a release name, release variant, and data scope. The page shows the maximum annotatable samples for the current filters.";
3195
+ readonly 'annotations.new.subtitle': "Choose a release name and version, then sample randomly by total count or assign counts by current categories.";
2949
3196
  readonly 'annotations.new.action.openTask': "Open task";
2950
3197
  readonly 'annotations.new.action.createCanary': "Create canary release";
2951
3198
  readonly 'annotations.new.action.create': "Create task";
2952
3199
  readonly 'annotations.new.action.creating': "Creating...";
3200
+ readonly 'annotations.new.section.name': "Task name";
3201
+ readonly 'annotations.new.section.nameDetail': "Name this annotation task first";
2953
3202
  readonly 'annotations.new.section.source': "Task source";
2954
3203
  readonly 'annotations.new.section.sourceDetail': "Annotation tasks bind to canary candidates or online production samples";
2955
3204
  readonly 'annotations.new.section.config': "Annotation config";
2956
3205
  readonly 'annotations.new.section.configDetail': "Define sampling size and human review fields";
2957
- readonly 'annotations.new.section.release': "Choose release name";
2958
- readonly 'annotations.new.section.releaseDetail': "Bind the annotation task to one release line";
2959
- readonly 'annotations.new.section.variant': "Choose release variant";
2960
- readonly 'annotations.new.section.variantDetail': "Confirm the data by variant ID, prompt version, and model";
2961
- readonly 'annotations.new.section.sample': "Choose data scope and count";
2962
- readonly 'annotations.new.section.sampleDetail': "Select canary or production data and set the sample size";
3206
+ readonly 'annotations.new.section.release': "Choose release name and version";
3207
+ readonly 'annotations.new.section.releaseDetail': "Bind the annotation task to one release line and release version";
3208
+ readonly 'annotations.new.section.version': "Choose release version";
3209
+ readonly 'annotations.new.section.versionDetail': "Confirm the data by version label, prompt version, and model";
3210
+ readonly 'annotations.new.section.sample': "Annotation data amount";
3211
+ readonly 'annotations.new.section.sampleDetail': "Choose random sampling or counts by category";
2963
3212
  readonly 'annotations.new.scope.label': "Annotation scope";
2964
3213
  readonly 'annotations.new.onlineHint': "Online sampling annotations bind to production release events. You can review the online entry from release details.";
2965
3214
  readonly 'annotations.new.emptyCanary': "No canary tasks available. Create a canary release and let the runner write run results first.";
2966
3215
  readonly 'annotations.new.emptyRelease': "No releases available. Create a release and write run results first.";
2967
3216
  readonly 'annotations.new.selectReleaseFirst': "Choose a release name first.";
2968
- readonly 'annotations.new.emptyVariant': "No release variants under this release name.";
3217
+ readonly 'annotations.new.emptyVersion': "No release versions under this release name.";
3218
+ readonly 'annotations.new.releaseSearchPlaceholder': "Search release name, prompt, or version";
3219
+ readonly 'annotations.new.versionSearchPlaceholder': "Search version number, prompt, model, or count";
3220
+ readonly 'annotations.new.noMatches': "No matches";
3221
+ readonly 'annotations.new.dropdown.prompt': "Prompt";
3222
+ readonly 'annotations.new.dropdown.model': "Model";
3223
+ readonly 'annotations.new.dropdown.runResults': "Count - {count}";
3224
+ readonly 'annotations.new.dropdown.runResultsLabel': "Count";
3225
+ readonly 'annotations.new.dropdown.versionCount': "{count} versions";
2969
3226
  readonly 'annotations.new.field.name': "Task name";
2970
3227
  readonly 'annotations.new.field.namePlaceholder': "Example: annotation-20260523";
2971
3228
  readonly 'annotations.new.field.sampleLimit': "Annotation count";
2972
- readonly 'annotations.new.maxSamples': "Current filters allow at most {count} samples";
3229
+ readonly 'annotations.new.maxSamples': "Current release version allows at most {count} samples";
2973
3230
  readonly 'annotations.new.expectedOutputOnly': "The annotation field is fixed to expected_output. Select the correct class for the current sample from prompt categories.";
2974
3231
  readonly 'annotations.new.noCategoryOptions': "No categories were found from the prompt";
2975
- readonly 'annotations.new.categoryOptionsRequired': "This release variant has no prompt category options. Add categories in the prompt output schema first.";
3232
+ readonly 'annotations.new.categoryOptionsRequired': "This release version has no prompt category options. Add categories in the prompt output schema first.";
3233
+ readonly 'annotations.new.samplingMode.label': "Sampling mode";
3234
+ readonly 'annotations.new.samplingMode.random': "Random sample";
3235
+ readonly 'annotations.new.samplingMode.perCategory': "By category";
3236
+ readonly 'annotations.new.categorySample.category': "Category";
3237
+ readonly 'annotations.new.categorySample.available': "Available";
3238
+ readonly 'annotations.new.categorySample.count': "Count";
3239
+ readonly 'annotations.new.categorySample.total': "Selected {count} / {max} samples";
3240
+ readonly 'annotations.new.categorySampleExceeded': "A category annotation count exceeds the currently available count.";
3241
+ readonly 'annotations.new.versionScope.label': "Version scope";
3242
+ readonly 'annotations.new.versionScope.exact': "Exact version";
3243
+ readonly 'annotations.new.versionScope.journey': "Release journey";
3244
+ readonly 'annotations.new.versionScopeIncompatible': "Versions in this release journey have incompatible categories, so they cannot be merged into one annotation task.";
2976
3245
  readonly 'annotations.new.summary.title': "Task summary";
2977
3246
  readonly 'annotations.new.summary.scope': "Scope";
2978
3247
  readonly 'annotations.new.summary.release': "Release name";
2979
- readonly 'annotations.new.summary.variant': "Release variant";
3248
+ readonly 'annotations.new.summary.version': "Release version";
3249
+ readonly 'annotations.new.summary.versionScope': "Version scope";
3250
+ readonly 'annotations.new.summary.samplingMode': "Sampling mode";
2980
3251
  readonly 'annotations.new.summary.samples': "Sample / max";
2981
3252
  readonly 'annotations.new.summary.field': "Annotation field";
2982
3253
  readonly 'annotations.new.summary.categories': "Categories";
2983
3254
  readonly 'annotations.new.submitReady': "Filters are valid. Create the task and enter the annotation workspace.";
2984
- readonly 'annotations.new.submitDisabled': "Choose a release name, release variant, and a sample count within the maximum.";
3255
+ readonly 'annotations.new.submitDisabled': "Choose a release name, release version, and an annotation amount within the available count.";
2985
3256
  readonly 'annotations.detail.notFound': "Annotation task not found";
2986
3257
  readonly 'annotations.detail.metric.open': "Open";
2987
3258
  readonly 'annotations.detail.metric.openHint': "Not submitted";
@@ -3002,7 +3273,7 @@ declare const dictionaries: {
3002
3273
  readonly 'annotations.detail.samples.result': "Annotated value";
3003
3274
  readonly 'annotations.detail.samples.judgment': "Judgment";
3004
3275
  readonly 'annotations.detail.samples.createdAt': "Created";
3005
- readonly 'annotations.detail.empty': "This task has no samples. Check the release variant, data scope, and sample size used at creation.";
3276
+ readonly 'annotations.detail.empty': "This task has no samples. Check the release version, data scope, and sample size used at creation.";
3006
3277
  readonly 'annotations.detail.workspace.empty': "Select a sample to annotate";
3007
3278
  readonly 'annotations.workspace.inputVariables': "Input variables";
3008
3279
  readonly 'annotations.workspace.fullPrompt': "Full prompt";
@@ -3107,7 +3378,7 @@ declare const dictionaries: {
3107
3378
  readonly 'dashboard.refresh': "Refresh";
3108
3379
  readonly 'dashboard.assets.title': "Assets";
3109
3380
  readonly 'dashboard.assets.createAction': "New {resource}";
3110
- readonly 'dashboard.assets.promptsDetail': "Online {online} · canary {gray}";
3381
+ readonly 'dashboard.assets.promptsDetail': "Online {online} · canary {canary}";
3111
3382
  readonly 'dashboard.assets.datasetsDetail': "Samples {samples}";
3112
3383
  readonly 'dashboard.assets.modelsDetail': "Enabled {enabled} · vision {image}";
3113
3384
  readonly 'dashboard.assets.connectorsDetail': "Input {input} · output {output}";
@@ -3201,7 +3472,7 @@ declare const dictionaries: {
3201
3472
  readonly 'projectOverview.resource.samples': "{count} samples";
3202
3473
  readonly 'projectOverview.summary.title': "Assets";
3203
3474
  readonly 'projectOverview.summary.create': "Create";
3204
- readonly 'projectOverview.summary.promptsDetail': "Online {online} · canary {gray}";
3475
+ readonly 'projectOverview.summary.promptsDetail': "Online {online} · canary {canary}";
3205
3476
  readonly 'projectOverview.summary.datasetsDetail': "Samples {samples}";
3206
3477
  readonly 'projectOverview.summary.modelsDetail': "Text models {text} · image models {image}";
3207
3478
  readonly 'projectOverview.summary.connectorsDetail': "Input {input} · output {output}";
@@ -3212,7 +3483,7 @@ declare const dictionaries: {
3212
3483
  readonly 'projectOverview.metric.f1': "F1";
3213
3484
  readonly 'projectOverview.metric.fpr': "FPR";
3214
3485
  readonly 'projectOverview.metric.best': "Best metric";
3215
- readonly 'projectOverview.metric.variants': "Variants";
3486
+ readonly 'projectOverview.metric.versions': "Versions";
3216
3487
  readonly 'projectOverview.metric.outputs': "Outputs";
3217
3488
  readonly 'projectOverview.event.release': "Release";
3218
3489
  readonly 'projectOverview.actions.title': "Quick actions";
@@ -3274,7 +3545,14 @@ declare const dictionaries: {
3274
3545
  readonly 'releases.title': "Releases";
3275
3546
  readonly 'releases.subtitle': "Organize live traffic by release line: each line binds one prompt and one upstream connector, with at most one production release lane and one running canary candidate lane.";
3276
3547
  readonly 'releases.action.new': "New release";
3277
- readonly 'releases.action.enter': "Open details";
3548
+ readonly 'releases.action.stop': "Stop";
3549
+ readonly 'releases.action.start': "Start";
3550
+ readonly 'releases.action.archive': "Archive";
3551
+ readonly 'releases.action.unarchive': "Unarchive";
3552
+ readonly 'releases.stopReason': "Stopped release line from releases list";
3553
+ readonly 'releases.startReason': "Started release line from releases list";
3554
+ readonly 'releases.archiveReason': "Archived release line from releases list";
3555
+ readonly 'releases.unarchiveReason': "Unarchived release line from releases list";
3278
3556
  readonly 'releases.search': "Search release name / prompt / model / upstream connector…";
3279
3557
  readonly 'releases.filter.all': "All";
3280
3558
  readonly 'releases.filter.production': "production";
@@ -3285,18 +3563,21 @@ declare const dictionaries: {
3285
3563
  readonly 'releases.empty': "No release lines yet";
3286
3564
  readonly 'releases.metric.totalLines': "Release lines · total";
3287
3565
  readonly 'releases.metric.totalLinesHint': "Prompt × upstream connector";
3566
+ readonly 'releases.metric.running': "running";
3567
+ readonly 'releases.metric.runningHint': "At least one lane is running";
3568
+ readonly 'releases.metric.stopped': "stopped";
3569
+ readonly 'releases.metric.stoppedHint': "{count} archived";
3288
3570
  readonly 'releases.metric.production': "production";
3289
3571
  readonly 'releases.metric.productionHint': "{count} also have canary candidates";
3290
3572
  readonly 'releases.metric.canary': "canary";
3291
3573
  readonly 'releases.metric.canaryHint': "{count} samples waiting for annotation";
3292
- readonly 'releases.metric.failureRate': "Failure rate · canary";
3574
+ readonly 'releases.metric.failureRate': "Failure rate";
3293
3575
  readonly 'releases.metric.failureRateHint': "{count} failures";
3294
- readonly 'releases.metric.processed': "Processed · canary";
3295
- readonly 'releases.metric.processedHint': "Aggregated from canary run results";
3296
- readonly 'releases.status.production': "production";
3297
- readonly 'releases.status.productionCanary': "production + canary";
3298
- readonly 'releases.status.canary': "canary";
3576
+ readonly 'releases.metric.processed': "Processed";
3577
+ readonly 'releases.metric.processedHint': "Aggregated from release run results";
3578
+ readonly 'releases.status.running': "running";
3299
3579
  readonly 'releases.status.stopped': "stopped";
3580
+ readonly 'releases.status.archived': "archived";
3300
3581
  readonly 'releases.event.createCanary': "create_canary";
3301
3582
  readonly 'releases.event.ratioChange': "ratio_change";
3302
3583
  readonly 'releases.event.canaryTerminal': "canary_terminal";
@@ -3306,9 +3587,15 @@ declare const dictionaries: {
3306
3587
  readonly 'releases.event.operation.stopLane': "stop_lane";
3307
3588
  readonly 'releases.event.operation.resumeLane': "resume_lane";
3308
3589
  readonly 'releases.event.operation.cancelCanary': "cancel_canary";
3590
+ readonly 'releases.event.operation.restoreToProduction': "restore_to_production";
3591
+ readonly 'releases.event.operation.restoreToCanary': "restore_to_canary";
3309
3592
  readonly 'releases.event.operation.archiveLine': "archive_line";
3593
+ readonly 'releases.event.operation.unarchiveLine': "unarchive_line";
3310
3594
  readonly 'releases.traffic.offline': "offline";
3311
3595
  readonly 'releases.traffic.productionFull': "production 100%";
3596
+ readonly 'releases.traffic.productionLane': "Production";
3597
+ readonly 'releases.traffic.canarySplit': "Canary split";
3598
+ readonly 'releases.traffic.canaryDualRun': "Canary dual-run";
3312
3599
  readonly 'releases.traffic.passThrough': "pass-through";
3313
3600
  readonly 'releases.lane.production': "Production release";
3314
3601
  readonly 'releases.lane.canary': "canary candidate lane";
@@ -3322,27 +3609,74 @@ declare const dictionaries: {
3322
3609
  readonly 'releases.detail.tab.overview': "Overview";
3323
3610
  readonly 'releases.detail.tab.config': "Traffic config";
3324
3611
  readonly 'releases.detail.tab.monitoring': "Live metrics";
3325
- readonly 'releases.detail.tab.variants': "Release variants";
3326
3612
  readonly 'releases.detail.tab.results': "Run results";
3327
3613
  readonly 'releases.detail.tab.annotation': "Quality metrics";
3328
3614
  readonly 'releases.detail.tab.quality': "Quality metrics";
3329
3615
  readonly 'releases.detail.tab.history': "History";
3616
+ readonly 'releases.detail.tab.settings': "Settings";
3330
3617
  readonly 'releases.detail.history.productionLane': "Production";
3331
3618
  readonly 'releases.detail.history.canaryLane': "Canary";
3332
3619
  readonly 'releases.detail.notFound': "Release line not found";
3333
- readonly 'releases.detail.confirmStopProduction': "Take the current production release offline?";
3334
- readonly 'releases.detail.stopReason': "Took production release offline from release line details";
3335
- readonly 'releases.detail.action.stopProduction': "Take offline";
3336
- readonly 'releases.detail.stopDialog.title': "Take production offline";
3337
- readonly 'releases.detail.stopDialog.description': "The release line will go offline, but the release record and history events stay visible.";
3620
+ readonly 'releases.detail.confirmStopProduction': "Stop the current release line?";
3621
+ readonly 'releases.detail.stopReason': "Stopped release line from release line details";
3622
+ readonly 'releases.detail.startReason': "Started release line from release line details";
3623
+ readonly 'releases.detail.archiveReason': "Archived release line from release line details";
3624
+ readonly 'releases.detail.unarchiveReason': "Unarchived release line from release line details";
3625
+ readonly 'releases.detail.deleteReason': "Permanently deleted release line from release line details";
3626
+ readonly 'releases.detail.deleteFailed': "Failed to delete release line. Please try again later.";
3627
+ readonly 'releases.detail.action.stopProduction': "Stop";
3628
+ readonly 'releases.detail.action.start': "Start";
3629
+ readonly 'releases.detail.action.starting': "Starting...";
3630
+ readonly 'releases.detail.action.archive': "Archive";
3631
+ readonly 'releases.detail.action.archiving': "Archiving...";
3632
+ readonly 'releases.detail.action.unarchive': "Unarchive";
3633
+ readonly 'releases.detail.action.unarchiving': "Unarchiving...";
3634
+ readonly 'releases.detail.stopDialog.title': "Stop release line";
3635
+ readonly 'releases.detail.stopDialog.description': "The release line will stop handling traffic, but the release record and history events stay visible.";
3338
3636
  readonly 'releases.detail.stopDialog.releaseName': "Release name";
3339
3637
  readonly 'releases.detail.stopDialog.inputLabel': "Type the release name to confirm";
3340
3638
  readonly 'releases.detail.stopDialog.inputPlaceholder': "Type {name}";
3341
3639
  readonly 'releases.detail.stopDialog.mismatch': "Release name does not match.";
3342
- readonly 'releases.detail.stopDialog.confirm': "Take offline";
3343
- readonly 'releases.detail.stopDialog.stopping': "Taking offline...";
3640
+ readonly 'releases.detail.stopDialog.confirm': "Stop";
3641
+ readonly 'releases.detail.stopDialog.stopping': "Stopping...";
3642
+ readonly 'releases.archiveDialog.title': "Archive release line";
3643
+ readonly 'releases.archiveDialog.description': "Archived release lines are removed from running entry points while history and run results stay visible.";
3644
+ readonly 'releases.archiveDialog.confirm': "Archive";
3645
+ readonly 'releases.archiveDialog.archiving': "Archiving...";
3646
+ readonly 'releases.detail.settings.title': "Settings";
3647
+ readonly 'releases.detail.settings.description': "Manage low-frequency actions for this release line.";
3648
+ readonly 'releases.detail.delete.dangerTitle': "Danger zone";
3649
+ readonly 'releases.detail.delete.open': "Delete release";
3650
+ readonly 'releases.detail.delete.title': "Permanently delete release";
3651
+ readonly 'releases.detail.delete.description': "This physically deletes the release line, release versions, events, release run results, and annotation tasks. It cannot be undone.";
3652
+ readonly 'releases.detail.delete.dialogDescription': "Type the release name before permanently deleting it. This action cannot be undone.";
3653
+ readonly 'releases.detail.delete.releaseName': "Release name";
3654
+ readonly 'releases.detail.delete.inputLabel': "Type the release name to confirm";
3655
+ readonly 'releases.detail.delete.inputPlaceholder': "Type {name}";
3656
+ readonly 'releases.detail.delete.mismatch': "Release name does not match.";
3657
+ readonly 'releases.detail.delete.confirm': "Permanently delete";
3658
+ readonly 'releases.detail.delete.deleting': "Deleting...";
3659
+ readonly 'releases.deleteImpact.loading': "Checking deletion impact...";
3660
+ readonly 'releases.deleteImpact.empty': "No release events, versions, run results, or annotation tasks found.";
3661
+ readonly 'releases.deleteImpact.event': "Event";
3662
+ readonly 'releases.deleteImpact.version': "Version";
3663
+ readonly 'releases.deleteImpact.annotationTask': "Annotation task";
3664
+ readonly 'releases.deleteImpact.events': "Events";
3665
+ readonly 'releases.deleteImpact.eventsHint': "Release event stream";
3666
+ readonly 'releases.deleteImpact.versions': "Versions";
3667
+ readonly 'releases.deleteImpact.versionsHint': "Release versions";
3668
+ readonly 'releases.deleteImpact.runResults': "Run results";
3669
+ readonly 'releases.deleteImpact.runResultsHint': "source=release";
3670
+ readonly 'releases.deleteImpact.annotationTasks': "Annotation tasks";
3671
+ readonly 'releases.deleteImpact.annotationTasksHint': "Release sampling tasks";
3672
+ readonly 'releases.deleteImpact.more': "{count} more objects";
3344
3673
  readonly 'releases.detail.action.changeProduction': "Change production release config";
3345
3674
  readonly 'releases.detail.action.addCanary': "Add canary candidate";
3675
+ readonly 'releases.detail.action.replaceCanary': "New canary candidate";
3676
+ readonly 'releases.detail.action.promoteCanary': "Promote to production";
3677
+ readonly 'releases.detail.action.stopCanary': "Stop canary";
3678
+ readonly 'releases.detail.action.resumeCanary': "Resume canary";
3679
+ readonly 'releases.detail.action.cancelCanary': "Cancel canary";
3346
3680
  readonly 'releases.detail.action.newAnnotation': "New annotation";
3347
3681
  readonly 'releases.detail.action.adjustTraffic': "Adjust traffic";
3348
3682
  readonly 'releases.detail.trafficDialog.title': "Adjust canary traffic";
@@ -3374,6 +3708,8 @@ declare const dictionaries: {
3374
3708
  readonly 'releases.detail.topology.badge.canary': "Canary";
3375
3709
  readonly 'releases.detail.topology.traffic.production': "Production";
3376
3710
  readonly 'releases.detail.topology.traffic.canary': "Canary";
3711
+ readonly 'releases.detail.topology.lane.production': "production";
3712
+ readonly 'releases.detail.topology.lane.canary': "canary";
3377
3713
  readonly 'releases.detail.topology.outputRoute': "Output route";
3378
3714
  readonly 'releases.detail.topology.outputRouteTitle': "Downstream dispatch";
3379
3715
  readonly 'releases.detail.topology.ingress': "Live request";
@@ -3391,7 +3727,6 @@ declare const dictionaries: {
3391
3727
  readonly 'releases.detail.topology.filterEmpty': "Filtering is disabled";
3392
3728
  readonly 'releases.detail.topology.outputMappingEmpty': "No output mapping configured";
3393
3729
  readonly 'releases.detail.topology.inspector': "Node details";
3394
- readonly 'releases.detail.topology.clickHint': "Click a topology node to inspect details";
3395
3730
  readonly 'releases.detail.topology.field.connectorId': "Connector ID";
3396
3731
  readonly 'releases.detail.topology.field.connectorName': "Connector name";
3397
3732
  readonly 'releases.detail.topology.field.connectorType': "Connector type";
@@ -3406,6 +3741,7 @@ declare const dictionaries: {
3406
3741
  readonly 'releases.detail.topology.field.tpmLimit': "TPM";
3407
3742
  readonly 'releases.detail.topology.field.concurrency': "Concurrency";
3408
3743
  readonly 'releases.detail.topology.field.temperature': "Temperature";
3744
+ readonly 'releases.detail.topology.field.termination': "Termination";
3409
3745
  readonly 'releases.detail.topology.field.imageEncoding': "Image encoding";
3410
3746
  readonly 'releases.detail.topology.field.imageEncodingUrl': "URL";
3411
3747
  readonly 'releases.detail.topology.field.imageEncodingBase64': "Base64";
@@ -3414,18 +3750,83 @@ declare const dictionaries: {
3414
3750
  readonly 'releases.detail.topology.field.outputScope': "Output scope";
3415
3751
  readonly 'releases.detail.topology.scope.production': "Production release";
3416
3752
  readonly 'releases.detail.topology.scope.canary': "canary";
3417
- readonly 'releases.detail.topology.field.routeStatus': "Route status";
3418
3753
  readonly 'releases.detail.topology.field.fieldMapping': "Field mapping";
3419
3754
  readonly 'releases.detail.topology.field.filterRules': "Filter rules";
3755
+ readonly 'releases.detail.topology.field.inputFields': "Input fields";
3420
3756
  readonly 'releases.detail.topology.field.outputMapping': "Output mapping";
3421
3757
  readonly 'releases.detail.topology.trafficBox': "Traffic ratio";
3422
3758
  readonly 'releases.detail.topology.noCanaryToAdjust': "No canary candidate can be adjusted";
3423
- readonly 'releases.detail.topology.runConfig.title': "Run config";
3759
+ readonly 'releases.detail.topology.inputFields.empty': "No input fields detected";
3760
+ readonly 'releases.detail.topology.inputRoute.saveFailed': "Failed to save input route.";
3761
+ readonly 'releases.detail.topology.inputRoute.invalid': "Enter a valid field mapping and filter rules.";
3762
+ readonly 'releases.detail.topology.inputRoute.noLane': "No configurable production or canary lane.";
3763
+ readonly 'releases.detail.topology.inputRoute.editFilter': "Edit filter";
3764
+ readonly 'releases.detail.topology.inputRoute.hideFilter': "Collapse editor";
3765
+ readonly 'releases.detail.topology.outputRoute.saveFailed': "Failed to save output route.";
3766
+ readonly 'releases.detail.topology.outputRoute.noLane': "No configurable production or canary lane.";
3767
+ readonly 'releases.detail.topology.outputRoute.noConnector': "No output connectors.";
3768
+ readonly 'releases.detail.topology.outputRoute.edit': "Edit output route";
3769
+ readonly 'releases.detail.topology.outputRoute.dialogTitle': "Edit output route";
3770
+ readonly 'releases.detail.topology.outputRoute.dialogDescription': "Configure the output connectors for production and canary, with a separate output mapping for each connector.";
3771
+ readonly 'releases.detail.topology.outputRoute.newConnector': "New output connector";
3772
+ readonly 'releases.detail.topology.outputRoute.connectorFilter': "Filter output connectors";
3773
+ readonly 'releases.detail.topology.outputRoute.connectorSelect': "Select output connector";
3774
+ readonly 'releases.detail.topology.outputRoute.noAddableConnector': "No output connector can be added";
3775
+ readonly 'releases.detail.topology.outputRoute.availableConnectors': "Available output connectors";
3776
+ readonly 'releases.detail.topology.outputRoute.selectedConnectors': "Selected connectors and mappings";
3777
+ readonly 'releases.detail.topology.outputRoute.noSelectedConnector': "This lane has no output connectors.";
3778
+ readonly 'releases.detail.topology.outputRoute.addConnector': "Add downstream connector";
3779
+ readonly 'releases.detail.topology.outputRoute.removeConnector': "Remove";
3780
+ readonly 'releases.detail.topology.outputRoute.passThrough': "Default output";
3781
+ readonly 'releases.detail.topology.outputRoute.connectorHelp': "Select downstreams for this lane";
3782
+ readonly 'releases.detail.topology.outputRoute.mappingHelp': "Each connector has its own source -> target mapping";
3783
+ readonly 'releases.detail.topology.outputRoute.source': "source";
3784
+ readonly 'releases.detail.topology.outputRoute.target': "target";
3785
+ readonly 'releases.detail.topology.outputRoute.sourceDecisionOutput': "Decision output";
3786
+ readonly 'releases.detail.topology.outputRoute.sourceParsedOutput': "Full parsed output";
3787
+ readonly 'releases.detail.topology.outputRoute.sourceRawResponse': "Raw response";
3788
+ readonly 'releases.detail.topology.outputRoute.sourceRunResultId': "Run result ID";
3789
+ readonly 'releases.detail.topology.outputRoute.sourceModelOutput': "Model output field";
3790
+ readonly 'releases.detail.topology.outputRoute.sourceLegacy': "Legacy mapping field";
3791
+ readonly 'releases.detail.topology.outputRoute.productionConnectors': "Production connectors";
3792
+ readonly 'releases.detail.topology.outputRoute.canaryConnectors': "Canary connectors";
3793
+ readonly 'releases.detail.topology.outputRoute.productionMapping': "Production mapping";
3794
+ readonly 'releases.detail.topology.outputRoute.canaryMapping': "Canary mapping";
3795
+ readonly 'releases.detail.topology.outputRoute.summaryConnectors': "Output connectors";
3796
+ readonly 'releases.detail.topology.outputRoute.summaryMapping': "Output mapping";
3797
+ readonly 'releases.detail.topology.outputRoute.addMapping': "Add mapping";
3798
+ readonly 'releases.detail.topology.outputRoute.removeMapping': "Remove mapping";
3799
+ readonly 'releases.detail.topology.outputRoute.saveRoute': "Save route";
3800
+ readonly 'releases.detail.topology.outputRoute.sourceSearch': "Search fields...";
3801
+ readonly 'releases.detail.topology.outputRoute.sourceEmpty': "No matching field";
3802
+ readonly 'releases.detail.topology.outputRoute.sourcePlaceholder': "Select source field";
3803
+ readonly 'releases.detail.topology.outputRoute.sourceGroup.upstream': "Raw upstream input fields";
3804
+ readonly 'releases.detail.topology.outputRoute.sourceGroup.model': "Model output";
3805
+ readonly 'releases.detail.topology.outputRoute.sourceGroup.meta': "Run metadata";
3806
+ readonly 'releases.detail.topology.outputRoute.newBadge': "NEW";
3807
+ readonly 'releases.detail.topology.outputRoute.connectorPickerTitle': "Select downstream connector";
3808
+ readonly 'releases.detail.topology.outputRoute.noMoreConnectors': "No more connectors can be added";
3809
+ readonly 'releases.detail.topology.outputRoute.laneReadonly': "This lane cannot be edited right now.";
3810
+ readonly 'releases.detail.topology.outputRoute.connectorCount': "{count} connectors";
3811
+ readonly 'releases.detail.topology.outputRoute.footerSummary': "Production {production} · canary {canary} downstream connectors · {mappings} field mappings total";
3812
+ readonly 'releases.detail.topology.runConfig.title': "Run parameters";
3424
3813
  readonly 'releases.detail.topology.runConfig.invalid': "Enter a valid run config.";
3425
3814
  readonly 'releases.detail.topology.runConfig.updateFailed': "Failed to update run config.";
3426
3815
  readonly 'releases.detail.topology.runConfig.modelUnavailable': "No selectable model";
3427
3816
  readonly 'releases.detail.topology.runConfig.modelLimit': "Model cap {limit}";
3428
3817
  readonly 'releases.detail.topology.runConfig.unlimited': "Unlimited";
3818
+ readonly 'releases.detail.topology.identity.title': "Release info";
3819
+ readonly 'releases.detail.topology.recordMode.title': "Record settings";
3820
+ readonly 'releases.detail.topology.recordMode.all': "Record all";
3821
+ readonly 'releases.detail.topology.recordMode.selectedCategories': "Record selected output classes";
3822
+ readonly 'releases.detail.topology.recordMode.correctOnly': "Record selected output classes";
3823
+ readonly 'releases.detail.topology.recordCategories': "Output classes";
3824
+ readonly 'releases.detail.topology.recordCategories.empty': "This prompt version does not declare output classes";
3825
+ readonly 'releases.detail.topology.recordCategories.required': "Select at least one output class.";
3826
+ readonly 'releases.detail.topology.recordCategories.selected': "{count} classes selected";
3827
+ readonly 'releases.detail.topology.recordCategories.selectAll': "Select all";
3828
+ readonly 'releases.detail.topology.recordCategories.clear': "Clear";
3829
+ readonly 'releases.detail.topology.canaryActionFailed': "Canary operation failed.";
3429
3830
  readonly 'releases.detail.topology.mode.split': "split traffic";
3430
3831
  readonly 'releases.detail.topology.mode.dualRun': "dual_run mirror";
3431
3832
  readonly 'releases.detail.config.mapping': "Field mapping";
@@ -3463,9 +3864,20 @@ declare const dictionaries: {
3463
3864
  readonly 'releases.detail.metric.deliveryFailed': "Delivery failed";
3464
3865
  readonly 'releases.detail.metric.deliveryFailureRate': "Delivery failure rate";
3465
3866
  readonly 'releases.detail.quality.title': "Quality metrics";
3466
- readonly 'releases.detail.quality.empty': "Please annotate first";
3867
+ readonly 'releases.detail.quality.description': "Observe Recall, Precision, F1, and Accuracy by release event with multi-select versions, scopes, and metrics.";
3868
+ readonly 'releases.detail.quality.empty': "No release quality metrics yet";
3869
+ readonly 'releases.detail.quality.emptyDescription': "Create an annotation task and submit labeled samples before quality metrics can appear here.";
3870
+ readonly 'releases.detail.quality.emptyAction': "Create annotation task";
3467
3871
  readonly 'releases.detail.quality.loadFailed': "Failed to load quality metrics. Refresh and try again.";
3468
3872
  readonly 'releases.detail.quality.noComparable': "Submitted samples exist, but there is no comparable model output yet.";
3873
+ readonly 'releases.detail.quality.filteredEmpty': "No quality metrics match the current filters.";
3874
+ readonly 'releases.detail.quality.scope.overall': "Overall";
3875
+ readonly 'releases.detail.quality.metric.recall': "Recall";
3876
+ readonly 'releases.detail.quality.metric.precision': "Precision";
3877
+ readonly 'releases.detail.quality.metric.f1': "F1";
3878
+ readonly 'releases.detail.quality.metric.accuracy': "Accuracy";
3879
+ readonly 'releases.detail.quality.sampleCount': "Samples";
3880
+ readonly 'releases.detail.quality.sampleCountShort': "{count} samples";
3469
3881
  readonly 'releases.detail.quality.matchRate': "Match rate";
3470
3882
  readonly 'releases.detail.quality.latestMatchRate': "Latest match rate";
3471
3883
  readonly 'releases.detail.quality.matched': "Matched";
@@ -3482,6 +3894,40 @@ declare const dictionaries: {
3482
3894
  readonly 'releases.detail.quality.submitted': "Submitted";
3483
3895
  readonly 'releases.detail.quality.submittedHint': "Historical annotation samples";
3484
3896
  readonly 'releases.detail.quality.chartTitle': "Historical quality metrics";
3897
+ readonly 'releases.detail.quality.footer': "{tasks} annotation tasks · {versions} release versions · {points} quality points";
3898
+ readonly 'releases.detail.quality.pendingQuality': "{count} tasks have not produced quality results yet";
3899
+ readonly 'releases.detail.quality.filter.version': "Version filter";
3900
+ readonly 'releases.detail.quality.filter.scope': "Data scope";
3901
+ readonly 'releases.detail.quality.filter.metric': "Metric";
3902
+ readonly 'releases.detail.quality.filter.allVersions': "All versions";
3903
+ readonly 'releases.detail.quality.filter.selectedVersions': "{count} versions";
3904
+ readonly 'releases.detail.quality.filter.versionSearch': "Search release version, prompt version, or model";
3905
+ readonly 'releases.detail.quality.filter.selectAll': "Select all";
3906
+ readonly 'releases.detail.quality.filter.latestOnly': "Latest only";
3907
+ readonly 'releases.detail.quality.filter.allProductionVersions': "All production versions";
3908
+ readonly 'releases.detail.quality.filter.allCanaryVersions': "All canary versions";
3909
+ readonly 'releases.detail.quality.filter.noVersions': "No matching release versions";
3910
+ readonly 'releases.detail.quality.filter.points': "Quality points";
3911
+ readonly 'releases.detail.quality.filter.scopeEmpty': "No scope";
3912
+ readonly 'releases.detail.quality.filter.allMetrics': "All metrics";
3913
+ readonly 'releases.detail.quality.filter.selectedMetrics': "{count} metrics";
3914
+ readonly 'releases.detail.quality.filter.metricEmpty': "No metrics";
3915
+ readonly 'releases.detail.quality.filter.tasks': "Tasks";
3916
+ readonly 'releases.detail.quality.filter.allScopes': "All scopes";
3917
+ readonly 'releases.detail.quality.filter.selectedScopes': "{count} scopes";
3918
+ readonly 'releases.detail.quality.legend.production': "Production";
3919
+ readonly 'releases.detail.quality.legend.canary': "Canary";
3920
+ readonly 'releases.detail.quality.chart.zoomIn': "Zoom in";
3921
+ readonly 'releases.detail.quality.chart.zoomOut': "Zoom out";
3922
+ readonly 'releases.detail.quality.chart.moveLeft': "Move left";
3923
+ readonly 'releases.detail.quality.chart.moveRight': "Move right";
3924
+ readonly 'releases.detail.quality.chart.resetView': "Reset view";
3925
+ readonly 'releases.detail.quality.chart.range': "Adjust visible range";
3926
+ readonly 'releases.detail.quality.recordsTitle': "Quality records";
3927
+ readonly 'releases.detail.quality.table.task': "Annotation task";
3928
+ readonly 'releases.detail.quality.table.version': "Release version";
3929
+ readonly 'releases.detail.quality.table.scope': "Data scope";
3930
+ readonly 'releases.detail.quality.table.updatedAt': "Updated";
3485
3931
  readonly 'releases.detail.results.source': "Source";
3486
3932
  readonly 'releases.detail.results.lane': "lane";
3487
3933
  readonly 'releases.detail.results.event': "event_id";
@@ -3489,7 +3935,7 @@ declare const dictionaries: {
3489
3935
  readonly 'releases.detail.results.input': "Input";
3490
3936
  readonly 'releases.detail.results.output': "Output";
3491
3937
  readonly 'releases.detail.results.latency': "Latency";
3492
- readonly 'releases.detail.results.variant': "Release variant";
3938
+ readonly 'releases.detail.results.version': "Release version";
3493
3939
  readonly 'releases.detail.results.promptVersion': "Prompt version";
3494
3940
  readonly 'releases.detail.results.tokens': "Tokens";
3495
3941
  readonly 'releases.detail.results.createdAt': "Created";
@@ -3498,36 +3944,68 @@ declare const dictionaries: {
3498
3944
  readonly 'releases.detail.results.loadFailed': "Failed to load run results. Refresh and try again.";
3499
3945
  readonly 'releases.detail.results.empty': "Run results appear here after the runner writes them";
3500
3946
  readonly 'releases.detail.results.summary': "Showing {from} - {to} / {total}";
3501
- readonly 'releases.detail.results.variantFilter.all': "All release variants";
3947
+ readonly 'releases.detail.results.dateFilter.all': "All dates";
3948
+ readonly 'releases.detail.results.dateFilter.ariaLabel': "Run result date range";
3949
+ readonly 'releases.detail.results.dateFilter.customRangeAriaLabel': "Custom run result date range";
3950
+ readonly 'releases.detail.results.versionFilter.all': "All release versions";
3951
+ readonly 'releases.detail.results.versionDropdown.search': "Search release version, prompt version, or model";
3952
+ readonly 'releases.detail.results.versionDropdown.noMatches': "No matching release versions";
3953
+ readonly 'releases.detail.results.versionDropdown.promptVersion': "Prompt version";
3954
+ readonly 'releases.detail.results.versionDropdown.model': "Model";
3955
+ readonly 'releases.detail.results.versionDropdown.versionId': "Version ID";
3956
+ readonly 'releases.detail.results.versionScope.exact': "Exact version";
3957
+ readonly 'releases.detail.results.versionScope.journey': "Release journey";
3502
3958
  readonly 'releases.detail.results.promptVersionFilter.all': "All versions";
3503
3959
  readonly 'releases.detail.results.sourceFilter.all': "All sources";
3504
3960
  readonly 'releases.detail.results.sourceFilter.production': "production";
3505
3961
  readonly 'releases.detail.results.sourceFilter.canary': "canary";
3506
3962
  readonly 'releases.detail.results.lane.production': "production";
3507
3963
  readonly 'releases.detail.results.lane.canary': "canary";
3964
+ readonly 'releases.detail.results.status.running': "running";
3508
3965
  readonly 'releases.detail.results.status.success': "success";
3509
- readonly 'releases.detail.results.status.error': "error";
3510
- readonly 'releases.detail.results.status.timeout': "timeout";
3511
- readonly 'releases.detail.results.status.rate_limited': "rate_limited";
3512
- readonly 'releases.detail.variants.empty': "No release variants on this release line yet";
3513
- readonly 'releases.detail.variants.copyId': "Copy ID";
3514
- readonly 'releases.detail.variants.viewResults': "View run results";
3515
- readonly 'releases.detail.variants.newAnnotation': "New annotation task";
3516
- readonly 'releases.detail.variants.promptVersion': "Prompt version";
3517
- readonly 'releases.detail.variants.model': "Model";
3518
- readonly 'releases.detail.variants.provider': "Provider";
3519
- readonly 'releases.detail.variants.updatedAt': "Updated";
3520
- readonly 'releases.detail.variants.productionEvents': "Production events";
3521
- readonly 'releases.detail.variants.canaryEvents': "Canary events";
3522
- readonly 'releases.detail.variants.processed': "Processed";
3523
- readonly 'releases.detail.variants.errors': "Errors";
3524
- readonly 'releases.detail.variants.events': "Related events";
3525
- readonly 'releases.detail.variants.noEvents': "No related events";
3526
- readonly 'releases.detail.variants.stage.production_canary': "Production + canary";
3527
- readonly 'releases.detail.variants.stage.production': "Production";
3528
- readonly 'releases.detail.variants.stage.canary': "Canary";
3529
- readonly 'releases.detail.variants.stage.history': "History";
3530
- readonly 'releases.detail.history.variant': "Release variant";
3966
+ readonly 'releases.detail.results.status.failed': "failed";
3967
+ readonly 'releases.detail.history.version': "Release version";
3968
+ readonly 'releases.detail.history.promptVersion': "Prompt version";
3969
+ readonly 'releases.detail.history.model': "Model";
3970
+ readonly 'releases.detail.history.traffic': "Traffic";
3971
+ readonly 'releases.detail.history.status': "Status";
3972
+ readonly 'releases.detail.history.recordMode': "Record mode";
3973
+ readonly 'releases.detail.history.counts': "Event counts";
3974
+ readonly 'releases.detail.history.updatedAt': "Updated";
3975
+ readonly 'releases.detail.history.relations': "Event relations";
3976
+ readonly 'releases.detail.history.reason': "Reason";
3977
+ readonly 'releases.detail.history.relation.sourceEvent': "Source event";
3978
+ readonly 'releases.detail.history.relation.supersedes': "Supersedes";
3979
+ readonly 'releases.detail.history.relation.rollbackTarget': "Rollback target";
3980
+ readonly 'releases.detail.history.relation.sourceExperiment': "Source experiment";
3981
+ readonly 'releases.detail.history.versionKind.production': "Production version";
3982
+ readonly 'releases.detail.history.versionKind.candidate': "Candidate version";
3983
+ readonly 'releases.detail.history.title': "Release history";
3984
+ readonly 'releases.detail.history.runtimeSection': "Runtime";
3985
+ readonly 'releases.detail.history.connectorSection': "Connectors";
3986
+ readonly 'releases.detail.history.reasonSection': "Other";
3987
+ readonly 'releases.detail.history.configChanges': "Config updates";
3988
+ readonly 'releases.detail.history.moreAvailable': "More history available, load more";
3989
+ readonly 'releases.detail.history.loadingMore': "Loading more history…";
3990
+ readonly 'releases.detail.history.field.prompt': "Prompt";
3991
+ readonly 'releases.detail.history.field.trafficMode': "Traffic mode";
3992
+ readonly 'releases.detail.history.field.outputConnectors': "Downstream connectors";
3993
+ readonly 'releases.detail.history.field.noDownstream': "No downstream connector";
3994
+ readonly 'releases.detail.history.field.snapshot': "Snapshot";
3995
+ readonly 'releases.detail.history.change.updated': "Updated";
3996
+ readonly 'releases.detail.history.action.moreInfo': "View more info for {version}";
3997
+ readonly 'releases.detail.history.action.configChanges': "View config updates for {version}";
3998
+ readonly 'releases.detail.history.action.viewResults': "View run results for {version}";
3999
+ readonly 'releases.detail.history.action.createAnnotation': "Create annotations for {version}";
4000
+ readonly 'releases.detail.history.action.moreActions': "More actions for {version}";
4001
+ readonly 'releases.detail.history.action.restore': "Restore";
4002
+ readonly 'releases.detail.history.action.restoring': "Restoring...";
4003
+ readonly 'releases.detail.history.action.restoreSuccess': "Restored to the matching slot";
4004
+ readonly 'releases.detail.history.action.restoreFailed': "Restore failed. Refresh and try again";
4005
+ readonly 'releases.detail.history.action.restoreToProductionReason': "Restored production config from history {version}";
4006
+ readonly 'releases.detail.history.action.restoreToCanaryReason': "Restored canary config from history {version}";
4007
+ readonly 'releases.detail.history.action.expandVersion': "Expand canary candidates for {version}";
4008
+ readonly 'releases.detail.history.action.collapseVersion': "Collapse canary candidates for {version}";
3531
4009
  readonly 'releases.detail.history.empty': "No events on this release line yet";
3532
4010
  readonly 'releases.new.breadcrumb': "New";
3533
4011
  readonly 'releases.new.title': "New release";
@@ -3592,7 +4070,9 @@ declare const dictionaries: {
3592
4070
  readonly 'releases.new.empty.inputConnectors': "No upstream connectors";
3593
4071
  readonly 'releases.new.empty.outputConnectors': "No downstream connectors";
3594
4072
  readonly 'releases.new.empty.variables': "This version declares no variables";
3595
- readonly 'releases.new.error.requiredMapping': "Fill required variable mappings: {fields}";
4073
+ readonly 'releases.new.error.requiredMapping': "Fill variable mappings: {fields}";
4074
+ readonly 'releases.new.error.variableMappingMissing': "Map every prompt variable from an upstream field first: {fields}";
4075
+ readonly 'releases.new.error.variableMappingInvalid': "Field mapping does not match the prompt variables. Check the mapping.";
3596
4076
  readonly 'releases.new.error.externalIdRequired': "Queue connectors require an external ID field";
3597
4077
  readonly 'releases.new.error.invalidFilterRules': "Filter rules must be a JSON object";
3598
4078
  readonly 'releases.new.error.createFailed': "Failed to create release";
@@ -3887,7 +4367,7 @@ declare const dictionaries: {
3887
4367
  readonly 'prompts.filter.all': "All";
3888
4368
  readonly 'prompts.table.name': "Name";
3889
4369
  readonly 'prompts.table.latestVersion': "Latest version";
3890
- readonly 'prompts.table.grayVersion': "Canary version";
4370
+ readonly 'prompts.table.canaryVersion': "Canary version";
3891
4371
  readonly 'prompts.table.onlineVersion': "Published version";
3892
4372
  readonly 'prompts.table.labels': "Labels";
3893
4373
  readonly 'prompts.table.status': "Status";
@@ -3896,6 +4376,7 @@ declare const dictionaries: {
3896
4376
  readonly 'prompts.table.updatedAt': "Updated";
3897
4377
  readonly 'prompts.status.editable': "Editable";
3898
4378
  readonly 'prompts.status.frozen': "Frozen";
4379
+ readonly 'prompts.status.archived': "Archived";
3899
4380
  readonly 'prompts.badge.new': "New";
3900
4381
  readonly 'prompts.badge.latest': "Latest";
3901
4382
  readonly 'prompts.badge.online': "Online";
@@ -3904,18 +4385,19 @@ declare const dictionaries: {
3904
4385
  readonly 'prompts.action.startOptimization': "Start optimization";
3905
4386
  readonly 'prompts.action.moreActions': "More actions";
3906
4387
  readonly 'prompts.action.openVersions': "Open versions";
4388
+ readonly 'prompts.action.archive': "Archive";
4389
+ readonly 'prompts.action.restore': "Restore";
3907
4390
  readonly 'prompts.action.delete': "Delete";
3908
4391
  readonly 'prompts.action.batchDelete': "Bulk delete";
3909
4392
  readonly 'prompts.deleteBlockedTitle': "Delete prompt";
3910
- readonly 'prompts.deleteBlockedDescription': "This permanently deletes the prompt and its versions. Affected experiment / optimization / release pages may stop opening, and releases cannot update from the deleted prompt. Running production releases keep serving their saved snapshot.";
4393
+ readonly 'prompts.deleteBlockedDescription': "This permanently deletes the prompt and its versions, cascades related experiments / optimizations, and stops running release lines while keeping historical release-line snapshots.";
3911
4394
  readonly 'prompts.deleteBlockedReferences': "Affected objects";
3912
4395
  readonly 'prompts.deleteImpactLoading': "Checking affected objects...";
3913
- readonly 'prompts.deleteImpactEmpty': "No affected experiments, optimizations, or releases found.";
4396
+ readonly 'prompts.deleteImpactEmpty': "No affected release lines, experiments, or optimizations found.";
3914
4397
  readonly 'prompts.deleteImpactTitle': "May be affected";
4398
+ readonly 'prompts.deleteImpactReleaseLine': "Release line";
3915
4399
  readonly 'prompts.deleteImpactExperiment': "Experiment";
3916
4400
  readonly 'prompts.deleteImpactOptimization': "Optimization";
3917
- readonly 'prompts.deleteImpactCanaryRelease': "Canary release";
3918
- readonly 'prompts.deleteImpactProductionRelease': "Production release";
3919
4401
  readonly 'prompts.time.now': "just now";
3920
4402
  readonly 'prompts.variableType.text': "Text";
3921
4403
  readonly 'prompts.variableType.image': "Image";
@@ -4014,7 +4496,7 @@ declare const dictionaries: {
4014
4496
  readonly 'prompts.versions.deleteConfirmTitle': "Delete version";
4015
4497
  readonly 'prompts.versions.deleteConfirmBody': "Version {version} will be permanently deleted. Affected experiment / optimization / release pages may stop opening, and releases cannot update from this version. Running production releases keep serving their saved snapshot.";
4016
4498
  readonly 'prompts.labels.system.latest': "Latest";
4017
- readonly 'prompts.labels.system.gray': "Canary";
4499
+ readonly 'prompts.labels.system.canary': "Canary";
4018
4500
  readonly 'prompts.labels.system.production': "Production";
4019
4501
  readonly 'prompts.labels.empty': "No labels";
4020
4502
  readonly 'prompts.labels.remove': "Remove label {label}";
@@ -4345,7 +4827,8 @@ declare const dictionaries: {
4345
4827
  readonly 'productionReleases.new.field.submitReason': "Reason";
4346
4828
  readonly 'productionReleases.new.field.submitReasonPlaceholder': "Explain why this release is being deployed";
4347
4829
  readonly 'productionReleases.new.recordMode.all': "Keep all";
4348
- readonly 'productionReleases.new.recordMode.correct_only': "Keep correct only";
4830
+ readonly 'productionReleases.new.recordMode.correct_only': "Keep selected output classes";
4831
+ readonly 'productionReleases.new.recordMode.selected_categories': "Keep selected output classes";
4349
4832
  readonly 'productionReleases.new.required': "required";
4350
4833
  readonly 'productionReleases.new.optional': "optional";
4351
4834
  readonly 'productionReleases.new.connectorOccupied': "Connector occupied";
@@ -4430,6 +4913,7 @@ declare const dictionaries: {
4430
4913
  readonly 'datasets.role.expected': "Expected output";
4431
4914
  readonly 'datasets.role.metadata': "Metadata";
4432
4915
  readonly 'datasets.status.deleted': "Deleted";
4916
+ readonly 'datasets.status.archived': "Archived";
4433
4917
  readonly 'datasets.category.classes': "classes";
4434
4918
  readonly 'datasets.category.noCategoryField': "No label column";
4435
4919
  readonly 'datasets.category.openOutput': "Expected output not configured";
@@ -4464,6 +4948,8 @@ declare const dictionaries: {
4464
4948
  readonly 'datasets.action.startOptimization': "Start optimization";
4465
4949
  readonly 'datasets.action.editName': "Edit name";
4466
4950
  readonly 'datasets.action.more': "More";
4951
+ readonly 'datasets.action.archive': "Archive";
4952
+ readonly 'datasets.action.restore': "Restore";
4467
4953
  readonly 'datasets.action.delete': "Delete";
4468
4954
  readonly 'datasets.action.appendSamples': "Append samples";
4469
4955
  readonly 'datasets.action.saveChanges': "Save changes";
@@ -4471,13 +4957,19 @@ declare const dictionaries: {
4471
4957
  readonly 'datasets.action.replaceImage': "Replace image";
4472
4958
  readonly 'datasets.action.replaceFile': "Replace file";
4473
4959
  readonly 'datasets.deleteConfirmTitle': "Delete dataset";
4474
- readonly 'datasets.deleteConfirmDescription': "This action physically deletes the dataset and its samples, and cannot be undone.";
4960
+ readonly 'datasets.deleteConfirmDescription': "This permanently deletes the dataset and its samples, cascades related experiments / optimizations, and cannot be undone.";
4475
4961
  readonly 'datasets.deleteConfirmButton': "Confirm delete";
4476
4962
  readonly 'datasets.deletePending': "Deleting...";
4477
4963
  readonly 'datasets.deleteReferencedError': "This dataset is now referenced by experiments / optimizations and cannot be deleted. Refresh the list to see the latest references.";
4478
4964
  readonly 'datasets.deleteFailed': "Failed to delete dataset. Try again later.";
4479
4965
  readonly 'datasets.deleteBlockedTitle': "Cannot delete this dataset";
4480
4966
  readonly 'datasets.deleteBlockedDescription': "This dataset is referenced by experiments / optimizations, so deletion will be rejected. Stop those references before deleting.";
4967
+ readonly 'datasets.deleteImpactTitle': "Deletion impact";
4968
+ readonly 'datasets.deleteImpactLoading': "Checking affected objects...";
4969
+ readonly 'datasets.deleteImpactEmpty': "No experiments or optimizations will be cascaded.";
4970
+ readonly 'datasets.deleteImpactExperiment': "Experiment";
4971
+ readonly 'datasets.deleteImpactOptimization': "Optimization";
4972
+ readonly 'datasets.deleteImpactMore': "{count} more objects";
4481
4973
  readonly 'datasets.editNameTitle': "Edit dataset details";
4482
4974
  readonly 'datasets.editNameDescription': "The updated name and description will sync to list and detail pages immediately.";
4483
4975
  readonly 'datasets.editNameDuplicate': "Another dataset in this instance already uses this name.";
@@ -4893,10 +5385,9 @@ declare const dictionaries: {
4893
5385
  readonly 'experiments.detail.samples.col.createdAt': "Created at";
4894
5386
  readonly 'experiments.detail.samples.image.failed': "Failed to load";
4895
5387
  readonly 'experiments.detail.samples.error': "Failed";
5388
+ readonly 'experiments.runResult.status.running': "Running";
4896
5389
  readonly 'experiments.runResult.status.success': "Success";
4897
- readonly 'experiments.runResult.status.error': "Failed";
4898
- readonly 'experiments.runResult.status.timeout': "Timed out";
4899
- readonly 'experiments.runResult.status.rateLimited': "Rate limited";
5390
+ readonly 'experiments.runResult.status.failed': "Failed";
4900
5391
  readonly 'experiments.runResult.judgment.correct': "Correct";
4901
5392
  readonly 'experiments.runResult.judgment.incorrect': "Incorrect";
4902
5393
  readonly 'experiments.runResult.judgment.parseError': "Parse error";
@@ -5467,6 +5958,10 @@ declare const dictionaries: {
5467
5958
  readonly 'canaryReleases.new.mapping.required': "required";
5468
5959
  readonly 'canaryReleases.new.mapping.optional': "optional";
5469
5960
  readonly 'canaryReleases.new.mapping.unmapped': "not mapped";
5961
+ readonly 'canaryReleases.new.mapping.sourceSearch': "Search upstream fields";
5962
+ readonly 'canaryReleases.new.mapping.sourceEmpty': "No matching upstream field";
5963
+ readonly 'canaryReleases.new.mapping.targetSearch': "Search prompt variables";
5964
+ readonly 'canaryReleases.new.mapping.targetEmpty': "No matching prompt variable";
5470
5965
  readonly 'canaryReleases.new.field.outputMapping': "Output mapping";
5471
5966
  readonly 'canaryReleases.new.field.outputMappingHelp': "Prompt output fields → downstream fields";
5472
5967
  readonly 'canaryReleases.new.field.outputMappingUnavailable': "Output mapping is not available yet; model output will be sent with the default structure.";
@@ -5499,29 +5994,27 @@ declare const dictionaries: {
5499
5994
  readonly 'canaryReleases.new.field.targetDataset': "Target dataset";
5500
5995
  readonly 'canaryReleases.new.field.targetDatasetHelp': "Canary results are appended to this dataset (stream type recommended)";
5501
5996
  readonly 'canaryReleases.new.field.recordCategories': "Record mode";
5502
- readonly 'canaryReleases.new.field.recordCategoriesHelp': "Select retained categories from the prompt output judgment enum. All are selected by default.";
5997
+ readonly 'canaryReleases.new.field.recordCategoriesHelp': "Select the classes to record from the current prompt output schema expected_output values. All are selected by default.";
5503
5998
  readonly 'canaryReleases.new.field.recordCategoriesEmpty': "This prompt version does not declare a recognizable judgment enum";
5504
5999
  readonly 'canaryReleases.new.field.recordCategoriesSelected': "{count} categories selected";
5505
6000
  readonly 'canaryReleases.new.field.recordCategoriesSelectAll': "Select all";
5506
6001
  readonly 'canaryReleases.new.field.recordCategoriesClear': "Clear";
5507
6002
  readonly 'canaryReleases.new.field.termination': "Termination";
5508
- readonly 'canaryReleases.new.field.terminationHelp': "Max duration and max samples are optional; default is manual stop";
6003
+ readonly 'canaryReleases.new.field.terminationHelp': "Manual stop is the default; time and sample count can both be selected, and the first reached condition stops the canary";
5509
6004
  readonly 'canaryReleases.new.field.termination.manual': "Manual stop";
5510
- readonly 'canaryReleases.new.field.termination.manualHelp': "No automatic condition is set; stop manually from the detail page";
5511
- readonly 'canaryReleases.new.field.termination.autoHelp': "Stops when any condition is met; manual stop remains available";
5512
6005
  readonly 'canaryReleases.new.field.termination.maxDuration': "Max duration (seconds)";
5513
6006
  readonly 'canaryReleases.new.field.termination.maxSamples': "Max samples";
5514
6007
  readonly 'canaryReleases.new.field.termination.maxDurationPlaceholder': "blank";
5515
6008
  readonly 'canaryReleases.new.field.termination.maxSamplesPlaceholder': "blank";
5516
6009
  readonly 'canaryReleases.new.field.termination.byTime': "By time";
5517
6010
  readonly 'canaryReleases.new.field.termination.byCount': "By sample count";
5518
- readonly 'canaryReleases.new.field.termination.byFailureRate': "By failure rate";
5519
6011
  readonly 'canaryReleases.new.field.runMode': "Run mode";
5520
6012
  readonly 'canaryReleases.new.field.runMode.fixed': "Fixed duration";
5521
6013
  readonly 'canaryReleases.new.field.runMode.manual': "Manual";
5522
6014
  readonly 'canaryReleases.new.field.recordMode': "Record mode";
5523
6015
  readonly 'canaryReleases.new.field.recordMode.all': "Record all";
5524
- readonly 'canaryReleases.new.field.recordMode.correct': "Correct only";
6016
+ readonly 'canaryReleases.new.field.recordMode.correct': "Record selected output classes";
6017
+ readonly 'canaryReleases.new.field.recordMode.selectedCategories': "Record selected output classes";
5525
6018
  readonly 'canaryReleases.new.field.externalIdField': "External ID field";
5526
6019
  readonly 'canaryReleases.new.field.externalIdFieldHelp': "The upstream field that uniquely identifies each call";
5527
6020
  readonly 'canaryReleases.new.field.runConfig.rpm': "RPM limit";
@@ -5569,7 +6062,6 @@ declare const dictionaries: {
5569
6062
  readonly 'canaryReleases.detail.config.durationLimit': "Duration limit";
5570
6063
  readonly 'canaryReleases.detail.config.durationDays': "{days} days";
5571
6064
  readonly 'canaryReleases.detail.config.sampleLimit': "Sample limit";
5572
- readonly 'canaryReleases.detail.config.failureRateLimit': "Failure-rate limit";
5573
6065
  readonly 'canaryReleases.detail.config.targetDataset': "Target dataset";
5574
6066
  readonly 'canaryReleases.detail.config.storageCategories': "Storage categories";
5575
6067
  readonly 'canaryReleases.detail.config.allCategories': "All";