centaurus-cli 2.5.2 → 2.5.3
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/AUTH_FLOW.md +138 -0
- package/CONFIG_GUIDE.md +249 -0
- package/dist/config/models.d.ts +1 -1
- package/dist/config/models.d.ts.map +1 -1
- package/dist/config/models.js +2 -0
- package/dist/config/models.js.map +1 -1
- package/dist/ui/components/App.d.ts.map +1 -1
- package/dist/ui/components/App.js +104 -62
- package/dist/ui/components/App.js.map +1 -1
- package/dist/ui/components/FontRecommendation.d.ts +1 -0
- package/dist/ui/components/FontRecommendation.d.ts.map +1 -0
- package/dist/ui/components/FontRecommendation.js +1 -0
- package/dist/ui/components/FontRecommendation.js.map +1 -0
- package/dist/ui/components/InputBox.d.ts.map +1 -1
- package/dist/ui/components/InputBox.js +3 -2
- package/dist/ui/components/InputBox.js.map +1 -1
- package/dist/ui/components/MarkdownRenderer.d.ts.map +1 -1
- package/dist/ui/components/MarkdownRenderer.js +34 -9
- package/dist/ui/components/MarkdownRenderer.js.map +1 -1
- package/dist/ui/components/MessageDisplay.js +2 -2
- package/dist/ui/components/StreamingMessageDisplay.d.ts.map +1 -1
- package/dist/ui/components/StreamingMessageDisplay.js +3 -3
- package/dist/ui/components/StreamingMessageDisplay.js.map +1 -1
- package/dist/ui/components/ThinkingDisplay.d.ts +13 -0
- package/dist/ui/components/ThinkingDisplay.d.ts.map +1 -0
- package/dist/ui/components/ThinkingDisplay.js +41 -0
- package/dist/ui/components/ThinkingDisplay.js.map +1 -0
- package/dist/utils/version-checker.d.ts.map +1 -1
- package/dist/utils/version-checker.js +3 -31
- package/dist/utils/version-checker.js.map +1 -1
- package/package.json +5 -5
- package/dist/ai/provider-factory.d.ts +0 -6
- package/dist/ai/provider-factory.d.ts.map +0 -1
- package/dist/ai/provider-factory.js +0 -27
- package/dist/ai/provider-factory.js.map +0 -1
- package/dist/ai/providers/base.d.ts +0 -25
- package/dist/ai/providers/base.d.ts.map +0 -1
- package/dist/ai/providers/base.js +0 -9
- package/dist/ai/providers/base.js.map +0 -1
- package/dist/ai/providers/gemini.d.ts +0 -34
- package/dist/ai/providers/gemini.d.ts.map +0 -1
- package/dist/ai/providers/gemini.js +0 -146
- package/dist/ai/providers/gemini.js.map +0 -1
- package/dist/commands/view-duplication-logs.d.ts +0 -5
- package/dist/commands/view-duplication-logs.d.ts.map +0 -1
- package/dist/commands/view-duplication-logs.js +0 -14
- package/dist/commands/view-duplication-logs.js.map +0 -1
- package/dist/context/__tests__/command-detector.test.d.ts +0 -14
- package/dist/context/__tests__/command-detector.test.d.ts.map +0 -1
- package/dist/context/__tests__/command-detector.test.js +0 -318
- package/dist/context/__tests__/command-detector.test.js.map +0 -1
- package/dist/context/__tests__/context-manager.test.d.ts +0 -16
- package/dist/context/__tests__/context-manager.test.d.ts.map +0 -1
- package/dist/context/__tests__/context-manager.test.js +0 -375
- package/dist/context/__tests__/context-manager.test.js.map +0 -1
- package/dist/context/__tests__/error-handling.test.d.ts +0 -15
- package/dist/context/__tests__/error-handling.test.d.ts.map +0 -1
- package/dist/context/__tests__/error-handling.test.js +0 -447
- package/dist/context/__tests__/error-handling.test.js.map +0 -1
- package/dist/context/handlers/__tests__/docker-handler.test.d.ts +0 -13
- package/dist/context/handlers/__tests__/docker-handler.test.d.ts.map +0 -1
- package/dist/context/handlers/__tests__/docker-handler.test.js +0 -285
- package/dist/context/handlers/__tests__/docker-handler.test.js.map +0 -1
- package/dist/context/handlers/__tests__/ssh-handler.test.d.ts +0 -13
- package/dist/context/handlers/__tests__/ssh-handler.test.d.ts.map +0 -1
- package/dist/context/handlers/__tests__/ssh-handler.test.js +0 -251
- package/dist/context/handlers/__tests__/ssh-handler.test.js.map +0 -1
- package/dist/context/handlers/__tests__/wsl-handler.test.d.ts +0 -7
- package/dist/context/handlers/__tests__/wsl-handler.test.d.ts.map +0 -1
- package/dist/context/handlers/__tests__/wsl-handler.test.js +0 -331
- package/dist/context/handlers/__tests__/wsl-handler.test.js.map +0 -1
- package/dist/index-custom.d.ts +0 -3
- package/dist/index-custom.d.ts.map +0 -1
- package/dist/index-custom.js +0 -65
- package/dist/index-custom.js.map +0 -1
- package/dist/prompts/system-prompt.d.ts +0 -47
- package/dist/prompts/system-prompt.d.ts.map +0 -1
- package/dist/prompts/system-prompt.js +0 -377
- package/dist/prompts/system-prompt.js.map +0 -1
- package/dist/providers/GoogleProvider.d.ts +0 -26
- package/dist/providers/GoogleProvider.d.ts.map +0 -1
- package/dist/providers/GoogleProvider.js +0 -313
- package/dist/providers/GoogleProvider.js.map +0 -1
- package/dist/providers/Provider.d.ts +0 -114
- package/dist/providers/Provider.d.ts.map +0 -1
- package/dist/providers/Provider.js +0 -44
- package/dist/providers/Provider.js.map +0 -1
- package/dist/services/__tests__/ai-context-injector.test.d.ts +0 -15
- package/dist/services/__tests__/ai-context-injector.test.d.ts.map +0 -1
- package/dist/services/__tests__/ai-context-injector.test.js +0 -326
- package/dist/services/__tests__/ai-context-injector.test.js.map +0 -1
- package/dist/src/context/types.js +0 -27
- package/dist/src/services/ai-context-injector.js +0 -96
- package/dist/src/services/ai-service-client.js +0 -270
- package/dist/src/services/api-client.js +0 -349
- package/dist/src/tools/types.js +0 -1
- package/dist/src/types/index.js +0 -1
- package/dist/test/context/types.js +0 -27
- package/dist/test/services/__tests__/ai-context-injector.test.js +0 -325
- package/dist/test/services/ai-context-injector.js +0 -96
- package/dist/test/services/ai-service-client.js +0 -270
- package/dist/test/services/api-client.js +0 -349
- package/dist/test/tools/types.js +0 -1
- package/dist/test/types/index.js +0 -1
- package/dist/test-ai-context-injector.js +0 -97
- package/dist/tests/automated-verification.d.ts +0 -27
- package/dist/tests/automated-verification.d.ts.map +0 -1
- package/dist/tests/automated-verification.js +0 -359
- package/dist/tests/automated-verification.js.map +0 -1
- package/dist/tests/integration-tests.d.ts +0 -50
- package/dist/tests/integration-tests.d.ts.map +0 -1
- package/dist/tests/integration-tests.js +0 -648
- package/dist/tests/integration-tests.js.map +0 -1
- package/dist/tools/file-ops-test.d.ts +0 -6
- package/dist/tools/file-ops-test.d.ts.map +0 -1
- package/dist/tools/file-ops-test.js +0 -197
- package/dist/tools/file-ops-test.js.map +0 -1
- package/dist/ui/DisplayHistory.d.ts +0 -53
- package/dist/ui/DisplayHistory.d.ts.map +0 -1
- package/dist/ui/DisplayHistory.js +0 -82
- package/dist/ui/DisplayHistory.js.map +0 -1
- package/dist/ui/clack-ui.d.ts +0 -83
- package/dist/ui/clack-ui.d.ts.map +0 -1
- package/dist/ui/clack-ui.js +0 -304
- package/dist/ui/clack-ui.js.map +0 -1
- package/dist/ui/components/DisplayItemRenderer.d.ts +0 -18
- package/dist/ui/components/DisplayItemRenderer.d.ts.map +0 -1
- package/dist/ui/components/DisplayItemRenderer.js +0 -53
- package/dist/ui/components/DisplayItemRenderer.js.map +0 -1
- package/dist/ui/components/DynamicMessage.d.ts +0 -13
- package/dist/ui/components/DynamicMessage.d.ts.map +0 -1
- package/dist/ui/components/DynamicMessage.js +0 -27
- package/dist/ui/components/DynamicMessage.js.map +0 -1
- package/dist/ui/components/FileViewerScreen.d.ts +0 -14
- package/dist/ui/components/FileViewerScreen.d.ts.map +0 -1
- package/dist/ui/components/FileViewerScreen.js +0 -74
- package/dist/ui/components/FileViewerScreen.js.map +0 -1
- package/dist/ui/components/ScrollableContent.d.ts +0 -7
- package/dist/ui/components/ScrollableContent.d.ts.map +0 -1
- package/dist/ui/components/ScrollableContent.js +0 -6
- package/dist/ui/components/ScrollableContent.js.map +0 -1
- package/dist/ui/components/ScrollableMessageList.d.ts +0 -10
- package/dist/ui/components/ScrollableMessageList.d.ts.map +0 -1
- package/dist/ui/components/ScrollableMessageList.js +0 -133
- package/dist/ui/components/ScrollableMessageList.js.map +0 -1
- package/dist/ui/components/ScrollableScreen.d.ts +0 -9
- package/dist/ui/components/ScrollableScreen.d.ts.map +0 -1
- package/dist/ui/components/ScrollableScreen.js +0 -22
- package/dist/ui/components/ScrollableScreen.js.map +0 -1
- package/dist/ui/components/StaticMessageHistory.d.ts +0 -14
- package/dist/ui/components/StaticMessageHistory.d.ts.map +0 -1
- package/dist/ui/components/StaticMessageHistory.js +0 -19
- package/dist/ui/components/StaticMessageHistory.js.map +0 -1
- package/dist/ui/components/code-block.d.ts +0 -10
- package/dist/ui/components/code-block.d.ts.map +0 -1
- package/dist/ui/components/code-block.js +0 -74
- package/dist/ui/components/code-block.js.map +0 -1
- package/dist/ui/components/confirm-prompt.d.ts +0 -12
- package/dist/ui/components/confirm-prompt.d.ts.map +0 -1
- package/dist/ui/components/confirm-prompt.js +0 -104
- package/dist/ui/components/confirm-prompt.js.map +0 -1
- package/dist/ui/components/diff-viewer.d.ts +0 -9
- package/dist/ui/components/diff-viewer.d.ts.map +0 -1
- package/dist/ui/components/diff-viewer.js +0 -57
- package/dist/ui/components/diff-viewer.js.map +0 -1
- package/dist/ui/components/input-box.d.ts +0 -18
- package/dist/ui/components/input-box.d.ts.map +0 -1
- package/dist/ui/components/input-box.js +0 -157
- package/dist/ui/components/input-box.js.map +0 -1
- package/dist/ui/components/keyboard-help.d.ts +0 -7
- package/dist/ui/components/keyboard-help.d.ts.map +0 -1
- package/dist/ui/components/keyboard-help.js +0 -43
- package/dist/ui/components/keyboard-help.js.map +0 -1
- package/dist/ui/components/loading-indicator.d.ts +0 -3
- package/dist/ui/components/loading-indicator.d.ts.map +0 -1
- package/dist/ui/components/loading-indicator.js +0 -42
- package/dist/ui/components/loading-indicator.js.map +0 -1
- package/dist/ui/components/message-display.d.ts +0 -7
- package/dist/ui/components/message-display.d.ts.map +0 -1
- package/dist/ui/components/message-display.js +0 -104
- package/dist/ui/components/message-display.js.map +0 -1
- package/dist/ui/components/misc.d.ts +0 -28
- package/dist/ui/components/misc.d.ts.map +0 -1
- package/dist/ui/components/misc.js +0 -128
- package/dist/ui/components/misc.js.map +0 -1
- package/dist/ui/components/select-prompt.d.ts +0 -13
- package/dist/ui/components/select-prompt.d.ts.map +0 -1
- package/dist/ui/components/select-prompt.js +0 -42
- package/dist/ui/components/select-prompt.js.map +0 -1
- package/dist/ui/components/status-bar.d.ts +0 -11
- package/dist/ui/components/status-bar.d.ts.map +0 -1
- package/dist/ui/components/status-bar.js +0 -47
- package/dist/ui/components/status-bar.js.map +0 -1
- package/dist/ui/components/tool-execution.d.ts +0 -3
- package/dist/ui/components/tool-execution.d.ts.map +0 -1
- package/dist/ui/components/tool-execution.js +0 -374
- package/dist/ui/components/tool-execution.js.map +0 -1
- package/dist/ui/components/tool-result.d.ts +0 -11
- package/dist/ui/components/tool-result.d.ts.map +0 -1
- package/dist/ui/components/tool-result.js +0 -58
- package/dist/ui/components/tool-result.js.map +0 -1
- package/dist/ui/components/welcome-banner.d.ts +0 -3
- package/dist/ui/components/welcome-banner.d.ts.map +0 -1
- package/dist/ui/components/welcome-banner.js +0 -46
- package/dist/ui/components/welcome-banner.js.map +0 -1
- package/dist/ui/hooks/useDisplayHistory.d.ts +0 -13
- package/dist/ui/hooks/useDisplayHistory.d.ts.map +0 -1
- package/dist/ui/hooks/useDisplayHistory.js +0 -45
- package/dist/ui/hooks/useDisplayHistory.js.map +0 -1
- package/dist/ui/render-engine.d.ts +0 -69
- package/dist/ui/render-engine.d.ts.map +0 -1
- package/dist/ui/render-engine.js +0 -197
- package/dist/ui/render-engine.js.map +0 -1
- package/dist/ui/terminal/TerminalRenderer.d.ts +0 -84
- package/dist/ui/terminal/TerminalRenderer.d.ts.map +0 -1
- package/dist/ui/terminal/TerminalRenderer.js +0 -154
- package/dist/ui/terminal/TerminalRenderer.js.map +0 -1
- package/dist/ui/terminal/TerminalUI.d.ts +0 -139
- package/dist/ui/terminal/TerminalUI.d.ts.map +0 -1
- package/dist/ui/terminal/TerminalUI.js +0 -430
- package/dist/ui/terminal/TerminalUI.js.map +0 -1
- package/dist/ui/terminal/VirtualChatBuffer.d.ts +0 -32
- package/dist/ui/terminal/VirtualChatBuffer.d.ts.map +0 -1
- package/dist/ui/terminal/VirtualChatBuffer.js +0 -37
- package/dist/ui/terminal/VirtualChatBuffer.js.map +0 -1
- package/dist/ui/terminal-kit-base.d.ts +0 -117
- package/dist/ui/terminal-kit-base.d.ts.map +0 -1
- package/dist/ui/terminal-kit-base.js +0 -188
- package/dist/ui/terminal-kit-base.js.map +0 -1
- package/dist/ui/utils/duplication-detector.d.ts +0 -32
- package/dist/ui/utils/duplication-detector.d.ts.map +0 -1
- package/dist/ui/utils/duplication-detector.js +0 -227
- package/dist/ui/utils/duplication-detector.js.map +0 -1
- package/dist/ui/utils/duplication-logger.d.ts +0 -21
- package/dist/ui/utils/duplication-logger.d.ts.map +0 -1
- package/dist/ui/utils/duplication-logger.js +0 -85
- package/dist/ui/utils/duplication-logger.js.map +0 -1
- package/dist/ui/utils/terminal-scanner.d.ts +0 -19
- package/dist/ui/utils/terminal-scanner.d.ts.map +0 -1
- package/dist/ui/utils/terminal-scanner.js +0 -217
- package/dist/ui/utils/terminal-scanner.js.map +0 -1
- package/dist/version.d.ts +0 -2
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js +0 -3
- package/dist/version.js.map +0 -1
- package/scripts/generate-version.js +0 -25
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { ensureScreenBuffer, createColorAttr, colors } from '../terminal-kit-base.js';
|
|
2
|
-
// ASCII art from UI_ELEMENTS_REFERENCE.md (exact)
|
|
3
|
-
const BANNER = ` ██████╗███████╗███╗ ██╗████████╗ █████╗ ██╗ ██╗██████╗ ██╗ ██╗███████╗
|
|
4
|
-
██╔════╝██╔════╝████╗ ██║╚══██╔══╝██╔══██╗██║ ██║██╔══██╗██║ ██║██╔════╝
|
|
5
|
-
██║ █████╗ ██╔██╗ ██║ ██║ ███████║██║ ██║██████╔╝██║ ██║███████╗
|
|
6
|
-
██║ ██╔══╝ ██║╚██╗██║ ██║ ██╔══██║██║ ██║██╔══██╗██║ ██║╚════██║
|
|
7
|
-
╚██████╗███████╗██║ ╚████║ ██║ ██║ ██║╚██████╔╝██║ ██║╚██████╔╝███████║
|
|
8
|
-
╚═════╝╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝
|
|
9
|
-
|
|
10
|
-
██████╗██╗ ██╗
|
|
11
|
-
██╔════╝██║ ██║
|
|
12
|
-
██║ ██║ ██║
|
|
13
|
-
██║ ██║ ██║
|
|
14
|
-
╚██████╗███████╗██║
|
|
15
|
-
╚═════╝╚══════╝╚═╝`;
|
|
16
|
-
const HELP_TEXT = ' Type /help for commands';
|
|
17
|
-
let hasRendered = false; // Ensure banner only renders once
|
|
18
|
-
export function renderWelcomeBanner(x, y) {
|
|
19
|
-
const lines = BANNER.split('\n');
|
|
20
|
-
const bannerHeight = lines.length + 2; // banner + help text + margin
|
|
21
|
-
// Only actually render once
|
|
22
|
-
if (hasRendered) {
|
|
23
|
-
return y + bannerHeight; // Return where next content should start
|
|
24
|
-
}
|
|
25
|
-
hasRendered = true;
|
|
26
|
-
const cyanAttr = createColorAttr(colors.primary); // #00ccff
|
|
27
|
-
const dimmedAttr = createColorAttr(colors.dimmed, false, true); // #666666, dimmed
|
|
28
|
-
const buffer = ensureScreenBuffer();
|
|
29
|
-
let currentY = y;
|
|
30
|
-
// Render ASCII art banner in cyan
|
|
31
|
-
for (const line of lines) {
|
|
32
|
-
buffer.put({ x, y: currentY, attr: cyanAttr }, line);
|
|
33
|
-
currentY++;
|
|
34
|
-
}
|
|
35
|
-
// Render help text (dimmed gray)
|
|
36
|
-
buffer.put({ x, y: currentY, attr: dimmedAttr }, HELP_TEXT);
|
|
37
|
-
currentY++;
|
|
38
|
-
// Add bottom margin (1 line)
|
|
39
|
-
currentY++;
|
|
40
|
-
// Return position after banner
|
|
41
|
-
return currentY;
|
|
42
|
-
}
|
|
43
|
-
export function resetWelcomeBanner() {
|
|
44
|
-
hasRendered = false;
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=welcome-banner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"welcome-banner.js","sourceRoot":"","sources":["../../../src/ui/components/welcome-banner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtF,kDAAkD;AAClD,MAAM,MAAM,GAAG;;;;;;;;;;;;0BAYW,CAAC;AAE3B,MAAM,SAAS,GAAG,0BAA0B,CAAC;AAE7C,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC,kCAAkC;AAE3D,MAAM,UAAU,mBAAmB,CAAC,CAAS,EAAE,CAAS;IACtD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,8BAA8B;IAErE,4BAA4B;IAC5B,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,yCAAyC;IACpE,CAAC;IAED,WAAW,GAAG,IAAI,CAAC;IAEnB,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU;IAC5D,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,kBAAkB;IAClF,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IAEpC,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,kCAAkC;IAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;QACrD,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,iCAAiC;IACjC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,SAAS,CAAC,CAAC;IAC5D,QAAQ,EAAE,CAAC;IAEX,6BAA6B;IAC7B,QAAQ,EAAE,CAAC;IAEX,+BAA+B;IAC/B,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,WAAW,GAAG,KAAK,CAAC;AACtB,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { DisplayItem } from '../DisplayHistory.js';
|
|
2
|
-
/**
|
|
3
|
-
* React hook for managing display history with proper state updates
|
|
4
|
-
*/
|
|
5
|
-
export declare function useDisplayHistory(): {
|
|
6
|
-
items: DisplayItem[];
|
|
7
|
-
addItem: (item: Omit<DisplayItem, "id" | "timestamp">) => string;
|
|
8
|
-
updateItem: (id: string, updates: Partial<Omit<DisplayItem, "id" | "timestamp">>) => boolean;
|
|
9
|
-
removeItem: (id: string) => boolean;
|
|
10
|
-
clear: () => void;
|
|
11
|
-
getRecentItems: (count: number) => DisplayItem[];
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=useDisplayHistory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useDisplayHistory.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/useDisplayHistory.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnE;;GAEG;AACH,wBAAgB,iBAAiB;;oBAII,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,WAAW,CAAC,KAAG,MAAM;qBAM7C,MAAM,WAAW,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC,KAAG,OAAO;qBAQzE,MAAM,KAAG,OAAO;;4BAaT,MAAM,KAAG,WAAW,EAAE;EAalE"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { useState, useCallback, useRef, useMemo } from 'react';
|
|
2
|
-
import { DisplayHistory } from '../DisplayHistory.js';
|
|
3
|
-
/**
|
|
4
|
-
* React hook for managing display history with proper state updates
|
|
5
|
-
*/
|
|
6
|
-
export function useDisplayHistory() {
|
|
7
|
-
const historyRef = useRef(new DisplayHistory());
|
|
8
|
-
const [items, setItems] = useState([]);
|
|
9
|
-
const addItem = useCallback((item) => {
|
|
10
|
-
const id = historyRef.current.addItem(item);
|
|
11
|
-
setItems(historyRef.current.getItems());
|
|
12
|
-
return id;
|
|
13
|
-
}, []);
|
|
14
|
-
const updateItem = useCallback((id, updates) => {
|
|
15
|
-
const success = historyRef.current.updateItem(id, updates);
|
|
16
|
-
if (success) {
|
|
17
|
-
setItems(historyRef.current.getItems());
|
|
18
|
-
}
|
|
19
|
-
return success;
|
|
20
|
-
}, []);
|
|
21
|
-
const removeItem = useCallback((id) => {
|
|
22
|
-
const success = historyRef.current.removeItem(id);
|
|
23
|
-
if (success) {
|
|
24
|
-
setItems(historyRef.current.getItems());
|
|
25
|
-
}
|
|
26
|
-
return success;
|
|
27
|
-
}, []);
|
|
28
|
-
const clear = useCallback(() => {
|
|
29
|
-
historyRef.current.clear();
|
|
30
|
-
setItems([]);
|
|
31
|
-
}, []);
|
|
32
|
-
const getRecentItems = useCallback((count) => {
|
|
33
|
-
return historyRef.current.getRecentItems(count);
|
|
34
|
-
}, []);
|
|
35
|
-
// Return a stable object reference using useMemo
|
|
36
|
-
return useMemo(() => ({
|
|
37
|
-
items,
|
|
38
|
-
addItem,
|
|
39
|
-
updateItem,
|
|
40
|
-
removeItem,
|
|
41
|
-
clear,
|
|
42
|
-
getRecentItems,
|
|
43
|
-
}), [items, addItem, updateItem, removeItem, clear, getRecentItems]);
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=useDisplayHistory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useDisplayHistory.js","sourceRoot":"","sources":["../../../src/ui/hooks/useDisplayHistory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAe,MAAM,sBAAsB,CAAC;AAEnE;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,EAAE,CAAC,CAAC;IAEtD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,IAA2C,EAAU,EAAE;QAClF,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5C,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxC,OAAO,EAAE,CAAC;IACZ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,EAAU,EAAE,OAAuD,EAAW,EAAE;QAC9G,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC3D,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,EAAU,EAAW,EAAE;QACrD,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAClD,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC3B,QAAQ,CAAC,EAAE,CAAC,CAAC;IACf,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,KAAa,EAAiB,EAAE;QAClE,OAAO,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,iDAAiD;IACjD,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACpB,KAAK;QACL,OAAO;QACP,UAAU;QACV,UAAU;QACV,KAAK;QACL,cAAc;KACf,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;AACvE,CAAC"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
export interface ComponentRegion {
|
|
2
|
-
name: string;
|
|
3
|
-
x: number;
|
|
4
|
-
y: number;
|
|
5
|
-
width: number;
|
|
6
|
-
height: number;
|
|
7
|
-
zIndex: number;
|
|
8
|
-
dirty: boolean;
|
|
9
|
-
}
|
|
10
|
-
export declare function registerComponent(name: string, width: number, height: number, options?: {
|
|
11
|
-
x?: number;
|
|
12
|
-
y?: number;
|
|
13
|
-
zIndex?: number;
|
|
14
|
-
}): ComponentRegion;
|
|
15
|
-
export declare function updateComponent(name: string, updates: Partial<ComponentRegion>): void;
|
|
16
|
-
export declare function markDirty(name: string): void;
|
|
17
|
-
export declare function clearComponent(name: string): void;
|
|
18
|
-
export declare function unregisterComponent(name: string): void;
|
|
19
|
-
export declare function getComponent(name: string): ComponentRegion | undefined;
|
|
20
|
-
export declare function resetLayout(): void;
|
|
21
|
-
export declare function getCurrentY(): number;
|
|
22
|
-
export declare function setCurrentY(y: number): void;
|
|
23
|
-
export declare function renderDirtyComponents(): void;
|
|
24
|
-
export declare function renderAll(): void;
|
|
25
|
-
export declare function clearScreen(): void;
|
|
26
|
-
export declare function getScrollOffset(): number;
|
|
27
|
-
export declare function setScrollOffset(offset: number): void;
|
|
28
|
-
export declare function setMaxScrollOffset(max: number): void;
|
|
29
|
-
export declare function scrollUp(lines?: number): void;
|
|
30
|
-
export declare function scrollDown(lines?: number): void;
|
|
31
|
-
export declare function scrollToTop(): void;
|
|
32
|
-
export declare function scrollToBottom(): void;
|
|
33
|
-
export interface InputState {
|
|
34
|
-
value: string;
|
|
35
|
-
cursorPosition: number;
|
|
36
|
-
placeholder?: string;
|
|
37
|
-
}
|
|
38
|
-
export declare function getInputState(): InputState;
|
|
39
|
-
export declare function setInputState(state: Partial<InputState>): void;
|
|
40
|
-
export declare function clearInput(): void;
|
|
41
|
-
export interface RenderedMessage {
|
|
42
|
-
id: string;
|
|
43
|
-
y: number;
|
|
44
|
-
height: number;
|
|
45
|
-
}
|
|
46
|
-
export declare function registerRenderedMessage(id: string, y: number, height: number): void;
|
|
47
|
-
export declare function getRenderedMessage(id: string): RenderedMessage | undefined;
|
|
48
|
-
export declare function clearRenderedMessages(): void;
|
|
49
|
-
export declare function getVisibleMessageRange(totalMessages: number, viewportHeight: number): {
|
|
50
|
-
start: number;
|
|
51
|
-
end: number;
|
|
52
|
-
};
|
|
53
|
-
export declare function registerOverlay(name: string, x: number, y: number, width: number, height: number): void;
|
|
54
|
-
export declare function showOverlay(name: string): void;
|
|
55
|
-
export declare function hideOverlay(name: string): void;
|
|
56
|
-
export declare function isOverlayActive(name: string): boolean;
|
|
57
|
-
export declare function getTerminalSize(): {
|
|
58
|
-
width: number;
|
|
59
|
-
height: number;
|
|
60
|
-
};
|
|
61
|
-
export declare function calculateComponentDimensions(widthPercent: number, heightPercent: number, minWidth?: number, minHeight?: number): {
|
|
62
|
-
width: number;
|
|
63
|
-
height: number;
|
|
64
|
-
};
|
|
65
|
-
export declare function centerComponent(width: number, height: number): {
|
|
66
|
-
x: number;
|
|
67
|
-
y: number;
|
|
68
|
-
};
|
|
69
|
-
//# sourceMappingURL=render-engine.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"render-engine.d.ts","sourceRoot":"","sources":["../../src/ui/render-engine.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/render-engine.js
DELETED
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
import { term, render as doRender, clearRegion } from './terminal-kit-base.js';
|
|
2
|
-
// Global state for component management
|
|
3
|
-
const components = new Map();
|
|
4
|
-
let currentY = 1; // Track vertical position for auto-layout
|
|
5
|
-
// Register a component region
|
|
6
|
-
export function registerComponent(name, width, height, options = {}) {
|
|
7
|
-
const region = {
|
|
8
|
-
name,
|
|
9
|
-
x: options.x ?? 1,
|
|
10
|
-
y: options.y ?? currentY,
|
|
11
|
-
width,
|
|
12
|
-
height,
|
|
13
|
-
zIndex: options.zIndex ?? 0,
|
|
14
|
-
dirty: true,
|
|
15
|
-
};
|
|
16
|
-
components.set(name, region);
|
|
17
|
-
// Auto-increment Y position for next component if not manually positioned
|
|
18
|
-
if (options.y === undefined) {
|
|
19
|
-
currentY += height;
|
|
20
|
-
}
|
|
21
|
-
return region;
|
|
22
|
-
}
|
|
23
|
-
// Update component region
|
|
24
|
-
export function updateComponent(name, updates) {
|
|
25
|
-
const component = components.get(name);
|
|
26
|
-
if (!component)
|
|
27
|
-
return;
|
|
28
|
-
Object.assign(component, updates);
|
|
29
|
-
component.dirty = true;
|
|
30
|
-
}
|
|
31
|
-
// Mark component as dirty (needs re-render)
|
|
32
|
-
export function markDirty(name) {
|
|
33
|
-
const component = components.get(name);
|
|
34
|
-
if (component) {
|
|
35
|
-
component.dirty = true;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
// Clear component region
|
|
39
|
-
export function clearComponent(name) {
|
|
40
|
-
const component = components.get(name);
|
|
41
|
-
if (!component)
|
|
42
|
-
return;
|
|
43
|
-
clearRegion(component.x, component.y, component.width, component.height);
|
|
44
|
-
component.dirty = false;
|
|
45
|
-
}
|
|
46
|
-
// Unregister component
|
|
47
|
-
export function unregisterComponent(name) {
|
|
48
|
-
const component = components.get(name);
|
|
49
|
-
if (component) {
|
|
50
|
-
clearComponent(name);
|
|
51
|
-
components.delete(name);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
// Get component region
|
|
55
|
-
export function getComponent(name) {
|
|
56
|
-
return components.get(name);
|
|
57
|
-
}
|
|
58
|
-
// Reset vertical position (for re-layout)
|
|
59
|
-
export function resetLayout() {
|
|
60
|
-
currentY = 1;
|
|
61
|
-
}
|
|
62
|
-
// Get current Y position (for manual layout)
|
|
63
|
-
export function getCurrentY() {
|
|
64
|
-
return currentY;
|
|
65
|
-
}
|
|
66
|
-
// Set current Y position (for manual layout)
|
|
67
|
-
export function setCurrentY(y) {
|
|
68
|
-
currentY = y;
|
|
69
|
-
}
|
|
70
|
-
// Render all dirty components (sorted by z-index)
|
|
71
|
-
export function renderDirtyComponents() {
|
|
72
|
-
const dirtyComponents = Array.from(components.values())
|
|
73
|
-
.filter(c => c.dirty)
|
|
74
|
-
.sort((a, b) => a.zIndex - b.zIndex);
|
|
75
|
-
if (dirtyComponents.length > 0) {
|
|
76
|
-
doRender();
|
|
77
|
-
// Mark components as clean
|
|
78
|
-
dirtyComponents.forEach(c => {
|
|
79
|
-
c.dirty = false;
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
// Force render all components
|
|
84
|
-
export function renderAll() {
|
|
85
|
-
components.forEach(c => {
|
|
86
|
-
c.dirty = true;
|
|
87
|
-
});
|
|
88
|
-
renderDirtyComponents();
|
|
89
|
-
}
|
|
90
|
-
// Clear entire screen and reset layout
|
|
91
|
-
export function clearScreen() {
|
|
92
|
-
term.clear();
|
|
93
|
-
clearRegion(1, 1, term.width, term.height);
|
|
94
|
-
resetLayout();
|
|
95
|
-
components.clear();
|
|
96
|
-
}
|
|
97
|
-
// Scroll management (for message history)
|
|
98
|
-
let scrollOffset = 0;
|
|
99
|
-
let maxScrollOffset = 0;
|
|
100
|
-
export function getScrollOffset() {
|
|
101
|
-
return scrollOffset;
|
|
102
|
-
}
|
|
103
|
-
export function setScrollOffset(offset) {
|
|
104
|
-
scrollOffset = Math.max(0, Math.min(offset, maxScrollOffset));
|
|
105
|
-
}
|
|
106
|
-
export function setMaxScrollOffset(max) {
|
|
107
|
-
maxScrollOffset = max;
|
|
108
|
-
}
|
|
109
|
-
export function scrollUp(lines = 1) {
|
|
110
|
-
setScrollOffset(scrollOffset - lines);
|
|
111
|
-
}
|
|
112
|
-
export function scrollDown(lines = 1) {
|
|
113
|
-
setScrollOffset(scrollOffset + lines);
|
|
114
|
-
}
|
|
115
|
-
export function scrollToTop() {
|
|
116
|
-
setScrollOffset(0);
|
|
117
|
-
}
|
|
118
|
-
export function scrollToBottom() {
|
|
119
|
-
setScrollOffset(maxScrollOffset);
|
|
120
|
-
}
|
|
121
|
-
let inputState = {
|
|
122
|
-
value: '',
|
|
123
|
-
cursorPosition: 0,
|
|
124
|
-
};
|
|
125
|
-
export function getInputState() {
|
|
126
|
-
return inputState;
|
|
127
|
-
}
|
|
128
|
-
export function setInputState(state) {
|
|
129
|
-
inputState = { ...inputState, ...state };
|
|
130
|
-
}
|
|
131
|
-
export function clearInput() {
|
|
132
|
-
inputState = {
|
|
133
|
-
value: '',
|
|
134
|
-
cursorPosition: 0,
|
|
135
|
-
placeholder: inputState.placeholder,
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
const renderedMessages = new Map();
|
|
139
|
-
export function registerRenderedMessage(id, y, height) {
|
|
140
|
-
renderedMessages.set(id, { id, y, height });
|
|
141
|
-
}
|
|
142
|
-
export function getRenderedMessage(id) {
|
|
143
|
-
return renderedMessages.get(id);
|
|
144
|
-
}
|
|
145
|
-
export function clearRenderedMessages() {
|
|
146
|
-
renderedMessages.clear();
|
|
147
|
-
}
|
|
148
|
-
// Calculate visible message range based on scroll
|
|
149
|
-
export function getVisibleMessageRange(totalMessages, viewportHeight) {
|
|
150
|
-
const messagesPerPage = Math.floor(viewportHeight / 3); // Assume ~3 lines per message
|
|
151
|
-
const totalPages = Math.ceil(totalMessages / messagesPerPage);
|
|
152
|
-
const start = Math.max(0, totalMessages - messagesPerPage - scrollOffset);
|
|
153
|
-
const end = Math.min(totalMessages, start + messagesPerPage);
|
|
154
|
-
return { start, end };
|
|
155
|
-
}
|
|
156
|
-
const overlays = new Map();
|
|
157
|
-
export function registerOverlay(name, x, y, width, height) {
|
|
158
|
-
overlays.set(name, { name, x, y, width, height, active: false });
|
|
159
|
-
}
|
|
160
|
-
export function showOverlay(name) {
|
|
161
|
-
const overlay = overlays.get(name);
|
|
162
|
-
if (overlay) {
|
|
163
|
-
overlay.active = true;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
export function hideOverlay(name) {
|
|
167
|
-
const overlay = overlays.get(name);
|
|
168
|
-
if (overlay) {
|
|
169
|
-
overlay.active = false;
|
|
170
|
-
// Clear overlay region
|
|
171
|
-
clearRegion(overlay.x, overlay.y, overlay.width, overlay.height);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
export function isOverlayActive(name) {
|
|
175
|
-
return overlays.get(name)?.active ?? false;
|
|
176
|
-
}
|
|
177
|
-
// Terminal dimensions helper
|
|
178
|
-
export function getTerminalSize() {
|
|
179
|
-
return {
|
|
180
|
-
width: term.width,
|
|
181
|
-
height: term.height,
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
// Calculate component dimensions based on terminal size
|
|
185
|
-
export function calculateComponentDimensions(widthPercent, heightPercent, minWidth = 40, minHeight = 5) {
|
|
186
|
-
const width = Math.max(minWidth, Math.floor(term.width * widthPercent));
|
|
187
|
-
const height = Math.max(minHeight, Math.floor(term.height * heightPercent));
|
|
188
|
-
return { width, height };
|
|
189
|
-
}
|
|
190
|
-
// Center component on screen
|
|
191
|
-
export function centerComponent(width, height) {
|
|
192
|
-
return {
|
|
193
|
-
x: Math.max(1, Math.floor((term.width - width) / 2)),
|
|
194
|
-
y: Math.max(1, Math.floor((term.height - height) / 2)),
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
//# sourceMappingURL=render-engine.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"render-engine.js","sourceRoot":"","sources":["../../src/ui/render-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Custom Terminal Renderer
|
|
3
|
-
* Replaces Ink with direct terminal control for better performance and no duplication
|
|
4
|
-
*/
|
|
5
|
-
export interface TerminalLine {
|
|
6
|
-
content: string;
|
|
7
|
-
color?: string;
|
|
8
|
-
}
|
|
9
|
-
export declare class TerminalRenderer {
|
|
10
|
-
private lines;
|
|
11
|
-
private cursorLine;
|
|
12
|
-
private inputLine;
|
|
13
|
-
private inputPrompt;
|
|
14
|
-
private statusLine;
|
|
15
|
-
private rl;
|
|
16
|
-
private stdout;
|
|
17
|
-
private stdin;
|
|
18
|
-
constructor();
|
|
19
|
-
/**
|
|
20
|
-
* Initialize the terminal
|
|
21
|
-
*/
|
|
22
|
-
init(): void;
|
|
23
|
-
/**
|
|
24
|
-
* Clear the entire screen
|
|
25
|
-
*/
|
|
26
|
-
clearScreen(): void;
|
|
27
|
-
/**
|
|
28
|
-
* Hide cursor
|
|
29
|
-
*/
|
|
30
|
-
hideCursor(): void;
|
|
31
|
-
/**
|
|
32
|
-
* Show cursor
|
|
33
|
-
*/
|
|
34
|
-
showCursor(): void;
|
|
35
|
-
/**
|
|
36
|
-
* Move cursor to specific position
|
|
37
|
-
*/
|
|
38
|
-
moveCursor(row: number, col: number): void;
|
|
39
|
-
/**
|
|
40
|
-
* Clear current line
|
|
41
|
-
*/
|
|
42
|
-
clearLine(): void;
|
|
43
|
-
/**
|
|
44
|
-
* Add a line to the display buffer
|
|
45
|
-
*/
|
|
46
|
-
addLine(content: string): void;
|
|
47
|
-
/**
|
|
48
|
-
* Set the status line (bottom bar)
|
|
49
|
-
*/
|
|
50
|
-
setStatusLine(content: string): void;
|
|
51
|
-
/**
|
|
52
|
-
* Set the input prompt
|
|
53
|
-
*/
|
|
54
|
-
setInputPrompt(prompt: string): void;
|
|
55
|
-
/**
|
|
56
|
-
* Render the entire screen
|
|
57
|
-
*/
|
|
58
|
-
render(): void;
|
|
59
|
-
/**
|
|
60
|
-
* Render a new line of content (for messages, tool output, etc.)
|
|
61
|
-
*/
|
|
62
|
-
renderNewLine(content: string): void;
|
|
63
|
-
/**
|
|
64
|
-
* Update input line
|
|
65
|
-
*/
|
|
66
|
-
updateInput(input: string): void;
|
|
67
|
-
/**
|
|
68
|
-
* Clear all lines
|
|
69
|
-
*/
|
|
70
|
-
clearLines(): void;
|
|
71
|
-
/**
|
|
72
|
-
* Get current input
|
|
73
|
-
*/
|
|
74
|
-
getInput(): string;
|
|
75
|
-
/**
|
|
76
|
-
* Clear input
|
|
77
|
-
*/
|
|
78
|
-
clearInput(): void;
|
|
79
|
-
/**
|
|
80
|
-
* Cleanup and restore terminal
|
|
81
|
-
*/
|
|
82
|
-
cleanup(): void;
|
|
83
|
-
}
|
|
84
|
-
//# sourceMappingURL=TerminalRenderer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TerminalRenderer.d.ts","sourceRoot":"","sources":["../../../src/ui/terminal/TerminalRenderer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,EAAE,CAAqB;IAC/B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,KAAK,CAAa;;IAiB1B;;OAEG;IACH,IAAI,IAAI,IAAI;IAUZ;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAI1C;;OAEG;IACH,SAAS,IAAI,IAAI;IAIjB;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9B;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACH,MAAM,IAAI,IAAI;IAqBd;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAcpC;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKhC;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,OAAO,IAAI,IAAI;CAOhB"}
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Custom Terminal Renderer
|
|
3
|
-
* Replaces Ink with direct terminal control for better performance and no duplication
|
|
4
|
-
*/
|
|
5
|
-
import * as readline from 'readline';
|
|
6
|
-
export class TerminalRenderer {
|
|
7
|
-
lines = [];
|
|
8
|
-
cursorLine = 0;
|
|
9
|
-
inputLine = '';
|
|
10
|
-
inputPrompt = '> ';
|
|
11
|
-
statusLine = '';
|
|
12
|
-
rl;
|
|
13
|
-
stdout;
|
|
14
|
-
stdin;
|
|
15
|
-
constructor() {
|
|
16
|
-
this.stdout = process.stdout;
|
|
17
|
-
this.stdin = process.stdin;
|
|
18
|
-
// Create readline interface
|
|
19
|
-
this.rl = readline.createInterface({
|
|
20
|
-
input: this.stdin,
|
|
21
|
-
output: this.stdout,
|
|
22
|
-
terminal: true
|
|
23
|
-
});
|
|
24
|
-
// Hide cursor initially
|
|
25
|
-
this.hideCursor();
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Initialize the terminal
|
|
29
|
-
*/
|
|
30
|
-
init() {
|
|
31
|
-
// Clear screen
|
|
32
|
-
this.clearScreen();
|
|
33
|
-
// Enable raw mode for better control
|
|
34
|
-
if (this.stdin.isTTY) {
|
|
35
|
-
this.stdin.setRawMode(true);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Clear the entire screen
|
|
40
|
-
*/
|
|
41
|
-
clearScreen() {
|
|
42
|
-
this.stdout.write('\x1b[2J\x1b[H');
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Hide cursor
|
|
46
|
-
*/
|
|
47
|
-
hideCursor() {
|
|
48
|
-
this.stdout.write('\x1b[?25l');
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Show cursor
|
|
52
|
-
*/
|
|
53
|
-
showCursor() {
|
|
54
|
-
this.stdout.write('\x1b[?25h');
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Move cursor to specific position
|
|
58
|
-
*/
|
|
59
|
-
moveCursor(row, col) {
|
|
60
|
-
this.stdout.write(`\x1b[${row};${col}H`);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Clear current line
|
|
64
|
-
*/
|
|
65
|
-
clearLine() {
|
|
66
|
-
this.stdout.write('\x1b[2K');
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Add a line to the display buffer
|
|
70
|
-
*/
|
|
71
|
-
addLine(content) {
|
|
72
|
-
this.lines.push(content);
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Set the status line (bottom bar)
|
|
76
|
-
*/
|
|
77
|
-
setStatusLine(content) {
|
|
78
|
-
this.statusLine = content;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Set the input prompt
|
|
82
|
-
*/
|
|
83
|
-
setInputPrompt(prompt) {
|
|
84
|
-
this.inputPrompt = prompt;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Render the entire screen
|
|
88
|
-
*/
|
|
89
|
-
render() {
|
|
90
|
-
const rows = this.stdout.rows || 24;
|
|
91
|
-
// Just update the status and input lines at the bottom
|
|
92
|
-
// Don't clear or redraw content - let it scroll naturally
|
|
93
|
-
// Render status line at bottom
|
|
94
|
-
this.moveCursor(rows - 1, 1);
|
|
95
|
-
this.clearLine();
|
|
96
|
-
this.stdout.write(this.statusLine);
|
|
97
|
-
// Render input line at very bottom
|
|
98
|
-
this.moveCursor(rows, 1);
|
|
99
|
-
this.clearLine();
|
|
100
|
-
this.stdout.write(this.inputPrompt + this.inputLine);
|
|
101
|
-
// Position cursor at end of input
|
|
102
|
-
this.moveCursor(rows, this.inputPrompt.length + this.inputLine.length + 1);
|
|
103
|
-
this.showCursor();
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Render a new line of content (for messages, tool output, etc.)
|
|
107
|
-
*/
|
|
108
|
-
renderNewLine(content) {
|
|
109
|
-
const rows = this.stdout.rows || 24;
|
|
110
|
-
// Move to line before status bar
|
|
111
|
-
this.moveCursor(rows - 2, 1);
|
|
112
|
-
this.clearLine();
|
|
113
|
-
// Write the content
|
|
114
|
-
this.stdout.write(content + '\n');
|
|
115
|
-
// Re-render status and input
|
|
116
|
-
this.render();
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Update input line
|
|
120
|
-
*/
|
|
121
|
-
updateInput(input) {
|
|
122
|
-
this.inputLine = input;
|
|
123
|
-
this.render();
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Clear all lines
|
|
127
|
-
*/
|
|
128
|
-
clearLines() {
|
|
129
|
-
this.lines = [];
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Get current input
|
|
133
|
-
*/
|
|
134
|
-
getInput() {
|
|
135
|
-
return this.inputLine;
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Clear input
|
|
139
|
-
*/
|
|
140
|
-
clearInput() {
|
|
141
|
-
this.inputLine = '';
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Cleanup and restore terminal
|
|
145
|
-
*/
|
|
146
|
-
cleanup() {
|
|
147
|
-
this.showCursor();
|
|
148
|
-
if (this.stdin.isTTY) {
|
|
149
|
-
this.stdin.setRawMode(false);
|
|
150
|
-
}
|
|
151
|
-
this.rl.close();
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
//# sourceMappingURL=TerminalRenderer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TerminalRenderer.js","sourceRoot":"","sources":["../../../src/ui/terminal/TerminalRenderer.ts"],"names":[],"mappings":"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"}
|