Files
penguin-harness/packages/web/src/lib/stat-icons.ts
T
Yaowei Zheng 45bfae6e94 Initialize repository with harness code and assets
Initial import of all source code, config, and README assets: the
packages workspace (cli, core, server, web, docs, landing, skills),
build scripts, tooling config, and CI workflows.

Includes the data-layout revision made on this branch: the local data
root defaults to ~/.penguin/data (PENGUIN_HOME still overrides; the
installer keeps its binaries in ~/.penguin), and every Agent lives
under <project>/agents/<agent>/ — path helpers, the three
agent-enumeration scans, the system prompt, built-in Skills, tests
and docs all follow the new layout.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ihk8iQuo3kv2aPjAYEPuR
2026-07-19 14:06:53 +08:00

35 lines
1.9 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Stat icons (24×24 line paths): **shared as a single source** by the chat
* page header, the chat page stats row, and the Trace page turn cards.
*
* Arrows read by "where the tokens go": **up = input** (sent up to the
* model), **down = output** (returned by the model). These paths used to be
* duplicated across three components, making it easy to flip the direction
* in only one place and leave the others wrong — so they're now consolidated
* here as a single copy.
*/
export const STAT_ICONS = {
/** Input (arrow rising from the baseline: tokens sent up to the model) */
input: "M12 15V5m0 0L8 9m4-4l4 4M4 19h16",
/** Output (arrow falling to the baseline: tokens returned by the model) */
output: "M12 3v10m0 0l-4-4m4 4l4-4M4 19h16",
/** Cache hit (bullseye: the portion of this turn's input that hit cache and didn't need recomputation) */
cacheHit:
"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18zm0-5a4 4 0 1 0 0-8 4 4 0 0 0 0 8zm0-3a1 1 0 1 0 0-2 1 1 0 0 0 0 2z",
/** Token total (stacked cylinders / database: session-level total, used only in the chat page header) */
tokens:
"M4 6c0-1.7 3.6-3 8-3s8 1.3 8 3-3.6 3-8 3-8-1.3-8-3zm0 0v12c0 1.7 3.6 3 8 3s8-1.3 8-3V6M4 12c0 1.7 3.6 3 8 3s8-1.3 8-3",
/** Tool calls (wrench) */
toolCalls: "M14.7 6.3a4 4 0 0 0-5 5L4 17v3h3l5.7-5.7a4 4 0 0 0 5-5l-2.5 2.5-2-2 2.5-2.5z",
/** Output TPS (speedometer: half ring + needle) */
tps: "M5 18a8 8 0 1 1 14 0M12 12l4-3",
/** Elapsed time (clock) */
elapsed: "M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18zm0-14v5l3 2",
/** Cost (dollar sign in a circle) */
cost: "M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18zm0-15v12m2.6-9.3c-.5-.8-1.5-1.2-2.6-1.2-1.5 0-2.7.8-2.7 2 0 2.7 5.4 1.3 5.4 4 0 1.2-1.2 2-2.7 2-1.2 0-2.2-.5-2.7-1.4",
/** Copy */
copy: "M9 9h9v9a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2V9zM7 15H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h7a2 2 0 0 1 2 2v1",
/** Copied (checkmark) */
check: "M5 13l4 4L19 7",
} as const;