Repository navigation
FEAT: Improve conversation branching and technique reuse - #3187
Richard Lundeen (richlundeen) merged 7 commits into
Conversation
Add per-turn branching, target-free prompt drafting, and scanner conversation editing. Open technique.execute with the saved conversation ID and expose history conversion as a toggle. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d6ee85f-fe71-4f31-93fd-d1955453f763
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d6ee85f-fe71-4f31-93fd-d1955453f763
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d6ee85f-fe71-4f31-93fd-d1955453f763
|
"Copy conversation" is not super intuitive to me because it doesn't tell me that we can actually fork after a certain number of turns. The icon chosen is the reply icon which adds to the confusion for me. The options aren't clear at all. Previously, the buttons allowed for tooltip so we could at least explain. This new way with dropdown doesn't. At the very least, we should explore making the dropdown a bit more custom so that it contains explanation. Maybe Fluent has some ways (see custom options or compelx options maybe) Components / Dropdown - Docs ⋅ Storybook Perhaps worst is technique.execute because it's anyone's guess what that means. I still very much prefer the buttons but I'm biased as I added them 🤣 Update: I actually misunderstood what these mean and checked now. This definitely needs fixing. |
I found the last way confusing :D What do you think of this (updated with tooltips)
|
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d6ee85f-fe71-4f31-93fd-d1955453f763
Restore upgraded conversation lookups and preserve text-only remix metadata. Keep conversation and dataset launch guards during the main merge. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d6ee85f-fe71-4f31-93fd-d1955453f763
|
Roman Lutz (@romanlutz) Updated the menu in 84b122c: it is now Copy or Branch, with a branch icon instead of the reply icon. Each option has a visible explanation below its label using Fluent UI |
Yeah it's inherently complex so not surprised you found it confusing 🤣 How about |
|
FWIW I like the "copy or branch" label much better! |
Keep main's cancellation barrier and its explanation when resolving the SQLite test conflict. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d6ee85f-fe71-4f31-93fd-d1955453f763
Rename Copy to prompt to Copy to next message and explain inclusive history, attack groups, and scan preparation. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d6ee85f-fe71-4f31-93fd-d1955453f763
Description
Make conversation branching and reuse easier in Co-PyRIT. This builds on the
technique.executescanner introduced in #3118./scanner/technique.execute?prepended_conversation_id={id}with the field filled in. Its explanation names the destination. No clipboard step or extra dialog is required. URL loading and navigation to a different conversation initialize the normal scanner parameter state.technique.execute, and is disabled without a conversation ID. Conversion happens during the scan, not when editing the source.Registry behavior is unchanged. Opening the scanner or conversation editor does not launch a scan. The merge from
origin/mainpreserves both conversation-loading safeguards and the new dataset-validation launch safeguards.Screenshots
Save a simulated chat and continue from the prompt box. The final user turn moves into the composer. Send stays disabled without a target, with no target-warning box.
Copy or branch from any turn, including the system prompt. The compact menu explains all four actions: Copy to prompt, Branch conversation, Branch attack, and Use in scan. Explanations are visible without hover and available to screen readers.
Reuse history in the scanner. The conversation ID is filled from the URL. Creation, editing, and the converter switch sit beside that field.
Edit the saved history from scanner configuration. Add to attack saves a new copy and updates the field. There is no Send button in this editor.
All screenshots were captured from the running local application with safe sample text. No prompts were sent to a target and no scan was launched.
Tests and Documentation
Updated the frontend conversation guide and backend API guide. Regression coverage includes per-turn branching, target-free copies, final-user-turn placement, scanner editing, URL prefill, converter defaults, saved-history visibility, accessible menu descriptions and keyboard selection, upgraded SQLite history, and text-only remix metadata. Browser checks use the new labels and verify mobile descriptions and touch targets.
Exact commands and results for the merged code and review fixes
From the repository root:
From
frontend:Live local UI checks covered saving a simulated conversation, final prompt placement, the per-turn menu, direct navigation to
technique.execute, and loading its history editor. No target prompts were sent and no scan was launched.JupyText was not run because this feature does not change notebooks. The full repository test suites and live-target tests were not run.