@sunub/obsidian-mcp-server 0.2.0 → 0.3.1
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/README.md +217 -25
- package/build/cli/AppContainer.d.ts +1 -0
- package/build/cli/AppContainer.js +197 -0
- package/build/cli/AppContainer.js.map +1 -0
- package/build/cli/config/SettingContext.d.ts +1 -0
- package/build/cli/config/SettingContext.js +2 -0
- package/build/cli/config/SettingContext.js.map +1 -0
- package/build/cli/config/mcpServersConfig.d.ts +18 -0
- package/build/cli/config/mcpServersConfig.js +119 -0
- package/build/cli/config/mcpServersConfig.js.map +1 -0
- package/build/cli/config/settingSchema.d.ts +180 -0
- package/build/cli/config/settingSchema.js +128 -0
- package/build/cli/config/settingSchema.js.map +1 -0
- package/build/cli/context/InputContext.d.ts +12 -0
- package/build/cli/context/InputContext.js +10 -0
- package/build/cli/context/InputContext.js.map +1 -0
- package/build/cli/context/KeypressContext.d.ts +30 -0
- package/build/cli/context/KeypressContext.js +200 -0
- package/build/cli/context/KeypressContext.js.map +1 -0
- package/build/cli/context/KeypressContext.util.d.ts +7 -0
- package/build/cli/context/KeypressContext.util.js +474 -0
- package/build/cli/context/KeypressContext.util.js.map +1 -0
- package/build/cli/hooks/useAtCompletion.d.ts +12 -0
- package/build/cli/hooks/useAtCompletion.js +5 -0
- package/build/cli/hooks/useAtCompletion.js.map +1 -0
- package/build/cli/hooks/useCommandCompletion.d.ts +59 -0
- package/build/cli/hooks/useCommandCompletion.js +344 -0
- package/build/cli/hooks/useCommandCompletion.js.map +1 -0
- package/build/cli/hooks/useCompletion.d.ts +22 -0
- package/build/cli/hooks/useCompletion.js +84 -0
- package/build/cli/hooks/useCompletion.js.map +1 -0
- package/build/cli/hooks/useDispatcher.d.ts +6 -0
- package/build/cli/hooks/useDispatcher.js +286 -0
- package/build/cli/hooks/useDispatcher.js.map +1 -0
- package/build/cli/hooks/useFocus.d.ts +2 -0
- package/build/cli/hooks/useFocus.js +3 -0
- package/build/cli/hooks/useFocus.js.map +1 -0
- package/build/cli/hooks/useInputHistory.d.ts +24 -0
- package/build/cli/hooks/useInputHistory.js +159 -0
- package/build/cli/hooks/useInputHistory.js.map +1 -0
- package/build/cli/hooks/useKeyMatchers.d.ts +17 -0
- package/build/cli/hooks/useKeyMatchers.js +13 -0
- package/build/cli/hooks/useKeyMatchers.js.map +1 -0
- package/build/cli/hooks/useKeypress.d.ts +19 -0
- package/build/cli/hooks/useKeypress.js +28 -0
- package/build/cli/hooks/useKeypress.js.map +1 -0
- package/build/cli/hooks/useLlmStream.d.ts +12 -0
- package/build/cli/hooks/useLlmStream.js +365 -0
- package/build/cli/hooks/useLlmStream.js.map +1 -0
- package/build/cli/hooks/useMcpClient.d.ts +10 -0
- package/build/cli/hooks/useMcpClient.js +100 -0
- package/build/cli/hooks/useMcpClient.js.map +1 -0
- package/build/cli/hooks/useMcpManager.d.ts +22 -0
- package/build/cli/hooks/useMcpManager.js +86 -0
- package/build/cli/hooks/useMcpManager.js.map +1 -0
- package/build/cli/hooks/usePromptCompletion.d.ts +19 -0
- package/build/cli/hooks/usePromptCompletion.js +13 -0
- package/build/cli/hooks/usePromptCompletion.js.map +1 -0
- package/build/cli/hooks/useRagContext.d.ts +6 -0
- package/build/cli/hooks/useRagContext.js +83 -0
- package/build/cli/hooks/useRagContext.js.map +1 -0
- package/build/cli/hooks/useShellCompletion.d.ts +18 -0
- package/build/cli/hooks/useShellCompletion.js +10 -0
- package/build/cli/hooks/useShellCompletion.js.map +1 -0
- package/build/cli/hooks/useSlashCompletion.d.ts +21 -0
- package/build/cli/hooks/useSlashCompletion.js +11 -0
- package/build/cli/hooks/useSlashCompletion.js.map +1 -0
- package/build/cli/hooks/useTerminalSize.d.ts +9 -0
- package/build/cli/hooks/useTerminalSize.js +26 -0
- package/build/cli/hooks/useTerminalSize.js.map +1 -0
- package/build/cli/index.js +27 -0
- package/build/cli/index.js.map +1 -0
- package/build/cli/key/keyBindings.d.ts +152 -0
- package/build/cli/key/keyBindings.js +630 -0
- package/build/cli/key/keyBindings.js.map +1 -0
- package/build/cli/key/keyMatchers.d.ts +27 -0
- package/build/cli/key/keyMatchers.js +33 -0
- package/build/cli/key/keyMatchers.js.map +1 -0
- package/build/cli/key/text-buffer.js +918 -0
- package/build/cli/key/text-buffer.js.map +1 -0
- package/build/cli/reference/HistoryItemDisplay.d.ts +23 -0
- package/build/cli/reference/HistoryItemDisplay.js +63 -0
- package/build/cli/reference/HistoryItemDisplay.js.map +1 -0
- package/build/cli/reference/InputContext.d.ts +17 -0
- package/build/cli/reference/InputContext.js +16 -0
- package/build/cli/reference/InputContext.js.map +1 -0
- package/build/cli/reference/KerypressContext.d.ts +37 -0
- package/build/cli/reference/KerypressContext.js +791 -0
- package/build/cli/reference/KerypressContext.js.map +1 -0
- package/build/cli/reference/MainContent.d.ts +6 -0
- package/build/cli/reference/MainContent.js +207 -0
- package/build/cli/reference/MainContent.js.map +1 -0
- package/build/cli/reference/UIStateContext.d.ts +188 -0
- package/build/cli/reference/UIStateContext.js +16 -0
- package/build/cli/reference/UIStateContext.js.map +1 -0
- package/build/cli/reference/useGeminiStream.d.ts +42 -0
- package/build/cli/reference/useGeminiStream.js +1404 -0
- package/build/cli/reference/useGeminiStream.js.map +1 -0
- package/build/cli/services/McpClientService.d.ts +32 -0
- package/build/cli/services/McpClientService.js +123 -0
- package/build/cli/services/McpClientService.js.map +1 -0
- package/build/cli/services/McpManager.d.ts +28 -0
- package/build/cli/services/McpManager.js +146 -0
- package/build/cli/services/McpManager.js.map +1 -0
- package/build/cli/tmp.js +27 -0
- package/build/cli/tmp.js.map +1 -0
- package/build/cli/ui/ConnectionStatus.d.ts +13 -0
- package/build/cli/ui/ConnectionStatus.js +24 -0
- package/build/cli/ui/ConnectionStatus.js.map +1 -0
- package/build/cli/ui/HelpCommands.d.ts +5 -0
- package/build/cli/ui/HelpCommands.js +11 -0
- package/build/cli/ui/HelpCommands.js.map +1 -0
- package/build/cli/ui/HistoryItemDisplay.d.ts +9 -0
- package/build/cli/ui/HistoryItemDisplay.js +38 -0
- package/build/cli/ui/HistoryItemDisplay.js.map +1 -0
- package/build/cli/ui/InputPrompt-bestcase.d.ts +63 -0
- package/build/cli/ui/InputPrompt-bestcase.js +1301 -0
- package/build/cli/ui/InputPrompt-bestcase.js.map +1 -0
- package/build/cli/ui/InputPrompt.d.ts +12 -0
- package/build/cli/ui/InputPrompt.js +145 -0
- package/build/cli/ui/InputPrompt.js.map +1 -0
- package/build/cli/ui/InputPrompt.tmp.d.ts +7 -0
- package/build/cli/ui/InputPrompt.tmp.js +215 -0
- package/build/cli/ui/InputPrompt.tmp.js.map +1 -0
- package/build/cli/ui/MainContent.d.ts +10 -0
- package/build/cli/ui/MainContent.js +24 -0
- package/build/cli/ui/MainContent.js.map +1 -0
- package/build/cli/ui/MouseContext.d.ts +1 -0
- package/build/cli/ui/MouseContext.js +2 -0
- package/build/cli/ui/MouseContext.js.map +1 -0
- package/build/cli/ui/SuggestionsDisplay.d.ts +25 -0
- package/build/cli/ui/SuggestionsDisplay.js +45 -0
- package/build/cli/ui/SuggestionsDisplay.js.map +1 -0
- package/build/cli/ui/ThinkingIndicator.d.ts +2 -0
- package/build/cli/ui/ThinkingIndicator.js +16 -0
- package/build/cli/ui/ThinkingIndicator.js.map +1 -0
- package/build/cli/ui/layout/DefaultAppLayout.d.ts +2 -0
- package/build/cli/ui/layout/DefaultAppLayout.js +6 -0
- package/build/cli/ui/layout/DefaultAppLayout.js.map +1 -0
- package/build/cli/ui/shared/ExpandableText.d.ts +14 -0
- package/build/cli/ui/shared/ExpandableText.js +19 -0
- package/build/cli/ui/shared/ExpandableText.js.map +1 -0
- package/build/cli/utils/commandUtils.d.ts +11 -0
- package/build/cli/utils/commandUtils.js +16 -0
- package/build/cli/utils/commandUtils.js.map +1 -0
- package/build/cli/utils/debugLogger.d.ts +12 -0
- package/build/cli/utils/debugLogger.js +52 -0
- package/build/cli/utils/debugLogger.js.map +1 -0
- package/build/cli/utils/historyStorage.d.ts +13 -0
- package/build/cli/utils/historyStorage.js +64 -0
- package/build/cli/utils/historyStorage.js.map +1 -0
- package/build/cli/utils/textUtil.d.ts +68 -0
- package/build/cli/utils/textUtil.js +236 -0
- package/build/cli/utils/textUtil.js.map +1 -0
- package/build/db.js +55 -0
- package/build/db.js.map +1 -0
- package/build/index.js +4 -0
- package/build/index.js.map +1 -0
- package/build/tools/create_document_with_properties/index.d.ts +60 -0
- package/build/tools/create_document_with_properties/index.js +7 -1
- package/build/tools/create_document_with_properties/index.js.map +1 -0
- package/build/tools/create_document_with_properties/params.d.ts +66 -0
- package/build/tools/generate_property/index.js +6 -0
- package/build/tools/generate_property/index.js.map +1 -0
- package/build/tools/index.d.ts +184 -0
- package/build/tools/organize_attachments/index.js +7 -1
- package/build/tools/organize_attachments/index.js.map +1 -0
- package/build/tools/organize_attachments/params.d.ts +122 -0
- package/build/tools/vault/index.js +17 -3
- package/build/tools/vault/index.js.map +1 -0
- package/build/tools/vault/params.d.ts +115 -0
- package/build/tools/vault/types/collect_context.d.ts +1340 -0
- package/build/tools/vault/types/list_all.d.ts +387 -0
- package/build/tools/vault/types/read_specific.d.ts +297 -0
- package/build/tools/vault/types/search.d.ts +598 -0
- package/build/tools/vault/utils/actions/collect_context.js +26 -1
- package/build/tools/vault/utils/actions/collect_context.js.map +1 -0
- package/build/tools/vault/utils/actions/index_rag.js +27 -0
- package/build/tools/vault/utils/actions/index_rag.js.map +1 -0
- package/build/tools/vault/utils/actions/list_all.js +1 -0
- package/build/tools/vault/utils/actions/list_all.js.map +1 -0
- package/build/tools/vault/utils/actions/load_memory.js +23 -13
- package/build/tools/vault/utils/actions/load_memory.js.map +1 -0
- package/build/tools/vault/utils/actions/read.js +2 -1
- package/build/tools/vault/utils/actions/read.js.map +1 -0
- package/build/tools/vault/utils/actions/search.js +2 -1
- package/build/tools/vault/utils/actions/search.js.map +1 -0
- package/build/tools/vault/utils/actions/search_semantic.js +54 -0
- package/build/tools/vault/utils/actions/search_semantic.js.map +1 -0
- package/build/tools/vault/utils/actions/stats.js +1 -0
- package/build/tools/vault/utils/actions/stats.js.map +1 -0
- package/build/tools/vault/utils/document.js +1 -0
- package/build/tools/vault/utils/document.js.map +1 -0
- package/build/tools/write_property/index.d.ts +58 -0
- package/build/tools/write_property/index.js +7 -1
- package/build/tools/write_property/index.js.map +1 -0
- package/build/utils/DirectoryWalker.d.ts +6 -0
- package/build/utils/DirectoryWalker.js +7 -0
- package/build/utils/DirectoryWalker.js.map +1 -0
- package/build/utils/Indexer.d.ts +18 -0
- package/build/utils/Indexer.js +5 -9
- package/build/utils/Indexer.js.map +1 -0
- package/build/utils/LLMClient.d.ts +37 -0
- package/build/utils/LLMClient.js +82 -0
- package/build/utils/LLMClient.js.map +1 -0
- package/build/utils/RAGIndexer.d.ts +22 -0
- package/build/utils/RAGIndexer.js +206 -0
- package/build/utils/RAGIndexer.js.map +1 -0
- package/build/utils/RerankerClient.d.ts +27 -0
- package/build/utils/RerankerClient.js +69 -0
- package/build/utils/RerankerClient.js.map +1 -0
- package/build/utils/VaultManger/VaultManager.d.ts +34 -0
- package/build/utils/VaultManger/VaultManager.js +1 -0
- package/build/utils/VaultManger/VaultManager.js.map +1 -0
- package/build/utils/VaultManger/VaultPathError.d.ts +6 -0
- package/build/utils/VaultManger/VaultPathError.js +1 -0
- package/build/utils/VaultManger/VaultPathError.js.map +1 -0
- package/build/utils/VaultManger/index.d.ts +3 -0
- package/build/utils/VaultManger/index.js +1 -0
- package/build/utils/VaultManger/index.js.map +1 -0
- package/build/utils/VaultManger/types.d.ts +16 -0
- package/build/utils/VaultManger/types.js +1 -0
- package/build/utils/VaultManger/types.js.map +1 -0
- package/build/utils/VaultWatcher.d.ts +8 -0
- package/build/utils/VaultWatcher.js +96 -0
- package/build/utils/VaultWatcher.js.map +1 -0
- package/build/utils/VectorDB.d.ts +53 -0
- package/build/utils/VectorDB.js +243 -0
- package/build/utils/VectorDB.js.map +1 -0
- package/build/utils/createToolError.d.ts +2 -0
- package/build/utils/createToolError.js +1 -0
- package/build/utils/createToolError.js.map +1 -0
- package/build/utils/getVaultManager.d.ts +2 -0
- package/build/utils/getVaultManager.js +2 -1
- package/build/utils/getVaultManager.js.map +1 -0
- package/build/utils/processor/LinkExtractor.d.ts +2 -0
- package/build/utils/processor/LinkExtractor.js +1 -0
- package/build/utils/processor/LinkExtractor.js.map +1 -0
- package/build/utils/processor/MatterParser.d.ts +2 -0
- package/build/utils/processor/MatterParser.js +12 -3
- package/build/utils/processor/MatterParser.js.map +1 -0
- package/build/utils/processor/types.d.ts +100 -0
- package/package.json +29 -3
- package/build/config.js +0 -55
- package/build/server.js +0 -32
- package/build/tools/create_document_with_properties/params.js +0 -32
- package/build/tools/generate_property/params.js +0 -54
- package/build/tools/index.js +0 -12
- package/build/tools/organize_attachments/params.js +0 -60
- package/build/tools/organize_attachments/utils.js +0 -65
- package/build/tools/vault/metrics.js +0 -126
- package/build/tools/vault/params.js +0 -141
- package/build/tools/vault/types/collect_context.js +0 -102
- package/build/tools/vault/types/list_all.js +0 -52
- package/build/tools/vault/types/read_specific.js +0 -40
- package/build/tools/vault/types/search.js +0 -58
- package/build/tools/vault/utils/constants.js +0 -2
- package/build/tools/vault/utils/shared.js +0 -74
- package/build/tools/vault/utils.js +0 -6
- package/build/tools/write_property/params.js +0 -51
- package/build/utils/processor/types.js +0 -27
- package/build/utils/semaphore.js +0 -25
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { join, resolve } from "node:path";
|
|
3
|
+
import { z } from "zod/v4";
|
|
4
|
+
import { configSchema } from "@/config.js";
|
|
5
|
+
import { debugLogger } from "../utils/debugLogger.js";
|
|
6
|
+
const mcpServerEntrySchema = z.object({
|
|
7
|
+
command: z.string().min(1),
|
|
8
|
+
args: z.array(z.string()).optional().default([]),
|
|
9
|
+
env: z.record(z.string(), z.string()).optional().default({}),
|
|
10
|
+
cwd: z.string().optional(),
|
|
11
|
+
disabled: z.boolean().optional().default(false),
|
|
12
|
+
});
|
|
13
|
+
const mcpServersFileSchema = z.object({
|
|
14
|
+
mcpServers: z.record(z.string(), mcpServerEntrySchema),
|
|
15
|
+
});
|
|
16
|
+
const ENV_VAR_PATTERN = /\$\{([^}:]+?)(?::-(.*?))?\}/g;
|
|
17
|
+
function substituteEnvVars(value) {
|
|
18
|
+
return value.replace(ENV_VAR_PATTERN, (_match, varName, defaultValue) => {
|
|
19
|
+
const envValue = process.env[varName];
|
|
20
|
+
if (envValue !== undefined && envValue !== "") {
|
|
21
|
+
return envValue;
|
|
22
|
+
}
|
|
23
|
+
if (defaultValue !== undefined) {
|
|
24
|
+
return defaultValue;
|
|
25
|
+
}
|
|
26
|
+
return "";
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function substituteEnvInRecord(record) {
|
|
30
|
+
const result = {};
|
|
31
|
+
for (const [key, value] of Object.entries(record)) {
|
|
32
|
+
result[key] = substituteEnvVars(value);
|
|
33
|
+
}
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
function findConfigFile() {
|
|
37
|
+
const candidates = [
|
|
38
|
+
join(process.cwd(), "mcp-servers.json"),
|
|
39
|
+
join(process.cwd(), ".mcp-servers.json"),
|
|
40
|
+
];
|
|
41
|
+
for (const candidate of candidates) {
|
|
42
|
+
if (existsSync(candidate)) {
|
|
43
|
+
return candidate;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
function buildFallbackConfig() {
|
|
49
|
+
try {
|
|
50
|
+
const env = configSchema.parse({
|
|
51
|
+
vaultPath: process.env["VAULT_DIR_PATH"],
|
|
52
|
+
loggingLevel: process.env["LOGGING_LEVEL"],
|
|
53
|
+
llmApiUrl: process.env["LLM_API_URL"],
|
|
54
|
+
llmEmbeddingApiUrl: process.env["LLM_EMBEDDING_API_URL"],
|
|
55
|
+
llmEmbeddingModel: process.env["LLM_EMBEDDING_MODEL"],
|
|
56
|
+
llmChatModel: process.env["LLM_CHAT_MODEL"],
|
|
57
|
+
});
|
|
58
|
+
if (!env.vaultPath) {
|
|
59
|
+
debugLogger.warn("[McpConfig] VAULT_DIR_PATH가 설정되지 않아 폴백 서버를 생성할 수 없습니다.");
|
|
60
|
+
return [];
|
|
61
|
+
}
|
|
62
|
+
const projectRoot = process.cwd();
|
|
63
|
+
const serverEntry = "build/index.js";
|
|
64
|
+
return [
|
|
65
|
+
{
|
|
66
|
+
name: "obsidian",
|
|
67
|
+
command: "node",
|
|
68
|
+
args: [serverEntry],
|
|
69
|
+
cwd: projectRoot,
|
|
70
|
+
env: {
|
|
71
|
+
VAULT_DIR_PATH: env.vaultPath,
|
|
72
|
+
LLM_API_URL: env.llmApiUrl ?? "http://127.0.0.1:8080",
|
|
73
|
+
LLM_EMBEDDING_API_URL: env.llmEmbeddingApiUrl ?? "http://127.0.0.1:8081",
|
|
74
|
+
LLM_EMBEDDING_MODEL: env.llmEmbeddingModel ?? "nomic-embed-text",
|
|
75
|
+
LLM_CHAT_MODEL: env.llmChatModel ?? "llama3",
|
|
76
|
+
LOGGING_LEVEL: process.env["LOGGING_LEVEL"] ?? "info",
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
];
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
debugLogger.error("[McpConfig] 폴백 설정 생성 실패:", err);
|
|
83
|
+
return [];
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
export function loadMcpServersConfig() {
|
|
87
|
+
const configPath = findConfigFile();
|
|
88
|
+
if (!configPath) {
|
|
89
|
+
debugLogger.warn("[McpConfig] mcp-servers.json을 찾을 수 없습니다. 환경변수 폴백을 사용합니다.");
|
|
90
|
+
return buildFallbackConfig();
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
const raw = readFileSync(configPath, "utf-8");
|
|
94
|
+
const parsed = JSON.parse(raw);
|
|
95
|
+
const validated = mcpServersFileSchema.parse(parsed);
|
|
96
|
+
const configs = [];
|
|
97
|
+
for (const [name, entry] of Object.entries(validated.mcpServers)) {
|
|
98
|
+
if (entry.disabled) {
|
|
99
|
+
debugLogger.info(`[McpConfig] "${name}" 서버가 비활성화되어 있어 건너뜁니다.`);
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
configs.push({
|
|
103
|
+
name,
|
|
104
|
+
command: substituteEnvVars(entry.command),
|
|
105
|
+
args: entry.args.map(substituteEnvVars),
|
|
106
|
+
env: substituteEnvInRecord(entry.env),
|
|
107
|
+
cwd: entry.cwd ? resolve(entry.cwd) : process.cwd(),
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
debugLogger.info(`[McpConfig] ${configPath}에서 ${configs.length}개의 MCP 서버 설정을 로드했습니다.`);
|
|
111
|
+
return configs;
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
debugLogger.error(`[McpConfig] 설정 파일 파싱 실패 (${configPath}):`, err);
|
|
115
|
+
debugLogger.warn("[McpConfig] 환경변수 폴백을 사용합니다.");
|
|
116
|
+
return buildFallbackConfig();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=mcpServersConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpServersConfig.js","sourceRoot":"","sources":["../../../src/cli/config/mcpServersConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
export type SettingsType = "boolean" | "string" | "number" | "array" | "object" | "enum";
|
|
2
|
+
export type SettingsValue = boolean | string | number | string[] | object | undefined;
|
|
3
|
+
export declare enum MergeStrategy {
|
|
4
|
+
SHALLOW_MERGE = "shallow_merge",
|
|
5
|
+
CONCAT = "concat",
|
|
6
|
+
UNION = "union",
|
|
7
|
+
REPLACE = "replace"
|
|
8
|
+
}
|
|
9
|
+
export interface SettingEnumOption {
|
|
10
|
+
value: string;
|
|
11
|
+
label: string;
|
|
12
|
+
}
|
|
13
|
+
export interface SettingCollectionDefinition {
|
|
14
|
+
type: SettingsType;
|
|
15
|
+
description?: string;
|
|
16
|
+
ref?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface SettingDefinition {
|
|
19
|
+
type: SettingsType;
|
|
20
|
+
label: string;
|
|
21
|
+
category: string;
|
|
22
|
+
requiresRestart: boolean;
|
|
23
|
+
default: SettingsValue;
|
|
24
|
+
description?: string;
|
|
25
|
+
parentKey?: string;
|
|
26
|
+
childKey?: string;
|
|
27
|
+
key?: string;
|
|
28
|
+
properties?: SettingsSchema;
|
|
29
|
+
showInDialog?: boolean;
|
|
30
|
+
ignoreInDocs?: boolean;
|
|
31
|
+
mergeStrategy?: MergeStrategy;
|
|
32
|
+
/** Enum type options */
|
|
33
|
+
options?: readonly SettingEnumOption[];
|
|
34
|
+
/**
|
|
35
|
+
* For collection types (e.g. arrays), describes the shape of each item.
|
|
36
|
+
*/
|
|
37
|
+
items?: SettingCollectionDefinition;
|
|
38
|
+
/**
|
|
39
|
+
* For map-like objects without explicit `properties`, describes the shape of the values.
|
|
40
|
+
*/
|
|
41
|
+
additionalProperties?: SettingCollectionDefinition;
|
|
42
|
+
/**
|
|
43
|
+
* Optional unit to display after the value (e.g. '%').
|
|
44
|
+
*/
|
|
45
|
+
unit?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Optional reference identifier for generators that emit a `$ref`.
|
|
48
|
+
*/
|
|
49
|
+
ref?: string;
|
|
50
|
+
}
|
|
51
|
+
export interface SettingsSchema {
|
|
52
|
+
[key: string]: SettingDefinition;
|
|
53
|
+
}
|
|
54
|
+
export declare const SETTINGS_SCHEMA: {
|
|
55
|
+
readonly obsidian: {
|
|
56
|
+
readonly type: "object";
|
|
57
|
+
readonly label: "Obsidian Vault";
|
|
58
|
+
readonly category: "Obsidian";
|
|
59
|
+
readonly requiresRestart: true;
|
|
60
|
+
readonly default: {};
|
|
61
|
+
readonly description: "Obsidian Vault 연동 및 데이터 관리 설정";
|
|
62
|
+
readonly showInDialog: true;
|
|
63
|
+
readonly properties: {
|
|
64
|
+
readonly vaultPath: {
|
|
65
|
+
readonly type: "string";
|
|
66
|
+
readonly label: "Vault 절대 경로";
|
|
67
|
+
readonly category: "Obsidian";
|
|
68
|
+
readonly requiresRestart: true;
|
|
69
|
+
readonly default: "";
|
|
70
|
+
readonly description: "Obsidian Vault 디렉토리의 절대 경로 (VAULT_DIR_PATH)";
|
|
71
|
+
readonly showInDialog: true;
|
|
72
|
+
};
|
|
73
|
+
readonly loggingLevel: {
|
|
74
|
+
readonly type: "enum";
|
|
75
|
+
readonly label: "로그 레벨";
|
|
76
|
+
readonly category: "Obsidian";
|
|
77
|
+
readonly requiresRestart: false;
|
|
78
|
+
readonly default: "info";
|
|
79
|
+
readonly description: "서버 로그 기록 상세 수준";
|
|
80
|
+
readonly showInDialog: true;
|
|
81
|
+
readonly options: readonly [{
|
|
82
|
+
readonly value: "debug";
|
|
83
|
+
readonly label: "Debug";
|
|
84
|
+
}, {
|
|
85
|
+
readonly value: "info";
|
|
86
|
+
readonly label: "Info";
|
|
87
|
+
}, {
|
|
88
|
+
readonly value: "warn";
|
|
89
|
+
readonly label: "Warn";
|
|
90
|
+
}, {
|
|
91
|
+
readonly value: "error";
|
|
92
|
+
readonly label: "Error";
|
|
93
|
+
}];
|
|
94
|
+
};
|
|
95
|
+
readonly metricsLogPath: {
|
|
96
|
+
readonly type: "string";
|
|
97
|
+
readonly label: "메트릭 로그 경로";
|
|
98
|
+
readonly category: "Obsidian";
|
|
99
|
+
readonly requiresRestart: false;
|
|
100
|
+
readonly default: "";
|
|
101
|
+
readonly description: "토큰 사용량 등 메트릭을 기록할 JSONL 파일 경로 (VAULT_METRICS_LOG_PATH)";
|
|
102
|
+
readonly showInDialog: true;
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
readonly llm: {
|
|
107
|
+
readonly type: "object";
|
|
108
|
+
readonly label: "LLM (Local RAG)";
|
|
109
|
+
readonly category: "RAG";
|
|
110
|
+
readonly requiresRestart: true;
|
|
111
|
+
readonly default: {};
|
|
112
|
+
readonly description: "로컬 AI 모델 연동 및 임베딩 설정";
|
|
113
|
+
readonly showInDialog: true;
|
|
114
|
+
readonly properties: {
|
|
115
|
+
readonly apiUrl: {
|
|
116
|
+
readonly type: "string";
|
|
117
|
+
readonly label: "Chat API URL";
|
|
118
|
+
readonly category: "RAG";
|
|
119
|
+
readonly requiresRestart: true;
|
|
120
|
+
readonly default: "http://127.0.0.1:8080";
|
|
121
|
+
readonly description: "로컬 LLM 채팅 서버 주소 (LLM_API_URL)";
|
|
122
|
+
readonly showInDialog: true;
|
|
123
|
+
};
|
|
124
|
+
readonly embeddingApiUrl: {
|
|
125
|
+
readonly type: "string";
|
|
126
|
+
readonly label: "Embedding API URL";
|
|
127
|
+
readonly category: "RAG";
|
|
128
|
+
readonly requiresRestart: true;
|
|
129
|
+
readonly default: "http://127.0.0.1:8081";
|
|
130
|
+
readonly description: "로컬 임베딩 서버 주소 (LLM_EMBEDDING_API_URL)";
|
|
131
|
+
readonly showInDialog: true;
|
|
132
|
+
};
|
|
133
|
+
readonly embedModel: {
|
|
134
|
+
readonly type: "string";
|
|
135
|
+
readonly label: "임베딩 모델";
|
|
136
|
+
readonly category: "RAG";
|
|
137
|
+
readonly requiresRestart: true;
|
|
138
|
+
readonly default: "nomic-embed-text";
|
|
139
|
+
readonly description: "벡터화에 사용할 임베딩 모델명 (LLM_EMBEDDING_MODEL)";
|
|
140
|
+
readonly showInDialog: true;
|
|
141
|
+
};
|
|
142
|
+
readonly chatModel: {
|
|
143
|
+
readonly type: "string";
|
|
144
|
+
readonly label: "채팅 모델";
|
|
145
|
+
readonly category: "RAG";
|
|
146
|
+
readonly requiresRestart: true;
|
|
147
|
+
readonly default: "llama3";
|
|
148
|
+
readonly description: "답변 생성에 사용할 모델명 (LLM_CHAT_MODEL)";
|
|
149
|
+
readonly showInDialog: true;
|
|
150
|
+
};
|
|
151
|
+
};
|
|
152
|
+
};
|
|
153
|
+
readonly general: {
|
|
154
|
+
readonly type: "object";
|
|
155
|
+
readonly label: "일반 설정";
|
|
156
|
+
readonly category: "General";
|
|
157
|
+
readonly requiresRestart: false;
|
|
158
|
+
readonly default: {};
|
|
159
|
+
readonly description: "일반적인 애플리케이션 설정";
|
|
160
|
+
readonly showInDialog: true;
|
|
161
|
+
readonly properties: {
|
|
162
|
+
readonly defaultApprovalMode: {
|
|
163
|
+
readonly type: "enum";
|
|
164
|
+
readonly label: "도구 승인 모드";
|
|
165
|
+
readonly category: "General";
|
|
166
|
+
readonly requiresRestart: false;
|
|
167
|
+
readonly default: "default";
|
|
168
|
+
readonly description: "도구 실행 시 승인 절차를 제어합니다.";
|
|
169
|
+
readonly showInDialog: true;
|
|
170
|
+
readonly options: readonly [{
|
|
171
|
+
readonly value: "default";
|
|
172
|
+
readonly label: "승인 필요";
|
|
173
|
+
}, {
|
|
174
|
+
readonly value: "auto_edit";
|
|
175
|
+
readonly label: "자동 수정 허용";
|
|
176
|
+
}];
|
|
177
|
+
};
|
|
178
|
+
};
|
|
179
|
+
};
|
|
180
|
+
};
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
export var MergeStrategy;
|
|
2
|
+
(function (MergeStrategy) {
|
|
3
|
+
MergeStrategy["SHALLOW_MERGE"] = "shallow_merge";
|
|
4
|
+
MergeStrategy["CONCAT"] = "concat";
|
|
5
|
+
MergeStrategy["UNION"] = "union";
|
|
6
|
+
MergeStrategy["REPLACE"] = "replace";
|
|
7
|
+
})(MergeStrategy || (MergeStrategy = {}));
|
|
8
|
+
export const SETTINGS_SCHEMA = {
|
|
9
|
+
// 1. Obsidian Vault 설정 (핵심)
|
|
10
|
+
obsidian: {
|
|
11
|
+
type: "object",
|
|
12
|
+
label: "Obsidian Vault",
|
|
13
|
+
category: "Obsidian",
|
|
14
|
+
requiresRestart: true,
|
|
15
|
+
default: {},
|
|
16
|
+
description: "Obsidian Vault 연동 및 데이터 관리 설정",
|
|
17
|
+
showInDialog: true,
|
|
18
|
+
properties: {
|
|
19
|
+
vaultPath: {
|
|
20
|
+
type: "string",
|
|
21
|
+
label: "Vault 절대 경로",
|
|
22
|
+
category: "Obsidian",
|
|
23
|
+
requiresRestart: true,
|
|
24
|
+
default: "",
|
|
25
|
+
description: "Obsidian Vault 디렉토리의 절대 경로 (VAULT_DIR_PATH)",
|
|
26
|
+
showInDialog: true,
|
|
27
|
+
},
|
|
28
|
+
loggingLevel: {
|
|
29
|
+
type: "enum",
|
|
30
|
+
label: "로그 레벨",
|
|
31
|
+
category: "Obsidian",
|
|
32
|
+
requiresRestart: false,
|
|
33
|
+
default: "info",
|
|
34
|
+
description: "서버 로그 기록 상세 수준",
|
|
35
|
+
showInDialog: true,
|
|
36
|
+
options: [
|
|
37
|
+
{ value: "debug", label: "Debug" },
|
|
38
|
+
{ value: "info", label: "Info" },
|
|
39
|
+
{ value: "warn", label: "Warn" },
|
|
40
|
+
{ value: "error", label: "Error" },
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
metricsLogPath: {
|
|
44
|
+
type: "string",
|
|
45
|
+
label: "메트릭 로그 경로",
|
|
46
|
+
category: "Obsidian",
|
|
47
|
+
requiresRestart: false,
|
|
48
|
+
default: "",
|
|
49
|
+
description: "토큰 사용량 등 메트릭을 기록할 JSONL 파일 경로 (VAULT_METRICS_LOG_PATH)",
|
|
50
|
+
showInDialog: true,
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
// 2. LLM & RAG 설정 (GEMINI.md 기준 필수)
|
|
55
|
+
llm: {
|
|
56
|
+
type: "object",
|
|
57
|
+
label: "LLM (Local RAG)",
|
|
58
|
+
category: "RAG",
|
|
59
|
+
requiresRestart: true,
|
|
60
|
+
default: {},
|
|
61
|
+
description: "로컬 AI 모델 연동 및 임베딩 설정",
|
|
62
|
+
showInDialog: true,
|
|
63
|
+
properties: {
|
|
64
|
+
apiUrl: {
|
|
65
|
+
type: "string",
|
|
66
|
+
label: "Chat API URL",
|
|
67
|
+
category: "RAG",
|
|
68
|
+
requiresRestart: true,
|
|
69
|
+
default: "http://127.0.0.1:8080",
|
|
70
|
+
description: "로컬 LLM 채팅 서버 주소 (LLM_API_URL)",
|
|
71
|
+
showInDialog: true,
|
|
72
|
+
},
|
|
73
|
+
embeddingApiUrl: {
|
|
74
|
+
type: "string",
|
|
75
|
+
label: "Embedding API URL",
|
|
76
|
+
category: "RAG",
|
|
77
|
+
requiresRestart: true,
|
|
78
|
+
default: "http://127.0.0.1:8081",
|
|
79
|
+
description: "로컬 임베딩 서버 주소 (LLM_EMBEDDING_API_URL)",
|
|
80
|
+
showInDialog: true,
|
|
81
|
+
},
|
|
82
|
+
embedModel: {
|
|
83
|
+
type: "string",
|
|
84
|
+
label: "임베딩 모델",
|
|
85
|
+
category: "RAG",
|
|
86
|
+
requiresRestart: true,
|
|
87
|
+
default: "nomic-embed-text",
|
|
88
|
+
description: "벡터화에 사용할 임베딩 모델명 (LLM_EMBEDDING_MODEL)",
|
|
89
|
+
showInDialog: true,
|
|
90
|
+
},
|
|
91
|
+
chatModel: {
|
|
92
|
+
type: "string",
|
|
93
|
+
label: "채팅 모델",
|
|
94
|
+
category: "RAG",
|
|
95
|
+
requiresRestart: true,
|
|
96
|
+
default: "llama3",
|
|
97
|
+
description: "답변 생성에 사용할 모델명 (LLM_CHAT_MODEL)",
|
|
98
|
+
showInDialog: true,
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
// 3. 일반 설정
|
|
103
|
+
general: {
|
|
104
|
+
type: "object",
|
|
105
|
+
label: "일반 설정",
|
|
106
|
+
category: "General",
|
|
107
|
+
requiresRestart: false,
|
|
108
|
+
default: {},
|
|
109
|
+
description: "일반적인 애플리케이션 설정",
|
|
110
|
+
showInDialog: true,
|
|
111
|
+
properties: {
|
|
112
|
+
defaultApprovalMode: {
|
|
113
|
+
type: "enum",
|
|
114
|
+
label: "도구 승인 모드",
|
|
115
|
+
category: "General",
|
|
116
|
+
requiresRestart: false,
|
|
117
|
+
default: "default",
|
|
118
|
+
description: "도구 실행 시 승인 절차를 제어합니다.",
|
|
119
|
+
showInDialog: true,
|
|
120
|
+
options: [
|
|
121
|
+
{ value: "default", label: "승인 필요" },
|
|
122
|
+
{ value: "auto_edit", label: "자동 수정 허용" },
|
|
123
|
+
],
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=settingSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settingSchema.js","sourceRoot":"","sources":["../../../src/cli/config/settingSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { TextBuffer } from "../key/text-buffer.js";
|
|
2
|
+
export interface InputState {
|
|
3
|
+
buffer: TextBuffer;
|
|
4
|
+
userMessages: string[];
|
|
5
|
+
shellModeActive: boolean;
|
|
6
|
+
showEscapePrompt: boolean;
|
|
7
|
+
copyModeEnabled: boolean | undefined;
|
|
8
|
+
inputWidth: number;
|
|
9
|
+
suggestionsWidth: number;
|
|
10
|
+
}
|
|
11
|
+
export declare const InputContext: import("react").Context<InputState | null>;
|
|
12
|
+
export declare const useInputState: () => InputState;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createContext, useContext } from "react";
|
|
2
|
+
export const InputContext = createContext(null);
|
|
3
|
+
export const useInputState = () => {
|
|
4
|
+
const context = useContext(InputContext);
|
|
5
|
+
if (!context) {
|
|
6
|
+
throw new Error("useInputState must be used within an InputProvider");
|
|
7
|
+
}
|
|
8
|
+
return context;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=InputContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputContext.js","sourceRoot":"","sources":["../../../src/cli/context/InputContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAalD,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAoB,IAAI,CAAC,CAAC;AAEnE,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE;IACjC,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type React from "react";
|
|
2
|
+
export declare const BACKSLASH_ENTER_TIMEOUT = 5;
|
|
3
|
+
export declare const ESC_TIMEOUT = 50;
|
|
4
|
+
export declare const PASTE_TIMEOUT = 30000;
|
|
5
|
+
export declare const FAST_RETURN_TIMEOUT = 30;
|
|
6
|
+
export declare enum KeypressPriority {
|
|
7
|
+
Low = -100,
|
|
8
|
+
Normal = 0,
|
|
9
|
+
High = 100,
|
|
10
|
+
Critical = 200
|
|
11
|
+
}
|
|
12
|
+
export interface Key {
|
|
13
|
+
name: string;
|
|
14
|
+
shift: boolean;
|
|
15
|
+
alt: boolean;
|
|
16
|
+
ctrl: boolean;
|
|
17
|
+
cmd: boolean;
|
|
18
|
+
insertable: boolean;
|
|
19
|
+
sequence: string;
|
|
20
|
+
}
|
|
21
|
+
interface KeypressContextValue {
|
|
22
|
+
subscribe: (handler: KeypressHandler, priority?: KeypressPriority | boolean) => void;
|
|
23
|
+
unsubscribe: (handler: KeypressHandler) => void;
|
|
24
|
+
}
|
|
25
|
+
export type KeypressHandler = (key: Key) => boolean | undefined;
|
|
26
|
+
export declare function KeypressProvider({ children }: {
|
|
27
|
+
children: React.ReactNode;
|
|
28
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
export declare function useKeypressContext(): KeypressContextValue;
|
|
30
|
+
export {};
|