mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-07 02:51:50 +00:00
Adds an `evictInkCaches(level)` API that prunes the four hot module-level caches (`widthCache`, `wrapCache`, `sliceCache`, `lineWidthCache`) with either a half-keep LRU pass or a full clear. Wired into: - memoryMonitor: half-prune on 'high', full drop on 'critical', before the heap dump / auto-restart path. Gives long sessions a shot at recovering RSS instead of hard-exiting. - useSessionLifecycle.resetSession: half-prune so a /new session starts with a half-warm pool and the prior session can resume cheaply. Also: lineWidthCache now uses LRU half-eviction on overflow instead of a full `cache.clear()`, matching the other three caches. Comparison vs claude-code: both forks now share the same `prevScreen` blit + dirty-cascade machinery in render-node-to-output. Their smoothness came from sibling-memo discipline (every chrome pane memo'd so dirty cascade doesn't disable transcript blit) — already in place in our appLayout.tsx (TranscriptPane / ComposerPane / StatusRulePane all memo'd). Alt-screen is not the cause; both use it. The remaining gap was per-row CPU on width/wrap/slice, which the previous commit closed.
37 lines
2.5 KiB
TypeScript
37 lines
2.5 KiB
TypeScript
/// <reference path="./ambient.d.ts" />
|
|
export { default as useStderr } from './src/hooks/use-stderr.ts'
|
|
export type { StderrHandle } from './src/hooks/use-stderr.ts'
|
|
export { default as useStdout } from './src/hooks/use-stdout.ts'
|
|
export type { StdoutHandle } from './src/hooks/use-stdout.ts'
|
|
export { Ansi } from './src/ink/Ansi.tsx'
|
|
export { evictInkCaches, inkCacheSizes } from './src/ink/cache-eviction.ts'
|
|
export type { EvictLevel, InkCacheSizes } from './src/ink/cache-eviction.ts'
|
|
export { AlternateScreen } from './src/ink/components/AlternateScreen.tsx'
|
|
export { default as Box } from './src/ink/components/Box.tsx'
|
|
export type { Props as BoxProps } from './src/ink/components/Box.tsx'
|
|
export { default as Link } from './src/ink/components/Link.tsx'
|
|
export { default as Newline } from './src/ink/components/Newline.tsx'
|
|
export { NoSelect } from './src/ink/components/NoSelect.tsx'
|
|
export { RawAnsi } from './src/ink/components/RawAnsi.tsx'
|
|
export { default as ScrollBox } from './src/ink/components/ScrollBox.tsx'
|
|
export type { ScrollBoxHandle, ScrollBoxProps } from './src/ink/components/ScrollBox.tsx'
|
|
export { default as Spacer } from './src/ink/components/Spacer.tsx'
|
|
export type { Props as StdinProps } from './src/ink/components/StdinContext.ts'
|
|
export { default as Text } from './src/ink/components/Text.tsx'
|
|
export type { Props as TextProps } from './src/ink/components/Text.tsx'
|
|
export type { Key } from './src/ink/events/input-event.ts'
|
|
export { default as useApp } from './src/ink/hooks/use-app.ts'
|
|
export { useDeclaredCursor } from './src/ink/hooks/use-declared-cursor.ts'
|
|
export { default as useInput } from './src/ink/hooks/use-input.ts'
|
|
export { useHasSelection, useSelection } from './src/ink/hooks/use-selection.ts'
|
|
export { default as useStdin } from './src/ink/hooks/use-stdin.ts'
|
|
export { useTabStatus } from './src/ink/hooks/use-tab-status.ts'
|
|
export { useTerminalFocus } from './src/ink/hooks/use-terminal-focus.ts'
|
|
export { useTerminalTitle } from './src/ink/hooks/use-terminal-title.ts'
|
|
export { useTerminalViewport } from './src/ink/hooks/use-terminal-viewport.ts'
|
|
export { default as measureElement } from './src/ink/measure-element.ts'
|
|
export { createRoot, default as render, renderSync } from './src/ink/root.ts'
|
|
export type { Instance, RenderOptions, Root } from './src/ink/root.ts'
|
|
export { stringWidth } from './src/ink/stringWidth.ts'
|
|
export { default as TextInput, UncontrolledTextInput } from 'ink-text-input'
|
|
export type { Props as TextInputProps } from 'ink-text-input'
|