fix(rectification): hold time cards until an offer turn
Independent Staging Quality Gate / validate (push) Successful in 11m37s
Independent Staging Quality Gate / publish (push) Failing after 9m4s

Keep collecting while a method follow-up can still distinguish candidates, and show adoption cards only after offer-candidates. Align the natal house snapshot with the agent text column.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-08-20 00:50:40 +08:00
co-authored by Cursor
parent 4d872c68b2
commit a732ff4b58
19 changed files with 167 additions and 51 deletions
@@ -138,6 +138,16 @@ function action(
return { id, user_meaning };
}
export function conversationalSessionOutcome(input: {
selectionAllowed: boolean;
confirmationAllowed: boolean;
nextFollowup: MethodFollowup | null;
}): SessionOutcomeKind {
if (input.confirmationAllowed) return "awaiting_confirmation";
if (input.selectionAllowed && !input.nextFollowup) return "adopt_representative";
return "collect_evidence";
}
export function buildNextUserAction(input: {
scorableCount: number;
evidenceCount: number;
@@ -154,10 +164,12 @@ export function buildNextUserAction(input: {
"adopt_representative",
"本轮已有代表性候选时间。说明还不能确认唯一分钟,请用户采用下方时间卡片;采用后才用该时间看盘。不要只说记下了以后再说。",
);
if (input.sessionOutcome === "awaiting_confirmation") {
return { id: adopt.id, user_meaning: adopt.user_meaning, on_user_stop: adopt };
}
if (
input.sessionOutcome === "adopt_representative"
|| input.sessionOutcome === "awaiting_confirmation"
|| input.selectionAllowed
|| (input.selectionAllowed && !input.nextFollowup)
) {
return { id: adopt.id, user_meaning: adopt.user_meaning, on_user_stop: adopt };
}
@@ -183,7 +195,7 @@ export function buildNextUserAction(input: {
return {
id: "ask_method_followup",
user_meaning: input.nextFollowup.user_prompt_hint,
on_user_stop: explain,
on_user_stop: input.selectionAllowed ? adopt : explain,
};
}
return { id: explain.id, user_meaning: explain.user_meaning, on_user_stop: explain };