@sunub/obsidian-mcp-server 0.3.23 ā 0.3.25
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/build/cli/App.d.ts +4 -1
- package/build/cli/App.js +153 -104
- package/build/cli/App.js.map +1 -1
- package/build/cli/AppContainer.js +8 -2
- package/build/cli/AppContainer.js.map +1 -1
- package/build/cli/config/mcpServersConfig.js +19 -2
- package/build/cli/config/mcpServersConfig.js.map +1 -1
- package/build/cli/context/InputContext.d.ts +1 -1
- package/build/cli/context/KeypressContext.js +0 -5
- package/build/cli/context/KeypressContext.js.map +1 -1
- package/build/cli/context/KeypressContext.util.js +1 -2
- package/build/cli/context/KeypressContext.util.js.map +1 -1
- package/build/cli/context/UIStateContext.d.ts +16 -0
- package/build/cli/context/UIStateContext.js +10 -0
- package/build/cli/context/UIStateContext.js.map +1 -0
- package/build/cli/hooks/useCommandCompletion.d.ts +1 -1
- package/build/cli/hooks/useCommandCompletion.js +1 -1
- package/build/cli/hooks/useCommandCompletion.js.map +1 -1
- package/build/cli/hooks/useHistoryManager.d.ts +1 -0
- package/build/cli/hooks/useHistoryManager.js +19 -1
- package/build/cli/hooks/useHistoryManager.js.map +1 -1
- package/build/cli/hooks/useInputHistory.d.ts +2 -2
- package/build/cli/hooks/useInputHistory.js +2 -2
- package/build/cli/hooks/useInputHistory.js.map +1 -1
- package/build/cli/hooks/useKeyMatchers.d.ts +0 -9
- package/build/cli/hooks/useKeyMatchers.js +0 -9
- package/build/cli/hooks/useKeyMatchers.js.map +1 -1
- package/build/cli/hooks/useKeypress.d.ts +0 -13
- package/build/cli/hooks/useKeypress.js +0 -13
- package/build/cli/hooks/useKeypress.js.map +1 -1
- package/build/cli/hooks/useLlmStream/useLlmStream.d.ts +1 -1
- package/build/cli/hooks/useLlmStream/useLlmStream.js +9 -3
- package/build/cli/hooks/useLlmStream/useLlmStream.js.map +1 -1
- package/build/cli/hooks/useMcpManager.d.ts +0 -10
- package/build/cli/hooks/useMcpManager.js +6 -0
- package/build/cli/hooks/useMcpManager.js.map +1 -1
- package/build/cli/hooks/usePromptCompletion.d.ts +1 -2
- package/build/cli/hooks/usePromptCompletion.js +0 -1
- package/build/cli/hooks/usePromptCompletion.js.map +1 -1
- package/build/cli/hooks/useTransientMessage.d.ts +7 -0
- package/build/cli/hooks/useTransientMessage.js +34 -0
- package/build/cli/hooks/useTransientMessage.js.map +1 -0
- package/build/cli/index.js +7 -3
- package/build/cli/index.js.map +1 -1
- package/build/cli/key/keyBindings.d.ts +0 -19
- package/build/cli/key/keyBindings.js +0 -14
- package/build/cli/key/keyBindings.js.map +1 -1
- package/build/cli/key/keyMatchers.d.ts +0 -9
- package/build/cli/key/keyMatchers.js +0 -8
- package/build/cli/key/keyMatchers.js.map +1 -1
- package/build/cli/key/keybindingUtils.d.ts +3 -0
- package/build/cli/key/keybindingUtils.js +74 -0
- package/build/cli/key/keybindingUtils.js.map +1 -0
- package/build/cli/key/textBuffer/constants.d.ts +1 -0
- package/build/cli/key/textBuffer/constants.js +2 -0
- package/build/cli/key/textBuffer/constants.js.map +1 -0
- package/build/cli/key/textBuffer/index.d.ts +3 -0
- package/build/cli/key/textBuffer/index.js +3 -0
- package/build/cli/key/textBuffer/index.js.map +1 -0
- package/build/cli/key/textBuffer/textBuffer.d.ts +74 -0
- package/build/cli/key/textBuffer/textBuffer.js +1154 -0
- package/build/cli/key/textBuffer/textBuffer.js.map +1 -0
- package/build/cli/key/textBuffer/types.d.ts +106 -0
- package/build/cli/key/textBuffer/types.js +2 -0
- package/build/cli/key/textBuffer/types.js.map +1 -0
- package/build/cli/services/InputOffloadService.d.ts +20 -0
- package/build/cli/services/InputOffloadService.js +105 -0
- package/build/cli/services/InputOffloadService.js.map +1 -0
- package/build/cli/services/McpClientService.js +5 -3
- package/build/cli/services/McpClientService.js.map +1 -1
- package/build/cli/services/McpManager.js +4 -2
- package/build/cli/services/McpManager.js.map +1 -1
- package/build/cli/theme/builtin/tokyonight-dark.js +1 -0
- package/build/cli/theme/builtin/tokyonight-dark.js.map +1 -1
- package/build/cli/theme/semantic-tokens.js +8 -8
- package/build/cli/theme/semantic-tokens.js.map +1 -1
- package/build/cli/theme/theme-manager.js +4 -2
- package/build/cli/theme/theme-manager.js.map +1 -1
- package/build/cli/theme/theme.d.ts +1 -23
- package/build/cli/theme/theme.js +11 -31
- package/build/cli/theme/theme.js.map +1 -1
- package/build/cli/types.d.ts +1 -2
- package/build/cli/ui/CLILogo.d.ts +1 -0
- package/build/cli/ui/CLILogo.js +33 -0
- package/build/cli/ui/CLILogo.js.map +1 -0
- package/build/cli/ui/HistoryItemDisplay.js +36 -1
- package/build/cli/ui/HistoryItemDisplay.js.map +1 -1
- package/build/cli/ui/InputPrompt.d.ts +8 -1
- package/build/cli/ui/InputPrompt.js +142 -24
- package/build/cli/ui/InputPrompt.js.map +1 -1
- package/build/cli/ui/LLMHealthChecker.js +1 -1
- package/build/cli/ui/LLMStatusLoader.d.ts +10 -0
- package/build/cli/ui/LLMStatusLoader.js +35 -0
- package/build/cli/ui/LLMStatusLoader.js.map +1 -0
- package/build/cli/ui/MainContent.js +2 -7
- package/build/cli/ui/MainContent.js.map +1 -1
- package/build/cli/ui/SystemInfoSummaryBox.js +3 -2
- package/build/cli/ui/SystemInfoSummaryBox.js.map +1 -1
- package/build/cli/ui/ThinkingIndicator.d.ts +3 -2
- package/build/cli/ui/ThinkingIndicator.js +3 -3
- package/build/cli/ui/ThinkingIndicator.js.map +1 -1
- package/build/cli/ui/ToastDisplay.d.ts +2 -0
- package/build/cli/ui/ToastDisplay.js +19 -0
- package/build/cli/ui/ToastDisplay.js.map +1 -0
- package/build/cli/ui/shared/ExpandableText.d.ts +0 -3
- package/build/cli/ui/shared/ExpandableText.js +0 -3
- package/build/cli/ui/shared/ExpandableText.js.map +1 -1
- package/build/cli/utils/bootLogo.d.ts +8 -0
- package/build/cli/utils/bootLogo.js +68 -0
- package/build/cli/utils/bootLogo.js.map +1 -0
- package/build/cli/utils/events.d.ts +28 -0
- package/build/cli/utils/events.js +18 -0
- package/build/cli/utils/events.js.map +1 -0
- package/build/cli/utils/highlights.d.ts +8 -0
- package/build/cli/utils/highlights.js +117 -0
- package/build/cli/utils/highlights.js.map +1 -0
- package/build/cli/utils/textUtil.d.ts +5 -0
- package/build/cli/utils/textUtil.js +32 -0
- package/build/cli/utils/textUtil.js.map +1 -1
- package/build/index.js +18 -5
- package/build/index.js.map +1 -1
- package/build/shared/utils/debugLogger.d.ts +4 -0
- package/build/shared/utils/debugLogger.js +23 -8
- package/build/shared/utils/debugLogger.js.map +1 -1
- package/build/utils/Embedder.d.ts +2 -0
- package/build/utils/Embedder.js +11 -4
- package/build/utils/Embedder.js.map +1 -1
- package/build/utils/Indexer.d.ts +3 -1
- package/build/utils/Indexer.js +35 -10
- package/build/utils/Indexer.js.map +1 -1
- package/build/utils/LocalReranker.js +1 -3
- package/build/utils/LocalReranker.js.map +1 -1
- package/build/utils/RAGIndexer.js +26 -21
- package/build/utils/RAGIndexer.js.map +1 -1
- package/build/utils/VaultManger/VaultManager.js +18 -1
- package/build/utils/VaultManger/VaultManager.js.map +1 -1
- package/build/utils/VectorDB.d.ts +1 -1
- package/build/utils/VectorDB.js +2 -2
- package/build/utils/cleanup.d.ts +30 -0
- package/build/utils/cleanup.js +137 -0
- package/build/utils/cleanup.js.map +1 -0
- package/package.json +4 -2
- package/build/cli/key/text-buffer.d.ts +0 -156
- package/build/cli/key/text-buffer.js +0 -937
- package/build/cli/key/text-buffer.js.map +0 -1
- package/build/cli/tmp.d.ts +0 -1
- package/build/cli/tmp.js +0 -27
- package/build/cli/tmp.js.map +0 -1
- package/build/cli/ui/layout/DefaultAppLayout.d.ts +0 -2
- package/build/cli/ui/layout/DefaultAppLayout.js +0 -6
- 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,
|
|
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
|
-
} }),
|
|
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":";AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,
|
|
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;
|
|
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
|
-
|
|
2
|
-
|
|
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;
|
|
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,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
|
|
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAE/E,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAO/C,MAAM,CAAC,MAAM,4BAA4B,GACxC,mFAAmF,CAAC;AAErF,mFAAmF;AACnF,+DAA+D;AAC/D,EAAE;AACF,qFAAqF;AACrF,qFAAqF;AACrF,iGAAiG;AACjG,MAAM,eAAe,GAAG,IAAI,MAAM,CACjC,+BAA+B,4BAA4B,IAAI,6BAA6B,CAAC,MAAM,GAAG,EACtG,GAAG,CACH,CAAC;AAEF,MAAM,cAAc,GAAG,IAAI,QAAQ,CAClC,2BAA2B,CAC3B,CAAC;AAEF,MAAM,UAAU,yBAAyB,CACxC,IAAY,EACZ,KAAa,EACb,kBAAoC,EAAE,EACtC,SAAkB;IAElB,IAAI,uBAAuB,GAAG,KAAK,CAAC;IACpC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC7B,KAAK,MAAM,SAAS,IAAI,eAAe,EAAE,CAAC;YACzC,IAAI,SAAS,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;gBACtE,uBAAuB,GAAG,IAAI,CAAC;gBAC/B,MAAM;YACP,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,uBAAuB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;IACpG,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAExC,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC;IAE9B,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAoB,EAAE;QAClE,MAAM,MAAM,GAAqB,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI;YAAE,OAAO,MAAM,CAAC;QAEzB,eAAe,CAAC,SAAS,GAAG,CAAC,CAAC;QAC9B,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,KAA6B,CAAC;QAElC,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,KAAK,KAAK,IAAI,EAAE,CAAC;YACvB,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;YAC1B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;YAE/B,IAAI,UAAU,GAAG,IAAI,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YACtE,CAAC;YAED,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;gBACrC,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;oBAC1B,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,OAAO,CAAC;YACZ,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACP,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACxC,CAAC;YAED,IAAI,GAAG,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;YACrC,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,MAAM,GAAqB,EAAE,CAAC;IAEpC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,qBAAqB,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;SACnD,KAAK,EAAE;SACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAE1C,KAAK,MAAM,cAAc,IAAI,qBAAqB,EAAE,CAAC;QACpD,MAAM,wBAAwB,GAAG,OAAO,CACvC,IAAI,EACJ,MAAM,EACN,cAAc,CAAC,QAAQ,CACvB,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAElE,MAAM,cAAc,GACnB,SAAS,KAAK,SAAS;YACvB,SAAS,IAAI,cAAc,CAAC,QAAQ;YACpC,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC;QACpC,MAAM,kBAAkB,GAAG,cAAc;YACxC,CAAC,CAAC,cAAc,CAAC,WAAW;YAC5B,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,cAAc,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;SACxD,CAAC,CAAC;QAEH,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,MAAM,4BAA4B,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3D,MAAM,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAEtE,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAErC,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,UAAU,uBAAuB,CACtC,MAAiC,EACjC,UAAkB,EAClB,QAAgB;IAEhB,IAAI,UAAU,IAAI,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEtC,MAAM,QAAQ,GAAqB,EAAE,CAAC;IACtC,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,UAAU,GAAG,YAAY,CAAC;QAChC,MAAM,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;QAEvC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,YAAY,GAAG,UAAU,EAAE,CAAC;YAC/B,MAAM,iBAAiB,GAAG,YAAY,GAAG,UAAU,CAAC;YACpD,MAAM,eAAe,GAAG,UAAU,GAAG,UAAU,CAAC;YAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAC;YAEzE,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3C,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;gBACtC,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACP,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACrD,CAAC;QACF,CAAC;QAED,YAAY,IAAI,QAAQ,CAAC;IAC1B,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC"}
|
|
@@ -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":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,SAAS,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"textUtil.js","sourceRoot":"","sources":["../../../src/cli/utils/textUtil.ts"],"names":[],"mappings":"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"}
|
package/build/index.js
CHANGED
|
@@ -6,7 +6,9 @@ import createMcpServer from "./server.js";
|
|
|
6
6
|
import { localEmbedder } from "./utils/Embedder.js";
|
|
7
7
|
import { localReranker } from "./utils/LocalReranker.js";
|
|
8
8
|
import { vaultWatcher } from "./utils/VaultWatcher.js";
|
|
9
|
+
import { ensureAppDataDirs } from "./utils/constants.js";
|
|
9
10
|
async function main() {
|
|
11
|
+
ensureAppDataDirs();
|
|
10
12
|
if (process.argv.slice(2).some((arg) => arg === "setup")) {
|
|
11
13
|
const { setup } = await import("./setup.js");
|
|
12
14
|
const success = await setup({ force: true });
|
|
@@ -35,11 +37,22 @@ async function main() {
|
|
|
35
37
|
console.error(chalk.yellow("ā¹ Basic Keyword Search is active. Run 'npx @sunub/obsidian-mcp-server setup' to enable Hybrid Search.\n"));
|
|
36
38
|
}
|
|
37
39
|
try {
|
|
38
|
-
vaultWatcher.start(options.vaultPath)
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
await vaultWatcher.start(options.vaultPath);
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
console.error(chalk.red("[VaultWatcher] Failed to start indexing:"), error);
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
const server = createMcpServer();
|
|
47
|
+
const transport = new StdioServerTransport();
|
|
48
|
+
const cleanup = async () => {
|
|
49
|
+
console.error(chalk.yellow("\nš Shutting down MCP server..."));
|
|
50
|
+
await vaultWatcher.stop();
|
|
51
|
+
process.exit(0);
|
|
52
|
+
};
|
|
53
|
+
process.on("SIGINT", cleanup);
|
|
54
|
+
process.on("SIGTERM", cleanup);
|
|
55
|
+
try {
|
|
43
56
|
await server.connect(transport);
|
|
44
57
|
}
|
|
45
58
|
catch (error) {
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,eAAe,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|