@navios/commander-tui 1.3.0 → 1.4.0
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/CHANGELOG.md +25 -0
- package/{src/__tests__/mocks/scm-mock.ts → dist/base/src/__tests__/mocks/scm-mock.d.ts} +3 -1
- package/dist/base/src/__tests__/mocks/scm-mock.d.ts.map +1 -0
- package/dist/base/src/__tests__/setup.d.ts +2 -0
- package/dist/base/src/__tests__/setup.d.ts.map +1 -0
- package/dist/base/src/__tests__/utils/factories.d.ts +67 -0
- package/dist/base/src/__tests__/utils/factories.d.ts.map +1 -0
- package/dist/base/src/__tests__/utils/render-utils.d.ts +21 -0
- package/dist/base/src/__tests__/utils/render-utils.d.ts.map +1 -0
- package/dist/base/src/__tests__/utils/test-container.d.ts +20 -0
- package/dist/base/src/__tests__/utils/test-container.d.ts.map +1 -0
- package/dist/base/src/adapters/interface.d.ts +9 -2
- package/dist/base/src/adapters/interface.d.ts.map +1 -1
- package/dist/base/src/overrides/missing-adapter.override.d.ts +10 -0
- package/dist/base/src/overrides/missing-adapter.override.d.ts.map +1 -1
- package/dist/base/src/schemas/logger-options.d.ts +1 -1
- package/dist/base/src/services/index.d.ts +1 -0
- package/dist/base/src/services/index.d.ts.map +1 -1
- package/dist/base/src/services/logger.d.ts.map +1 -1
- package/dist/base/src/services/readline_prompt.d.ts +27 -0
- package/dist/base/src/services/readline_prompt.d.ts.map +1 -0
- package/dist/base/src/services/screen.d.ts +14 -8
- package/dist/base/src/services/screen.d.ts.map +1 -1
- package/dist/base/src/services/screen_manager.d.ts +62 -12
- package/dist/base/src/services/screen_manager.d.ts.map +1 -1
- package/dist/base/src/types/events.types.d.ts +40 -0
- package/dist/base/src/types/events.types.d.ts.map +1 -0
- package/dist/base/src/types/index.d.ts +1 -0
- package/dist/base/src/types/index.d.ts.map +1 -1
- package/dist/base/src/types/screen.types.d.ts +28 -0
- package/dist/base/src/types/screen.types.d.ts.map +1 -1
- package/dist/base/src/utils/colors/helpers.d.ts +0 -16
- package/dist/base/src/utils/colors/helpers.d.ts.map +1 -1
- package/dist/base/src/utils/index.d.ts +2 -0
- package/dist/base/src/utils/index.d.ts.map +1 -1
- package/dist/base/src/utils/prompt.d.ts +7 -0
- package/dist/base/src/utils/prompt.d.ts.map +1 -0
- package/dist/base/src/utils/runtime.d.ts +10 -0
- package/dist/base/src/utils/runtime.d.ts.map +1 -0
- package/dist/base/src/utils/stdout-printer.d.ts +5 -0
- package/dist/base/src/utils/stdout-printer.d.ts.map +1 -1
- package/dist/base/tsconfig.base.tsbuildinfo +1 -1
- package/dist/base/tsconfig.tsbuildinfo +1 -0
- package/dist/ink/src/adapters/ink/components/file/file_log.d.ts +28 -0
- package/dist/ink/src/adapters/ink/components/file/file_log.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/components/file/index.d.ts +2 -0
- package/dist/ink/src/adapters/ink/components/file/index.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/components/filter/filter_bar.d.ts +7 -0
- package/dist/ink/src/adapters/ink/components/filter/filter_bar.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/components/filter/index.d.ts +2 -0
- package/dist/ink/src/adapters/ink/components/filter/index.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/components/help/help_overlay.d.ts +6 -0
- package/dist/ink/src/adapters/ink/components/help/help_overlay.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/components/help/index.d.ts +2 -0
- package/dist/ink/src/adapters/ink/components/help/index.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/components/index.d.ts +9 -0
- package/dist/ink/src/adapters/ink/components/index.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/components/log/index.d.ts +2 -0
- package/dist/ink/src/adapters/ink/components/log/index.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/components/log/log_message.d.ts +15 -0
- package/dist/ink/src/adapters/ink/components/log/log_message.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/components/prompt/index.d.ts +2 -0
- package/dist/ink/src/adapters/ink/components/prompt/index.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/components/prompt/prompt_renderer.d.ts +6 -0
- package/dist/ink/src/adapters/ink/components/prompt/prompt_renderer.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/components/screen/group_renderer.d.ts +14 -0
- package/dist/ink/src/adapters/ink/components/screen/group_renderer.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/components/screen/index.d.ts +7 -0
- package/dist/ink/src/adapters/ink/components/screen/index.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/components/screen/loading_message.d.ts +6 -0
- package/dist/ink/src/adapters/ink/components/screen/loading_message.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/components/screen/message_renderer.d.ts +6 -0
- package/dist/ink/src/adapters/ink/components/screen/message_renderer.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/components/screen/progress_message.d.ts +6 -0
- package/dist/ink/src/adapters/ink/components/screen/progress_message.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/components/screen/screen_bridge.d.ts +14 -0
- package/dist/ink/src/adapters/ink/components/screen/screen_bridge.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/components/screen/table_message.d.ts +6 -0
- package/dist/ink/src/adapters/ink/components/screen/table_message.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/components/screen_manager_bridge.d.ts +8 -0
- package/dist/ink/src/adapters/ink/components/screen_manager_bridge.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/components/sidebar/index.d.ts +4 -0
- package/dist/ink/src/adapters/ink/components/sidebar/index.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/components/sidebar/sidebar.d.ts +11 -0
- package/dist/ink/src/adapters/ink/components/sidebar/sidebar.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/components/sidebar/sidebar_item.d.ts +9 -0
- package/dist/ink/src/adapters/ink/components/sidebar/sidebar_item.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/components/sidebar/sidebar_separator.d.ts +2 -0
- package/dist/ink/src/adapters/ink/components/sidebar/sidebar_separator.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/context/index.d.ts +2 -0
- package/dist/ink/src/adapters/ink/context/index.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/context/logger_context.d.ts +33 -0
- package/dist/ink/src/adapters/ink/context/logger_context.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/hooks/index.d.ts +2 -0
- package/dist/ink/src/adapters/ink/hooks/index.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/hooks/use_theme.d.ts +7 -0
- package/dist/ink/src/adapters/ink/hooks/use_theme.d.ts.map +1 -0
- package/dist/ink/src/adapters/ink/index.d.ts +18 -0
- package/dist/ink/src/adapters/ink/index.d.ts.map +1 -0
- package/dist/ink/src/adapters/react-shared/hooks/index.d.ts +4 -0
- package/dist/ink/src/adapters/react-shared/hooks/index.d.ts.map +1 -0
- package/dist/ink/src/adapters/react-shared/hooks/use_filter_state.d.ts +18 -0
- package/dist/ink/src/adapters/react-shared/hooks/use_filter_state.d.ts.map +1 -0
- package/dist/ink/src/adapters/react-shared/hooks/use_keyboard_manager.d.ts +26 -0
- package/dist/ink/src/adapters/react-shared/hooks/use_keyboard_manager.d.ts.map +1 -0
- package/dist/ink/src/adapters/react-shared/hooks/use_manager_subscription.d.ts +7 -0
- package/dist/ink/src/adapters/react-shared/hooks/use_manager_subscription.d.ts.map +1 -0
- package/dist/ink/src/adapters/react-shared/index.d.ts +2 -0
- package/dist/ink/src/adapters/react-shared/index.d.ts.map +1 -0
- package/dist/ink/tsconfig.ink.tsbuildinfo +1 -0
- package/dist/react/src/adapters/react-shared/hooks/index.d.ts +4 -0
- package/dist/react/src/adapters/react-shared/hooks/index.d.ts.map +1 -0
- package/dist/react/src/adapters/react-shared/hooks/use_filter_state.d.ts +18 -0
- package/dist/react/src/adapters/react-shared/hooks/use_filter_state.d.ts.map +1 -0
- package/dist/react/src/adapters/react-shared/hooks/use_keyboard_manager.d.ts +26 -0
- package/dist/react/src/adapters/react-shared/hooks/use_keyboard_manager.d.ts.map +1 -0
- package/dist/react/src/adapters/react-shared/hooks/use_manager_subscription.d.ts +7 -0
- package/dist/react/src/adapters/react-shared/hooks/use_manager_subscription.d.ts.map +1 -0
- package/dist/react/src/adapters/react-shared/index.d.ts +2 -0
- package/dist/react/src/adapters/react-shared/index.d.ts.map +1 -0
- package/dist/react/tsconfig.react.tsbuildinfo +1 -1
- package/dist/solid/tsconfig.solid.tsbuildinfo +1 -1
- package/lib/index.cjs +2177 -178
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +942 -78
- package/lib/index.d.cts.map +1 -0
- package/lib/index.d.mts +902 -38
- package/lib/index.d.mts.map +1 -0
- package/lib/index.mjs +2098 -135
- package/lib/index.mjs.map +1 -1
- package/package.json +1 -31
- package/src/__tests__/services/logger.spec.ts +32 -0
- package/src/__tests__/services/screen.spec.ts +106 -95
- package/src/__tests__/utils/factories.ts +2 -0
- package/src/adapters/interface.ts +10 -2
- package/src/overrides/missing-adapter.override.ts +16 -6
- package/src/services/index.ts +1 -0
- package/src/services/logger.ts +7 -1
- package/src/services/readline_prompt.ts +194 -0
- package/src/services/screen.ts +106 -54
- package/src/services/screen_manager.ts +282 -74
- package/src/types/events.types.ts +84 -0
- package/src/types/index.ts +3 -0
- package/src/types/screen.types.ts +34 -0
- package/src/utils/colors/helpers.ts +0 -25
- package/src/utils/index.ts +6 -0
- package/src/utils/prompt.ts +18 -0
- package/src/utils/runtime.ts +14 -0
- package/src/utils/stdout-printer.ts +16 -5
- package/tsconfig.base.json +1 -17
- package/tsconfig.json +1 -6
- package/tsdown.config.mts +13 -70
- package/lib/adapters/react/index.cjs +0 -1768
- package/lib/adapters/react/index.cjs.map +0 -1
- package/lib/adapters/react/index.d.cts +0 -80
- package/lib/adapters/react/index.d.mts +0 -80
- package/lib/adapters/react/index.mjs +0 -1760
- package/lib/adapters/react/index.mjs.map +0 -1
- package/lib/adapters/solid/index.cjs +0 -3855
- package/lib/adapters/solid/index.cjs.map +0 -1
- package/lib/adapters/solid/index.d.cts +0 -74
- package/lib/adapters/solid/index.d.mts +0 -74
- package/lib/adapters/solid/index.mjs +0 -3847
- package/lib/adapters/solid/index.mjs.map +0 -1
- package/lib/filter_engine-DXqu9Vaq.cjs +0 -1836
- package/lib/filter_engine-DXqu9Vaq.cjs.map +0 -1
- package/lib/filter_engine-DmqhEhpA.mjs +0 -1609
- package/lib/filter_engine-DmqhEhpA.mjs.map +0 -1
- package/lib/interface-CTHQ08aY.d.mts +0 -699
- package/lib/interface-DQEIz9Mb.d.cts +0 -699
- package/src/__tests__/components/__snapshots__/filter_bar.spec.tsx.snap +0 -2293
- package/src/__tests__/components/__snapshots__/loading_message.spec.tsx.snap +0 -1414
- package/src/__tests__/components/__snapshots__/log_message.spec.tsx.snap +0 -3245
- package/src/__tests__/components/__snapshots__/progress_message.spec.tsx.snap +0 -1783
- package/src/__tests__/components/__snapshots__/prompt_renderer.spec.tsx.snap +0 -3203
- package/src/__tests__/components/__snapshots__/sidebar.spec.tsx.snap +0 -2857
- package/src/__tests__/components/filter_bar.spec.tsx +0 -190
- package/src/__tests__/components/loading_message.spec.tsx +0 -110
- package/src/__tests__/components/log_message.spec.tsx +0 -166
- package/src/__tests__/components/progress_message.spec.tsx +0 -147
- package/src/__tests__/components/prompt_renderer.spec.tsx +0 -274
- package/src/__tests__/components/sidebar.spec.tsx +0 -322
- package/src/__tests__/utils/render-utils.tsx +0 -39
- package/src/adapters/react/components/file/file_log.tsx +0 -241
- package/src/adapters/react/components/file/index.ts +0 -1
- package/src/adapters/react/components/filter/filter_bar.tsx +0 -79
- package/src/adapters/react/components/filter/index.ts +0 -1
- package/src/adapters/react/components/help/help_overlay.tsx +0 -100
- package/src/adapters/react/components/help/index.ts +0 -1
- package/src/adapters/react/components/log/index.ts +0 -1
- package/src/adapters/react/components/log/log_message.tsx +0 -102
- package/src/adapters/react/components/prompt/index.ts +0 -2
- package/src/adapters/react/components/prompt/prompt_renderer.tsx +0 -346
- package/src/adapters/react/components/screen/group_renderer.tsx +0 -64
- package/src/adapters/react/components/screen/index.ts +0 -6
- package/src/adapters/react/components/screen/loading_message.tsx +0 -43
- package/src/adapters/react/components/screen/message_renderer.tsx +0 -108
- package/src/adapters/react/components/screen/progress_message.tsx +0 -60
- package/src/adapters/react/components/screen/screen_bridge.tsx +0 -149
- package/src/adapters/react/components/screen/table_message.tsx +0 -57
- package/src/adapters/react/components/screen_manager_bridge.tsx +0 -245
- package/src/adapters/react/components/sidebar/index.ts +0 -3
- package/src/adapters/react/components/sidebar/sidebar.tsx +0 -102
- package/src/adapters/react/components/sidebar/sidebar_item.tsx +0 -50
- package/src/adapters/react/components/sidebar/sidebar_separator.tsx +0 -13
- package/src/adapters/react/context/index.ts +0 -1
- package/src/adapters/react/context/logger_context.tsx +0 -109
- package/src/adapters/react/hooks/index.ts +0 -1
- package/src/adapters/react/hooks/use_theme.ts +0 -12
- package/src/adapters/react/index.ts +0 -39
- package/src/adapters/solid/components/file/file_log.tsx +0 -221
- package/src/adapters/solid/components/file/index.ts +0 -1
- package/src/adapters/solid/components/filter/filter_bar.tsx +0 -84
- package/src/adapters/solid/components/filter/index.ts +0 -1
- package/src/adapters/solid/components/help/help_overlay.tsx +0 -106
- package/src/adapters/solid/components/help/index.ts +0 -1
- package/src/adapters/solid/components/log/index.ts +0 -1
- package/src/adapters/solid/components/log/log_message.tsx +0 -92
- package/src/adapters/solid/components/prompt/index.ts +0 -2
- package/src/adapters/solid/components/prompt/prompt_renderer.tsx +0 -350
- package/src/adapters/solid/components/screen/group_renderer.tsx +0 -61
- package/src/adapters/solid/components/screen/index.ts +0 -6
- package/src/adapters/solid/components/screen/loading_message.tsx +0 -39
- package/src/adapters/solid/components/screen/message_renderer.tsx +0 -122
- package/src/adapters/solid/components/screen/progress_message.tsx +0 -61
- package/src/adapters/solid/components/screen/screen_bridge.tsx +0 -155
- package/src/adapters/solid/components/screen/table_message.tsx +0 -58
- package/src/adapters/solid/components/screen_manager_bridge.tsx +0 -243
- package/src/adapters/solid/components/sidebar/index.ts +0 -3
- package/src/adapters/solid/components/sidebar/sidebar.tsx +0 -108
- package/src/adapters/solid/components/sidebar/sidebar_item.tsx +0 -55
- package/src/adapters/solid/components/sidebar/sidebar_separator.tsx +0 -13
- package/src/adapters/solid/context/index.ts +0 -2
- package/src/adapters/solid/context/logger_context.tsx +0 -95
- package/src/adapters/solid/hooks/index.ts +0 -1
- package/src/adapters/solid/hooks/use_theme.ts +0 -12
- package/src/adapters/solid/index.tsx +0 -43
- package/src/adapters/solid/jsx.d.ts +0 -98
- package/tsconfig.react.json +0 -16
- package/tsconfig.solid.json +0 -16
package/lib/index.d.mts
CHANGED
|
@@ -1,10 +1,727 @@
|
|
|
1
|
-
import { $ as FileLogBaseProps, A as ScreenDefinition, B as HelpTheme, C as InputPromptData, Ct as TableMessageData, D as BindOptions, E as PromptData, F as ErrorHighlightTheme, G as SemanticColors, H as PartialTheme, I as FileTheme, J as StatusIndicator, K as SeparatorTheme, L as FilterTheme, M as ScreenProps, N as ScreenStatus, O as FocusArea, P as DeepPartial, Q as ThemePreset, R as GroupTheme, S as InputOptions, St as PromiseOptions, T as MultiChoicePromptData, U as ProgressTheme, V as LogLevelTheme, W as PromptTheme, X as TableTheme, Y as StatusIndicatorsTheme, Z as Theme, _ as ChoiceOption, _t as LogMessageVariant, a as FilterState, at as LogLevelColorMap, b as ConfirmOptions, bt as ProgressHandle, c as hasActiveFilter, ct as VariantColorMap, d as KeyBindingCondition, dt as FileErrorMessageData, et as FileLogDiffProps, f as KeyBindingsConfig, ft as FileMessageData, g as BasePromptData, gt as LogMessageData, h as KeyboardContext, ht as LoadingMessageData, i as ALL_LOG_LEVELS, it as FileLogProps, j as ScreenManagerProps, k as LoggerContextValue, l as KeyBinding, lt as BaseMessage, m as KeyHandler, mt as LoadingHandle, n as AdapterRenderProps, nt as FileLogMode, o as LevelCounts, ot as LogLevelColors, p as KeyEvent, pt as GroupMessageData, q as SidebarTheme, r as AdapterRoot, rt as FileLogPartialProps, s as createDefaultFilterState, st as LogMessageProps, t as AdapterInterface, tt as FileLogFullProps, u as KeyBindingCategory, ut as DiffMessageData, v as ChoiceOptions, vt as MessageData, w as MultiChoiceOptions, x as ConfirmPromptData, xt as ProgressMessageData, y as ChoicePromptData, yt as MessageType, z as HeaderTheme } from "./interface-CTHQ08aY.mjs";
|
|
2
|
-
import { RGBA } from "@opentui/core";
|
|
3
1
|
import { ClassTypeWithInstance, FactoryContext, InjectionToken, LogLevel, LoggerInstance, LoggerService, OnServiceDestroy } from "@navios/core";
|
|
2
|
+
import { EventEmitter } from "node:events";
|
|
3
|
+
import { CliRenderer, RGBA, SyntaxStyle, TreeSitterClient } from "@opentui/core";
|
|
4
|
+
import { ReactNode } from "react";
|
|
4
5
|
import * as zod_v40 from "zod/v4";
|
|
5
6
|
import { z } from "zod/v4";
|
|
6
7
|
import * as zod_v4_core0 from "zod/v4/core";
|
|
7
8
|
|
|
9
|
+
//#region src/types/message.types.d.ts
|
|
10
|
+
type MessageType = 'log' | 'file' | 'diff' | 'fileError' | 'loading' | 'progress' | 'group' | 'table';
|
|
11
|
+
interface BaseMessage {
|
|
12
|
+
id: string;
|
|
13
|
+
type: MessageType;
|
|
14
|
+
timestamp: Date;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Semantic variants for log messages that don't map directly to LogLevel.
|
|
18
|
+
* These affect styling but the underlying LogLevel is used for filtering.
|
|
19
|
+
*/
|
|
20
|
+
type LogMessageVariant = 'success' | 'trace';
|
|
21
|
+
interface LogMessageData extends BaseMessage {
|
|
22
|
+
type: 'log';
|
|
23
|
+
level: LogLevel;
|
|
24
|
+
/** Content is always a string - objects are formatted before storage */
|
|
25
|
+
content: string;
|
|
26
|
+
label?: string;
|
|
27
|
+
trace?: string;
|
|
28
|
+
/** Optional semantic variant for styling (e.g., 'success' shows green even though level is 'log') */
|
|
29
|
+
variant?: LogMessageVariant;
|
|
30
|
+
}
|
|
31
|
+
interface FileMessageData extends BaseMessage {
|
|
32
|
+
type: 'file';
|
|
33
|
+
filePath: string;
|
|
34
|
+
content: string;
|
|
35
|
+
}
|
|
36
|
+
interface DiffMessageData extends BaseMessage {
|
|
37
|
+
type: 'diff';
|
|
38
|
+
filePath: string;
|
|
39
|
+
diff: string;
|
|
40
|
+
view?: 'unified' | 'split';
|
|
41
|
+
}
|
|
42
|
+
interface FileErrorMessageData extends BaseMessage {
|
|
43
|
+
type: 'fileError';
|
|
44
|
+
filePath: string;
|
|
45
|
+
content: string;
|
|
46
|
+
errorLines: number[];
|
|
47
|
+
startLine: number;
|
|
48
|
+
}
|
|
49
|
+
interface LoadingMessageData extends BaseMessage {
|
|
50
|
+
type: 'loading';
|
|
51
|
+
content: string;
|
|
52
|
+
status: 'loading' | 'success' | 'fail';
|
|
53
|
+
resolvedContent?: string;
|
|
54
|
+
}
|
|
55
|
+
interface ProgressMessageData extends BaseMessage {
|
|
56
|
+
type: 'progress';
|
|
57
|
+
label: string;
|
|
58
|
+
current: number;
|
|
59
|
+
total: number;
|
|
60
|
+
status: 'active' | 'complete' | 'failed';
|
|
61
|
+
resolvedContent?: string;
|
|
62
|
+
}
|
|
63
|
+
interface GroupMessageData extends BaseMessage {
|
|
64
|
+
type: 'group';
|
|
65
|
+
label: string;
|
|
66
|
+
collapsed: boolean;
|
|
67
|
+
isEnd: boolean;
|
|
68
|
+
}
|
|
69
|
+
interface TableMessageData extends BaseMessage {
|
|
70
|
+
type: 'table';
|
|
71
|
+
headers: string[];
|
|
72
|
+
rows: string[][];
|
|
73
|
+
title?: string;
|
|
74
|
+
}
|
|
75
|
+
type MessageData = LogMessageData | FileMessageData | DiffMessageData | FileErrorMessageData | LoadingMessageData | ProgressMessageData | GroupMessageData | TableMessageData;
|
|
76
|
+
interface PromiseOptions<T> {
|
|
77
|
+
loading: string;
|
|
78
|
+
success: string | ((data: T) => string);
|
|
79
|
+
error: string | ((error: Error) => string);
|
|
80
|
+
}
|
|
81
|
+
interface LoadingHandle {
|
|
82
|
+
success: (message: string) => void;
|
|
83
|
+
fail: (message: string) => void;
|
|
84
|
+
}
|
|
85
|
+
interface ProgressHandle {
|
|
86
|
+
update: (current: number, label?: string) => void;
|
|
87
|
+
complete: (message?: string) => void;
|
|
88
|
+
fail: (message?: string) => void;
|
|
89
|
+
}
|
|
90
|
+
//#endregion
|
|
91
|
+
//#region src/types/log.types.d.ts
|
|
92
|
+
interface LogLevelColors {
|
|
93
|
+
border: string;
|
|
94
|
+
background: string;
|
|
95
|
+
text?: string;
|
|
96
|
+
}
|
|
97
|
+
type LogLevelColorMap = Record<LogLevel, LogLevelColors>;
|
|
98
|
+
/**
|
|
99
|
+
* Color map for semantic variants (success, trace) that override level colors.
|
|
100
|
+
*/
|
|
101
|
+
type VariantColorMap = Record<LogMessageVariant, LogLevelColors>;
|
|
102
|
+
interface LogMessageProps {
|
|
103
|
+
/** Log level determines the color scheme */
|
|
104
|
+
level: LogLevel;
|
|
105
|
+
/** Optional semantic variant for styling (e.g., 'success' shows green even though level is 'log') */
|
|
106
|
+
variant?: LogMessageVariant;
|
|
107
|
+
/** Message content - can be string or React nodes */
|
|
108
|
+
children: ReactNode;
|
|
109
|
+
/** Optional timestamp to display */
|
|
110
|
+
timestamp?: Date | string;
|
|
111
|
+
/** Optional label/prefix (e.g., "API", "Database") */
|
|
112
|
+
label?: string;
|
|
113
|
+
/** Optional stack trace to display (for trace level) */
|
|
114
|
+
trace?: string;
|
|
115
|
+
/** Optional custom border color (overrides level color) */
|
|
116
|
+
borderColor?: string | RGBA;
|
|
117
|
+
/** Optional custom background color (overrides level color) */
|
|
118
|
+
backgroundColor?: string | RGBA;
|
|
119
|
+
/** Border width style - 'thin' uses left border only, 'thick' uses left+top+bottom */
|
|
120
|
+
borderStyle?: 'thin' | 'thick';
|
|
121
|
+
/** Padding inside the message box */
|
|
122
|
+
padding?: number;
|
|
123
|
+
/** Margin around the message */
|
|
124
|
+
margin?: number;
|
|
125
|
+
}
|
|
126
|
+
//#endregion
|
|
127
|
+
//#region src/types/file.types.d.ts
|
|
128
|
+
type FileLogMode = 'full' | 'diff' | 'partial';
|
|
129
|
+
interface FileLogBaseProps {
|
|
130
|
+
/** File path or name to display in header */
|
|
131
|
+
filePath: string;
|
|
132
|
+
/** Override auto-detected filetype for syntax highlighting */
|
|
133
|
+
filetype?: string;
|
|
134
|
+
/** Show line numbers */
|
|
135
|
+
showLineNumbers?: boolean;
|
|
136
|
+
/** Show header with file path */
|
|
137
|
+
showHeader?: boolean;
|
|
138
|
+
/** Custom header background color */
|
|
139
|
+
headerBackgroundColor?: string | RGBA;
|
|
140
|
+
}
|
|
141
|
+
interface FileLogFullProps extends FileLogBaseProps {
|
|
142
|
+
mode: 'full';
|
|
143
|
+
/** The complete file content */
|
|
144
|
+
content: string;
|
|
145
|
+
}
|
|
146
|
+
interface FileLogDiffProps extends FileLogBaseProps {
|
|
147
|
+
mode: 'diff';
|
|
148
|
+
/** Unified diff string */
|
|
149
|
+
diff: string;
|
|
150
|
+
/** Diff view mode */
|
|
151
|
+
view?: 'unified' | 'split';
|
|
152
|
+
}
|
|
153
|
+
interface FileLogPartialProps extends FileLogBaseProps {
|
|
154
|
+
mode: 'partial';
|
|
155
|
+
/** File content (full or partial) */
|
|
156
|
+
content: string;
|
|
157
|
+
/** Starting line number of the content (1-indexed) */
|
|
158
|
+
startLine: number;
|
|
159
|
+
/** Lines to highlight as errors */
|
|
160
|
+
errorLines?: number[];
|
|
161
|
+
/** Error highlighting colors */
|
|
162
|
+
errorLineBackground?: string | RGBA;
|
|
163
|
+
errorLineBorderColor?: string | RGBA;
|
|
164
|
+
}
|
|
165
|
+
type FileLogProps = FileLogFullProps | FileLogDiffProps | FileLogPartialProps;
|
|
166
|
+
//#endregion
|
|
167
|
+
//#region src/types/theme.types.d.ts
|
|
168
|
+
/**
|
|
169
|
+
* Color scheme for a single log level.
|
|
170
|
+
*/
|
|
171
|
+
interface LogLevelTheme {
|
|
172
|
+
border: string;
|
|
173
|
+
background: string;
|
|
174
|
+
text?: string;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Sidebar color scheme.
|
|
178
|
+
*/
|
|
179
|
+
interface SidebarTheme {
|
|
180
|
+
background?: string;
|
|
181
|
+
selectedBackground: string;
|
|
182
|
+
hoverBackground: string;
|
|
183
|
+
text: string;
|
|
184
|
+
textDim: string;
|
|
185
|
+
border: string;
|
|
186
|
+
badge: string;
|
|
187
|
+
focusBorder: string;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Screen header color scheme.
|
|
191
|
+
*/
|
|
192
|
+
interface HeaderTheme {
|
|
193
|
+
background?: string;
|
|
194
|
+
text: string;
|
|
195
|
+
border: string;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Status indicator with icon and color.
|
|
199
|
+
*/
|
|
200
|
+
interface StatusIndicator {
|
|
201
|
+
icon: string;
|
|
202
|
+
color: string;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Status indicators for all screen states.
|
|
206
|
+
*/
|
|
207
|
+
interface StatusIndicatorsTheme {
|
|
208
|
+
waiting: StatusIndicator;
|
|
209
|
+
pending: StatusIndicator;
|
|
210
|
+
success: StatusIndicator;
|
|
211
|
+
fail: StatusIndicator;
|
|
212
|
+
static: StatusIndicator;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Separator colors for sidebar sections.
|
|
216
|
+
*/
|
|
217
|
+
interface SeparatorTheme {
|
|
218
|
+
line: string;
|
|
219
|
+
text: string;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Progress bar and loading indicator colors.
|
|
223
|
+
*/
|
|
224
|
+
interface ProgressTheme {
|
|
225
|
+
border: string;
|
|
226
|
+
background: string;
|
|
227
|
+
barFilled: string;
|
|
228
|
+
barEmpty: string;
|
|
229
|
+
text: string;
|
|
230
|
+
textDim: string;
|
|
231
|
+
complete: string;
|
|
232
|
+
completeBackground: string;
|
|
233
|
+
failed: string;
|
|
234
|
+
failedBackground: string;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Collapsible group colors.
|
|
238
|
+
*/
|
|
239
|
+
interface GroupTheme {
|
|
240
|
+
border: string;
|
|
241
|
+
background: string;
|
|
242
|
+
headerText: string;
|
|
243
|
+
icon: string;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Table display colors.
|
|
247
|
+
*/
|
|
248
|
+
interface TableTheme {
|
|
249
|
+
border: string;
|
|
250
|
+
background: string;
|
|
251
|
+
headerText: string;
|
|
252
|
+
cellText: string;
|
|
253
|
+
title: string;
|
|
254
|
+
separator: string;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* File display colors.
|
|
258
|
+
*/
|
|
259
|
+
interface FileTheme {
|
|
260
|
+
border: string;
|
|
261
|
+
background: string;
|
|
262
|
+
headerText: string;
|
|
263
|
+
headerBackground: string;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Interactive prompt colors.
|
|
267
|
+
*/
|
|
268
|
+
interface PromptTheme {
|
|
269
|
+
question: string;
|
|
270
|
+
optionText: string;
|
|
271
|
+
optionTextDim: string;
|
|
272
|
+
optionSelected: string;
|
|
273
|
+
optionSelectedBackground: string;
|
|
274
|
+
confirmButton: string;
|
|
275
|
+
cancelButton: string;
|
|
276
|
+
buttonBackground: string;
|
|
277
|
+
buttonSelectedBackground: string;
|
|
278
|
+
inputBorder: string;
|
|
279
|
+
inputBackground: string;
|
|
280
|
+
inputText: string;
|
|
281
|
+
inputPlaceholder: string;
|
|
282
|
+
inputCursor: string;
|
|
283
|
+
border: string;
|
|
284
|
+
focusBorder: string;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Error highlighting colors for file displays.
|
|
288
|
+
*/
|
|
289
|
+
interface ErrorHighlightTheme {
|
|
290
|
+
background: string;
|
|
291
|
+
border: string;
|
|
292
|
+
gutterBackground: string;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Filter bar colors.
|
|
296
|
+
*/
|
|
297
|
+
interface FilterTheme {
|
|
298
|
+
background: string;
|
|
299
|
+
border: string;
|
|
300
|
+
text: string;
|
|
301
|
+
textDim: string;
|
|
302
|
+
inputBackground: string;
|
|
303
|
+
inputText: string;
|
|
304
|
+
inputPlaceholder: string;
|
|
305
|
+
cursor: string;
|
|
306
|
+
activeLevel: string;
|
|
307
|
+
inactiveLevel: string;
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Help overlay colors.
|
|
311
|
+
*/
|
|
312
|
+
interface HelpTheme {
|
|
313
|
+
background: string;
|
|
314
|
+
border: string;
|
|
315
|
+
title: string;
|
|
316
|
+
category: string;
|
|
317
|
+
key: string;
|
|
318
|
+
description: string;
|
|
319
|
+
hint: string;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* General semantic colors.
|
|
323
|
+
*/
|
|
324
|
+
interface SemanticColors {
|
|
325
|
+
primary: string;
|
|
326
|
+
secondary: string;
|
|
327
|
+
success: string;
|
|
328
|
+
warning: string;
|
|
329
|
+
error: string;
|
|
330
|
+
muted: string;
|
|
331
|
+
background?: string;
|
|
332
|
+
foreground: string;
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Complete theme definition.
|
|
336
|
+
*/
|
|
337
|
+
interface Theme {
|
|
338
|
+
/** Theme identifier */
|
|
339
|
+
name: string;
|
|
340
|
+
/** Log level color schemes */
|
|
341
|
+
logLevels: Record<LogLevel, LogLevelTheme>;
|
|
342
|
+
/** Sidebar colors */
|
|
343
|
+
sidebar: SidebarTheme;
|
|
344
|
+
/** Screen header colors */
|
|
345
|
+
header: HeaderTheme;
|
|
346
|
+
/** Status indicator colors and icons */
|
|
347
|
+
statusIndicators: StatusIndicatorsTheme;
|
|
348
|
+
/** Separator colors */
|
|
349
|
+
separator: SeparatorTheme;
|
|
350
|
+
/** Progress bar colors */
|
|
351
|
+
progress: ProgressTheme;
|
|
352
|
+
/** Collapsible group colors */
|
|
353
|
+
group: GroupTheme;
|
|
354
|
+
/** Table display colors */
|
|
355
|
+
table: TableTheme;
|
|
356
|
+
/** File display colors */
|
|
357
|
+
file: FileTheme;
|
|
358
|
+
/** Prompt colors */
|
|
359
|
+
prompt: PromptTheme;
|
|
360
|
+
/** Error highlighting colors */
|
|
361
|
+
errorHighlight: ErrorHighlightTheme;
|
|
362
|
+
/** Filter bar colors */
|
|
363
|
+
filter: FilterTheme;
|
|
364
|
+
/** Help overlay colors */
|
|
365
|
+
help: HelpTheme;
|
|
366
|
+
/** General semantic colors */
|
|
367
|
+
colors: SemanticColors;
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Theme preset names.
|
|
371
|
+
*/
|
|
372
|
+
type ThemePreset = 'dark' | 'light' | 'high-contrast';
|
|
373
|
+
/**
|
|
374
|
+
* Deep partial type for theme overrides.
|
|
375
|
+
*/
|
|
376
|
+
type DeepPartial<T> = { [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P] };
|
|
377
|
+
/**
|
|
378
|
+
* Partial theme for creating custom themes.
|
|
379
|
+
*/
|
|
380
|
+
type PartialTheme = DeepPartial<Theme>;
|
|
381
|
+
//#endregion
|
|
382
|
+
//#region src/types/screen.types.d.ts
|
|
383
|
+
interface ScreenProps {
|
|
384
|
+
/** Screen title/name displayed in header */
|
|
385
|
+
name: string;
|
|
386
|
+
/** Child log messages/file logs */
|
|
387
|
+
children: ReactNode;
|
|
388
|
+
/** Enable auto-scroll to bottom on new content */
|
|
389
|
+
stickyScroll?: boolean;
|
|
390
|
+
/** Show scroll position indicator */
|
|
391
|
+
showScrollIndicator?: boolean;
|
|
392
|
+
/** Screen header background color */
|
|
393
|
+
headerBackgroundColor?: string | RGBA;
|
|
394
|
+
/** Screen header text color */
|
|
395
|
+
headerTextColor?: string | RGBA;
|
|
396
|
+
/** Whether this screen is currently focused */
|
|
397
|
+
focused?: boolean;
|
|
398
|
+
/** Callback when screen is scrolled */
|
|
399
|
+
onScroll?: (scrollTop: number, scrollHeight: number) => void;
|
|
400
|
+
}
|
|
401
|
+
interface ScreenDefinition {
|
|
402
|
+
/** Unique screen identifier */
|
|
403
|
+
id: string;
|
|
404
|
+
/** Display name for sidebar */
|
|
405
|
+
name: string;
|
|
406
|
+
/** Optional icon/badge character */
|
|
407
|
+
icon?: string;
|
|
408
|
+
/** Unread/notification count */
|
|
409
|
+
badgeCount?: number;
|
|
410
|
+
}
|
|
411
|
+
interface ScreenManagerProps {
|
|
412
|
+
/** Screen definitions for the sidebar */
|
|
413
|
+
screens: ScreenDefinition[];
|
|
414
|
+
/** Currently active screen ID */
|
|
415
|
+
activeScreenId: string;
|
|
416
|
+
/** Callback when screen selection changes */
|
|
417
|
+
onScreenChange?: (screenId: string) => void;
|
|
418
|
+
/** Screen content - should be conditionally rendered based on activeScreenId */
|
|
419
|
+
children: ReactNode;
|
|
420
|
+
/** Force show/hide sidebar (overrides auto behavior) */
|
|
421
|
+
sidebarVisible?: boolean;
|
|
422
|
+
/** Callback when sidebar visibility changes */
|
|
423
|
+
onSidebarVisibilityChange?: (visible: boolean) => void;
|
|
424
|
+
/** Sidebar width (columns) */
|
|
425
|
+
sidebarWidth?: number;
|
|
426
|
+
/** Sidebar position */
|
|
427
|
+
sidebarPosition?: 'left' | 'right';
|
|
428
|
+
/** Key to toggle sidebar visibility */
|
|
429
|
+
toggleSidebarKey?: string;
|
|
430
|
+
/** Sidebar header title */
|
|
431
|
+
sidebarTitle?: string;
|
|
432
|
+
}
|
|
433
|
+
type FocusArea = 'sidebar' | 'content';
|
|
434
|
+
interface LoggerContextValue {
|
|
435
|
+
/** Shared SyntaxStyle instance for code highlighting */
|
|
436
|
+
syntaxStyle?: SyntaxStyle;
|
|
437
|
+
/** Shared TreeSitterClient for parsing */
|
|
438
|
+
treeSitterClient?: TreeSitterClient;
|
|
439
|
+
/** Default colors for log levels (derived from theme for backwards compatibility) */
|
|
440
|
+
levelColors: LogLevelColorMap;
|
|
441
|
+
/** Current theme */
|
|
442
|
+
theme: Theme;
|
|
443
|
+
}
|
|
444
|
+
type ScreenStatus = 'waiting' | 'pending' | 'success' | 'fail' | 'static';
|
|
445
|
+
/**
|
|
446
|
+
* Render mode determines how the TUI operates.
|
|
447
|
+
* This is set during bind() and affects prompts, screen printing, and exit behavior.
|
|
448
|
+
*/
|
|
449
|
+
declare enum RenderMode {
|
|
450
|
+
/** bind() never called - screens print on completion, prompts return defaults */
|
|
451
|
+
UNBOUND = "unbound",
|
|
452
|
+
/** bind() called with useOpenTUI: false - stdout mode with readline prompts */
|
|
453
|
+
STDOUT_INTERACTIVE = "stdout",
|
|
454
|
+
/** bind() called with useOpenTUI: true but adapter unavailable - fallback to stdout with warning */
|
|
455
|
+
STDOUT_FALLBACK = "fallback",
|
|
456
|
+
/** Full TUI rendering active with adapter */
|
|
457
|
+
TUI_ACTIVE = "tui",
|
|
458
|
+
}
|
|
459
|
+
interface BindOptions {
|
|
460
|
+
exitOnCtrlC?: boolean;
|
|
461
|
+
sidebarWidth?: number;
|
|
462
|
+
sidebarPosition?: 'left' | 'right';
|
|
463
|
+
sidebarTitle?: string;
|
|
464
|
+
/** Auto close after all screens complete successfully (delay in ms, default 5000) */
|
|
465
|
+
autoClose?: boolean | number;
|
|
466
|
+
/** Theme to use for the TUI (theme object or preset name) */
|
|
467
|
+
theme?: Theme | ThemePreset;
|
|
468
|
+
/** Enable mouse support (default: true) */
|
|
469
|
+
useMouse?: boolean;
|
|
470
|
+
/**
|
|
471
|
+
* Use OpenTUI for terminal rendering.
|
|
472
|
+
* When true: Full TUI with sidebar, scrolling, interactive prompts.
|
|
473
|
+
* When false: Stdout mode - static screens print immediately, others on completion.
|
|
474
|
+
* Default: true for Node.js, false for Bun (OpenTUI not supported).
|
|
475
|
+
*/
|
|
476
|
+
useOpenTUI?: boolean;
|
|
477
|
+
}
|
|
478
|
+
interface SetupOptions {
|
|
479
|
+
/** Theme to use for the TUI (theme object or preset name) */
|
|
480
|
+
theme?: Theme | ThemePreset;
|
|
481
|
+
/** Global log levels filter - only these levels will be displayed across all loggers */
|
|
482
|
+
logLevels?: LogLevel[];
|
|
483
|
+
}
|
|
484
|
+
//#endregion
|
|
485
|
+
//#region src/types/prompt.types.d.ts
|
|
486
|
+
interface ChoiceOption {
|
|
487
|
+
label: string;
|
|
488
|
+
value: string;
|
|
489
|
+
/** If true, this option allows text input */
|
|
490
|
+
input?: boolean;
|
|
491
|
+
}
|
|
492
|
+
interface BasePromptData {
|
|
493
|
+
id: string;
|
|
494
|
+
timestamp: Date;
|
|
495
|
+
resolved: boolean;
|
|
496
|
+
/** Auto-resolve timeout in ms */
|
|
497
|
+
timeout?: number;
|
|
498
|
+
/** Timestamp when timeout started */
|
|
499
|
+
timeoutStarted?: number;
|
|
500
|
+
}
|
|
501
|
+
interface ChoicePromptData extends BasePromptData {
|
|
502
|
+
type: 'choice';
|
|
503
|
+
question: string;
|
|
504
|
+
choices: ChoiceOption[];
|
|
505
|
+
defaultChoice: string;
|
|
506
|
+
selectedIndex: number;
|
|
507
|
+
inputMode: boolean;
|
|
508
|
+
inputValue: string;
|
|
509
|
+
resolvedValue?: string;
|
|
510
|
+
}
|
|
511
|
+
interface ConfirmPromptData extends BasePromptData {
|
|
512
|
+
type: 'confirm';
|
|
513
|
+
question: string;
|
|
514
|
+
confirmText: string;
|
|
515
|
+
cancelText: string;
|
|
516
|
+
defaultValue: boolean;
|
|
517
|
+
selectedValue: boolean;
|
|
518
|
+
resolvedValue?: boolean;
|
|
519
|
+
}
|
|
520
|
+
interface InputPromptData extends BasePromptData {
|
|
521
|
+
type: 'input';
|
|
522
|
+
question: string;
|
|
523
|
+
placeholder: string;
|
|
524
|
+
defaultValue: string;
|
|
525
|
+
value: string;
|
|
526
|
+
resolvedValue?: string;
|
|
527
|
+
}
|
|
528
|
+
interface MultiChoicePromptData extends BasePromptData {
|
|
529
|
+
type: 'multiChoice';
|
|
530
|
+
question: string;
|
|
531
|
+
choices: ChoiceOption[];
|
|
532
|
+
selectedIndices: Set<number>;
|
|
533
|
+
focusedIndex: number;
|
|
534
|
+
minSelect: number;
|
|
535
|
+
maxSelect: number;
|
|
536
|
+
resolvedValues?: string[];
|
|
537
|
+
}
|
|
538
|
+
type PromptData = ChoicePromptData | ConfirmPromptData | InputPromptData | MultiChoicePromptData;
|
|
539
|
+
interface ChoiceOptions {
|
|
540
|
+
question: string;
|
|
541
|
+
choices: ChoiceOption[];
|
|
542
|
+
defaultChoice?: string;
|
|
543
|
+
/** Auto-resolve with default after timeout (ms) */
|
|
544
|
+
timeout?: number;
|
|
545
|
+
}
|
|
546
|
+
interface ConfirmOptions {
|
|
547
|
+
question: string;
|
|
548
|
+
confirmText?: string;
|
|
549
|
+
cancelText?: string;
|
|
550
|
+
defaultValue?: boolean;
|
|
551
|
+
/** Auto-resolve with default after timeout (ms) */
|
|
552
|
+
timeout?: number;
|
|
553
|
+
}
|
|
554
|
+
interface InputOptions {
|
|
555
|
+
question: string;
|
|
556
|
+
placeholder?: string;
|
|
557
|
+
defaultValue?: string;
|
|
558
|
+
/** Auto-resolve with default after timeout (ms) */
|
|
559
|
+
timeout?: number;
|
|
560
|
+
}
|
|
561
|
+
interface MultiChoiceOptions {
|
|
562
|
+
question: string;
|
|
563
|
+
choices: ChoiceOption[];
|
|
564
|
+
defaultChoices?: string[];
|
|
565
|
+
minSelect?: number;
|
|
566
|
+
maxSelect?: number;
|
|
567
|
+
/** Auto-resolve with default after timeout (ms) */
|
|
568
|
+
timeout?: number;
|
|
569
|
+
}
|
|
570
|
+
//#endregion
|
|
571
|
+
//#region src/types/keyboard.types.d.ts
|
|
572
|
+
/**
|
|
573
|
+
* Key event from the terminal.
|
|
574
|
+
*/
|
|
575
|
+
interface KeyEvent {
|
|
576
|
+
name: string;
|
|
577
|
+
sequence?: string;
|
|
578
|
+
ctrl?: boolean;
|
|
579
|
+
meta?: boolean;
|
|
580
|
+
shift?: boolean;
|
|
581
|
+
}
|
|
582
|
+
/**
|
|
583
|
+
* Context available to keyboard handlers.
|
|
584
|
+
*/
|
|
585
|
+
interface KeyboardContext {
|
|
586
|
+
/** Has multiple screens (sidebar visible) */
|
|
587
|
+
hasSidebar: boolean;
|
|
588
|
+
/** Currently focused area */
|
|
589
|
+
focusArea: FocusArea;
|
|
590
|
+
/** Whether a prompt is active */
|
|
591
|
+
hasPrompt: boolean;
|
|
592
|
+
/** Whether prompt is in text input mode */
|
|
593
|
+
inInputMode: boolean;
|
|
594
|
+
/** Whether filter bar is visible */
|
|
595
|
+
isFilterActive: boolean;
|
|
596
|
+
/** Whether help overlay is visible */
|
|
597
|
+
isHelpVisible: boolean;
|
|
598
|
+
}
|
|
599
|
+
/**
|
|
600
|
+
* Handler function for a key binding.
|
|
601
|
+
* Return true to prevent further processing, false/void to continue.
|
|
602
|
+
*/
|
|
603
|
+
type KeyHandler = (key: KeyEvent, context: KeyboardContext) => boolean | void;
|
|
604
|
+
/**
|
|
605
|
+
* Category for organizing bindings in help overlay.
|
|
606
|
+
*/
|
|
607
|
+
type KeyBindingCategory = 'general' | 'navigation' | 'screen' | 'prompt' | 'filter';
|
|
608
|
+
/**
|
|
609
|
+
* Condition for when a binding is active.
|
|
610
|
+
*/
|
|
611
|
+
interface KeyBindingCondition {
|
|
612
|
+
hasPrompt?: boolean;
|
|
613
|
+
inInputMode?: boolean;
|
|
614
|
+
focusArea?: FocusArea;
|
|
615
|
+
isFilterActive?: boolean;
|
|
616
|
+
isHelpVisible?: boolean;
|
|
617
|
+
hasSidebar?: boolean;
|
|
618
|
+
}
|
|
619
|
+
/**
|
|
620
|
+
* A single key binding definition.
|
|
621
|
+
*/
|
|
622
|
+
interface KeyBinding {
|
|
623
|
+
/** Key name(s) that trigger this binding */
|
|
624
|
+
key: string | string[];
|
|
625
|
+
/** Require Ctrl modifier */
|
|
626
|
+
ctrl?: boolean;
|
|
627
|
+
/** Require Meta/Cmd modifier */
|
|
628
|
+
meta?: boolean;
|
|
629
|
+
/** Require Shift modifier (for capital letters) */
|
|
630
|
+
shift?: boolean;
|
|
631
|
+
/** Handler function */
|
|
632
|
+
handler: KeyHandler;
|
|
633
|
+
/** Description for help overlay */
|
|
634
|
+
description: string;
|
|
635
|
+
/** Category for grouping in help */
|
|
636
|
+
category: KeyBindingCategory;
|
|
637
|
+
/** Condition when this binding is active */
|
|
638
|
+
when?: KeyBindingCondition;
|
|
639
|
+
/** Priority (higher = checked first, default 0) */
|
|
640
|
+
priority?: number;
|
|
641
|
+
}
|
|
642
|
+
/**
|
|
643
|
+
* Configuration for the keyboard manager.
|
|
644
|
+
*/
|
|
645
|
+
interface KeyBindingsConfig {
|
|
646
|
+
/** Custom bindings (added to defaults) */
|
|
647
|
+
bindings?: KeyBinding[];
|
|
648
|
+
/** Override specific default bindings by key */
|
|
649
|
+
overrides?: Record<string, Partial<KeyBinding>>;
|
|
650
|
+
/** Disable specific keys */
|
|
651
|
+
disabled?: string[];
|
|
652
|
+
}
|
|
653
|
+
//#endregion
|
|
654
|
+
//#region src/types/filter.types.d.ts
|
|
655
|
+
/**
|
|
656
|
+
* Filter state for log filtering.
|
|
657
|
+
*/
|
|
658
|
+
interface FilterState {
|
|
659
|
+
/** Which log levels are enabled (shown) */
|
|
660
|
+
enabledLevels: Set<LogLevel>;
|
|
661
|
+
/** Text search query */
|
|
662
|
+
searchQuery: string;
|
|
663
|
+
/** Whether the filter bar is visible */
|
|
664
|
+
isVisible: boolean;
|
|
665
|
+
/** Which filter field is focused */
|
|
666
|
+
focusedField: 'search' | 'levels';
|
|
667
|
+
}
|
|
668
|
+
/**
|
|
669
|
+
* All log levels in order.
|
|
670
|
+
*/
|
|
671
|
+
declare const ALL_LOG_LEVELS: LogLevel[];
|
|
672
|
+
/**
|
|
673
|
+
* Create a default filter state.
|
|
674
|
+
*/
|
|
675
|
+
declare function createDefaultFilterState(): FilterState;
|
|
676
|
+
/**
|
|
677
|
+
* Check if any filtering is active.
|
|
678
|
+
*/
|
|
679
|
+
declare function hasActiveFilter(filter: FilterState): boolean;
|
|
680
|
+
/**
|
|
681
|
+
* Level counts for display.
|
|
682
|
+
*/
|
|
683
|
+
type LevelCounts = Record<LogLevel, number>;
|
|
684
|
+
//#endregion
|
|
685
|
+
//#region src/types/events.types.d.ts
|
|
686
|
+
interface ScreenManagerEventMap {
|
|
687
|
+
'screen:added': [screenId: string];
|
|
688
|
+
'screen:removed': [screenId: string];
|
|
689
|
+
'screen:reordered': [];
|
|
690
|
+
'activeScreen:changed': [screenId: string | null];
|
|
691
|
+
'focus:changed': [area: FocusArea];
|
|
692
|
+
'sidebar:indexChanged': [index: number];
|
|
693
|
+
'mode:changed': [mode: RenderMode];
|
|
694
|
+
}
|
|
695
|
+
type ScreenManagerEventType = keyof ScreenManagerEventMap;
|
|
696
|
+
/**
|
|
697
|
+
* All manager events that adapters typically subscribe to for re-renders.
|
|
698
|
+
*/
|
|
699
|
+
declare const MANAGER_EVENTS: ScreenManagerEventType[];
|
|
700
|
+
interface ScreenEventMap {
|
|
701
|
+
'message:added': [messageId: string];
|
|
702
|
+
'message:updated': [messageId: string];
|
|
703
|
+
'messages:cleared': [];
|
|
704
|
+
'status:changed': [status: ScreenStatus];
|
|
705
|
+
'visibility:changed': [hidden: boolean];
|
|
706
|
+
'badge:changed': [count: number];
|
|
707
|
+
'prompt:activated': [];
|
|
708
|
+
'prompt:updated': [];
|
|
709
|
+
'prompt:resolved': [];
|
|
710
|
+
}
|
|
711
|
+
type ScreenEventType = keyof ScreenEventMap;
|
|
712
|
+
/**
|
|
713
|
+
* All screen events that adapters typically subscribe to for re-renders.
|
|
714
|
+
*/
|
|
715
|
+
declare const SCREEN_EVENTS: ScreenEventType[];
|
|
716
|
+
/**
|
|
717
|
+
* Sidebar-specific events that require re-render.
|
|
718
|
+
*/
|
|
719
|
+
declare const SIDEBAR_EVENTS: ScreenManagerEventType[];
|
|
720
|
+
/**
|
|
721
|
+
* Content area events that affect active screen changes.
|
|
722
|
+
*/
|
|
723
|
+
declare const CONTENT_MANAGER_EVENTS: ScreenManagerEventType[];
|
|
724
|
+
//#endregion
|
|
8
725
|
//#region src/schemas/screen-options.d.ts
|
|
9
726
|
declare const ScreenOptionsSchema: z.ZodObject<{
|
|
10
727
|
name: z.ZodString;
|
|
@@ -248,21 +965,6 @@ declare const PROMPT_COLORS: {
|
|
|
248
965
|
};
|
|
249
966
|
//#endregion
|
|
250
967
|
//#region src/utils/colors/helpers.d.ts
|
|
251
|
-
/**
|
|
252
|
-
* Creates a tinted (subtle) version of a color by setting alpha.
|
|
253
|
-
*
|
|
254
|
-
* @param color - The base color (hex string or RGBA)
|
|
255
|
-
* @param alpha - Target alpha value (0-1), default 0.08 for subtle tinting
|
|
256
|
-
* @returns New RGBA with adjusted alpha
|
|
257
|
-
*/
|
|
258
|
-
declare function createTintedColor(color: string | RGBA, alpha?: number): RGBA;
|
|
259
|
-
/**
|
|
260
|
-
* Creates a more prominent version of a color for borders.
|
|
261
|
-
*
|
|
262
|
-
* @param color - The base color
|
|
263
|
-
* @param alpha - Target alpha, default 1.0 for solid borders
|
|
264
|
-
*/
|
|
265
|
-
declare function createBorderColor(color: string | RGBA, alpha?: number): RGBA;
|
|
266
968
|
/**
|
|
267
969
|
* Gets colors for a specific log level.
|
|
268
970
|
*
|
|
@@ -292,6 +994,11 @@ declare function resolveFiletype(filePath: string): string | undefined;
|
|
|
292
994
|
declare function getFileName(filePath: string): string;
|
|
293
995
|
//#endregion
|
|
294
996
|
//#region src/utils/stdout-printer.d.ts
|
|
997
|
+
/**
|
|
998
|
+
* Print a single message to stdout with optional screen name prefix.
|
|
999
|
+
* Used for immediate output in stdout mode (when OpenTUI is not active).
|
|
1000
|
+
*/
|
|
1001
|
+
declare function printSingleMessage(message: MessageData, screenName?: string, isError?: boolean): void;
|
|
295
1002
|
/**
|
|
296
1003
|
* Print all messages to stdout (or stderr if isError)
|
|
297
1004
|
*/
|
|
@@ -307,8 +1014,26 @@ declare function formatObject(obj: unknown, depth?: number, currentDepth?: numbe
|
|
|
307
1014
|
*/
|
|
308
1015
|
declare function captureTrace(offset?: number): string;
|
|
309
1016
|
//#endregion
|
|
1017
|
+
//#region src/utils/runtime.d.ts
|
|
1018
|
+
/**
|
|
1019
|
+
* Detect if running in Bun environment (OpenTUI is not supported in Bun)
|
|
1020
|
+
*/
|
|
1021
|
+
declare function isBunRuntime(): boolean;
|
|
1022
|
+
/**
|
|
1023
|
+
* Dynamic import that bypasses bundler static analysis.
|
|
1024
|
+
* Uses Function constructor to prevent bundlers from resolving the import at build time.
|
|
1025
|
+
*/
|
|
1026
|
+
declare function dynamicImport<T = unknown>(modulePath: string): Promise<T>;
|
|
1027
|
+
//#endregion
|
|
1028
|
+
//#region src/utils/prompt.d.ts
|
|
1029
|
+
/**
|
|
1030
|
+
* Get the default value for a prompt based on its type.
|
|
1031
|
+
* Used for resolving prompts when no interaction is possible.
|
|
1032
|
+
*/
|
|
1033
|
+
declare function getPromptDefaultValue(prompt: PromptData): string | boolean | string[];
|
|
1034
|
+
//#endregion
|
|
310
1035
|
//#region src/services/screen.d.ts
|
|
311
|
-
declare class ScreenInstance {
|
|
1036
|
+
declare class ScreenInstance extends EventEmitter<ScreenEventMap> {
|
|
312
1037
|
private id;
|
|
313
1038
|
private name;
|
|
314
1039
|
private icon?;
|
|
@@ -317,7 +1042,6 @@ declare class ScreenInstance {
|
|
|
317
1042
|
private hidden;
|
|
318
1043
|
private messages;
|
|
319
1044
|
private manager;
|
|
320
|
-
private changeListeners;
|
|
321
1045
|
private printFn;
|
|
322
1046
|
private hasPrinted;
|
|
323
1047
|
private version;
|
|
@@ -345,7 +1069,12 @@ declare class ScreenInstance {
|
|
|
345
1069
|
hide(): this;
|
|
346
1070
|
getStatus(): ScreenStatus;
|
|
347
1071
|
/**
|
|
348
|
-
*
|
|
1072
|
+
* Check if a log level is enabled globally via the ScreenManager.
|
|
1073
|
+
* Returns true if no manager is set or if the level is allowed.
|
|
1074
|
+
*/
|
|
1075
|
+
isLogLevelEnabled(level: LogLevel): boolean;
|
|
1076
|
+
/**
|
|
1077
|
+
* Set screen status. When success/fail and not in TUI mode, prints to stdout/stderr
|
|
349
1078
|
*/
|
|
350
1079
|
setStatus(status: ScreenStatus): this;
|
|
351
1080
|
/**
|
|
@@ -353,7 +1082,8 @@ declare class ScreenInstance {
|
|
|
353
1082
|
*/
|
|
354
1083
|
isComplete(): boolean;
|
|
355
1084
|
/**
|
|
356
|
-
* Check if this screen has been printed to console
|
|
1085
|
+
* Check if this screen has been printed to console.
|
|
1086
|
+
* Static screens in non-TUI modes are considered printed as they print incrementally.
|
|
357
1087
|
*/
|
|
358
1088
|
hasPrintedToConsole(): boolean;
|
|
359
1089
|
/**
|
|
@@ -456,10 +1186,9 @@ declare class ScreenInstance {
|
|
|
456
1186
|
*/
|
|
457
1187
|
private activateNextPrompt;
|
|
458
1188
|
/**
|
|
459
|
-
*
|
|
1189
|
+
* Print a single message immediately to stdout (for static screens in stdout mode)
|
|
460
1190
|
*/
|
|
461
|
-
|
|
462
|
-
private notifyChange;
|
|
1191
|
+
private printSingleMessageToConsole;
|
|
463
1192
|
/**
|
|
464
1193
|
* Print all messages to stdout/stderr with ANSI colors
|
|
465
1194
|
*/
|
|
@@ -467,20 +1196,23 @@ declare class ScreenInstance {
|
|
|
467
1196
|
}
|
|
468
1197
|
//#endregion
|
|
469
1198
|
//#region src/services/screen_manager.d.ts
|
|
470
|
-
declare class ScreenManagerInstance implements OnServiceDestroy {
|
|
1199
|
+
declare class ScreenManagerInstance extends EventEmitter<ScreenManagerEventMap> implements OnServiceDestroy {
|
|
471
1200
|
private screens;
|
|
472
1201
|
private screenOrder;
|
|
473
1202
|
private activeScreenId;
|
|
474
1203
|
private renderer;
|
|
475
1204
|
private root;
|
|
476
1205
|
private adapter;
|
|
477
|
-
private
|
|
478
|
-
private
|
|
1206
|
+
private container;
|
|
1207
|
+
private mode;
|
|
1208
|
+
private readlinePromptService;
|
|
479
1209
|
private bindOptions;
|
|
480
1210
|
private autoCloseTimer;
|
|
481
1211
|
private theme;
|
|
1212
|
+
private globalLogLevels;
|
|
482
1213
|
focusArea: FocusArea;
|
|
483
1214
|
selectedIndex: number;
|
|
1215
|
+
constructor();
|
|
484
1216
|
/**
|
|
485
1217
|
* Create a new screen and return it
|
|
486
1218
|
*/
|
|
@@ -494,24 +1226,73 @@ declare class ScreenManagerInstance implements OnServiceDestroy {
|
|
|
494
1226
|
* Non-blocking bind - starts TUI rendering in background
|
|
495
1227
|
*/
|
|
496
1228
|
bind(options?: BindOptions): Promise<void>;
|
|
1229
|
+
/**
|
|
1230
|
+
* Get the current render mode
|
|
1231
|
+
*/
|
|
1232
|
+
getRenderMode(): RenderMode;
|
|
1233
|
+
/**
|
|
1234
|
+
* Check if TUI is interactive (any mode except UNBOUND).
|
|
1235
|
+
* In interactive modes, prompts can be handled via readline or TUI.
|
|
1236
|
+
*/
|
|
1237
|
+
isInteractive(): boolean;
|
|
1238
|
+
/**
|
|
1239
|
+
* Check if TUI rendering is active (TUI_ACTIVE mode).
|
|
1240
|
+
* When true, screens are rendered in the TUI and not printed to stdout.
|
|
1241
|
+
*/
|
|
1242
|
+
hasTuiRenderer(): boolean;
|
|
1243
|
+
/**
|
|
1244
|
+
* Handle a prompt via readline (for stdout modes)
|
|
1245
|
+
*/
|
|
1246
|
+
handleReadlinePrompt(prompt: PromptData): Promise<string | boolean | string[]>;
|
|
497
1247
|
/**
|
|
498
1248
|
* Get the configured theme
|
|
499
1249
|
*/
|
|
500
1250
|
getTheme(): Theme | undefined;
|
|
1251
|
+
/**
|
|
1252
|
+
* Setup global configuration for the screen manager.
|
|
1253
|
+
* Can be called before or after bind() to configure theme and log levels.
|
|
1254
|
+
*/
|
|
1255
|
+
setup(options: SetupOptions): void;
|
|
1256
|
+
/**
|
|
1257
|
+
* Check if a log level is enabled globally.
|
|
1258
|
+
* Returns true if no global filter is set, or if the level is in the allowed set.
|
|
1259
|
+
*/
|
|
1260
|
+
isLogLevelEnabled(level: LogLevel): boolean;
|
|
1261
|
+
/**
|
|
1262
|
+
* Get the current global log levels filter.
|
|
1263
|
+
* Returns null if no filter is set (all levels allowed).
|
|
1264
|
+
*/
|
|
1265
|
+
getGlobalLogLevels(): LogLevel[] | null;
|
|
501
1266
|
onServiceDestroy(): void;
|
|
502
1267
|
/**
|
|
503
1268
|
* Stop TUI rendering and cleanup
|
|
504
|
-
* Flushes
|
|
1269
|
+
* Flushes screens to stdout/stderr based on mode
|
|
505
1270
|
*/
|
|
506
1271
|
unbind(): void;
|
|
507
1272
|
/**
|
|
508
|
-
*
|
|
1273
|
+
* Flush screens on exit based on the mode we're exiting from
|
|
1274
|
+
*/
|
|
1275
|
+
private flushScreensOnExit;
|
|
1276
|
+
/**
|
|
1277
|
+
* Flush any remaining non-hidden screens that haven't been printed.
|
|
1278
|
+
* Called on destroy even in UNBOUND mode to handle forgotten completions.
|
|
509
1279
|
*/
|
|
510
|
-
private
|
|
1280
|
+
private flushRemainingScreens;
|
|
511
1281
|
/**
|
|
512
1282
|
* Check if TUI is currently bound
|
|
1283
|
+
* @deprecated Use isInteractive() instead
|
|
513
1284
|
*/
|
|
514
1285
|
isTuiBound(): boolean;
|
|
1286
|
+
/**
|
|
1287
|
+
* Check if TUI rendering is active (has renderer or self-rendering adapter).
|
|
1288
|
+
* @deprecated Use hasTuiRenderer() instead
|
|
1289
|
+
*/
|
|
1290
|
+
isTuiRendererActive(): boolean;
|
|
1291
|
+
/**
|
|
1292
|
+
* Check if OpenTUI rendering is active (has renderer).
|
|
1293
|
+
* @deprecated Use hasTuiRenderer() instead
|
|
1294
|
+
*/
|
|
1295
|
+
isOpenTUIActive(): boolean;
|
|
515
1296
|
/**
|
|
516
1297
|
* Called by Screen when a prompt becomes active
|
|
517
1298
|
* Focuses the screen and switches to content area
|
|
@@ -585,11 +1366,6 @@ declare class ScreenManagerInstance implements OnServiceDestroy {
|
|
|
585
1366
|
* Toggle focus between sidebar and content
|
|
586
1367
|
*/
|
|
587
1368
|
toggleFocus(): void;
|
|
588
|
-
/**
|
|
589
|
-
* Register a change listener for re-renders
|
|
590
|
-
*/
|
|
591
|
-
onChange(listener: () => void): () => void;
|
|
592
|
-
private notifyChange;
|
|
593
1369
|
private render;
|
|
594
1370
|
}
|
|
595
1371
|
//#endregion
|
|
@@ -623,6 +1399,33 @@ declare class PromptInstance {
|
|
|
623
1399
|
multiChoice(options: MultiChoiceOptions): Promise<string[]>;
|
|
624
1400
|
}
|
|
625
1401
|
//#endregion
|
|
1402
|
+
//#region src/services/readline_prompt.d.ts
|
|
1403
|
+
/**
|
|
1404
|
+
* Readline-based prompt service for stdout mode.
|
|
1405
|
+
* Provides basic interactive prompts when TUI adapter is not available.
|
|
1406
|
+
*/
|
|
1407
|
+
declare class ReadlinePromptService {
|
|
1408
|
+
private rl;
|
|
1409
|
+
private promptQueue;
|
|
1410
|
+
private isProcessing;
|
|
1411
|
+
private ensureInterface;
|
|
1412
|
+
/**
|
|
1413
|
+
* Handle a prompt interactively via readline.
|
|
1414
|
+
* Prompts are queued and processed sequentially.
|
|
1415
|
+
*/
|
|
1416
|
+
handlePrompt(prompt: PromptData): Promise<string | boolean | string[]>;
|
|
1417
|
+
private processQueue;
|
|
1418
|
+
private processPrompt;
|
|
1419
|
+
private handleChoice;
|
|
1420
|
+
private handleConfirm;
|
|
1421
|
+
private handleInput;
|
|
1422
|
+
private handleMultiChoice;
|
|
1423
|
+
/**
|
|
1424
|
+
* Cleanup readline interface
|
|
1425
|
+
*/
|
|
1426
|
+
destroy(): void;
|
|
1427
|
+
}
|
|
1428
|
+
//#endregion
|
|
626
1429
|
//#region src/tokens/screen.d.ts
|
|
627
1430
|
declare const Screen: InjectionToken<ScreenInstance, zod_v40.ZodObject<{
|
|
628
1431
|
name: zod_v40.ZodString;
|
|
@@ -643,9 +1446,9 @@ declare const ScreenLogger: InjectionToken<ScreenLoggerInstance, zod_v40.ZodObje
|
|
|
643
1446
|
}, zod_v4_core0.$strip>, zod_v40.ZodString]>>>;
|
|
644
1447
|
context: zod_v40.ZodOptional<zod_v40.ZodString>;
|
|
645
1448
|
enabledLevels: zod_v40.ZodDefault<zod_v40.ZodArray<zod_v40.ZodEnum<{
|
|
646
|
-
log: "log";
|
|
647
1449
|
verbose: "verbose";
|
|
648
1450
|
debug: "debug";
|
|
1451
|
+
log: "log";
|
|
649
1452
|
warn: "warn";
|
|
650
1453
|
error: "error";
|
|
651
1454
|
fatal: "fatal";
|
|
@@ -665,9 +1468,9 @@ declare const IsomorphicLogger: InjectionToken<IsomorphicLoggerInterface, zod_v4
|
|
|
665
1468
|
}, zod_v4_core0.$strip>, zod_v40.ZodString]>>>;
|
|
666
1469
|
context: zod_v40.ZodOptional<zod_v40.ZodString>;
|
|
667
1470
|
enabledLevels: zod_v40.ZodDefault<zod_v40.ZodArray<zod_v40.ZodEnum<{
|
|
668
|
-
log: "log";
|
|
669
1471
|
verbose: "verbose";
|
|
670
1472
|
debug: "debug";
|
|
1473
|
+
log: "log";
|
|
671
1474
|
warn: "warn";
|
|
672
1475
|
error: "error";
|
|
673
1476
|
fatal: "fatal";
|
|
@@ -685,6 +1488,57 @@ declare const Prompt: InjectionToken<PromptInstance, zod_v40.ZodObject<{
|
|
|
685
1488
|
}, zod_v4_core0.$strip>, zod_v40.ZodString]>>>;
|
|
686
1489
|
}, zod_v4_core0.$strip>, true>;
|
|
687
1490
|
//#endregion
|
|
1491
|
+
//#region src/adapters/interface.d.ts
|
|
1492
|
+
/**
|
|
1493
|
+
* Root instance returned by adapter's createRoot method.
|
|
1494
|
+
* Abstracts the framework-specific root implementation.
|
|
1495
|
+
*/
|
|
1496
|
+
interface AdapterRoot {
|
|
1497
|
+
/**
|
|
1498
|
+
* Render an element to the root.
|
|
1499
|
+
* @param element - Framework-specific element to render
|
|
1500
|
+
*/
|
|
1501
|
+
render(element: unknown): void;
|
|
1502
|
+
/**
|
|
1503
|
+
* Unmount and cleanup the root.
|
|
1504
|
+
*/
|
|
1505
|
+
unmount(): void;
|
|
1506
|
+
}
|
|
1507
|
+
/**
|
|
1508
|
+
* Props passed to the adapter's internal bridge component.
|
|
1509
|
+
* The manager type is kept generic to avoid circular imports.
|
|
1510
|
+
*/
|
|
1511
|
+
interface AdapterRenderProps {
|
|
1512
|
+
manager: unknown;
|
|
1513
|
+
theme?: Theme;
|
|
1514
|
+
}
|
|
1515
|
+
/**
|
|
1516
|
+
* Abstract interface for rendering adapters.
|
|
1517
|
+
* Implementations provide framework-specific rendering capabilities.
|
|
1518
|
+
*/
|
|
1519
|
+
interface AdapterInterface {
|
|
1520
|
+
/**
|
|
1521
|
+
* Whether this adapter handles its own rendering without requiring
|
|
1522
|
+
* the ScreenManager to create an OpenTUI CliRenderer.
|
|
1523
|
+
* When true, createRoot() will be called without a renderer argument.
|
|
1524
|
+
* @default false
|
|
1525
|
+
*/
|
|
1526
|
+
readonly handlesOwnRenderer?: boolean;
|
|
1527
|
+
/**
|
|
1528
|
+
* Create a root instance for rendering.
|
|
1529
|
+
* @param renderer - CLI renderer from @opentui/core (undefined if handlesOwnRenderer is true)
|
|
1530
|
+
* @returns Root instance with render/unmount methods, or a Promise that resolves to one
|
|
1531
|
+
*/
|
|
1532
|
+
createRoot(renderer?: CliRenderer): AdapterRoot | Promise<AdapterRoot>;
|
|
1533
|
+
/**
|
|
1534
|
+
* Render the adapter's internal bridge component to the root.
|
|
1535
|
+
* The adapter owns its bridge component - no component is passed in.
|
|
1536
|
+
* @param root - Root instance created by createRoot
|
|
1537
|
+
* @param props - Props to pass to the bridge component
|
|
1538
|
+
*/
|
|
1539
|
+
renderToRoot(root: AdapterRoot, props: AdapterRenderProps): void;
|
|
1540
|
+
}
|
|
1541
|
+
//#endregion
|
|
688
1542
|
//#region src/tokens/adapter.d.ts
|
|
689
1543
|
/**
|
|
690
1544
|
* Injection token for the TUI rendering adapter.
|
|
@@ -716,7 +1570,17 @@ declare class ScreenFactory {
|
|
|
716
1570
|
declare function overrideConsoleLogger(hidden?: boolean): ClassTypeWithInstance<LoggerService>;
|
|
717
1571
|
//#endregion
|
|
718
1572
|
//#region src/overrides/missing-adapter.override.d.ts
|
|
1573
|
+
/**
|
|
1574
|
+
* Fallback adapter that is used when no TUI adapter is registered.
|
|
1575
|
+
* The `isMissingAdapter` marker allows ScreenManager to detect this
|
|
1576
|
+
* and gracefully fall back to stdout mode instead of throwing.
|
|
1577
|
+
*/
|
|
719
1578
|
declare class MissingAdapterOverride implements AdapterInterface {
|
|
1579
|
+
/**
|
|
1580
|
+
* Marker property to identify this as the missing adapter fallback.
|
|
1581
|
+
* Used by ScreenManager.bind() to detect and handle graceful fallback.
|
|
1582
|
+
*/
|
|
1583
|
+
readonly isMissingAdapter = true;
|
|
720
1584
|
createRoot(): AdapterRoot;
|
|
721
1585
|
renderToRoot(): void;
|
|
722
1586
|
}
|
|
@@ -870,5 +1734,5 @@ declare class FilterEngine {
|
|
|
870
1734
|
static countByLevel(messages: MessageData[]): LevelCounts;
|
|
871
1735
|
}
|
|
872
1736
|
//#endregion
|
|
873
|
-
export { ALL_LOG_LEVELS, Adapter, AdapterInterface, AdapterRenderProps, AdapterRoot, BaseMessage, BasePromptData, BindOptions, BindingHandlers, COMMON_FILETYPES, ChoiceOption, ChoiceOptions, ChoicePromptData, ConfirmOptions, ConfirmPromptData, DEFAULT_LOG_LEVEL_COLORS, DeepPartial, DiffMessageData, ERROR_HIGHLIGHT_COLORS, ErrorHighlightTheme, FILE_COLORS, FileErrorMessageData, FileLogBaseProps, FileLogDiffProps, FileLogFullProps, FileLogMode, FileLogPartialProps, FileLogProps, FileMessageData, FileTheme, FilterEngine, FilterState, FilterTheme, FocusArea, GROUP_COLORS, GroupMessageData, GroupTheme, HEADER_COLORS, HeaderTheme, HelpTheme, InputOptions, InputPromptData, IsomorphicLogger, IsomorphicLoggerFactory, IsomorphicLoggerInterface, KeyBinding, KeyBindingCategory, KeyBindingCondition, KeyBindingsConfig, KeyEvent, KeyHandler, KeyboardContext, KeyboardManager, LevelCounts, LoadingHandle, LoadingMessageData, LogLevelColorMap, LogLevelColors, LogLevelTheme, LogMessageData, LogMessageProps, LogMessageVariant, LoggerContextValue, LoggerOptions, LoggerOptionsSchema, MessageData, MessageType, MissingAdapterOverride, MultiChoiceOptions, MultiChoicePromptData, PROGRESS_COLORS, PROMPT_COLORS, PartialTheme, ProgressHandle, ProgressMessageData, ProgressTheme, PromiseOptions, Prompt, PromptData, PromptInstance, PromptOptions, PromptOptionsSchema, PromptTheme, SEPARATOR_COLORS, SIDEBAR_COLORS, STATUS_INDICATORS, Screen, ScreenDefinition, ScreenFactory, ScreenInstance, ScreenLogger, ScreenLoggerInstance, ScreenManager, ScreenManagerInstance, ScreenManagerProps, ScreenOptions, ScreenOptionsSchema, ScreenProps, ScreenStatus, SemanticColors, SeparatorTheme, SidebarTheme, StatusIndicator, StatusIndicatorsTheme, TABLE_COLORS, TableMessageData, TableTheme, Theme, ThemePreset, VARIANT_COLORS, VariantColorMap, captureTrace,
|
|
1737
|
+
export { ALL_LOG_LEVELS, Adapter, AdapterInterface, AdapterRenderProps, AdapterRoot, BaseMessage, BasePromptData, BindOptions, BindingHandlers, COMMON_FILETYPES, CONTENT_MANAGER_EVENTS, ChoiceOption, ChoiceOptions, ChoicePromptData, ConfirmOptions, ConfirmPromptData, DEFAULT_LOG_LEVEL_COLORS, DeepPartial, DiffMessageData, ERROR_HIGHLIGHT_COLORS, ErrorHighlightTheme, FILE_COLORS, FileErrorMessageData, FileLogBaseProps, FileLogDiffProps, FileLogFullProps, FileLogMode, FileLogPartialProps, FileLogProps, FileMessageData, FileTheme, FilterEngine, FilterState, FilterTheme, FocusArea, GROUP_COLORS, GroupMessageData, GroupTheme, HEADER_COLORS, HeaderTheme, HelpTheme, InputOptions, InputPromptData, IsomorphicLogger, IsomorphicLoggerFactory, IsomorphicLoggerInterface, KeyBinding, KeyBindingCategory, KeyBindingCondition, KeyBindingsConfig, KeyEvent, KeyHandler, KeyboardContext, KeyboardManager, LevelCounts, LoadingHandle, LoadingMessageData, LogLevelColorMap, LogLevelColors, LogLevelTheme, LogMessageData, LogMessageProps, LogMessageVariant, LoggerContextValue, LoggerOptions, LoggerOptionsSchema, MANAGER_EVENTS, MessageData, MessageType, MissingAdapterOverride, MultiChoiceOptions, MultiChoicePromptData, PROGRESS_COLORS, PROMPT_COLORS, PartialTheme, ProgressHandle, ProgressMessageData, ProgressTheme, PromiseOptions, Prompt, PromptData, PromptInstance, PromptOptions, PromptOptionsSchema, PromptTheme, ReadlinePromptService, RenderMode, SCREEN_EVENTS, SEPARATOR_COLORS, SIDEBAR_COLORS, SIDEBAR_EVENTS, STATUS_INDICATORS, Screen, ScreenDefinition, ScreenEventMap, ScreenEventType, ScreenFactory, ScreenInstance, ScreenLogger, ScreenLoggerInstance, ScreenManager, ScreenManagerEventMap, ScreenManagerEventType, ScreenManagerInstance, ScreenManagerProps, ScreenOptions, ScreenOptionsSchema, ScreenProps, ScreenStatus, SemanticColors, SeparatorTheme, SetupOptions, SidebarTheme, StatusIndicator, StatusIndicatorsTheme, TABLE_COLORS, TableMessageData, TableTheme, Theme, ThemePreset, VARIANT_COLORS, VariantColorMap, captureTrace, createDefaultBindings, createDefaultFilterState, createTheme, createThemeFrom, darkTheme, dynamicImport, formatKeyBinding, formatObject, getFileName, getLogLevelColors, getPromptDefaultValue, getThemePreset, handlePrintableInput, hasActiveFilter, highContrastTheme, isBunRuntime, lightTheme, mergeThemes, overrideConsoleLogger, printMessagesToStdout, printSingleMessage, resolveFiletype, resolveTheme };
|
|
874
1738
|
//# sourceMappingURL=index.d.mts.map
|