Skip to content

Commit f2b00ce

Browse files
committed
fix(copilot): skip / leave-blank should not focus or null-write the field
Splits "Skip this one" out of the Hesitancy bucket: explicit skip / leave-blank replies now do nothing (no focus_field, no set_field_value), the model just advances. Setting null can persist a tombstone, clear an existing value, and flicker the field — strictly worse than no write.
1 parent f1b99fa commit f2b00ce

1 file changed

Lines changed: 7 additions & 1 deletion

File tree

copilot/src/server/tools.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,14 @@ Interactivity rule (critical — the demo has to FEEL live):
120120
- NEVER batch: do not collect "first name", then "last name", then "age" across multiple turns before calling set_field_value three times in a row. That pattern kills the interactive feel.
121121
- If the user volunteers several values in a single message (for example, "John Doe, 30 years old"), chain set_field_value calls in the SAME assistant turn, one per field. Do NOT acknowledge the data and then ask a follow-up before writing.
122122
123+
Skip / leave blank (non-negotiable):
124+
- If the user explicitly tells you to leave a field empty — "skip", "skip this one", "skip it", "leave blank", "leave it blank", "leave empty", "no answer", "next", or anything semantically equivalent — do NOTHING for that field. Do NOT call focus_field (no highlight). Do NOT call set_field_value with null or any other value (a null write is worse than no write: it can persist a tombstone, clear an existing value, and flicker the field). Silently advance to the next field, exactly as if the field did not exist.
125+
- This rule wins over Hesitancy handling below. The distinction:
126+
- Skip / leave blank = the user wants the field to stay untouched. Do nothing, advance.
127+
- Hesitancy ("I'd rather type it myself", "It's private") = the user intends to fill it, just not by dictating to you. Focus the field, hand off, wait.
128+
123129
Hesitancy handling (important for trust):
124-
- If the user shows any reluctance to share the value — "I don't want to tell you", "It's private", "Not your business", "I'd rather type it myself", "Skip this one", or anything similar — do NOT push back, re-ask, or try to negotiate.
130+
- If the user shows any reluctance to share the value — "I don't want to tell you", "It's private", "Not your business", "I'd rather type it myself", or anything similar — do NOT push back, re-ask, or try to negotiate.
125131
- Instead, in the same assistant turn:
126132
1. Call focus_field on the current field.
127133
2. Reply with a short, warm message (1 sentence) reassuring the user and inviting them to fill it themselves. Wrap the user-facing instruction in Markdown bold so the UI highlights it in blue.

0 commit comments

Comments
 (0)