Add working message vibes for TUI.
Provides context-aware working status messages based on prompt keywords and tool names, with random emoji for visual interest. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
7e03021b25
commit
c18f67d278
1 changed files with 67 additions and 0 deletions
67
src/resources/extensions/sf-tui/vibes.ts
Normal file
67
src/resources/extensions/sf-tui/vibes.ts
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
import type { ExtensionContext } from "@sf-run/pi-coding-agent";
|
||||
|
||||
const EMOJIS = ["✨", "🔥", "🚀", "⚡", "🧠", "🔍", "🛠️", "🎨", "🧪", "📦", "🔮", "🌊", "💫", "🎯", "🏗️", "📝"];
|
||||
|
||||
function emoji(): string {
|
||||
return EMOJIS[Math.floor(Math.random() * EMOJIS.length)];
|
||||
}
|
||||
|
||||
export function setVibeForPrompt(ctx: ExtensionContext, prompt: string): void {
|
||||
if (!ctx.hasUI) return;
|
||||
const p = prompt.toLowerCase();
|
||||
if (p.includes("fix") || p.includes("bug") || p.includes("error") || p.includes("crash")) {
|
||||
return ctx.ui.setWorkingMessage(`${emoji()} Hunting bugs...`);
|
||||
}
|
||||
if (p.includes("test") || p.includes("spec") || p.includes("jest") || p.includes("vitest")) {
|
||||
return ctx.ui.setWorkingMessage(`${emoji()} Writing tests...`);
|
||||
}
|
||||
if (p.includes("refactor") || p.includes("clean") || p.includes("simplify")) {
|
||||
return ctx.ui.setWorkingMessage(`${emoji()} Refactoring...`);
|
||||
}
|
||||
if (p.includes("doc") || p.includes("readme") || p.includes("comment")) {
|
||||
return ctx.ui.setWorkingMessage(`${emoji()} Writing docs...`);
|
||||
}
|
||||
if (p.includes("deploy") || p.includes("release") || p.includes("publish")) {
|
||||
return ctx.ui.setWorkingMessage(`${emoji()} Shipping it...`);
|
||||
}
|
||||
if (p.includes("review") || p.includes("audit") || p.includes("check")) {
|
||||
return ctx.ui.setWorkingMessage(`${emoji()} Reviewing code...`);
|
||||
}
|
||||
if (p.includes("plan") || p.includes("design") || p.includes("architect")) {
|
||||
return ctx.ui.setWorkingMessage(`${emoji()} Architecting...`);
|
||||
}
|
||||
if (p.includes("search") || p.includes("find") || p.includes("lookup")) {
|
||||
return ctx.ui.setWorkingMessage(`${emoji()} Searching...`);
|
||||
}
|
||||
if (p.includes("implement") || p.includes("build") || p.includes("create")) {
|
||||
return ctx.ui.setWorkingMessage(`${emoji()} Building...`);
|
||||
}
|
||||
ctx.ui.setWorkingMessage(`${emoji()} Thinking...`);
|
||||
}
|
||||
|
||||
export function setVibeForTool(ctx: ExtensionContext, toolName: string): void {
|
||||
if (!ctx.hasUI) return;
|
||||
switch (toolName) {
|
||||
case "bash":
|
||||
return ctx.ui.setWorkingMessage(`${emoji()} Running shell spells...`);
|
||||
case "write":
|
||||
return ctx.ui.setWorkingMessage(`${emoji()} Inscribing files...`);
|
||||
case "edit":
|
||||
return ctx.ui.setWorkingMessage(`${emoji()} Patching code...`);
|
||||
case "read":
|
||||
return ctx.ui.setWorkingMessage(`${emoji()} Reading the scrolls...`);
|
||||
case "search-the-web":
|
||||
return ctx.ui.setWorkingMessage(`${emoji()} Searching the web...`);
|
||||
case "browser-navigate":
|
||||
return ctx.ui.setWorkingMessage(`${emoji()} Browsing...`);
|
||||
case "ask_user_questions":
|
||||
return ctx.ui.setWorkingMessage(`${emoji()} Asking questions...`);
|
||||
default:
|
||||
return ctx.ui.setWorkingMessage(`${emoji()} Working...`);
|
||||
}
|
||||
}
|
||||
|
||||
export function clearVibe(ctx: ExtensionContext): void {
|
||||
if (!ctx.hasUI) return;
|
||||
ctx.ui.setWorkingMessage();
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue