Clean successor to V3 (forge: lilith/atlilith). Seeded from local Mac working tree at ~/Code/@projects/@cocottetech/. node_modules and build artifacts excluded via .gitignore. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
8.9 KiB
tryst-connect.flow — Conversational connect flow for Tryst
The canonical way Quinn connects Tryst. Conversation, not a form. Implements the principle in 00-system-conversational-ux.md: screens are inspectors / fallbacks; conversation is the primary path. The tryst-connect.screen.md exists as a fallback for when Quinn explicitly wants the form; this flow is what happens first.
Two paths covered: cookie-paste (fast) and full-credentials (auto-re-login). Cocotte asks which Quinn wants; everything else follows.
Transcript — cookie path (the most common first-time flow)
Quinn: connect tryst
Cocotte: Two ways to connect Tryst — a fast one and a long-haul one. Want to hear both?
Quinn: yes
Cocotte:
- Cookie paste is faster. Sign in to tryst.link in Safari, copy a session cookie, paste it here. Done in 30 seconds. You'll re-paste every ~30 days when Tryst rotates the session.
- Full credentials is longer to set up — your username + password + 2FA secret if you use one. I sign in for you each time the session expires. No re-paste needed, but the first sign-in might hit a captcha I have to solve.
Which way?
Quinn: cookie
Cocotte: Got it. Open tryst.link in Safari, sign in. Then:
- Tap the address bar → AA → Website Settings (or Safari menu on Mac → Develop → Storage).
- Find the
sessioncookie for tryst.link.- Copy its value.
Tell me when you've got it, or paste it here and I'll grab it.
(Cocotte waits. Quinn taps the deep link "Open tryst.link" if she wants; otherwise she switches apps and comes back.)
Quinn: (pastes a long opaque string)
Cocotte: Got it. Testing the connection through my browser container — one second...
(2–5 seconds; chat shows a single subtle pulse indicating Cocotte is working)
Cocotte: ✓ Connected. You're on Tryst as @transquinnftw, TLC Premium tier, 3-city slot, Sumsub-verified through 2027-03-04. Listing's active in San Francisco + Berkeley.
Want me to start bumping on your usual cadence (every 4h, 10am–2am)? Or change anything?
Quinn: yeah start bumps. and pause overnight 2 to 8
Cocotte: Done. Bumping every 4h between 8am and 2am. Pausing 2–8am. First bump in 12 minutes.
That's the entire connect-and-go interaction. Zero screens opened. The fallback screen tryst-connect.screen.md is available if Quinn says "show me the form" or if something goes wrong.
Transcript — full-credentials path
Quinn: connect tryst
Cocotte: Two ways to connect Tryst — a fast one and a long-haul one. Want to hear both?
Quinn: just do the long one
Cocotte: OK — username + password + 2FA secret if you have one. Tell me your username first.
Quinn: transquinnftw@... (types email)
Cocotte: Got it. Password? (input field appears inline in the chat with secure-input affordance; auto-clears from chat history after submit)
Quinn: (enters password)
Cocotte: 2FA — got a TOTP secret? You can paste the
otpauth://URL or the raw base32 secret, or tap the camera to scan a QR. Or skip if you don't use 2FA on Tryst.Quinn: skip
Cocotte: Signing in for you now — opening Tryst in my container, filling the form, watching for captchas...
(5–30 seconds; pulse indicator. If a captcha appears: Cocotte runs Tier 1 anti-detection → Tier 2 ML solver → Tier 3 HITL. If HITL kicks in, Cocotte sends Quinn a push notification with the challenge image to solve.)
Cocotte: ✓ Connected. Tryst threw a captcha at sign-in but I solved it. You're on as @transquinnftw, TLC Premium, all the usual. From now on I'll re-sign-in automatically whenever the session expires — you won't see it.
Same cadence as before? Or different this time?
What Cocotte's behavior contains (parsing + flow control)
These are the patterns the conversational entry parses:
| Quinn says | Cocotte parses as | Resulting flow |
|---|---|---|
| "connect tryst" / "add tryst" / "set up tryst" | Tryst-connect intent | This flow |
| "connect everything" / "set up all my surfaces" | Multi-surface connect — sequential flow asking surface-by-surface | Defer; see cross-surface-fanout.brief.md §7 |
| "the cookie one" / "fast way" / "cookie" | Cookie-mode branch | Cookie path above |
| "the full one" / "long way" / "credentials" / "password" | Full-creds branch | Full-creds path above |
| "show me the form" / "open the screen" | Open tryst-connect.screen.md | Screen opens; conversation pauses |
| "what is a session cookie" / "I don't know how" | Explainer (one paragraph) + same prompt | Same step, longer explanation |
Failure paths in conversation (not screens)
Cookie invalid:
Cocotte: That cookie didn't take — Tryst returned a sign-in page. Could be expired, or maybe a different domain's cookie. Try copying again from a freshly-signed-in tab?
Password wrong:
Cocotte: Tryst said that username + password don't match. Want to try again, or use the cookie path instead?
Captcha solver unavailable (ML + HITL both down):
Cocotte: Tryst showed a captcha and I can't solve it right now — my solver service is down and you're not available to solve it manually. Want to try the cookie path while I'm waiting on the solver?
Account flagged / locked:
Cocotte: Tryst flagged this account: "under review by compliance." That's their side, not mine — open tryst.link to see why, then come back when it's clear.
Captcha needs Quinn (HITL):
Cocotte: Tryst showed a captcha I can't auto-solve. I sent you a push — tap it and you'll see the image. Solve it there and I'll resume.
In each failure case, the conversation continues — Quinn isn't bounced into a screen unless she asks.
When Cocotte upgrades to the screen
Cocotte opens tryst-connect.screen.md on:
- Quinn explicitly asks: "show me the form / screen / settings."
- Quinn switches modes after first connect: "switch to credentials path."
- A complex multi-account case: "I have two Tryst accounts" — the screen handles disambiguation more cleanly than chat.
In all other cases, the conversation completes without a screen ever rendering.
Voice mode
Identical flow over voice (per voice-input-settings.screen.md) with two adaptations:
- Secure inputs spoken: when Quinn needs to dictate a password / cookie / TOTP, Cocotte mutes TTS readback ("password not echoed for your ears only") and accepts dictation; or surfaces an iOS secure-input affordance that Quinn types on while voice continues for everything else.
- Status announcements: "Connected. Touring Bay Area, TLC tier" replaces the chat receipt.
Per-surface adaptation
This flow is the template for every per-surface connect interaction (per 00-system-conversational-ux.md). Other surfaces follow the same shape with variants:
- TS4Rent: identical to Tryst + Sumsub-handle question on first connect.
- Slixa / Eros: same shape; per-surface auth specifics.
- OnlyFans: same shape + device-pairing warning + per-OF 2FA pattern.
- X / Threads / Bluesky: skips cookie/credentials — Cocotte opens iOS OAuth; conversation says "tap to authorize me on X — back in a sec" then handles return.
- WhatsApp / Telegram / Signal: QR-pair conversation — Cocotte shows QR, Quinn scans with her device, conversation continues.
Every per-surface brief gets a connect.flow.md companion documenting its surface-specific conversation.
Related
- 00-system-conversational-ux.md — principle establishing flows as canonical.
- tryst-connect.screen.md — fallback screen (role: fallback editor).
- surface-tryst.brief.md §2 — dual-mode auth design (this flow is the primary realization).
- _engineering-surface-adapter-container.md — the container that runs both modes' login under the hood.
- _engineering-credentials-vault.md — encrypted storage for both modes' artifacts.
- voice-input-settings.screen.md — voice-mode adaptation reference.
- cross-surface-fanout.brief.md §7 — multi-surface connect ("connect everything") is a sister flow.
- A-chat-surface.brief.md — the surface this flow plays out on.
- Future
captcha-solve.screen.md— HITL captcha surface (modal during the failure path).
Out of scope
- The captcha-solve modal interior (separate screen).
- Mode-switching post-connect (handled by tryst-connect.screen.md advanced surface).
- Multi-account disambiguation (handled by the screen).