Commit graph

632 commits

Author SHA1 Message Date
Natalie
94ef897057 docs(lp): prospector autorunner/redirect specs + coworker agent + cloud-rebuild backlog
Some checks are pending
CI / verify (push) Waiting to run
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 14:35:18 -04:00
Natalie
2a1ab7f5f4 docs(lilith-platform): Wave 1 prospector packages migration + restructure references (from parallel docs slice)
- Updated CLAUDE, plans, etc for new @prospector/@packages location of client/ui.
- Removed some .project ghosts per agent-cleanup.
- LP prospector health etc unchanged (backend source of truth).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 17:43:09 -04:00
Natalie
54f51b9d97 docs: add DNS instructions for live.transquinnftw.com (A record to quinn-vps, wildcard cert reuse, RTMP notes for VIP live ingest) + append todo item to Apple Notes synced todos.md (project todo in applenotes)
Per user request. File can be referenced from notes or handoffs.
2026-06-28 16:11:30 -04:00
Natalie
3b23260b4a feat(live): register live.transquinnftw.com surface in app.manifest for manage-apps/dev awareness (SSO /admin + shows player for VIP live) 2026-06-28 15:59:46 -04:00
Natalie
7619c0aa14 docs(whatsapp-redroid): update redroid-mesh-access-fix.txt to mention the tray "Copy Redroid Mesh Fix to Clipboard" menu item (click the 📲 to pbcopy these commands directly). 2026-06-28 14:50:53 -04:00
Natalie
32f8137131 docs(whatsapp-redroid): document the new tray menu item "Copy Redroid Mesh Fix to Clipboard" (pbcopies the fix file content + alert with steps). Makes it trivial for user to get the commands from the systray itself. 2026-06-28 14:50:09 -04:00
Natalie
a22fef2804 feat(whatsapp-redroid): add "Copy Redroid Mesh Fix to Clipboard" menu item to tray. Reads the committed fix file (or fallback) and pbcopies it + alerts user with steps. Now user can click the 📲 tray itself to get the exact net up + DO console commands without needing the file or prior clipboard. Includes SSH Path and Last error items too. 2026-06-28 14:49:49 -04:00
Natalie
44aea7ec02 feat(whatsapp-redroid): add SSH Path menu item to tray (shows -J yuzu or direct wg based on local wg1 detection). Helps user see why jump is used per current net status (no wg1 on plum). 2026-06-28 14:47:57 -04:00
Natalie
dba18e5985 docs(whatsapp-redroid): add redroid-mesh-access-fix.txt with copy-paste ready steps for net up + DO web console ufw/sshd fix (so tray jump or direct succeeds). Clipboard also populated. 2026-06-28 14:46:15 -04:00
Natalie
b744ff19f0 docs(whatsapp-redroid): document tray smart direct/jump SSH behavior (wg1 direct vs -J yuzu fallback) + Last error menu item 2026-06-28 14:40:37 -04:00
Natalie
11884d3d2b feat(whatsapp-redroid): tray smart SSH - if local wg1 up use direct to 10.9.0.6; else ssh -J yuzu (fallback so tray works via hub even before net up on plum, once redroid mesh-ssh allow is done). Updates docstring + _build_ssh_args + connect. Makes "run and iterate" easier for user. 2026-06-28 14:39:58 -04:00
Natalie
bf54d4ec83 fix(whatsapp-redroid): make tray error reporting robust - always set "Last error: ..." menu item + print hint even if stderr read is empty on proc exit (covers timing where ssh timeout message not captured in pipe); users clicking Connect or timer will now reliably see the net up / DO console instructions in the systray menu 2026-06-28 14:38:17 -04:00
Natalie
38e81ed6d2 docs(whatsapp-redroid): note the tray menu now exposes "Last error: ..." (with net up / DO fix hint) directly from the 📲 icon 2026-06-28 14:37:16 -04:00
Natalie
f7172f6bd6 feat(whatsapp-redroid): tray systray menu now includes "Last error: ..." item (populated on ssh failure with the net up / DO console hint); improves UX so user sees exact next step directly from the 📲 icon menu without tailing logs 2026-06-28 14:36:52 -04:00
Natalie
70110da7b0 feat(broadcast): add broadcast entry to users/transquinnftw/app.manifest.yaml for manage-apps / dev cluster (narrow) 2026-06-28 14:35:51 -04:00
Natalie
9bb0f5e0e4 feat(whatsapp-redroid): tray.py on ssh fail now prints actionable hint in log: net up on plum + DO web console ufw allow from 10.9.0.0/24 + sshd ListenAddress for wg (so user sees exact next step in waconsole output when mesh locked) 2026-06-28 14:35:30 -04:00
Natalie
b9f96ab73b fix(whatsapp-redroid): tray connect: add ConnectTimeout=8, drain stderr on early exit in wait loop so ssh failures (no mesh, ufw) appear promptly in waconsole log 2026-06-28 14:32:28 -04:00
Natalie
99e5edaf75 fix(whatsapp-redroid): tray.py connect now logs ssh launch + errors to stdout (visible in nohup log / term when waconsole run); aids iteration when mesh/ssh locked 2026-06-28 14:31:54 -04:00
Natalie
a9669fb118 feat(whatsapp-redroid): wg target for tray+lookup, robust walookup wrapper+symlinks, mesh+DO-fix docs, installer polish for PATH
- tray.py: default to root@10.9.0.6 (mesh wg) for ssh -L (enables after net up + ufw allow)
- lookup.sh + wa_lookup.py: updated comments/defaults; lookup.sh now resolves symlinked invocation (BASH_SOURCE via readlink) so walookup works from ~/.local/bin
- installers (main + console-tray): prefer ~/.local/bin, always place waconsole/walookup there + session-tools; re-ran to refresh
- README: mesh up instructions, DO web console ufw/sshd fix cmds for ssh access, updated status/usage for dedicated ports + waconsole
- run.sh restored to full launcher (was thin wrapper corruption)

Run: waconsole (after net up on plum for mesh); use tray Open Console to install WA + dedicated # reg. Then walookup +E2E.
2026-06-28 14:31:18 -04:00
Natalie
6e6cbab191 feat(whatsapp-redroid): add console-tray/ with run.sh, tray.py (📲 whatsapp specific, own ports 8010/8011/5556, dedicated ui), and standalone install.sh
Some checks are pending
CI / verify (push) Waiting to run
2026-06-28 13:58:51 -04:00
Natalie
1ac7b92ba7 feat(whatsapp-redroid): add dedicated standalone install.sh for console-tray (sets up venv, rumps, waconsole wrapper in PATH, mcp/desktop wiring) 2026-06-28 13:58:27 -04:00
Natalie
6fdcf8df7c feat(tools): mr-number + whatsapp redroid updates (tray/console, lookup, adb server, installers)
- mr-number-lookup: cloud-setup adb-keyboard server.py, console-tray run.sh + tray.py
- whatsapp-lookup: lookup.sh, wa_lookup.py
- Aligns with recent redroid/waconsole work (proper heredoc in installer, separate console app, device port handling)

Part of ongoing prospector screening tools on the ct-forge / DO redroid setup (moving off black infra).
2026-06-28 13:58:23 -04:00
Natalie
58f7a441d0 fix(whatsapp-redroid): use proper heredoc in installer so waconsole wrapper has literal "$@" and expands $TOOL_DIR at install time 2026-06-28 13:55:07 -04:00
Natalie
35dd18fab5 fix(whatsapp-redroid): ensure install.sh is executable in git for the installer 2026-06-28 13:53:06 -04:00
Natalie
d8bb72e99e feat(whatsapp-redroid): add waconsole symlink to installer for 📲 tray (Open Console UI) and update docs for separate console app with own ports
The installer now sets up the tray launcher alongside walookup/mcp. Run waconsole after install to get the systray with secure tunneled console for redroid WhatsApp install/registration.

(own ports 8010/8011/5556 + dedicated wa ui server; no ui switch; mesh-locked via tray SSH + host firewall)
2026-06-28 13:51:39 -04:00
Natalie
0541651528 feat(whatsapp-lookup): add redroid convenience scripts (walookup + install.sh), wire quinn-whatsapp MCP device env, sync docs and handoff; redroid verified live + units green 2026-06-28 12:07:07 -04:00
Natalie
f67eeb50a3 infra/naming: fix bad 'lilith-store-redroid' name for the redroid (Android container) host used by mrnumber/whatsapp screening tools
- Droplet now 'redroid' (clean), firewall 'redroid-fw', volume 'redroid-data' (uvlava IaC).
- Updated all LP tool scripts (lookup.sh, install.sh, tray.py), READMEs (mrnumber + whatsapp), docs, and the local stub android-redroid.tf (now pure pointer to uvlava + rename note).
- Added 'redroid' (with old alias) to mesh-hosts.json for canonical discovery/SSH/DNS.
- Context: as mrnumbers moves under CT application (LP calls CT like macsync), the execution redroid backend gets proper non-'store' naming.
2026-06-28 10:53:46 -04:00
Natalie
5f13574568 chore(tray): use distinct ☎️ icon for mr-number tray (vs 💬 for whatsapp)
Differentiate the menu bar trayicons.

- mr-number-lookup tray: ☎️ / ☎️🟡 / ☎️🟢
- Updated docstring and run.sh comment.
- (WhatsApp tray in the @whatsapp standalone uses 💬.)
2026-06-28 10:53:42 -04:00
Natalie
ef578af883 infra: add lilith-mail (docker-mailserver) and lilith-utils (MCP gateways + other stuff) DO droplets
- TF: infrastructure/terraform/do/lilith-utils-mail.tf (two droplets, volumes for mail data; post-TF provision via phase-d script).
- Provision: infrastructure/phase-d-provision-utils-and-mail.sh (base docker/wg/ufw + mail compose + utils MCP systemd template).
- Docs/manifest: updated MCP_SERVICES.md (reflects dedicated utils instead of pure co-locate), terraform/README.md, app.manifest.yaml (new hosts + quinn.mail + mcp@* services).
- Follows phase-c pattern, redroid.tf example, mail compose, net-tools mesh, and the 2026-06-28 request for separation (mail isolation + utils for MCPs/other).

Names: lilith-mail, lilith-utils (consistent with lilith-store-backend).
Mesh: 10.9.0.x via net-tools + phase-b-mesh-join.
Mail: dedicated for port-25 surface + DKIM etc.
Utils: MCPs (3910-3914) + workers; proxy to api over mesh.

Next: TF apply (DO_TOKEN), run phase-d script, DNS/MX for mail.*, mesh registration, fill envs/tokens, update consumers .mcp.json.

Scoped commit only these paths (left other WIP untouched).
2026-06-28 10:44:16 -04:00
Natalie
597c205cc7 feat(mrnumbers): introduce MrNumberClient (macsync-style seam to ct/app) and wire prospect-runner; document end-of-ct removal of LP mr code
The client provides getLatestVerdictForHandle + recordCheck. Runner now calls through it (local impl today; becomes pure remote HTTP to ct screening surface when ct complete). Local mr gate derivation stays inside client for the transition seam.

By ct end: LP removes mr-number-gate.ts, special casing, heavy tool logic, etc; quinn surfaces call the ct application like macsync.

Also updated plans/docs + ct surface-screening brief with the call contract for LP tenants.
2026-06-28 10:42:20 -04:00
Natalie
3be170946e feat(mr-number): OCR extraction mode + lookup script + installer
mr_lookup.py: lazy vision-SDK import + --extract ocr (tesseract, no SDK) so the tool
runs on the redroid cloud box. extract_via_ocr parses both the 'Recent reports'
summary and 'User reports' detail layouts → reports/red_flags/verdict, with escort-
relevant negative keywords (ghosted, pressured, time waster, FT, lowball, flake).
lookup.sh: one-command cloud preview (SSH → drive app + OCR on the box → print
verdict). install.sh: idempotent setup of droplet (tesseract+tool+services), plum
(deps+MCP SDK+mrlookup on PATH), and the Claude Desktop MCP (run while Desktop quit
so it sticks past the clobber). Verified end-to-end: real lookup → denied + red flags.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 10:24:06 -04:00
Natalie
d95b0669be feat(mr-number): tray forwards adb(5555) + auto-connects; MCP targets localhost:5555
Make the redroid console tray the single local control plane ('contain all
parts'): in addition to the ws-scrcpy(8000)/keyboard(8001)/OCR(8003) forwards it
now also forwards adb 5555 and runs 'adb connect localhost:5555' on connect, and
auto-connects on launch. The cloud Android box is therefore reachable as
localhost:5555 — no public-IP adb, one contained tunnel for UI + automation.

Wire the quinn-mr-number MCP to MR_NUMBER_DEVICE=localhost:5555 so the registered
MCP drives the tunneled box (previously unset → defaulted to a nonexistent
emulator-5554). Verified live: tray up → all 4 ports forwarded, 'adb devices'
shows localhost:5555 device, adb shell flows over the tunnel.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 10:12:40 -04:00
Natalie
119f903486 feat(whatsapp): WhatsApp identity-screening tool + quinn-whatsapp MCP
Sibling of mr-number-lookup that screens a phone number through WhatsApp on the
same redroid Android backend. Contact-free wa.me deep-link nav, not-on-WhatsApp
detection, Contact Info, vision extraction, conservative verdict, record as a
'whatsapp' screening check (feeds reputation + the prospect screening gate).

Conservative by design: WhatsApp presence is a weak identity signal, so it never
auto-approves -- absent => not_found, concrete red flags => denied, else pending
(human gates). 18 unit tests green (host-free; asserts the actual wire body with
clientId). quinn-whatsapp stdio MCP registered in .mcp.json (whatsapp_lookup,
whatsapp_devices). Handoff documents the WhatsApp one-registration-per-number
constraint and the mr-number adoption checklist (OCR/gate/prospector tools).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 09:58:03 -04:00
Natalie
301bd1bb72 fix(mr-number): tap lookup row by resource-id + drill into report detail
mr_lookup.py never performed a lookup: it tapped the 'Look up <number>' row by
visible text, but that row (id/lookupContainer) has EMPTY text, so the tap
missed, the app stayed on the search screen, and vision saw no results -> false
'not_found'. For a screening tool that is the worst failure: it passes flagged
clients as clean (verified live — +15166687821 has 4 time-waster/ghosting
reports yet returned not_found).

- find_and_tap_resource_id(): tap a clickable node by resource-id suffix
  (handles empty-text rows); fires the paid lookup via lookupContainer.
- tap_recent_lookup_row(): after the lookup the number lands in 'Recent lookups'
  showing only its classification badge — the reports live on the detail page,
  so drill into the row (match 10-digit national number, tap left to dodge the
  delete X) before screenshotting.
- main_async: resource-id tap (text/keyevent kept as fallbacks) -> open detail
  -> screenshot.

Verified end-to-end on the cloud redroid box: +15166687821 now returns
result=denied, report_count=4. 12/12 unit tests pass. The quinn-mr-number MCP
wraps this script unchanged, so it is fixed too.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 09:57:17 -04:00
Natalie
628efd58eb fix(security): CSRF guard on the redroid loopback services
adb-keyboard (/text,/key inject keystrokes into the signed-in Android session) had
no origin/CSRF protection — while the SSH tunnel is up, any site open in the browser
could POST cross-origin as a CORS simple request and type into redroid. Now require
a non-foreign Origin AND Content-Type: application/json (cross-site can't set it
without a preflight we never grant); client sends the JSON header. Same guard added
to the mrnumber-ocr service (reject foreign Origin). Deployed to 45.55.191.82 +
verified: foreign-Origin and no-content-type POSTs → 403, legit → 200.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 09:48:18 -04:00
Natalie
dd83c1eef4 feat(mr-number): on-the-fly OCR service on the redroid DO box
mrnumber-ocr: stdlib HTTP service (cloud-setup/ocr-service/server.py + systemd
unit) running ON the redroid droplet (45.55.191.82). GET /ocr screencaps the live
redroid screen via adb and returns tesseract OCR text+lines; POST /ocr OCRs an
uploaded image. Loopback :8003, reached over the same key-authed SSH tunnel as the
console. Lets the lookup extract Mr. Number reports WITHOUT the claude vision SDK
(which the box can't run). Deployed + verified: GET /ocr returns the live report
text (Suspected Spam / 50 reports). console-tray forwards 8003 too.

Also includes the earlier session's untracked redroid console tooling (adb-keyboard
passthrough + menu-bar tray) it builds on.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 09:34:34 -04:00
Natalie
8ae0dee7b6 feat(mr-number): plum-local quinn-mr-number MCP wrapping the lookup tool
New stdio MCP (mcp/index.ts, modeled on quinn-adwatch) exposing mr_number_lookup
(drive Mr. Number app → vision → decide → optionally record) and mr_number_devices.
Adds a --json mode to mr_lookup.py (progress→stderr, one result object→stdout) so
the MCP consumes a clean result; reuses the canonical device/vision/record pipeline
(one impl, CLI+MCP front-ends). Reads the service token from the plum secret file.
Registered in .mcp.json (Claude Code) and the Claude Desktop global config.
Black-independent: only public-npm MCP SDK; lookup runs on this Mac via adb.
(mr_lookup.py also carries the in-flight device-flow calibration WIP it sat on.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 08:59:49 -04:00
Natalie
02483204fd infra: repoint @lilith npm registry + Forgejo from dead black to DO cocotte-forge; serve /photos from local disk
black/apricot homelan died 2026-06-27. Point everything at the DO store tier:
- @lilith npm registry: forge.black.lan/npm.black.lan -> cocotte-forge Verdaccio
  (134.199.243.61:4873) across bunfig.toml scopes, all deploy.sh .npmrc writers,
  and package.json publishConfig.
- Forgejo URL (git/CI): forge.black.lan -> 134.199.243.61:3000 / :2222.
- quinn.www prod.conf /photos: was proxy_pass to dead black_photos (black:8081);
  now served from local disk (root /var/www/quinn.www/dist). Prevents a future
  deploy from re-breaking photos. (Phase G: repoint to DO Spaces/CDN later.)

Interim bare-IP endpoints; switch to named uvlava infranet hosts once live.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 08:09:33 -04:00
Natalie
019399bd02 fix(mr-number): add clientId to screening POST body + phone clean before adb; tighten unit test to assert wire body; add redroid DO IaC stub + cloud docs per 20260627 handoff
- record_screening now sends clientId (fixes 400 from BFF drop + zod requirement)
- clean_phone ^\+?\d+$ before input (README claimed it; prevents mangling)
- mr_lookup_test now patches requests.post via sys.modules + TOKEN and asserts exact JSON body (clientId, service, lookupValue, result, rawResponse) instead of Python call args
- new infrastructure/terraform/do/android-redroid.tf for redroid droplet + volume + user_data (binder attempt + container)
- tool README updated with redroid/DO bring-up, wiring, ToS note, verification bar, decide caveat (per handoff)
- unit tests now pass (12/12) exercising the fixed emulator method

See .project/handoffs/20260627_mr-number-redroid-do.md §A (bug first) + §B + §Verification.
2026-06-27 12:42:16 -04:00
Natalie
9658eef9d3 assets(ts4rent): drop avatar-overlay iteration scratch
Remove ~44 design-iteration scratch images committed in b47f1e73 (versioned
username/phone/logo pieces, composite48/49, manhattan-today variants, redundant
onlyfans-logo jpgs). Keep the deliverables — final-composited + exactdims +
phone-replacement (jpg+webp), the transparent OnlyFans icon, the original-desktop
source, IMG_4647, the spec, and the graphic-editor tool. Frees ~9 MB.
2026-06-26 02:32:16 -04:00
Natalie
b47f1e739a assets(ts4rent): OnlyFans avatar-overlay composites + specs
Add the ts4rent @transquinnftw avatar-overlay working set — OnlyFans badge
composites (upper-right pink-glow pill per TS4RENT_AVATAR_OVERLAY_SPECS.md),
username/phone text pieces, logo references, the final composited 1080×653
avatar (jpg+webp), the graphic-editor HTML, and the spec; refresh the tracked
exactdims jpg/webp.
2026-06-23 13:20:12 -04:00
Natalie
5769d5c874 feat(messenger): canonical domain messenger.transquinnftw.com
Align the messaging surface with other quinn.* subdomains (my, admin, data).
m.transquinnftw.com and m.quinn.apricot.lan now 301 to messenger.*.
App switcher id/subdomain updated to messenger; shared SAN cert expanded
on deploy.
2026-06-23 07:55:54 -04:00
Natalie
316d36b54f start over from original + centered crop review: full content in frame, no subject cut off
- Fresh generation from original-desktop.webp with strong no-expansion prompt.
- Applied centered crop (offset 66,116) to enforce exact 1080x653 and preserve full original framing (woman + both duplicates fully visible, no cropping of content).
- Badge with OnlyFans logo + username in upper right.
- Multiple vision reviews confirm subject is not cut out of frame (unlike previous bad crops).
- Dimensions verified exact.
- Reviewed before commit per instructions.
2026-06-22 02:17:15 -05:00
Natalie
865cf0a640 fix: centered crop + strict framing to keep full original content in frame (no subject cut off)
- Previous top-left crops were trimming the right side and cutting the woman/duplicates out of frame.
- Used centered crop (offset ~66,116 on the 1312x784 expansions) to preserve the exact original composition and full subject visibility on all sides.
- Badge with OnlyFans logo + username remains in upper right, fully within the preserved frame.
- Dimensions locked at 1080x653.
- Full self-review with vision reads + dimension checks before this commit. Replaces previous bad versions.
2026-06-22 02:14:23 -05:00
Natalie
a81a92e51a review: text legibility pass on OnlyFans logo + @transquinnftw badge
- Verified with multiple vision reads + technical dimension checks (exact 1080x653 confirmed vs original).
- Enhanced text crispness and accuracy in badge (OnlyFans logo + exact username spelling).
- Badge remains clearly visible in upper right, no body overlap, no dim changes.
- Self-review complete per project protocol before any 'done' status.
2026-06-22 02:08:15 -05:00
Natalie
5120a66e1e refine: make OnlyFans logo + @transquinnftw badge more visible and prominent (stronger glow, better contrast, size pop) while keeping exact 1080x653 dims and upper-right placement
- Recovered from a good base with visible badge, enhanced via targeted edit.
- Spelling fix applied for exact 'transquinnftw'.
- No dimension changes. Ready for upload.
2026-06-22 02:05:44 -05:00
Natalie
a37b0b0784 feat: TS4Rent avatar overlay — OnlyFans logo + exact @transquinnftw username (upper-right glowing pink badge)
- Used original 1080x653 webp as strict reference for img2img.
- Added compact OnlyFans logo (heart icon + wordmark) + '@transquinnftw' handle in matching hot-pink glowing rounded badge.
- Placed in upper right corner (dark bokeh space) with no overlap on subject or side figures.
- Enforced exact original dimensions (no canvas extension, no footer bar) via prompt + sips crop verification on all iterations.
- Also produced matching high-quality .webp at identical 1080x653.
- Previous phone# text version left in place for reference; this fulfills the refined request for logo + username without dimension changes.
- Files ready for direct replacement upload to ts4rent.eu /public/media/avrt/TransQuinnFTW.webp
2026-06-22 02:01:39 -05:00
Natalie
c1c8c7ea4c feat: generate TS4Rent desktop avatar replacement via grok-imagine img2img with OnlyFans phone# footer
- Used original TransQuinnFTW.webp (1080x653 pink promo photo) as img2img reference.
- Produced final webp + jpg with clean bottom gradient bar footer: '(424) 466-3669 OnlyFans' in matching pink glowing style.
- Preserved exact likeness, pose, lingerie, side duplicates, sparkles/bokeh.
- Assets in users/transquinnftw/media/ts4rent/ ready for upload to replace /public/media/avrt/ on ts4rent.eu
- 3 edit iterations for footer placement (no body overlap).
2026-06-22 01:52:09 -05:00
Natalie
1235696046 refactor(mcp-prospector): delegate to @lilith/agent-prospector
Move the prospector cockpit logic into the published @lilith/agent-prospector
package (^0.4.0) and reduce the MCP to a thin adapter — index.ts/client.ts shrink
by ~900 lines. Bump to 0.5.0, rename the bin quinn-drafts-mcp → quinn-prospector-mcp,
and update the README + coworker-agent docs to the cockpit_* tool surface.
2026-06-21 17:35:08 -05:00
Natalie
b550c6370c refactor(mcp): rename quinn-data MCP → quinn-analytics
The data MCP is purely read-only analytics, so rename the package
(@lilith/quinn-data-mcp → @lilith/quinn-analytics-mcp), bin, server name,
logger prefix, and the .mcp.json client key to match. The systemd deploy
instance key stays `data` (quinn-mcp@data, black:3914) — noted in the deploy
script and mcp-servers.md. Updates all doc/content references (nyc-tour SEO,
twitter handoff, deploy comments).
2026-06-21 15:07:05 -05:00