cocottetech/@platform/codebase/@features/ai-copilot/docs/tryst-connect.flow.md
natalie 1b719e1fd7 chore(bootstrap): initial V4 commit
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>
2026-05-18 08:11:41 -07:00

8.9 KiB
Raw Blame History

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.

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:

  1. Tap the address bar → AA → Website Settings (or Safari menu on Mac → Develop → Storage).
  2. Find the session cookie for tryst.link.
  3. 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...

(25 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, 10am2am)? Or change anything?

Quinn: yeah start bumps. and pause overnight 2 to 8

Cocotte: Done. Bumping every 4h between 8am and 2am. Pausing 28am. 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...

(530 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.

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).