From 878da94b7b74e13e2bfac1a7e442654e6afd7e19 Mon Sep 17 00:00:00 2001 From: "shakespeare.diy" Date: Thu, 3 Sep 2026 18:55:54 +0700 Subject: [PATCH] Make Crew Agent genuinely crew-aware; swap bee emoji for Sasquatch avatar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sasquatch now knows the crew it lives on. The agent is seeded with a rich crew dossier โ€” its own upcoming events, recent feed digest, roster size, founder, open call, vibe, band, home spots, website/IG โ€” and the system prompt instructs it to answer crew-specific questions ("what's our next jam?", "who runs this?", "what are we looking for?") directly from memory, while still using CVM tools for wider-network discovery. - useCrewAgentChat: expanded CrewContext + crew dossier + two-mode prompt - CrewDetailPage: wires real crew events + feed digest into the agent ctx - CrewAgentPanel: crew-specific suggestions, crew-aware copy - Replaced ๐Ÿ bee emoji with the Sasquatch mascot avatar everywhere (panel header/rows/empty state, crew page button, CrewForm toggle) Co-authored-by: shakespeare.diy --- src/components/CrewAgentPanel.tsx | 20 +++-- src/components/CrewForm.tsx | 16 +++- src/hooks/useCrewAgentChat.ts | 142 +++++++++++++++++++++++++++--- src/lib/crewAgent.ts | 4 +- src/lib/types.ts | 2 +- src/pages/CrewDetailPage.tsx | 40 +++++++-- 6 files changed, 192 insertions(+), 32 deletions(-) diff --git a/src/components/CrewAgentPanel.tsx b/src/components/CrewAgentPanel.tsx index 9be0dac..e9d6b01 100644 --- a/src/components/CrewAgentPanel.tsx +++ b/src/components/CrewAgentPanel.tsx @@ -128,7 +128,7 @@ function MessageRow({ m, onNavigate }: { m: CrewAgentMessage; onNavigate: () => {isAgent && ( - ๐Ÿ + SQ )}
@@ -149,9 +149,10 @@ function MessageRow({ m, onNavigate }: { m: CrewAgentMessage; onNavigate: () => } const SUGGESTIONS = [ + "What's our next jam?", + 'Who runs this crew?', + 'What are we looking for?', 'Best spots near us?', - 'Any events this month?', - 'Find a filmer nearby', "What's the weather for skating?", ]; @@ -176,13 +177,17 @@ export function CrewAgentPanel({ open, onOpenChange, ctx }: CrewAgentPanelProps) - ๐Ÿ Ask Sasquatch + + + SQ + + Ask Sasquatch Crew Agent - Your crew's AI guide โ€” spots, events, coaches & gear, with live data. + Knows this crew โ€” its jams, roster & open call โ€” plus the wider scene with live data. @@ -191,10 +196,11 @@ export function CrewAgentPanel({ open, onOpenChange, ctx }: CrewAgentPanelProps)
- ๐Ÿ + SQ

- Yo! I'm Sasquatch, {ctx.crewName}'s guide. Ask me anything about your local scene. + Yo! I'm Sasquatch, {ctx.crewName}'s guide. Ask me about the crew โ€” our next jam, + who runs it, what we're after โ€” or the wider scene.

{SUGGESTIONS.map((s) => ( diff --git a/src/components/CrewForm.tsx b/src/components/CrewForm.tsx index 1e28a95..d4b28c1 100644 --- a/src/components/CrewForm.tsx +++ b/src/components/CrewForm.tsx @@ -14,6 +14,7 @@ import { useUploadFile } from '@/hooks/useUploadFile'; import { useToast } from '@/hooks/useToast'; import { useAuthor } from '@/hooks/useAuthor'; import { genUserName } from '@/lib/genUserName'; +import { CREW_AGENT_AVATAR } from '@/lib/crewAgent'; import { SpotPicker } from '@/components/SpotPicker'; import { LabLinkField } from '@/components/LabLinkField'; import { isCrewVideoUrl, parseCrewVideo } from '@/lib/videoEmbed'; @@ -779,13 +780,20 @@ export function CrewForm({ existing }: CrewFormProps) {

- Add Sasquatch, an AI guide for your crew. Members can ask it - about nearby spots, events, coaches and gear โ€” it answers with live SkateSpots data and real links. - Runs right in the browser; no keys or extra setup. It's early (free-tier AI, so occasionally slow). + Add Sasquatch, an AI guide who actually knows your crew. + Members can ask about your next jam, who runs the crew, what you're + looking for and your vibe โ€” plus nearby spots, events, coaches and gear from live SkateSpots + data. Runs right in the browser; no keys or setup. It's early (free-tier AI, so occasionally slow).