mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-25 00:51:20 +00:00
75 lines
1.5 KiB
TypeScript
75 lines
1.5 KiB
TypeScript
/**
|
|
* ANSI Control Characters and Escape Sequence Introducers
|
|
*
|
|
* Based on ECMA-48 / ANSI X3.64 standards.
|
|
*/
|
|
|
|
/**
|
|
* C0 (7-bit) control characters
|
|
*/
|
|
export const C0 = {
|
|
NUL: 0x00,
|
|
SOH: 0x01,
|
|
STX: 0x02,
|
|
ETX: 0x03,
|
|
EOT: 0x04,
|
|
ENQ: 0x05,
|
|
ACK: 0x06,
|
|
BEL: 0x07,
|
|
BS: 0x08,
|
|
HT: 0x09,
|
|
LF: 0x0a,
|
|
VT: 0x0b,
|
|
FF: 0x0c,
|
|
CR: 0x0d,
|
|
SO: 0x0e,
|
|
SI: 0x0f,
|
|
DLE: 0x10,
|
|
DC1: 0x11,
|
|
DC2: 0x12,
|
|
DC3: 0x13,
|
|
DC4: 0x14,
|
|
NAK: 0x15,
|
|
SYN: 0x16,
|
|
ETB: 0x17,
|
|
CAN: 0x18,
|
|
EM: 0x19,
|
|
SUB: 0x1a,
|
|
ESC: 0x1b,
|
|
FS: 0x1c,
|
|
GS: 0x1d,
|
|
RS: 0x1e,
|
|
US: 0x1f,
|
|
DEL: 0x7f
|
|
} as const
|
|
|
|
// String constants for output generation
|
|
export const ESC = '\x1b'
|
|
export const BEL = '\x07'
|
|
export const SEP = ';'
|
|
|
|
/**
|
|
* Escape sequence type introducers (byte after ESC)
|
|
*/
|
|
export const ESC_TYPE = {
|
|
CSI: 0x5b, // [ - Control Sequence Introducer
|
|
OSC: 0x5d, // ] - Operating System Command
|
|
DCS: 0x50, // P - Device Control String
|
|
APC: 0x5f, // _ - Application Program Command
|
|
PM: 0x5e, // ^ - Privacy Message
|
|
SOS: 0x58, // X - Start of String
|
|
ST: 0x5c // \ - String Terminator
|
|
} as const
|
|
|
|
/** Check if a byte is a C0 control character */
|
|
export function isC0(byte: number): boolean {
|
|
return byte < 0x20 || byte === 0x7f
|
|
}
|
|
|
|
/**
|
|
* Check if a byte is an ESC sequence final byte (0-9, :, ;, <, =, >, ?, @ through ~)
|
|
* ESC sequences have a wider final byte range than CSI
|
|
*/
|
|
export function isEscFinal(byte: number): boolean {
|
|
return byte >= 0x30 && byte <= 0x7e
|
|
}
|