cc-face 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +102 -0
- package/dist/bin/cli.d.ts +2 -0
- package/dist/bin/cli.js +142 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/src/config.d.ts +24 -0
- package/dist/src/config.js +32 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/face.d.ts +59 -0
- package/dist/src/face.js +493 -0
- package/dist/src/face.js.map +1 -0
- package/dist/src/frames.d.ts +1 -0
- package/dist/src/frames.js +6 -0
- package/dist/src/frames.js.map +1 -0
- package/dist/src/generator.d.ts +16 -0
- package/dist/src/generator.js +122 -0
- package/dist/src/generator.js.map +1 -0
- package/dist/src/ipc.d.ts +34 -0
- package/dist/src/ipc.js +203 -0
- package/dist/src/ipc.js.map +1 -0
- package/dist/src/loader.d.ts +12 -0
- package/dist/src/loader.js +63 -0
- package/dist/src/loader.js.map +1 -0
- package/dist/src/main.d.ts +2 -0
- package/dist/src/main.js +210 -0
- package/dist/src/main.js.map +1 -0
- package/dist/src/patterns.d.ts +6 -0
- package/dist/src/patterns.js +14 -0
- package/dist/src/patterns.js.map +1 -0
- package/dist/src/pty.d.ts +17 -0
- package/dist/src/pty.js +84 -0
- package/dist/src/pty.js.map +1 -0
- package/dist/src/scroll.d.ts +36 -0
- package/dist/src/scroll.js +56 -0
- package/dist/src/scroll.js.map +1 -0
- package/dist/src/state.d.ts +36 -0
- package/dist/src/state.js +164 -0
- package/dist/src/state.js.map +1 -0
- package/dist/src/theme.d.ts +15 -0
- package/dist/src/theme.js +51 -0
- package/dist/src/theme.js.map +1 -0
- package/dist/src/types.d.ts +60 -0
- package/dist/src/types.js +3 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utils.d.ts +8 -0
- package/dist/src/utils.js +13 -0
- package/dist/src/utils.js.map +1 -0
- package/faces/idle/config.json +7 -0
- package/faces/idle/img/1.jpeg +0 -0
- package/faces/idle/img/10.jpeg +0 -0
- package/faces/idle/img/11.jpeg +0 -0
- package/faces/idle/img/12.jpeg +0 -0
- package/faces/idle/img/13.jpeg +0 -0
- package/faces/idle/img/14.jpeg +0 -0
- package/faces/idle/img/15.jpeg +0 -0
- package/faces/idle/img/16.jpeg +0 -0
- package/faces/idle/img/17.jpeg +0 -0
- package/faces/idle/img/18.jpeg +0 -0
- package/faces/idle/img/19.jpeg +0 -0
- package/faces/idle/img/2.jpeg +0 -0
- package/faces/idle/img/20.jpeg +0 -0
- package/faces/idle/img/21.jpeg +0 -0
- package/faces/idle/img/22.jpeg +0 -0
- package/faces/idle/img/23.jpeg +0 -0
- package/faces/idle/img/24.jpeg +0 -0
- package/faces/idle/img/25.jpeg +0 -0
- package/faces/idle/img/26.jpeg +0 -0
- package/faces/idle/img/27.jpeg +0 -0
- package/faces/idle/img/28.jpeg +0 -0
- package/faces/idle/img/29.jpeg +0 -0
- package/faces/idle/img/3.jpeg +0 -0
- package/faces/idle/img/30.jpeg +0 -0
- package/faces/idle/img/4.jpeg +0 -0
- package/faces/idle/img/5.jpeg +0 -0
- package/faces/idle/img/6.jpeg +0 -0
- package/faces/idle/img/7.jpeg +0 -0
- package/faces/idle/img/8.jpeg +0 -0
- package/faces/idle/img/9.jpeg +0 -0
- package/faces/listening/config.json +5 -0
- package/faces/listening/img/1.jpeg +0 -0
- package/faces/listening/img/10.jpeg +0 -0
- package/faces/listening/img/11.jpeg +0 -0
- package/faces/listening/img/12.jpeg +0 -0
- package/faces/listening/img/13.jpeg +0 -0
- package/faces/listening/img/14.jpeg +0 -0
- package/faces/listening/img/15.jpeg +0 -0
- package/faces/listening/img/16.jpeg +0 -0
- package/faces/listening/img/17.jpeg +0 -0
- package/faces/listening/img/18.jpeg +0 -0
- package/faces/listening/img/19.jpeg +0 -0
- package/faces/listening/img/2.jpeg +0 -0
- package/faces/listening/img/20.jpeg +0 -0
- package/faces/listening/img/21.jpeg +0 -0
- package/faces/listening/img/22.jpeg +0 -0
- package/faces/listening/img/23.jpeg +0 -0
- package/faces/listening/img/24.jpeg +0 -0
- package/faces/listening/img/25.jpeg +0 -0
- package/faces/listening/img/26.jpeg +0 -0
- package/faces/listening/img/27.jpeg +0 -0
- package/faces/listening/img/3.jpeg +0 -0
- package/faces/listening/img/4.jpeg +0 -0
- package/faces/listening/img/5.jpeg +0 -0
- package/faces/listening/img/6.jpeg +0 -0
- package/faces/listening/img/7.jpeg +0 -0
- package/faces/listening/img/8.jpeg +0 -0
- package/faces/listening/img/9.jpeg +0 -0
- package/faces/thinking/config.json +5 -0
- package/faces/thinking/img/1.jpeg +0 -0
- package/faces/thinking/img/10.jpeg +0 -0
- package/faces/thinking/img/11.jpeg +0 -0
- package/faces/thinking/img/12.jpeg +0 -0
- package/faces/thinking/img/13.jpeg +0 -0
- package/faces/thinking/img/14.jpeg +0 -0
- package/faces/thinking/img/15.jpeg +0 -0
- package/faces/thinking/img/16.jpeg +0 -0
- package/faces/thinking/img/17.jpeg +0 -0
- package/faces/thinking/img/18.jpeg +0 -0
- package/faces/thinking/img/19.jpeg +0 -0
- package/faces/thinking/img/2.jpeg +0 -0
- package/faces/thinking/img/20.jpeg +0 -0
- package/faces/thinking/img/3.jpeg +0 -0
- package/faces/thinking/img/4.jpeg +0 -0
- package/faces/thinking/img/5.jpeg +0 -0
- package/faces/thinking/img/6.jpeg +0 -0
- package/faces/thinking/img/7.jpeg +0 -0
- package/faces/thinking/img/8.jpeg +0 -0
- package/faces/thinking/img/9.jpeg +0 -0
- package/faces/typing/config.json +5 -0
- package/faces/typing/img/1.jpeg +0 -0
- package/faces/typing/img/10.jpeg +0 -0
- package/faces/typing/img/11.jpeg +0 -0
- package/faces/typing/img/12.jpeg +0 -0
- package/faces/typing/img/13.jpeg +0 -0
- package/faces/typing/img/14.jpeg +0 -0
- package/faces/typing/img/15.jpeg +0 -0
- package/faces/typing/img/16.jpeg +0 -0
- package/faces/typing/img/17.jpeg +0 -0
- package/faces/typing/img/18.jpeg +0 -0
- package/faces/typing/img/19.jpeg +0 -0
- package/faces/typing/img/2.jpeg +0 -0
- package/faces/typing/img/20.jpeg +0 -0
- package/faces/typing/img/21.jpeg +0 -0
- package/faces/typing/img/22.jpeg +0 -0
- package/faces/typing/img/23.jpeg +0 -0
- package/faces/typing/img/24.jpeg +0 -0
- package/faces/typing/img/25.jpeg +0 -0
- package/faces/typing/img/26.jpeg +0 -0
- package/faces/typing/img/27.jpeg +0 -0
- package/faces/typing/img/28.jpeg +0 -0
- package/faces/typing/img/29.jpeg +0 -0
- package/faces/typing/img/3.jpeg +0 -0
- package/faces/typing/img/30.jpeg +0 -0
- package/faces/typing/img/31.jpeg +0 -0
- package/faces/typing/img/32.jpeg +0 -0
- package/faces/typing/img/4.jpeg +0 -0
- package/faces/typing/img/5.jpeg +0 -0
- package/faces/typing/img/6.jpeg +0 -0
- package/faces/typing/img/7.jpeg +0 -0
- package/faces/typing/img/8.jpeg +0 -0
- package/faces/typing/img/9.jpeg +0 -0
- package/package.json +36 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ColorRole, ThemeMode, ThemeColors } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Detect the terminal background color from the COLORFGBG environment variable.
|
|
4
|
+
* Falls back to 'dark' if not set or unrecognizable.
|
|
5
|
+
*/
|
|
6
|
+
export declare function detectTheme(): 'dark' | 'light';
|
|
7
|
+
/**
|
|
8
|
+
* Return the ThemeColors for the given mode.
|
|
9
|
+
* Resolves 'auto' via detectTheme().
|
|
10
|
+
*/
|
|
11
|
+
export declare function getTheme(mode: ThemeMode): ThemeColors;
|
|
12
|
+
/**
|
|
13
|
+
* Return the ANSI escape code for the given color role.
|
|
14
|
+
*/
|
|
15
|
+
export declare function colorForRole(theme: ThemeColors, role: ColorRole): string;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// ── ANSI color codes ────────────────────────────────────────────────
|
|
2
|
+
const DARK_THEME = {
|
|
3
|
+
outline: '\x1b[36m', // cyan
|
|
4
|
+
eye: '\x1b[97m', // bright white
|
|
5
|
+
mouth: '\x1b[33m', // yellow
|
|
6
|
+
highlight: '\x1b[95m', // bright magenta
|
|
7
|
+
cheek: '\x1b[91m', // bright red
|
|
8
|
+
bg: '', // default
|
|
9
|
+
reset: '\x1b[0m',
|
|
10
|
+
};
|
|
11
|
+
const LIGHT_THEME = {
|
|
12
|
+
outline: '\x1b[34m', // blue
|
|
13
|
+
eye: '\x1b[30m', // black
|
|
14
|
+
mouth: '\x1b[33m', // yellow
|
|
15
|
+
highlight: '\x1b[35m', // magenta
|
|
16
|
+
cheek: '\x1b[31m', // red
|
|
17
|
+
bg: '', // default
|
|
18
|
+
reset: '\x1b[0m',
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Detect the terminal background color from the COLORFGBG environment variable.
|
|
22
|
+
* Falls back to 'dark' if not set or unrecognizable.
|
|
23
|
+
*/
|
|
24
|
+
export function detectTheme() {
|
|
25
|
+
const colorfgbg = process.env.COLORFGBG;
|
|
26
|
+
if (!colorfgbg) {
|
|
27
|
+
return 'dark';
|
|
28
|
+
}
|
|
29
|
+
// COLORFGBG is typically "fg;bg" where bg >= 8 means light background
|
|
30
|
+
const parts = colorfgbg.split(';');
|
|
31
|
+
const bg = parseInt(parts[parts.length - 1], 10);
|
|
32
|
+
if (isNaN(bg)) {
|
|
33
|
+
return 'dark';
|
|
34
|
+
}
|
|
35
|
+
return bg >= 8 ? 'light' : 'dark';
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Return the ThemeColors for the given mode.
|
|
39
|
+
* Resolves 'auto' via detectTheme().
|
|
40
|
+
*/
|
|
41
|
+
export function getTheme(mode) {
|
|
42
|
+
const resolved = mode === 'auto' ? detectTheme() : mode;
|
|
43
|
+
return resolved === 'light' ? LIGHT_THEME : DARK_THEME;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Return the ANSI escape code for the given color role.
|
|
47
|
+
*/
|
|
48
|
+
export function colorForRole(theme, role) {
|
|
49
|
+
return theme[role];
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/theme.ts"],"names":[],"mappings":"AAEA,uEAAuE;AAEvE,MAAM,UAAU,GAAgB;IAC9B,OAAO,EAAE,UAAU,EAAK,OAAO;IAC/B,GAAG,EAAE,UAAU,EAAS,eAAe;IACvC,KAAK,EAAE,UAAU,EAAO,SAAS;IACjC,SAAS,EAAE,UAAU,EAAG,iBAAiB;IACzC,KAAK,EAAE,UAAU,EAAO,aAAa;IACrC,EAAE,EAAE,EAAE,EAAkB,UAAU;IAClC,KAAK,EAAE,SAAS;CACjB,CAAC;AAEF,MAAM,WAAW,GAAgB;IAC/B,OAAO,EAAE,UAAU,EAAK,OAAO;IAC/B,GAAG,EAAE,UAAU,EAAS,QAAQ;IAChC,KAAK,EAAE,UAAU,EAAO,SAAS;IACjC,SAAS,EAAE,UAAU,EAAG,UAAU;IAClC,KAAK,EAAE,UAAU,EAAO,MAAM;IAC9B,EAAE,EAAE,EAAE,EAAkB,UAAU;IAClC,KAAK,EAAE,SAAS;CACjB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IACxC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,sEAAsE;IACtE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACjD,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;QACd,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAe;IACtC,MAAM,QAAQ,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,OAAO,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAkB,EAAE,IAAe;IAC9D,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export type ColorRole = 'outline' | 'eye' | 'mouth' | 'highlight' | 'cheek' | 'bg';
|
|
2
|
+
export interface ColorSpan {
|
|
3
|
+
row: number;
|
|
4
|
+
col: number;
|
|
5
|
+
len: number;
|
|
6
|
+
role: ColorRole;
|
|
7
|
+
}
|
|
8
|
+
export interface Frame {
|
|
9
|
+
art: string[];
|
|
10
|
+
colors?: ColorSpan[];
|
|
11
|
+
}
|
|
12
|
+
export interface AnimationConfig {
|
|
13
|
+
loopDuration: number;
|
|
14
|
+
reverse: boolean;
|
|
15
|
+
gap: number;
|
|
16
|
+
gapMin?: number;
|
|
17
|
+
gapMax?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface Expression {
|
|
20
|
+
name: string;
|
|
21
|
+
frames: Frame[];
|
|
22
|
+
config: AnimationConfig;
|
|
23
|
+
}
|
|
24
|
+
export interface FaceDefinition {
|
|
25
|
+
name: string;
|
|
26
|
+
width: number;
|
|
27
|
+
height: number;
|
|
28
|
+
expressions: Record<string, Expression>;
|
|
29
|
+
}
|
|
30
|
+
export type FaceState = 'idle' | 'typing' | 'thinking' | 'listening';
|
|
31
|
+
export interface StateEvent {
|
|
32
|
+
prev: FaceState;
|
|
33
|
+
next: FaceState;
|
|
34
|
+
timestamp: number;
|
|
35
|
+
}
|
|
36
|
+
export type ThemeMode = 'dark' | 'light' | 'auto';
|
|
37
|
+
export interface ThemeColors {
|
|
38
|
+
outline: string;
|
|
39
|
+
eye: string;
|
|
40
|
+
mouth: string;
|
|
41
|
+
highlight: string;
|
|
42
|
+
cheek: string;
|
|
43
|
+
bg: string;
|
|
44
|
+
reset: string;
|
|
45
|
+
}
|
|
46
|
+
export interface IpcStateMessage {
|
|
47
|
+
state: FaceState;
|
|
48
|
+
ts: number;
|
|
49
|
+
shutdown?: boolean;
|
|
50
|
+
}
|
|
51
|
+
export interface CliOptions {
|
|
52
|
+
facePath?: string;
|
|
53
|
+
socketPath?: string;
|
|
54
|
+
theme: ThemeMode;
|
|
55
|
+
noFace: boolean;
|
|
56
|
+
displayOnly: boolean;
|
|
57
|
+
debug: boolean;
|
|
58
|
+
help: boolean;
|
|
59
|
+
version: boolean;
|
|
60
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,wEAAwE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strip all ANSI escape sequences from a string.
|
|
3
|
+
*
|
|
4
|
+
* Handles:
|
|
5
|
+
* - CSI sequences `ESC [ ... letter`
|
|
6
|
+
* - OSC sequences `ESC ] ... BEL`
|
|
7
|
+
*/
|
|
8
|
+
export function stripAnsi(str) {
|
|
9
|
+
return str
|
|
10
|
+
.replace(/\x1b\[[0-9;]*[A-Za-z]/g, '')
|
|
11
|
+
.replace(/\x1b\][^\x07]*\x07/g, '');
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,GAAG;SACP,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC;SACrC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC"}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "cc-face",
|
|
3
|
+
"version": "0.1.10",
|
|
4
|
+
"description": "Animated ASCII face for Claude Code",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"cc-face": "./dist/bin/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"faces/*/img/**",
|
|
12
|
+
"faces/*/config.json"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"postinstall": "chmod +x node_modules/node-pty/prebuilds/darwin-*/spawn-helper 2>/dev/null || true",
|
|
16
|
+
"prepublishOnly": "npm run build",
|
|
17
|
+
"build": "tsc",
|
|
18
|
+
"dev": "tsx bin/cli.ts",
|
|
19
|
+
"test": "vitest run",
|
|
20
|
+
"test:watch": "vitest"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"node-pty": "^1.0.0",
|
|
24
|
+
"sharp": "^0.34.5"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@types/node": "^22.0.0",
|
|
28
|
+
"tsx": "^4.19.0",
|
|
29
|
+
"typescript": "^5.7.0",
|
|
30
|
+
"vitest": "^3.0.0"
|
|
31
|
+
},
|
|
32
|
+
"license": "MIT",
|
|
33
|
+
"engines": {
|
|
34
|
+
"node": ">=18"
|
|
35
|
+
}
|
|
36
|
+
}
|