diff --git a/apps/presentation/dashboard/src/data/chat.ts b/apps/presentation/dashboard/src/data/chat.ts
index 03659a0ed0..0672baffb6 100644
--- a/apps/presentation/dashboard/src/data/chat.ts
+++ b/apps/presentation/dashboard/src/data/chat.ts
@@ -114,6 +114,11 @@ export const managerChannelBindingSchema = z.object({
executor_kind: z.string(),
model: z.string(),
model_source: z.string(),
+ selection_policy: z.enum(["preferred", "pinned", "flexible"]).default("preferred"),
+ allocation_reason: z.string().default(""),
+ configured_endpoint: z.string().nullable().optional(),
+ eligible_endpoints: z.array(z.string()).default([]),
+ allocation_configuration_revision: z.string().default(""),
credential_env_var: z.string(),
operator_credential_configured: z.boolean(),
output_token_budget: z.object({
diff --git a/apps/presentation/dashboard/src/features/personal-workspace/capability-localization.ts b/apps/presentation/dashboard/src/features/personal-workspace/capability-localization.ts
index 76c17ee505..3dd141f41a 100644
--- a/apps/presentation/dashboard/src/features/personal-workspace/capability-localization.ts
+++ b/apps/presentation/dashboard/src/features/personal-workspace/capability-localization.ts
@@ -18,7 +18,7 @@ const capabilityCopy: Record
{t("header.managerAllocation", { + policy: managerSelectionPolicyLabel, + reason: managerAllocationReasonLabel, + })}
+ ) : null} {managerExecutionDefaultReason && managerChannelBinding ? ( {t(managerExecutionDefaultReason, { executor: managerChannelBinding.executor_endpoint })} diff --git a/apps/presentation/dashboard/src/features/personal-workspace/i18n.tsx b/apps/presentation/dashboard/src/features/personal-workspace/i18n.tsx index 188b29c0fa..84306faa0a 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/i18n.tsx +++ b/apps/presentation/dashboard/src/features/personal-workspace/i18n.tsx @@ -422,6 +422,18 @@ const en = { "header.managerExecutionUnavailableOutputBudget": "Selected {executor} has an invalid per-request output-token limit; set a positive integer and reload.", "header.managerEndpointStewardDefault": "Runs {executor}, the steward channel's shipped default. Select an executor explicitly to move it.", "header.managerOutputTokenBudget": "{tokens} tok/request", + "header.managerAllocation": "Selection: {policy} · {reason}", + "header.managerSelectionPreferred": "preferred", + "header.managerSelectionPinned": "pinned", + "header.managerSelectionFlexible": "flexible pool", + "header.managerAllocationUser": "explicit user choice", + "header.managerAllocationPinned": "pinned by machine configuration", + "header.managerAllocationFallback": "primary unavailable; used an eligible fallback", + "header.managerAllocationUnavailable": "no eligible route is currently available", + "header.managerAllocationPrimary": "primary route is available", + "header.managerAllocationProductDefault": "product default", + "header.managerAllocationService": "service environment override", + "header.managerAllocationConfigured": "configured route", "header.managerOverview": "Overview", "header.managerView": "Manager view", "header.openGoalNavigation": "Open Goal navigation", @@ -1492,6 +1504,18 @@ const zhCN: Record