Download src/buddy/prompt.ts from chenbhao/codev: direct link, hf CLI and curl.
- Browser
- Download file 1.45 kB
-
https://huggingface.co/chenbhao/codev/resolve/main/src/buddy/prompt.ts
- Command line
-
hf download hf://chenbhao/codev/src/buddy/prompt.ts
-
curl -L -o prompt.ts https://huggingface.co/chenbhao/codev/resolve/main/src/buddy/prompt.ts
1.45 kB
| import { 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, | |
| }, | |
| ] | |
| } | |