@sunub/obsidian-mcp-server 0.3.23 → 0.3.24

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.
Files changed (135) hide show
  1. package/build/cli/App.d.ts +4 -1
  2. package/build/cli/App.js +158 -104
  3. package/build/cli/App.js.map +1 -1
  4. package/build/cli/AppContainer.js +8 -2
  5. package/build/cli/AppContainer.js.map +1 -1
  6. package/build/cli/config/mcpServersConfig.js +19 -2
  7. package/build/cli/config/mcpServersConfig.js.map +1 -1
  8. package/build/cli/context/InputContext.d.ts +1 -1
  9. package/build/cli/context/KeypressContext.js +0 -5
  10. package/build/cli/context/KeypressContext.js.map +1 -1
  11. package/build/cli/context/KeypressContext.util.js +1 -2
  12. package/build/cli/context/KeypressContext.util.js.map +1 -1
  13. package/build/cli/context/UIStateContext.d.ts +16 -0
  14. package/build/cli/context/UIStateContext.js +10 -0
  15. package/build/cli/context/UIStateContext.js.map +1 -0
  16. package/build/cli/hooks/useCommandCompletion.d.ts +1 -1
  17. package/build/cli/hooks/useCommandCompletion.js +1 -1
  18. package/build/cli/hooks/useCommandCompletion.js.map +1 -1
  19. package/build/cli/hooks/useHistoryManager.d.ts +1 -0
  20. package/build/cli/hooks/useHistoryManager.js +19 -1
  21. package/build/cli/hooks/useHistoryManager.js.map +1 -1
  22. package/build/cli/hooks/useInputHistory.d.ts +2 -2
  23. package/build/cli/hooks/useInputHistory.js +2 -2
  24. package/build/cli/hooks/useInputHistory.js.map +1 -1
  25. package/build/cli/hooks/useKeyMatchers.d.ts +0 -9
  26. package/build/cli/hooks/useKeyMatchers.js +0 -9
  27. package/build/cli/hooks/useKeyMatchers.js.map +1 -1
  28. package/build/cli/hooks/useKeypress.d.ts +0 -13
  29. package/build/cli/hooks/useKeypress.js +0 -13
  30. package/build/cli/hooks/useKeypress.js.map +1 -1
  31. package/build/cli/hooks/useLlmStream/useLlmStream.d.ts +1 -1
  32. package/build/cli/hooks/useLlmStream/useLlmStream.js +9 -3
  33. package/build/cli/hooks/useLlmStream/useLlmStream.js.map +1 -1
  34. package/build/cli/hooks/useMcpManager.d.ts +0 -10
  35. package/build/cli/hooks/useMcpManager.js +6 -0
  36. package/build/cli/hooks/useMcpManager.js.map +1 -1
  37. package/build/cli/hooks/usePromptCompletion.d.ts +1 -2
  38. package/build/cli/hooks/usePromptCompletion.js +0 -1
  39. package/build/cli/hooks/usePromptCompletion.js.map +1 -1
  40. package/build/cli/hooks/useTransientMessage.d.ts +7 -0
  41. package/build/cli/hooks/useTransientMessage.js +34 -0
  42. package/build/cli/hooks/useTransientMessage.js.map +1 -0
  43. package/build/cli/index.js +7 -3
  44. package/build/cli/index.js.map +1 -1
  45. package/build/cli/key/keyBindings.d.ts +0 -19
  46. package/build/cli/key/keyBindings.js +0 -14
  47. package/build/cli/key/keyBindings.js.map +1 -1
  48. package/build/cli/key/keyMatchers.d.ts +0 -9
  49. package/build/cli/key/keyMatchers.js +0 -8
  50. package/build/cli/key/keyMatchers.js.map +1 -1
  51. package/build/cli/key/keybindingUtils.d.ts +3 -0
  52. package/build/cli/key/keybindingUtils.js +74 -0
  53. package/build/cli/key/keybindingUtils.js.map +1 -0
  54. package/build/cli/key/textBuffer/constants.d.ts +1 -0
  55. package/build/cli/key/textBuffer/constants.js +2 -0
  56. package/build/cli/key/textBuffer/constants.js.map +1 -0
  57. package/build/cli/key/textBuffer/index.d.ts +3 -0
  58. package/build/cli/key/textBuffer/index.js +3 -0
  59. package/build/cli/key/textBuffer/index.js.map +1 -0
  60. package/build/cli/key/textBuffer/textBuffer.d.ts +73 -0
  61. package/build/cli/key/textBuffer/textBuffer.js +1154 -0
  62. package/build/cli/key/textBuffer/textBuffer.js.map +1 -0
  63. package/build/cli/key/textBuffer/types.d.ts +106 -0
  64. package/build/cli/key/textBuffer/types.js +2 -0
  65. package/build/cli/key/textBuffer/types.js.map +1 -0
  66. package/build/cli/services/InputOffloadService.d.ts +20 -0
  67. package/build/cli/services/InputOffloadService.js +105 -0
  68. package/build/cli/services/InputOffloadService.js.map +1 -0
  69. package/build/cli/services/McpClientService.js +5 -3
  70. package/build/cli/services/McpClientService.js.map +1 -1
  71. package/build/cli/services/McpManager.js +4 -2
  72. package/build/cli/services/McpManager.js.map +1 -1
  73. package/build/cli/theme/builtin/tokyonight-dark.js +1 -0
  74. package/build/cli/theme/builtin/tokyonight-dark.js.map +1 -1
  75. package/build/cli/theme/semantic-tokens.js +8 -8
  76. package/build/cli/theme/semantic-tokens.js.map +1 -1
  77. package/build/cli/theme/theme-manager.js +4 -2
  78. package/build/cli/theme/theme-manager.js.map +1 -1
  79. package/build/cli/theme/theme.d.ts +1 -23
  80. package/build/cli/theme/theme.js +11 -31
  81. package/build/cli/theme/theme.js.map +1 -1
  82. package/build/cli/types.d.ts +1 -2
  83. package/build/cli/ui/CLILogo.d.ts +1 -0
  84. package/build/cli/ui/CLILogo.js +33 -0
  85. package/build/cli/ui/CLILogo.js.map +1 -0
  86. package/build/cli/ui/HistoryItemDisplay.js +36 -1
  87. package/build/cli/ui/HistoryItemDisplay.js.map +1 -1
  88. package/build/cli/ui/InputPrompt.d.ts +8 -1
  89. package/build/cli/ui/InputPrompt.js +142 -24
  90. package/build/cli/ui/InputPrompt.js.map +1 -1
  91. package/build/cli/ui/LLMHealthChecker.js +1 -1
  92. package/build/cli/ui/LLMStatusLoader.d.ts +10 -0
  93. package/build/cli/ui/LLMStatusLoader.js +35 -0
  94. package/build/cli/ui/LLMStatusLoader.js.map +1 -0
  95. package/build/cli/ui/MainContent.js +2 -7
  96. package/build/cli/ui/MainContent.js.map +1 -1
  97. package/build/cli/ui/SystemInfoSummaryBox.js +3 -2
  98. package/build/cli/ui/SystemInfoSummaryBox.js.map +1 -1
  99. package/build/cli/ui/ThinkingIndicator.d.ts +3 -2
  100. package/build/cli/ui/ThinkingIndicator.js +3 -3
  101. package/build/cli/ui/ThinkingIndicator.js.map +1 -1
  102. package/build/cli/ui/ToastDisplay.d.ts +2 -0
  103. package/build/cli/ui/ToastDisplay.js +19 -0
  104. package/build/cli/ui/ToastDisplay.js.map +1 -0
  105. package/build/cli/ui/shared/ExpandableText.d.ts +0 -3
  106. package/build/cli/ui/shared/ExpandableText.js +0 -3
  107. package/build/cli/ui/shared/ExpandableText.js.map +1 -1
  108. package/build/cli/utils/bootLogo.d.ts +8 -0
  109. package/build/cli/utils/bootLogo.js +68 -0
  110. package/build/cli/utils/bootLogo.js.map +1 -0
  111. package/build/cli/utils/events.d.ts +28 -0
  112. package/build/cli/utils/events.js +18 -0
  113. package/build/cli/utils/events.js.map +1 -0
  114. package/build/cli/utils/highlights.d.ts +8 -0
  115. package/build/cli/utils/highlights.js +117 -0
  116. package/build/cli/utils/highlights.js.map +1 -0
  117. package/build/cli/utils/textUtil.d.ts +5 -0
  118. package/build/cli/utils/textUtil.js +32 -0
  119. package/build/cli/utils/textUtil.js.map +1 -1
  120. package/build/shared/utils/debugLogger.d.ts +4 -0
  121. package/build/shared/utils/debugLogger.js +12 -0
  122. package/build/shared/utils/debugLogger.js.map +1 -1
  123. package/build/utils/cleanup.d.ts +30 -0
  124. package/build/utils/cleanup.js +137 -0
  125. package/build/utils/cleanup.js.map +1 -0
  126. package/package.json +4 -2
  127. package/build/cli/key/text-buffer.d.ts +0 -156
  128. package/build/cli/key/text-buffer.js +0 -937
  129. package/build/cli/key/text-buffer.js.map +0 -1
  130. package/build/cli/tmp.d.ts +0 -1
  131. package/build/cli/tmp.js +0 -27
  132. package/build/cli/tmp.js.map +0 -1
  133. package/build/cli/ui/layout/DefaultAppLayout.d.ts +0 -2
  134. package/build/cli/ui/layout/DefaultAppLayout.js +0 -6
  135. package/build/cli/ui/layout/DefaultAppLayout.js.map +0 -1
@@ -0,0 +1,35 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import Spinner from "ink-spinner";
4
+ import { useEffect, useState } from "react";
5
+ import { useTerminalSize } from "../hooks/useTerminalSize.js";
6
+ import { AppEvent, appEvents } from "../utils/events.js";
7
+ export function isNarrowWidth(width) {
8
+ return width < 80;
9
+ }
10
+ export function LLMStatusLoader({ setLLMStatus, mcp }) {
11
+ const { columns: terminalWidth } = useTerminalSize();
12
+ const isNarrow = isNarrowWidth(terminalWidth);
13
+ const [messages, setMessages] = useState([]);
14
+ const { isConnected: mcpConnected, isAnyConnecting, connectedCount, serverCount, } = mcp;
15
+ useEffect(() => {
16
+ const handleLog = (message) => {
17
+ setMessages((prev) => [...prev.slice(-9), message]);
18
+ };
19
+ appEvents.on(AppEvent.OpenDebugConsole, handleLog);
20
+ return () => {
21
+ appEvents.off(AppEvent.OpenDebugConsole, handleLog);
22
+ };
23
+ }, []);
24
+ useEffect(() => {
25
+ if (mcpConnected && !isAnyConnecting && serverCount > 0) {
26
+ const timer = setTimeout(() => {
27
+ setLLMStatus("success");
28
+ }, 800);
29
+ return () => clearTimeout(timer);
30
+ }
31
+ return;
32
+ }, [mcpConnected, isAnyConnecting, serverCount, setLLMStatus]);
33
+ return (_jsxs(Box, { paddingX: 2, paddingY: 1, width: "100%", flexDirection: isNarrow ? "column" : "row", alignItems: isNarrow ? "flex-start" : "center", children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { bold: true, color: "cyan", children: [_jsx(Spinner, { type: "dots" }), " Initializing System Resources"] }) }), _jsx(Box, { flexDirection: "column", paddingLeft: 2, children: messages.map((msg, i) => (_jsxs(Text, { color: "gray", children: [i === messages.length - 1 ? "●" : "○", " ", msg] }, msg))) }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { dimColor: true, children: ["MCP Servers: ", connectedCount, "/", serverCount, " connected"] }) })] }));
34
+ }
35
+ //# sourceMappingURL=LLMStatusLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LLMStatusLoader.js","sourceRoot":"","sources":["../../../src/cli/ui/LLMStatusLoader.tsx"],"names":[],"mappings":"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"}
@@ -2,7 +2,6 @@ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-run
2
2
  import { HELP_COMMAND_MARKER } from "../constants.js";
3
3
  import { HelpCommands } from "../ui/HelpCommands.js";
4
4
  import { HistoryItemDisplay } from "../ui/HistoryItemDisplay.js";
5
- import { ThinkingIndicator } from "../ui/ThinkingIndicator.js";
6
5
  import { Box, Static, Text } from "ink";
7
6
  const MAX_THINKING_LINES = 6;
8
7
  function ThinkingBlock({ content, isActive, }) {
@@ -13,16 +12,12 @@ function ThinkingBlock({ content, isActive, }) {
13
12
  // biome-ignore lint/suspicious/noArrayIndexKey: static display lines
14
13
  , { color: "gray", dimColor: true, wrap: "wrap", children: line }, i))), truncated && (_jsxs(Text, { color: "gray", dimColor: true, children: ["... (", lines.length - MAX_THINKING_LINES, " more lines)"] }))] }));
15
14
  }
16
- export const MainContent = ({ history, pendingItem, streamingState, isRagFetching, isCommandProcessing, width, }) => {
17
- const isBusy = isRagFetching ||
18
- isCommandProcessing ||
19
- streamingState === "thinking" ||
20
- streamingState === "executing";
15
+ export const MainContent = ({ history, pendingItem, width, }) => {
21
16
  return (_jsxs(_Fragment, { children: [_jsx(Static, { items: history, children: (item) => {
22
17
  if (item.content === HELP_COMMAND_MARKER) {
23
18
  return _jsx(HelpCommands, { width: width }, item.id);
24
19
  }
25
20
  return _jsx(HistoryItemDisplay, { item: item, width: width }, item.id);
26
- } }), isBusy && _jsx(ThinkingIndicator, {}), pendingItem && (_jsxs(Box, { flexDirection: "column", width: width, paddingX: 1, marginBottom: 1, children: [pendingItem.thinkingContent && (_jsx(ThinkingBlock, { content: pendingItem.thinkingContent, isActive: pendingItem.isThinking === true })), pendingItem.content.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { color: "cyan", bold: true, children: "\u25C0 Assistant" }), _jsx(Text, { wrap: "wrap", children: pendingItem.content })] }))] }))] }));
21
+ } }), pendingItem && (_jsxs(Box, { flexDirection: "column", width: width, paddingX: 1, marginBottom: 1, children: [pendingItem.thinkingContent && (_jsx(ThinkingBlock, { content: pendingItem.thinkingContent, isActive: pendingItem.isThinking === true })), pendingItem.content.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { color: "cyan", bold: true, children: "\u25C0 Assistant" }), _jsx(Text, { wrap: "wrap", children: pendingItem.content })] }))] }))] }));
27
22
  };
28
23
  //# sourceMappingURL=MainContent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MainContent.js","sourceRoot":"","sources":["../../../src/cli/ui/MainContent.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MainContent.js","sourceRoot":"","sources":["../../../src/cli/ui/MainContent.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Box } from "ink";
3
+ import { ToastDisplay } from "./ToastDisplay.js";
3
4
  export function SystemInfoSummaryBox({ children }) {
4
- return (_jsx(Box, { width: "100%", justifyContent: "space-between", children: children }));
5
+ return (_jsxs(Box, { width: "100%", flexDirection: "column", padding: 0, children: [_jsx(ToastDisplay, {}), _jsx(Box, { width: "100%", flexDirection: "row", justifyContent: "space-between", alignItems: "center", children: children })] }));
5
6
  }
6
7
  //# sourceMappingURL=SystemInfoSummaryBox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SystemInfoSummaryBox.js","sourceRoot":"","sources":["../../../src/cli/ui/SystemInfoSummaryBox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAO1B,MAAM,UAAU,oBAAoB,CAAC,EAAE,QAAQ,EAA6B;IAC3E,OAAO,CACN,KAAC,GAAG,IAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAC,eAAe,YAChD,QAAQ,GACJ,CACN,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"SystemInfoSummaryBox.js","sourceRoot":"","sources":["../../../src/cli/ui/SystemInfoSummaryBox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMjD,MAAM,UAAU,oBAAoB,CAAC,EAAE,QAAQ,EAA6B;IAC3E,OAAO,CACN,MAAC,GAAG,IAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAC,QAAQ,EAAC,OAAO,EAAE,CAAC,aACpD,KAAC,YAAY,KAAG,EAChB,KAAC,GAAG,IACH,KAAK,EAAE,MAAM,EACb,aAAa,EAAC,KAAK,EACnB,cAAc,EAAC,eAAe,EAC9B,UAAU,EAAC,QAAQ,YAElB,QAAQ,GACJ,IACD,CACN,CAAC;AACH,CAAC"}
@@ -1,2 +1,3 @@
1
- import type React from "react";
2
- export declare const ThinkingIndicator: React.FC;
1
+ export declare const ThinkingIndicator: ({ isBusy }: {
2
+ isBusy: boolean;
3
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -1,9 +1,9 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { Box, Text } from "ink";
3
3
  import { useEffect, useState } from "react";
4
4
  const SPINNER_FRAMES = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
5
5
  const FRAME_INTERVAL_MS = 80;
6
- export const ThinkingIndicator = () => {
6
+ export const ThinkingIndicator = ({ isBusy }) => {
7
7
  const [frameIndex, setFrameIndex] = useState(0);
8
8
  useEffect(() => {
9
9
  const timer = setInterval(() => {
@@ -11,6 +11,6 @@ export const ThinkingIndicator = () => {
11
11
  }, FRAME_INTERVAL_MS);
12
12
  return () => clearInterval(timer);
13
13
  }, []);
14
- return (_jsx(Box, { paddingX: 1, marginBottom: 1, marginTop: 1, children: _jsxs(Text, { color: "cyan", children: [SPINNER_FRAMES[frameIndex], " Thinking..."] }) }));
14
+ return (_jsx(_Fragment, { children: isBusy ? (_jsx(Box, { paddingX: 1, marginBottom: 1, marginTop: 1, children: _jsxs(Text, { color: "cyan", children: [SPINNER_FRAMES[frameIndex], " Thinking..."] }) })) : (_jsx(Box, { paddingX: 1, marginBottom: 1, marginTop: 1, children: _jsx(Text, { children: " " }) })) }));
15
15
  };
16
16
  //# sourceMappingURL=ThinkingIndicator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThinkingIndicator.js","sourceRoot":"","sources":["../../../src/cli/ui/ThinkingIndicator.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1E,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,MAAM,CAAC,MAAM,iBAAiB,GAAa,GAAG,EAAE;IAC/C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEhD,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC9B,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QAC7D,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAEtB,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACN,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,YAC9C,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,aAAE,cAAc,CAAC,UAAU,CAAC,oBAAoB,GAC7D,CACN,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"ThinkingIndicator.js","sourceRoot":"","sources":["../../../src/cli/ui/ThinkingIndicator.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1E,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAE,MAAM,EAAuB,EAAE,EAAE;IACpE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEhD,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC9B,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QAC7D,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAEtB,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACN,4BACE,MAAM,CAAC,CAAC,CAAC,CACT,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,YAC9C,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,aAAE,cAAc,CAAC,UAAU,CAAC,oBAAoB,GAC7D,CACN,CAAC,CAAC,CAAC,CACH,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,YAC9C,KAAC,IAAI,oBAAS,GACT,CACN,GACC,CACH,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type React from "react";
2
+ export declare const ToastDisplay: React.FC;
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useUIState } from "../context/UIStateContext.js";
3
+ import { theme } from "../theme/semantic-colors.js";
4
+ import { TransientMessageType } from "../utils/events.js";
5
+ import { Box, Text } from "ink";
6
+ export const ToastDisplay = () => {
7
+ const { transientMessage } = useUIState();
8
+ if (!transientMessage?.text) {
9
+ return null;
10
+ }
11
+ if (transientMessage.type === TransientMessageType.Warning) {
12
+ return (_jsx(Box, { justifyContent: "flex-start", paddingTop: 1, children: _jsx(Text, { color: theme.status.warning, children: transientMessage.text }) }));
13
+ }
14
+ if (transientMessage.type === TransientMessageType.Hint) {
15
+ return (_jsx(Box, { justifyContent: "flex-start", paddingTop: 1, children: _jsx(Text, { color: theme.text.secondary, children: transientMessage.text }) }));
16
+ }
17
+ return null;
18
+ };
19
+ //# sourceMappingURL=ToastDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToastDisplay.js","sourceRoot":"","sources":["../../../src/cli/ui/ToastDisplay.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAGhC,MAAM,CAAC,MAAM,YAAY,GAAa,GAAG,EAAE;IAC1C,MAAM,EAAE,gBAAgB,EAAE,GAAG,UAAU,EAAE,CAAC;IAE1C,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,gBAAgB,CAAC,IAAI,KAAK,oBAAoB,CAAC,OAAO,EAAE,CAAC;QAC5D,OAAO,CACN,KAAC,GAAG,IAAC,cAAc,EAAC,YAAY,EAAC,UAAU,EAAE,CAAC,YAC7C,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,YAAG,gBAAgB,CAAC,IAAI,GAAQ,GAC5D,CACN,CAAC;IACH,CAAC;IAED,IAAI,gBAAgB,CAAC,IAAI,KAAK,oBAAoB,CAAC,IAAI,EAAE,CAAC;QACzD,OAAO,CACN,KAAC,GAAG,IAAC,cAAc,EAAC,YAAY,EAAC,UAAU,EAAE,CAAC,YAC7C,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,YAAG,gBAAgB,CAAC,IAAI,GAAQ,GAC5D,CACN,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC,CAAC"}
@@ -7,8 +7,5 @@ interface ExpandableTextProps {
7
7
  textColor?: string;
8
8
  isExpanded?: boolean;
9
9
  }
10
- /**
11
- * Renders a suggestion label, highlighting the matched portion if provided.
12
- */
13
10
  export declare function ExpandableText({ label, matchedIndex, userInput, textColor, isExpanded: _isExpanded, }: ExpandableTextProps): ReactElement;
14
11
  export {};
@@ -1,9 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Text } from "ink";
3
3
  export const MAX_WIDTH = 120;
4
- /**
5
- * Renders a suggestion label, highlighting the matched portion if provided.
6
- */
7
4
  export function ExpandableText({ label, matchedIndex, userInput, textColor, isExpanded: _isExpanded, }) {
8
5
  if (matchedIndex !== undefined &&
9
6
  matchedIndex >= 0 &&
@@ -1 +1 @@
1
- {"version":3,"file":"ExpandableText.js","sourceRoot":"","sources":["../../../../src/cli/ui/shared/ExpandableText.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAG3B,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC;AAU7B;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAC9B,KAAK,EACL,YAAY,EACZ,SAAS,EACT,SAAS,EACT,UAAU,EAAE,WAAW,GACF;IACrB,IACC,YAAY,KAAK,SAAS;QAC1B,YAAY,IAAI,CAAC;QACjB,SAAS;QACT,SAAS,CAAC,MAAM,GAAG,CAAC,EACnB,CAAC;QACF,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3D,OAAO,CACN,MAAC,IAAI,IAAC,KAAK,EAAE,SAAS,aACpB,MAAM,EACP,KAAC,IAAI,IAAC,IAAI,kBAAE,KAAK,GAAQ,EACxB,KAAK,IACA,CACP,CAAC;IACH,CAAC;IACD,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,YAAG,KAAK,GAAQ,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"ExpandableText.js","sourceRoot":"","sources":["../../../../src/cli/ui/shared/ExpandableText.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAG3B,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC;AAU7B,MAAM,UAAU,cAAc,CAAC,EAC9B,KAAK,EACL,YAAY,EACZ,SAAS,EACT,SAAS,EACT,UAAU,EAAE,WAAW,GACF;IACrB,IACC,YAAY,KAAK,SAAS;QAC1B,YAAY,IAAI,CAAC;QACjB,SAAS;QACT,SAAS,CAAC,MAAM,GAAG,CAAC,EACnB,CAAC;QACF,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3D,OAAO,CACN,MAAC,IAAI,IAAC,KAAK,EAAE,SAAS,aACpB,MAAM,EACP,KAAC,IAAI,IAAC,IAAI,kBAAE,KAAK,GAAQ,EACxB,KAAK,IACA,CACP,CAAC;IACH,CAAC;IACD,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,YAAG,KAAK,GAAQ,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,8 @@
1
+ declare function supportsKittyBootLogo(env: NodeJS.ProcessEnv): boolean;
2
+ declare function chunkBase64Payload(data: string, chunkSize?: number): string[];
3
+ export declare function renderBootLogo(stdout: NodeJS.WriteStream): Promise<void>;
4
+ export declare const __bootLogoTestUtils: {
5
+ supportsKittyBootLogo: typeof supportsKittyBootLogo;
6
+ chunkBase64Payload: typeof chunkBase64Payload;
7
+ };
8
+ export {};
@@ -0,0 +1,68 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { theme } from "../theme/semantic-colors.js";
5
+ import chalk from "chalk";
6
+ import pkg from "../../../package.json" with { type: "json" };
7
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
8
+ const logoPath = path.resolve(__dirname, "../../../assets/llama-cli-logo-v2.png");
9
+ const KITTY_CHUNK_SIZE = 4096;
10
+ const BOOT_IMAGE_COLUMNS = 15;
11
+ const BOOT_IMAGE_ROWS = 9;
12
+ function supportsKittyBootLogo(env) {
13
+ return Boolean(env["TERM_PROGRAM"] === "ghostty" ||
14
+ env["TERM_PROGRAM"] === "Ghostty" ||
15
+ env["TERM_PROGRAM"] === "WezTerm" ||
16
+ env["TERM_PROGRAM"] === "kitty" ||
17
+ env["KONSOLE_VERSION"] ||
18
+ env["TERM"]?.includes("kitty"));
19
+ }
20
+ function chunkBase64Payload(data, chunkSize = KITTY_CHUNK_SIZE) {
21
+ const chunks = [];
22
+ for (let offset = 0; offset < data.length; offset += chunkSize) {
23
+ chunks.push(data.slice(offset, offset + chunkSize));
24
+ }
25
+ return chunks;
26
+ }
27
+ export async function renderBootLogo(stdout) {
28
+ const writeTextFallback = () => {
29
+ stdout.write(chalk.hex(theme.text.accent).bold("LLaMA CLI ") +
30
+ chalk.hex(theme.text.primary)(`v${pkg.version}`) +
31
+ "\n");
32
+ stdout.write("A command-line interface for LLaMA-based local LLM servers, providing seamless integration and management of your local LLM resources.\n\n");
33
+ };
34
+ if (!supportsKittyBootLogo(process.env)) {
35
+ writeTextFallback();
36
+ return;
37
+ }
38
+ try {
39
+ const logoPng = await fs.readFile(logoPath);
40
+ const base64Payload = logoPng.toString("base64");
41
+ const chunks = chunkBase64Payload(base64Payload);
42
+ const leftPadding = Math.max(0, Math.floor(((stdout.columns ?? 80) - BOOT_IMAGE_COLUMNS) / 2));
43
+ const padding = " ".repeat(leftPadding);
44
+ stdout.write(padding);
45
+ chunks.forEach((chunk, index) => {
46
+ const isFirst = index === 0;
47
+ const isLast = index === chunks.length - 1;
48
+ const metadata = isFirst
49
+ ? `a=T,f=100,c=${BOOT_IMAGE_COLUMNS},r=${BOOT_IMAGE_ROWS},q=2,m=${isLast ? 0 : 1};`
50
+ : `m=${isLast ? 0 : 1},q=2;`;
51
+ stdout.write(`\x1b_G${metadata}${chunk}\x1b\\`);
52
+ });
53
+ stdout.write("\r");
54
+ stdout.write(padding +
55
+ chalk.hex(theme.text.accent).bold("LLaMA CLI ") +
56
+ chalk.hex(theme.text.primary)(`v${pkg.version}`) +
57
+ "\n");
58
+ stdout.write("A command-line interface for llama.cpp based local LLM servers, providing seamless integration and management of your local LLM resources.\n\n");
59
+ }
60
+ catch {
61
+ writeTextFallback();
62
+ }
63
+ }
64
+ export const __bootLogoTestUtils = {
65
+ supportsKittyBootLogo,
66
+ chunkBase64Payload,
67
+ };
68
+ //# sourceMappingURL=bootLogo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootLogo.js","sourceRoot":"","sources":["../../../src/cli/utils/bootLogo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { EventEmitter } from "node:events";
2
+ export declare enum TransientMessageType {
3
+ Warning = "warning",
4
+ Hint = "hint"
5
+ }
6
+ export interface TransientMessagePayload {
7
+ message: string;
8
+ type: TransientMessageType;
9
+ }
10
+ export declare enum AppEvent {
11
+ OpenDebugConsole = "open-debug-console",
12
+ Flicker = "flicker",
13
+ SelectionWarning = "selection-warning",
14
+ PasteTimeout = "paste-timeout",
15
+ TerminalBackground = "terminal-background",
16
+ TransientMessage = "transient-message",
17
+ ScrollToBottom = "scroll-to-bottom"
18
+ }
19
+ export interface AppEvents {
20
+ [AppEvent.OpenDebugConsole]: [string];
21
+ [AppEvent.Flicker]: never[];
22
+ [AppEvent.SelectionWarning]: never[];
23
+ [AppEvent.PasteTimeout]: never[];
24
+ [AppEvent.TerminalBackground]: [string];
25
+ [AppEvent.TransientMessage]: [TransientMessagePayload];
26
+ [AppEvent.ScrollToBottom]: never[];
27
+ }
28
+ export declare const appEvents: EventEmitter<AppEvents>;
@@ -0,0 +1,18 @@
1
+ import { EventEmitter } from "node:events";
2
+ export var TransientMessageType;
3
+ (function (TransientMessageType) {
4
+ TransientMessageType["Warning"] = "warning";
5
+ TransientMessageType["Hint"] = "hint";
6
+ })(TransientMessageType || (TransientMessageType = {}));
7
+ export var AppEvent;
8
+ (function (AppEvent) {
9
+ AppEvent["OpenDebugConsole"] = "open-debug-console";
10
+ AppEvent["Flicker"] = "flicker";
11
+ AppEvent["SelectionWarning"] = "selection-warning";
12
+ AppEvent["PasteTimeout"] = "paste-timeout";
13
+ AppEvent["TerminalBackground"] = "terminal-background";
14
+ AppEvent["TransientMessage"] = "transient-message";
15
+ AppEvent["ScrollToBottom"] = "scroll-to-bottom";
16
+ })(AppEvent || (AppEvent = {}));
17
+ export const appEvents = new EventEmitter();
18
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/cli/utils/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,CAAN,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC/B,2CAAmB,CAAA;IACnB,qCAAa,CAAA;AACd,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,QAG/B;AAOD,MAAM,CAAN,IAAY,QAQX;AARD,WAAY,QAAQ;IACnB,mDAAuC,CAAA;IACvC,+BAAmB,CAAA;IACnB,kDAAsC,CAAA;IACtC,0CAA8B,CAAA;IAC9B,sDAA0C,CAAA;IAC1C,kDAAsC,CAAA;IACtC,+CAAmC,CAAA;AACpC,CAAC,EARW,QAAQ,KAAR,QAAQ,QAQnB;AAYD,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,YAAY,EAAa,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Transformation } from "../key/textBuffer/types.js";
2
+ export type HighlightToken = {
3
+ text: string;
4
+ type: "default" | "command" | "file" | "paste";
5
+ };
6
+ export declare const AT_COMMAND_PATH_REGEX_SOURCE = "(?:(?:\"(?:[^\"]*)\")|(?:\\\\.|[^ \\t\\n\\r,;!?()\\[\\]{}.]|\\.(?!$|[ \\t\\n\\r])))+";
7
+ export declare function parseInputForHighlighting(text: string, index: number, transformations?: Transformation[], cursorCol?: number): readonly HighlightToken[];
8
+ export declare function parseSegmentsFromTokens(tokens: readonly HighlightToken[], sliceStart: number, sliceEnd: number): readonly HighlightToken[];
@@ -0,0 +1,117 @@
1
+ import { LRUCache } from "mnemonist";
2
+ import { LRU_BUFFER_PERF_CACHE_LIMIT } from "../constants.js";
3
+ import { PASTED_TEXT_PLACEHOLDER_REGEX } from "../key/textBuffer/constants.js";
4
+ import { cpLen, cpSlice } from "./textUtil.js";
5
+ export const AT_COMMAND_PATH_REGEX_SOURCE = '(?:(?:"(?:[^"]*)")|(?:\\\\.|[^ \\t\\n\\r,;!?()\\[\\]{}.]|\\.(?!$|[ \\t\\n\\r])))+';
6
+ // Matches slash commands (e.g., /help), @ references (files or MCP resource URIs),
7
+ // and large paste placeholders (e.g., [Pasted Text: 6 lines]).
8
+ //
9
+ // The @ pattern uses the same source as the command processor to ensure consistency.
10
+ // It matches any character except strict delimiters (ASCII whitespace, comma, etc.).
11
+ // This supports URIs like `@file:///example.txt` and filenames with Unicode spaces (like NNBSP).
12
+ const HIGHLIGHT_REGEX = new RegExp(`(^/[a-zA-Z0-9_-]+|(?<!\\\\)@${AT_COMMAND_PATH_REGEX_SOURCE}|${PASTED_TEXT_PLACEHOLDER_REGEX.source})`, "g");
13
+ const highlightCache = new LRUCache(LRU_BUFFER_PERF_CACHE_LIMIT);
14
+ export function parseInputForHighlighting(text, index, transformations = [], cursorCol) {
15
+ let isCursorInsideTransform = false;
16
+ if (cursorCol !== undefined) {
17
+ for (const transform of transformations) {
18
+ if (cursorCol >= transform.logStart && cursorCol <= transform.logEnd) {
19
+ isCursorInsideTransform = true;
20
+ break;
21
+ }
22
+ }
23
+ }
24
+ const cacheKey = `${index === 0 ? "F" : "N"}:${isCursorInsideTransform ? cursorCol : "NC"}:${text}`;
25
+ const cached = highlightCache.get(cacheKey);
26
+ if (cached !== undefined)
27
+ return cached;
28
+ HIGHLIGHT_REGEX.lastIndex = 0;
29
+ if (!text) {
30
+ return [{ text: "", type: "default" }];
31
+ }
32
+ const parseUntransformedInput = (text) => {
33
+ const tokens = [];
34
+ if (!text)
35
+ return tokens;
36
+ HIGHLIGHT_REGEX.lastIndex = 0;
37
+ let last = 0;
38
+ let match;
39
+ match = HIGHLIGHT_REGEX.exec(text);
40
+ while (match !== null) {
41
+ const [fullMatch] = match;
42
+ const matchIndex = match.index;
43
+ if (matchIndex > last) {
44
+ tokens.push({ text: text.slice(last, matchIndex), type: "default" });
45
+ }
46
+ const type = fullMatch.startsWith("/")
47
+ ? "command"
48
+ : fullMatch.startsWith("@")
49
+ ? "file"
50
+ : "paste";
51
+ if (type === "command" && index !== 0) {
52
+ tokens.push({ text: fullMatch, type: "default" });
53
+ }
54
+ else {
55
+ tokens.push({ text: fullMatch, type });
56
+ }
57
+ last = matchIndex + fullMatch.length;
58
+ match = HIGHLIGHT_REGEX.exec(text);
59
+ }
60
+ if (last < text.length) {
61
+ tokens.push({ text: text.slice(last), type: "default" });
62
+ }
63
+ return tokens;
64
+ };
65
+ const tokens = [];
66
+ let column = 0;
67
+ const sortedTransformations = (transformations ?? [])
68
+ .slice()
69
+ .sort((a, b) => a.logStart - b.logStart);
70
+ for (const transformation of sortedTransformations) {
71
+ const textBeforeTransformation = cpSlice(text, column, transformation.logStart);
72
+ tokens.push(...parseUntransformedInput(textBeforeTransformation));
73
+ const isCursorInside = cursorCol !== undefined &&
74
+ cursorCol >= transformation.logStart &&
75
+ cursorCol <= transformation.logEnd;
76
+ const transformationText = isCursorInside
77
+ ? transformation.logicalText
78
+ : transformation.collapsedText;
79
+ tokens.push({
80
+ text: transformationText,
81
+ type: transformation.type === "paste" ? "paste" : "file",
82
+ });
83
+ column = transformation.logEnd;
84
+ }
85
+ const textAfterFinalTransformation = cpSlice(text, column);
86
+ tokens.push(...parseUntransformedInput(textAfterFinalTransformation));
87
+ highlightCache.set(cacheKey, tokens);
88
+ return tokens;
89
+ }
90
+ export function parseSegmentsFromTokens(tokens, sliceStart, sliceEnd) {
91
+ if (sliceStart >= sliceEnd)
92
+ return [];
93
+ const segments = [];
94
+ let tokenCpStart = 0;
95
+ for (const token of tokens) {
96
+ const tokenLen = cpLen(token.text);
97
+ const tokenStart = tokenCpStart;
98
+ const tokenEnd = tokenStart + tokenLen;
99
+ const overlapStart = Math.max(tokenStart, sliceStart);
100
+ const overlapEnd = Math.min(tokenEnd, sliceEnd);
101
+ if (overlapStart < overlapEnd) {
102
+ const sliceStartInToken = overlapStart - tokenStart;
103
+ const sliceEndInToken = overlapEnd - tokenStart;
104
+ const rawSlice = cpSlice(token.text, sliceStartInToken, sliceEndInToken);
105
+ const last = segments[segments.length - 1];
106
+ if (last && last.type === token.type) {
107
+ last.text += rawSlice;
108
+ }
109
+ else {
110
+ segments.push({ type: token.type, text: rawSlice });
111
+ }
112
+ }
113
+ tokenCpStart += tokenLen;
114
+ }
115
+ return segments;
116
+ }
117
+ //# sourceMappingURL=highlights.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlights.js","sourceRoot":"","sources":["../../../src/cli/utils/highlights.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { ExpandedPasteInfo } from "../key/textBuffer/types.js";
1
2
  /**
2
3
  * Calculates the maximum width of a multi-line ASCII art string.
3
4
  * @param asciiArt The ASCII art string.
@@ -61,3 +62,7 @@ export declare function normalizeEscapedNewlines(value: string): string;
61
62
  */
62
63
  export declare const getCachedStringWidth: (str: string) => number;
63
64
  export declare function escapeAnsiCtrlCodes<T>(obj: T): T;
65
+ export declare function shiftExpandedRegions(expandedPaste: ExpandedPasteInfo | null, changeStartLine: number, lineDelta: number, changeEndLine?: number): {
66
+ newInfo: ExpandedPasteInfo | null;
67
+ isDetached: boolean;
68
+ };
@@ -228,4 +228,36 @@ export function escapeAnsiCtrlCodes(obj) {
228
228
  }
229
229
  return newObj !== null ? newObj : obj;
230
230
  }
231
+ export function shiftExpandedRegions(expandedPaste, changeStartLine, lineDelta, changeEndLine) {
232
+ if (!expandedPaste)
233
+ return { newInfo: null, isDetached: false };
234
+ const effectiveEndLine = changeEndLine ?? changeStartLine;
235
+ const infoEndLine = expandedPaste.startLine + expandedPaste.lineCount - 1;
236
+ // 1. Check for overlap/intersection with the changed range
237
+ const isOverlapping = changeStartLine <= infoEndLine &&
238
+ effectiveEndLine >= expandedPaste.startLine;
239
+ if (isOverlapping) {
240
+ // If the change is a deletion (lineDelta < 0) that touches this region, we detach.
241
+ // If it's an insertion, we only detach if it's a multi-line insertion (lineDelta > 0)
242
+ // that isn't at the very start of the region (which would shift it).
243
+ // Regular character typing (lineDelta === 0) does NOT detach.
244
+ if (lineDelta < 0 ||
245
+ (lineDelta > 0 &&
246
+ changeStartLine > expandedPaste.startLine &&
247
+ changeStartLine <= infoEndLine)) {
248
+ return { newInfo: null, isDetached: true };
249
+ }
250
+ }
251
+ // 2. Shift regions that start at or after the change point
252
+ if (expandedPaste.startLine >= changeStartLine) {
253
+ return {
254
+ newInfo: {
255
+ ...expandedPaste,
256
+ startLine: expandedPaste.startLine + lineDelta,
257
+ },
258
+ isDetached: false,
259
+ };
260
+ }
261
+ return { newInfo: expandedPaste, isDetached: false };
262
+ }
231
263
  //# sourceMappingURL=textUtil.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"textUtil.js","sourceRoot":"","sources":["../../../src/cli/utils/textUtil.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"textUtil.js","sourceRoot":"","sources":["../../../src/cli/utils/textUtil.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,10 @@ declare class DebugLogger {
3
3
  constructor();
4
4
  private writeToFile;
5
5
  info(...args: unknown[]): void;
6
+ writeInfo(...args: unknown[]): void;
7
+ writeError(...args: unknown[]): void;
8
+ writeDebug(...args: unknown[]): void;
9
+ writeWarn(...args: unknown[]): void;
6
10
  log(...args: unknown[]): void;
7
11
  warn(...args: unknown[]): void;
8
12
  error(...args: unknown[]): void;
@@ -33,6 +33,18 @@ class DebugLogger {
33
33
  this.writeToFile("INFO", args);
34
34
  console.error(chalk.green("[INFO]"), chalk.green(util.format(...args)));
35
35
  }
36
+ writeInfo(...args) {
37
+ this.writeToFile("INFO", args);
38
+ }
39
+ writeError(...args) {
40
+ this.writeToFile("ERROR", args);
41
+ }
42
+ writeDebug(...args) {
43
+ this.writeToFile("DEBUG", args);
44
+ }
45
+ writeWarn(...args) {
46
+ this.writeToFile("WARN", args);
47
+ }
36
48
  log(...args) {
37
49
  this.writeToFile("LOG", args);
38
50
  console.error(chalk.blue("[LOG]"), chalk.gray(util.format(...args)));
@@ -1 +1 @@
1
- {"version":3,"file":"debugLogger.js","sourceRoot":"","sources":["../../../src/shared/utils/debugLogger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"debugLogger.js","sourceRoot":"","sources":["../../../src/shared/utils/debugLogger.ts"],"names":[],"mappings":"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"}