Something went wrong. Try again.
source dump of claude code forked from oppi.li/claude-code
Something went wrong. Try again.
1.5 kB · 36 lines
TypeScript
at main
12345678910111213141516171819202122232425262728293031323334353637import { feature } from 'bun:bundle'import type { Message } from '../types/message.js'import type { Attachment } from '../utils/attachments.js'import { getGlobalConfig } from '../utils/config.js'import { getCompanion } from './companion.js'
export function companionIntroText(name: string, species: string): string { return `# Companion
A small ${species} named ${name} sits beside the user's input box and occasionally comments in a speech bubble. You're not ${name} — it's a separate watcher.
When the user addresses ${name} directly (by name), its bubble will answer. Your job in that moment is to stay out of the way: respond in ONE line or less, or just answer any part of the message meant for you. Don't explain that you're not ${name} — they know. Don't narrate what ${name} might say — the bubble handles that.`}
export function getCompanionIntroAttachment( messages: Message[] | undefined,): Attachment[] { if (!feature('BUDDY')) return [] const companion = getCompanion() if (!companion || getGlobalConfig().companionMuted) return []
// Skip if already announced for this companion. for (const msg of messages ?? []) { if (msg.type !== 'attachment') continue if (msg.attachment.type !== 'companion_intro') continue if (msg.attachment.name === companion.name) return [] }
return [ { type: 'companion_intro', name: companion.name, species: companion.species, }, ]}