feat(sf): /sf escalate list distinguishes auto-accepted from user-resolved
Auto-mode resolutions stamp the artifact with userRationale prefix "auto-mode: ..." (set by auto-dispatch.ts when it auto-resolves an escalation). The list view now shows "auto-accepted (accept)" for those entries vs "resolved (option-id)" for user-resolved ones, so an operator scanning `/sf escalate list --all` can tell at a glance which decisions were autonomous and which had explicit human input. The artifact JSON is unchanged — this is purely a list-formatter refinement that surfaces information already recorded. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
4fb3476912
commit
e104f17ad2
1 changed files with 5 additions and 1 deletions
|
|
@ -73,12 +73,16 @@ export async function handleEscalate(
|
||||||
const art = readEscalationArtifact(task.escalation_artifact_path);
|
const art = readEscalationArtifact(task.escalation_artifact_path);
|
||||||
if (!art) continue;
|
if (!art) continue;
|
||||||
count++;
|
count++;
|
||||||
|
const isAutoResolved =
|
||||||
|
art.respondedAt && art.userRationale?.startsWith("auto-mode:");
|
||||||
const status = task.escalation_pending === 1
|
const status = task.escalation_pending === 1
|
||||||
? "PENDING"
|
? "PENDING"
|
||||||
: task.escalation_awaiting_review === 1
|
: task.escalation_awaiting_review === 1
|
||||||
? "awaiting-review"
|
? "awaiting-review"
|
||||||
: art.respondedAt
|
: art.respondedAt
|
||||||
? `resolved (${art.userChoice})`
|
? isAutoResolved
|
||||||
|
? `auto-accepted (${art.userChoice})`
|
||||||
|
: `resolved (${art.userChoice})`
|
||||||
: "(unknown)";
|
: "(unknown)";
|
||||||
lines.push(` ${task.slice_id}/${task.id} [${status}]: ${art.question}`);
|
lines.push(` ${task.slice_id}/${task.id} [${status}]: ${art.question}`);
|
||||||
if (status === "PENDING") {
|
if (status === "PENDING") {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue