fix(agent): publish queue safe next action
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 37s
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 37s
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
This commit is contained in:
@@ -1037,6 +1037,9 @@ type PriorityWorkOrderResponse = {
|
||||
ai_loop_current_blocker_harbor_recovery_receipt_output_ids?: string[] | null;
|
||||
ai_loop_current_blocker_queue_readback_normalizer_contract_count?: number | null;
|
||||
ai_loop_current_blocker_queue_readback_normalizer_field_ids?: string[] | null;
|
||||
ai_loop_current_blocker_safe_next_action_id?: string | null;
|
||||
ai_loop_current_blocker_safe_next_action_stage?: string | null;
|
||||
ai_loop_current_blocker_safe_next_action_requires_local_console?: boolean | null;
|
||||
ai_loop_log_source_grouping_key_count?: number | null;
|
||||
ai_loop_log_source_grouping_keys?: string[] | null;
|
||||
ai_loop_log_source_tagging_contract_count?: number | null;
|
||||
@@ -1048,6 +1051,12 @@ type PriorityWorkOrderResponse = {
|
||||
ai_loop_current_blocker_harbor_recovery_receipt_input_ids?: string[] | null;
|
||||
ai_loop_current_blocker_harbor_recovery_receipt_output_ids?: string[] | null;
|
||||
ai_loop_current_blocker_queue_readback_normalizer_field_ids?: string[] | null;
|
||||
ai_loop_current_blocker_safe_next_action_id?: string | null;
|
||||
ai_loop_current_blocker_safe_next_action_stage?: string | null;
|
||||
ai_loop_current_blocker_safe_next_action?: string | null;
|
||||
ai_loop_current_blocker_safe_next_action_command?: string | null;
|
||||
ai_loop_current_blocker_safe_next_action_post_verifier?: string | null;
|
||||
ai_loop_current_blocker_safe_next_action_requires_local_console?: boolean | null;
|
||||
} | null;
|
||||
}>;
|
||||
};
|
||||
@@ -7805,6 +7814,20 @@ function AiLoopLogSourceTagsPanel({
|
||||
summary?.ai_loop_current_blocker_queue_readback_normalizer_field_ids ??
|
||||
evidence?.ai_loop_current_blocker_queue_readback_normalizer_field_ids ??
|
||||
[];
|
||||
const safeNextActionId =
|
||||
summary?.ai_loop_current_blocker_safe_next_action_id ??
|
||||
evidence?.ai_loop_current_blocker_safe_next_action_id ??
|
||||
"";
|
||||
const safeNextActionStage =
|
||||
summary?.ai_loop_current_blocker_safe_next_action_stage ??
|
||||
evidence?.ai_loop_current_blocker_safe_next_action_stage ??
|
||||
"";
|
||||
const safeNextActionCommand =
|
||||
evidence?.ai_loop_current_blocker_safe_next_action_command ?? "";
|
||||
const safeNextRequiresLocalConsole =
|
||||
summary?.ai_loop_current_blocker_safe_next_action_requires_local_console ??
|
||||
evidence?.ai_loop_current_blocker_safe_next_action_requires_local_console ??
|
||||
false;
|
||||
const labelMap: Record<string, string> = {
|
||||
project_id: t("tagLabels.projectId"),
|
||||
product: t("tagLabels.product"),
|
||||
@@ -7899,6 +7922,17 @@ function AiLoopLogSourceTagsPanel({
|
||||
}),
|
||||
tone: "border-[#cbd7bf] bg-[#f4faef] text-[#3d6b24]",
|
||||
},
|
||||
{
|
||||
key: "safe-next-action",
|
||||
icon: ArrowRight,
|
||||
label: t("safeNextAction"),
|
||||
value: safeNextActionId || "--",
|
||||
detail: t("safeNextStage", {
|
||||
stage: safeNextActionStage || "--",
|
||||
local: String(Boolean(safeNextRequiresLocalConsole)),
|
||||
}),
|
||||
tone: "border-[#c9d8ea] bg-[#eef5ff] text-[#1f5b9b]",
|
||||
},
|
||||
];
|
||||
|
||||
return (
|
||||
@@ -7921,7 +7955,7 @@ function AiLoopLogSourceTagsPanel({
|
||||
<p className="mt-3 text-xs leading-5 text-[#77736a]">
|
||||
{t("subtitle")}
|
||||
</p>
|
||||
<div className="mt-4 grid gap-3 lg:grid-cols-3">
|
||||
<div className="mt-4 grid gap-3 md:grid-cols-2 xl:grid-cols-4">
|
||||
{visualCards.map((card) => {
|
||||
const Icon = card.icon;
|
||||
return (
|
||||
@@ -7941,6 +7975,11 @@ function AiLoopLogSourceTagsPanel({
|
||||
<div className="mt-3 break-words font-mono text-sm font-semibold leading-5 text-[#141413]">
|
||||
{loading ? "--" : card.value}
|
||||
</div>
|
||||
{"detail" in card ? (
|
||||
<div className="mt-2 break-words font-mono text-[11px] leading-5 text-[#5f5b52]">
|
||||
{loading ? "--" : card.detail}
|
||||
</div>
|
||||
) : null}
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
@@ -7963,6 +8002,11 @@ function AiLoopLogSourceTagsPanel({
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
{safeNextActionCommand ? (
|
||||
<div className="mt-3 border border-[#c9d8ea] bg-[#eef5ff] px-3 py-2 font-mono text-[11px] leading-5 text-[#1f5b9b]">
|
||||
{t("safeNextCommand", { command: safeNextActionCommand })}
|
||||
</div>
|
||||
) : null}
|
||||
<div className="mt-3 grid gap-2">
|
||||
{receiptMetrics.map((metric) => (
|
||||
<div
|
||||
|
||||
Reference in New Issue
Block a user