vault-forge 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +336 -0
- package/dist/actions/dummy.d.ts +2 -0
- package/dist/actions/dummy.d.ts.map +1 -0
- package/dist/actions/dummy.js +3 -0
- package/dist/actions/dummy.js.map +1 -0
- package/dist/actions/mainAction.d.ts +5 -0
- package/dist/actions/mainAction.d.ts.map +1 -0
- package/dist/actions/mainAction.js +68 -0
- package/dist/actions/mainAction.js.map +1 -0
- package/dist/commands/ai.d.ts +3 -0
- package/dist/commands/ai.d.ts.map +1 -0
- package/dist/commands/ai.js +20 -0
- package/dist/commands/ai.js.map +1 -0
- package/dist/commands/ask.d.ts +3 -0
- package/dist/commands/ask.d.ts.map +1 -0
- package/dist/commands/ask.js +15 -0
- package/dist/commands/ask.js.map +1 -0
- package/dist/commands/completion.d.ts +34 -0
- package/dist/commands/completion.d.ts.map +1 -0
- package/dist/commands/completion.js +134 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/diary.d.ts +3 -0
- package/dist/commands/diary.d.ts.map +1 -0
- package/dist/commands/diary.js +15 -0
- package/dist/commands/diary.js.map +1 -0
- package/dist/commands/dummy.d.ts +2 -0
- package/dist/commands/dummy.d.ts.map +1 -0
- package/dist/commands/dummy.js +3 -0
- package/dist/commands/dummy.js.map +1 -0
- package/dist/commands/find.d.ts +2 -0
- package/dist/commands/find.d.ts.map +1 -0
- package/dist/commands/find.js +3 -0
- package/dist/commands/find.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +46 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/search.d.ts +3 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +29 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/tag.d.ts +3 -0
- package/dist/commands/tag.d.ts.map +1 -0
- package/dist/commands/tag.js +37 -0
- package/dist/commands/tag.js.map +1 -0
- package/dist/config/locales/en.d.ts +188 -0
- package/dist/config/locales/en.d.ts.map +1 -0
- package/dist/config/locales/en.js +190 -0
- package/dist/config/locales/en.js.map +1 -0
- package/dist/config/locales/ja.d.ts +188 -0
- package/dist/config/locales/ja.d.ts.map +1 -0
- package/dist/config/locales/ja.js +190 -0
- package/dist/config/locales/ja.js.map +1 -0
- package/dist/config/prompts/en.d.ts +6 -0
- package/dist/config/prompts/en.d.ts.map +1 -0
- package/dist/config/prompts/en.js +25 -0
- package/dist/config/prompts/en.js.map +1 -0
- package/dist/config/prompts/ja.d.ts +6 -0
- package/dist/config/prompts/ja.d.ts.map +1 -0
- package/dist/config/prompts/ja.js +25 -0
- package/dist/config/prompts/ja.js.map +1 -0
- package/dist/config/text.d.ts +195 -0
- package/dist/config/text.d.ts.map +1 -0
- package/dist/config/text.js +15 -0
- package/dist/config/text.js.map +1 -0
- package/dist/core/PromptLoader.d.ts +30 -0
- package/dist/core/PromptLoader.d.ts.map +1 -0
- package/dist/core/PromptLoader.js +187 -0
- package/dist/core/PromptLoader.js.map +1 -0
- package/dist/core/PromptSmith.d.ts +21 -0
- package/dist/core/PromptSmith.d.ts.map +1 -0
- package/dist/core/PromptSmith.js +197 -0
- package/dist/core/PromptSmith.js.map +1 -0
- package/dist/core/VaultForge.d.ts +17 -0
- package/dist/core/VaultForge.d.ts.map +1 -0
- package/dist/core/VaultForge.js +75 -0
- package/dist/core/VaultForge.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/completion.d.ts +8 -0
- package/dist/lib/completion.d.ts.map +1 -0
- package/dist/lib/completion.js +55 -0
- package/dist/lib/completion.js.map +1 -0
- package/dist/lib/dummy.d.ts +2 -0
- package/dist/lib/dummy.d.ts.map +1 -0
- package/dist/lib/dummy.js +3 -0
- package/dist/lib/dummy.js.map +1 -0
- package/dist/lib/mainAction.d.ts +8 -0
- package/dist/lib/mainAction.d.ts.map +1 -0
- package/dist/lib/mainAction.js +126 -0
- package/dist/lib/mainAction.js.map +1 -0
- package/dist/lib/search.d.ts +4 -0
- package/dist/lib/search.d.ts.map +1 -0
- package/dist/lib/search.js +87 -0
- package/dist/lib/search.js.map +1 -0
- package/dist/lib/stdin.d.ts +10 -0
- package/dist/lib/stdin.d.ts.map +1 -0
- package/dist/lib/stdin.js +20 -0
- package/dist/lib/stdin.js.map +1 -0
- package/dist/services/AIModelService.d.ts +33 -0
- package/dist/services/AIModelService.d.ts.map +1 -0
- package/dist/services/AIModelService.js +116 -0
- package/dist/services/AIModelService.js.map +1 -0
- package/dist/services/AIOrchestratorService.d.ts +57 -0
- package/dist/services/AIOrchestratorService.d.ts.map +1 -0
- package/dist/services/AIOrchestratorService.js +164 -0
- package/dist/services/AIOrchestratorService.js.map +1 -0
- package/dist/services/ConfigService.d.ts +61 -0
- package/dist/services/ConfigService.d.ts.map +1 -0
- package/dist/services/ConfigService.js +132 -0
- package/dist/services/ConfigService.js.map +1 -0
- package/dist/services/ObsidianService.d.ts +97 -0
- package/dist/services/ObsidianService.d.ts.map +1 -0
- package/dist/services/ObsidianService.js +264 -0
- package/dist/services/ObsidianService.js.map +1 -0
- package/dist/services/TagService.d.ts +26 -0
- package/dist/services/TagService.d.ts.map +1 -0
- package/dist/services/TagService.js +73 -0
- package/dist/services/TagService.js.map +1 -0
- package/dist/services/UserInteraction.d.ts +100 -0
- package/dist/services/UserInteraction.d.ts.map +1 -0
- package/dist/services/UserInteraction.js +169 -0
- package/dist/services/UserInteraction.js.map +1 -0
- package/dist/services/XService.d.ts +15 -0
- package/dist/services/XService.d.ts.map +1 -0
- package/dist/services/XService.js +40 -0
- package/dist/services/XService.js.map +1 -0
- package/dist/services/ai/AIServiceFactory.d.ts +26 -0
- package/dist/services/ai/AIServiceFactory.d.ts.map +1 -0
- package/dist/services/ai/AIServiceFactory.js +69 -0
- package/dist/services/ai/AIServiceFactory.js.map +1 -0
- package/dist/services/ai/ClaudeService.d.ts +9 -0
- package/dist/services/ai/ClaudeService.d.ts.map +1 -0
- package/dist/services/ai/ClaudeService.js +59 -0
- package/dist/services/ai/ClaudeService.js.map +1 -0
- package/dist/services/ai/GeminiService.d.ts +9 -0
- package/dist/services/ai/GeminiService.d.ts.map +1 -0
- package/dist/services/ai/GeminiService.js +46 -0
- package/dist/services/ai/GeminiService.js.map +1 -0
- package/dist/services/ai/GroqService.d.ts +9 -0
- package/dist/services/ai/GroqService.d.ts.map +1 -0
- package/dist/services/ai/GroqService.js +53 -0
- package/dist/services/ai/GroqService.js.map +1 -0
- package/dist/services/ai/MockAIService.d.ts +8 -0
- package/dist/services/ai/MockAIService.d.ts.map +1 -0
- package/dist/services/ai/MockAIService.js +24 -0
- package/dist/services/ai/MockAIService.js.map +1 -0
- package/dist/services/ai/OpenAIService.d.ts +9 -0
- package/dist/services/ai/OpenAIService.d.ts.map +1 -0
- package/dist/services/ai/OpenAIService.js +51 -0
- package/dist/services/ai/OpenAIService.js.map +1 -0
- package/dist/strategies/BaseStrategy.d.ts +36 -0
- package/dist/strategies/BaseStrategy.d.ts.map +1 -0
- package/dist/strategies/BaseStrategy.js +110 -0
- package/dist/strategies/BaseStrategy.js.map +1 -0
- package/dist/strategies/DebugStrategy.d.ts +13 -0
- package/dist/strategies/DebugStrategy.d.ts.map +1 -0
- package/dist/strategies/DebugStrategy.js +16 -0
- package/dist/strategies/DebugStrategy.js.map +1 -0
- package/dist/strategies/DiaryStrategy.d.ts +19 -0
- package/dist/strategies/DiaryStrategy.d.ts.map +1 -0
- package/dist/strategies/DiaryStrategy.js +69 -0
- package/dist/strategies/DiaryStrategy.js.map +1 -0
- package/dist/strategies/GeneralStrategy.d.ts +8 -0
- package/dist/strategies/GeneralStrategy.d.ts.map +1 -0
- package/dist/strategies/GeneralStrategy.js +11 -0
- package/dist/strategies/GeneralStrategy.js.map +1 -0
- package/dist/strategies/InitStrategy.d.ts +19 -0
- package/dist/strategies/InitStrategy.d.ts.map +1 -0
- package/dist/strategies/InitStrategy.js +122 -0
- package/dist/strategies/InitStrategy.js.map +1 -0
- package/dist/strategies/SearchStrategy.d.ts +19 -0
- package/dist/strategies/SearchStrategy.d.ts.map +1 -0
- package/dist/strategies/SearchStrategy.js +112 -0
- package/dist/strategies/SearchStrategy.js.map +1 -0
- package/dist/strategies/XPostStrategy.d.ts +27 -0
- package/dist/strategies/XPostStrategy.d.ts.map +1 -0
- package/dist/strategies/XPostStrategy.js +119 -0
- package/dist/strategies/XPostStrategy.js.map +1 -0
- package/dist/templates/completion.bash +24 -0
- package/dist/templates/dailyNote.d.ts +2 -0
- package/dist/templates/dailyNote.d.ts.map +1 -0
- package/dist/templates/dailyNote.js +8 -0
- package/dist/templates/dailyNote.js.map +1 -0
- package/dist/templates/defaultPrompt.d.ts +2 -0
- package/dist/templates/defaultPrompt.d.ts.map +1 -0
- package/dist/templates/defaultPrompt.js +28 -0
- package/dist/templates/defaultPrompt.js.map +1 -0
- package/dist/templates/obsidianNote.d.ts +3 -0
- package/dist/templates/obsidianNote.d.ts.map +1 -0
- package/dist/templates/obsidianNote.js +17 -0
- package/dist/templates/obsidianNote.js.map +1 -0
- package/dist/templates/tokenUsage.d.ts +20 -0
- package/dist/templates/tokenUsage.d.ts.map +1 -0
- package/dist/templates/tokenUsage.js +50 -0
- package/dist/templates/tokenUsage.js.map +1 -0
- package/dist/test-tabtab.d.ts +2 -0
- package/dist/test-tabtab.d.ts.map +1 -0
- package/dist/test-tabtab.js +50 -0
- package/dist/test-tabtab.js.map +1 -0
- package/dist/types/constants.d.ts +16 -0
- package/dist/types/constants.d.ts.map +1 -0
- package/dist/types/constants.js +14 -0
- package/dist/types/constants.js.map +1 -0
- package/dist/types/interfaces.d.ts +56 -0
- package/dist/types/interfaces.d.ts.map +1 -0
- package/dist/types/interfaces.js +6 -0
- package/dist/types/interfaces.js.map +1 -0
- package/dist/types/schemas.d.ts +18 -0
- package/dist/types/schemas.d.ts.map +1 -0
- package/dist/types/schemas.js +13 -0
- package/dist/types/schemas.js.map +1 -0
- package/dist/utils/completion.d.ts +8 -0
- package/dist/utils/completion.d.ts.map +1 -0
- package/dist/utils/completion.js +58 -0
- package/dist/utils/completion.js.map +1 -0
- package/dist/utils/dummy.d.ts +2 -0
- package/dist/utils/dummy.d.ts.map +1 -0
- package/dist/utils/dummy.js +3 -0
- package/dist/utils/dummy.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import * as fs from 'fs/promises';
|
|
3
|
+
import matter from 'gray-matter';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { PromptFileSchema } from '../types/schemas.js';
|
|
6
|
+
import { DEFAULT_PROMPTS } from '../templates/defaultPrompt.js';
|
|
7
|
+
import { TEXT } from '../config/text.js';
|
|
8
|
+
import { ObsidianService } from '../services/ObsidianService.js';
|
|
9
|
+
import { ConfigService } from '../services/ConfigService.js';
|
|
10
|
+
import { select, text as clackText, isCancel, cancel } from '@clack/prompts';
|
|
11
|
+
import { AIProvider, AppMode } from '../types/constants.js';
|
|
12
|
+
import { AIOrchestratorService } from '../services/AIOrchestratorService.js';
|
|
13
|
+
export const BACK_SIGNAL = Symbol('BACK');
|
|
14
|
+
export class PromptSmith {
|
|
15
|
+
obsidian;
|
|
16
|
+
lang;
|
|
17
|
+
aiOrchestrator;
|
|
18
|
+
configService;
|
|
19
|
+
constructor(obsidian, lang, configService) {
|
|
20
|
+
this.obsidian = obsidian;
|
|
21
|
+
this.lang = lang;
|
|
22
|
+
this.configService = configService;
|
|
23
|
+
this.aiOrchestrator = new AIOrchestratorService(obsidian.getVaultPath(), this.configService);
|
|
24
|
+
}
|
|
25
|
+
// ============================================================
|
|
26
|
+
// プロンプト管理機能 / Prompt Management
|
|
27
|
+
// ============================================================
|
|
28
|
+
async load(promptName) {
|
|
29
|
+
const relativePath = path.join('_AI_Prompts', 'prompts', this.lang, `${promptName}.md`);
|
|
30
|
+
try {
|
|
31
|
+
const fileContent = await this.obsidian.readNote(relativePath);
|
|
32
|
+
const { content, data } = matter(fileContent);
|
|
33
|
+
const validated = PromptFileSchema.parse({
|
|
34
|
+
frontmatter: data,
|
|
35
|
+
content: content.trim()
|
|
36
|
+
});
|
|
37
|
+
return {
|
|
38
|
+
content: validated.content,
|
|
39
|
+
aiProvider: validated.frontmatter?.aiProvider,
|
|
40
|
+
model: validated.frontmatter?.model,
|
|
41
|
+
outputMode: validated.frontmatter?.outputMode
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
if (error.code === 'ENOENT') {
|
|
46
|
+
const result = await this.create(promptName, false);
|
|
47
|
+
if (result === BACK_SIGNAL)
|
|
48
|
+
throw new Error(TEXT.errors.unexpectedBackSignal);
|
|
49
|
+
const { content, data } = matter(result);
|
|
50
|
+
return { content: content.trim(), ...data };
|
|
51
|
+
}
|
|
52
|
+
if (error instanceof z.ZodError) {
|
|
53
|
+
const contentError = error.issues.find(issue => issue.path.includes('content') && issue.code === 'too_small');
|
|
54
|
+
if (contentError) {
|
|
55
|
+
const errorMessage = TEXT.loader.loadErrorDetail.replace('{filePath}', relativePath);
|
|
56
|
+
throw new Error(`${errorMessage}\n${TEXT.loader.reason}: ${TEXT.validation.promptTooShort}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const errorMessage = TEXT.loader.loadErrorDetail.replace('{filePath}', relativePath);
|
|
60
|
+
throw new Error(`${errorMessage}\n${TEXT.loader.reason}: ${error.message}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
async create(promptName, interactive) {
|
|
64
|
+
const relativePath = path.join('_AI_Prompts', 'prompts', this.lang, `${promptName}.md`);
|
|
65
|
+
let defaultContent = DEFAULT_PROMPTS[promptName];
|
|
66
|
+
if (!defaultContent) {
|
|
67
|
+
const errorMessage = TEXT.loader.noDefaultPrompt.replace('{promptName}', promptName);
|
|
68
|
+
throw new Error(errorMessage);
|
|
69
|
+
}
|
|
70
|
+
if (interactive) {
|
|
71
|
+
const result = await this.injectAIConfig(defaultContent, promptName);
|
|
72
|
+
if (result === BACK_SIGNAL)
|
|
73
|
+
return BACK_SIGNAL;
|
|
74
|
+
defaultContent = result;
|
|
75
|
+
}
|
|
76
|
+
await this.obsidian.createNote(relativePath, defaultContent);
|
|
77
|
+
const logMessage = TEXT.loader.createdDefaultFile.replace('{filePath}', relativePath);
|
|
78
|
+
console.log(logMessage);
|
|
79
|
+
return defaultContent;
|
|
80
|
+
}
|
|
81
|
+
async updateAI(promptName) {
|
|
82
|
+
const relativePath = path.join('_AI_Prompts', 'prompts', this.lang, `${promptName}.md`);
|
|
83
|
+
try {
|
|
84
|
+
const fileContent = await this.obsidian.readNote(relativePath);
|
|
85
|
+
const newContent = await this.injectAIConfig(fileContent, promptName);
|
|
86
|
+
if (newContent === BACK_SIGNAL)
|
|
87
|
+
return BACK_SIGNAL;
|
|
88
|
+
await this.obsidian.createNote(relativePath, newContent);
|
|
89
|
+
console.log(TEXT.ui.aiSettingsUpdatedFor.replace('{mode}', promptName));
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
if (error.code === 'ENOENT') {
|
|
93
|
+
const result = await this.create(promptName, true);
|
|
94
|
+
if (result === BACK_SIGNAL)
|
|
95
|
+
return BACK_SIGNAL;
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// ============================================================
|
|
104
|
+
// AIモデル管理機能 / AI Model Management (Delegated to AIOrchestratorService)
|
|
105
|
+
// ============================================================
|
|
106
|
+
async initializeModels() {
|
|
107
|
+
return await this.aiOrchestrator.initialize();
|
|
108
|
+
}
|
|
109
|
+
async getModels(provider) {
|
|
110
|
+
return await this.aiOrchestrator.getModels(provider);
|
|
111
|
+
}
|
|
112
|
+
async addModel(provider, model) {
|
|
113
|
+
return await this.aiOrchestrator.addModel(provider, model);
|
|
114
|
+
}
|
|
115
|
+
async removeModel(provider, model) {
|
|
116
|
+
return await this.aiOrchestrator.removeModel(provider, model);
|
|
117
|
+
}
|
|
118
|
+
async resolveProvider(modelName) {
|
|
119
|
+
return await this.aiOrchestrator.inferProvider(modelName);
|
|
120
|
+
}
|
|
121
|
+
// ============================================================
|
|
122
|
+
// 内部ヘルパーメソッド / Internal Helper Methods
|
|
123
|
+
// ============================================================
|
|
124
|
+
async injectAIConfig(fileContent, promptName) {
|
|
125
|
+
const availableProviders = this.configService.getAvailableProviders();
|
|
126
|
+
if (availableProviders.length > 0) {
|
|
127
|
+
const options = availableProviders.map(p => ({ value: p, label: p }));
|
|
128
|
+
options.push({ value: 'BACK', label: TEXT.ui.backOption });
|
|
129
|
+
const selectedProvider = await select({
|
|
130
|
+
message: TEXT.ui.selectAIForMode.replace('{mode}', promptName),
|
|
131
|
+
options: options,
|
|
132
|
+
});
|
|
133
|
+
if (isCancel(selectedProvider)) {
|
|
134
|
+
cancel(TEXT.ui.operationCancelled);
|
|
135
|
+
process.exit(0);
|
|
136
|
+
}
|
|
137
|
+
if (selectedProvider === 'BACK') {
|
|
138
|
+
return BACK_SIGNAL;
|
|
139
|
+
}
|
|
140
|
+
const provider = selectedProvider;
|
|
141
|
+
const models = await this.getModels(provider);
|
|
142
|
+
const modelOptions = models.map(m => ({ value: m, label: m }));
|
|
143
|
+
modelOptions.push({ value: 'CUSTOM', label: TEXT.ui.customModelOption });
|
|
144
|
+
const selectedModel = await select({
|
|
145
|
+
message: TEXT.ui.selectModel,
|
|
146
|
+
options: modelOptions,
|
|
147
|
+
});
|
|
148
|
+
if (isCancel(selectedModel)) {
|
|
149
|
+
cancel(TEXT.ui.operationCancelled);
|
|
150
|
+
process.exit(0);
|
|
151
|
+
}
|
|
152
|
+
let model = selectedModel;
|
|
153
|
+
if (selectedModel === 'CUSTOM') {
|
|
154
|
+
const customModel = await clackText({
|
|
155
|
+
message: TEXT.ui.enterCustomModel,
|
|
156
|
+
placeholder: TEXT.ui.customModelPlaceholder,
|
|
157
|
+
});
|
|
158
|
+
if (isCancel(customModel)) {
|
|
159
|
+
cancel(TEXT.ui.operationCancelled);
|
|
160
|
+
process.exit(0);
|
|
161
|
+
}
|
|
162
|
+
model = customModel;
|
|
163
|
+
await this.addModel(provider, model);
|
|
164
|
+
}
|
|
165
|
+
const outputModeOptions = [
|
|
166
|
+
{ value: 'normal', label: TEXT.ui.outputModeNormal },
|
|
167
|
+
{ value: 'stream', label: TEXT.ui.outputModeStream },
|
|
168
|
+
];
|
|
169
|
+
if (promptName !== AppMode.GENERAL) {
|
|
170
|
+
outputModeOptions.push({ value: 'background', label: TEXT.ui.outputModeBackground });
|
|
171
|
+
}
|
|
172
|
+
const selectedOutputMode = await select({
|
|
173
|
+
message: TEXT.ui.selectOutputMode.replace('{mode}', promptName),
|
|
174
|
+
options: outputModeOptions,
|
|
175
|
+
initialValue: 'normal',
|
|
176
|
+
});
|
|
177
|
+
if (isCancel(selectedOutputMode)) {
|
|
178
|
+
cancel(TEXT.ui.operationCancelled);
|
|
179
|
+
process.exit(0);
|
|
180
|
+
}
|
|
181
|
+
const { data: frontmatter, content } = matter(fileContent);
|
|
182
|
+
const existingTags = frontmatter.tags || [];
|
|
183
|
+
const providerModels = await this.getModels(provider);
|
|
184
|
+
const newTags = Array.from(new Set([...existingTags, selectedProvider, model, ...providerModels]));
|
|
185
|
+
const newFrontmatter = {
|
|
186
|
+
...frontmatter,
|
|
187
|
+
aiProvider: selectedProvider,
|
|
188
|
+
model: model,
|
|
189
|
+
outputMode: selectedOutputMode,
|
|
190
|
+
tags: newTags
|
|
191
|
+
};
|
|
192
|
+
return matter.stringify(content, newFrontmatter);
|
|
193
|
+
}
|
|
194
|
+
return fileContent;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=PromptSmith.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PromptSmith.js","sourceRoot":"","sources":["../../src/core/PromptSmith.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { AppMode } from '../types/constants.js';
|
|
2
|
+
import type { VaultForgeConfig } from '../types/interfaces.js';
|
|
3
|
+
export declare class VaultForge {
|
|
4
|
+
private config;
|
|
5
|
+
private obsidian;
|
|
6
|
+
private promptSmith;
|
|
7
|
+
private aiOrchestrator;
|
|
8
|
+
private configService;
|
|
9
|
+
constructor(config: VaultForgeConfig);
|
|
10
|
+
/**
|
|
11
|
+
* 指定されたモードが detach (バックグラウンド実行) をサポートしているか判定する。
|
|
12
|
+
* Determines if the specified mode supports detach (background execution).
|
|
13
|
+
*/
|
|
14
|
+
static supportsDetach(mode: AppMode): boolean;
|
|
15
|
+
run(): Promise<any>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=VaultForge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VaultForge.d.ts","sourceRoot":"","sources":["../../src/core/VaultForge.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAc,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAgB,gBAAgB,EAAuB,MAAM,wBAAwB,CAAC;AAqBlG,qBAAa,UAAU;IACnB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,aAAa,CAAgB;gBAEzB,MAAM,EAAE,gBAAgB;IAYpC;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAKvC,GAAG;CA+CZ"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import * as fs from 'fs/promises';
|
|
3
|
+
import { AppMode, AIProvider } from '../types/constants.js';
|
|
4
|
+
import { ObsidianService } from '../services/ObsidianService.js';
|
|
5
|
+
import { PromptSmith } from './PromptSmith.js';
|
|
6
|
+
import { DebugStrategy } from "../strategies/DebugStrategy.js";
|
|
7
|
+
import { GeneralStrategy } from "../strategies/GeneralStrategy.js";
|
|
8
|
+
import { XPostStrategy } from "../strategies/XPostStrategy.js";
|
|
9
|
+
import { DiaryStrategy } from "../strategies/DiaryStrategy.js";
|
|
10
|
+
import { InitStrategy } from "../strategies/InitStrategy.js";
|
|
11
|
+
import { TEXT } from '../config/text.js';
|
|
12
|
+
import { confirm, isCancel, cancel, intro, log, spinner } from '@clack/prompts';
|
|
13
|
+
import { AIOrchestratorService } from '../services/AIOrchestratorService.js';
|
|
14
|
+
import { ConfigService } from '../services/ConfigService.js';
|
|
15
|
+
const MODE_CONFIG = {
|
|
16
|
+
[AppMode.GENERAL]: { Strategy: GeneralStrategy },
|
|
17
|
+
[AppMode.DEBUG]: { Strategy: DebugStrategy },
|
|
18
|
+
[AppMode.X_POST]: { Strategy: XPostStrategy },
|
|
19
|
+
[AppMode.DIARY]: { Strategy: DiaryStrategy },
|
|
20
|
+
[AppMode.INIT]: { Strategy: InitStrategy },
|
|
21
|
+
};
|
|
22
|
+
export class VaultForge {
|
|
23
|
+
config;
|
|
24
|
+
obsidian;
|
|
25
|
+
promptSmith;
|
|
26
|
+
aiOrchestrator;
|
|
27
|
+
configService;
|
|
28
|
+
constructor(config) {
|
|
29
|
+
this.config = config;
|
|
30
|
+
const vaultPath = config.vaultPath;
|
|
31
|
+
this.configService = new ConfigService();
|
|
32
|
+
const lang = this.configService.language;
|
|
33
|
+
this.obsidian = new ObsidianService(vaultPath);
|
|
34
|
+
this.promptSmith = new PromptSmith(this.obsidian, lang, this.configService);
|
|
35
|
+
this.aiOrchestrator = new AIOrchestratorService(vaultPath, this.configService);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* 指定されたモードが detach (バックグラウンド実行) をサポートしているか判定する。
|
|
39
|
+
* Determines if the specified mode supports detach (background execution).
|
|
40
|
+
*/
|
|
41
|
+
static supportsDetach(mode) {
|
|
42
|
+
const modeConfig = MODE_CONFIG[mode] || MODE_CONFIG[AppMode.GENERAL];
|
|
43
|
+
return modeConfig.Strategy.supportsDetach;
|
|
44
|
+
}
|
|
45
|
+
async run() {
|
|
46
|
+
const { inputData, mode, cliOptions } = this.config;
|
|
47
|
+
const now = this.config.date || new Date();
|
|
48
|
+
const modeConfig = MODE_CONFIG[mode] || MODE_CONFIG[AppMode.GENERAL];
|
|
49
|
+
const strategy = new modeConfig.Strategy();
|
|
50
|
+
if (this.configService.isDetachedMode && !modeConfig.Strategy.supportsDetach) {
|
|
51
|
+
throw new Error(TEXT.errors.detachNotSupported.replace('{mode}', mode));
|
|
52
|
+
}
|
|
53
|
+
const dateStr = now.toISOString().split('T')[0] || 'unknown-date';
|
|
54
|
+
const timeStr = now.toTimeString().split(' ')[0]?.replace(/:/g, '') || '000000';
|
|
55
|
+
const relativePath = path.join('Inbox', mode, dateStr, `log_${timeStr}.md`);
|
|
56
|
+
let resolvedOverrideModel = cliOptions?.model ? { provider: '', model: cliOptions.model } : undefined;
|
|
57
|
+
if (mode !== AppMode.INIT && resolvedOverrideModel && !resolvedOverrideModel.provider) {
|
|
58
|
+
const provider = await this.aiOrchestrator.inferProvider(resolvedOverrideModel.model);
|
|
59
|
+
if (provider) {
|
|
60
|
+
resolvedOverrideModel = { ...resolvedOverrideModel, provider };
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
console.error(TEXT.errors.modelNotFound.replace('{model}', resolvedOverrideModel.model));
|
|
64
|
+
console.error(TEXT.errors.providerInferenceFailed);
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
const result = await strategy.execute(inputData, this.obsidian, this.promptSmith, this.aiOrchestrator, this.configService, { relativePath, fullPath: "" }, now, this.config.instruction, resolvedOverrideModel, cliOptions);
|
|
69
|
+
if (resolvedOverrideModel) {
|
|
70
|
+
await this.aiOrchestrator.addModel(resolvedOverrideModel.provider, resolvedOverrideModel.model);
|
|
71
|
+
}
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=VaultForge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VaultForge.js","sourceRoot":"","sources":["../../src/core/VaultForge.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { registerCompletionCommand, setupCompletion } from './commands/completion.js';
|
|
4
|
+
import { registerInitCommand } from './commands/init.js';
|
|
5
|
+
import { registerAiCommand } from './commands/ai.js';
|
|
6
|
+
import { registerDiaryCommand } from './commands/diary.js';
|
|
7
|
+
import { registerSearchCommand } from './commands/search.js';
|
|
8
|
+
import { registerTagCommand } from './commands/tag.js';
|
|
9
|
+
import { TEXT } from './config/text.js';
|
|
10
|
+
if (setupCompletion()) {
|
|
11
|
+
process.exit(0);
|
|
12
|
+
}
|
|
13
|
+
const program = new Command();
|
|
14
|
+
program
|
|
15
|
+
.name('vf')
|
|
16
|
+
.description(TEXT.appDescription)
|
|
17
|
+
.version('2.0.0');
|
|
18
|
+
registerCompletionCommand(program);
|
|
19
|
+
registerInitCommand(program);
|
|
20
|
+
registerAiCommand(program);
|
|
21
|
+
registerDiaryCommand(program);
|
|
22
|
+
registerSearchCommand(program);
|
|
23
|
+
registerTagCommand(program);
|
|
24
|
+
if (!process.argv.slice(2).length) {
|
|
25
|
+
program.outputHelp();
|
|
26
|
+
}
|
|
27
|
+
program.parse(process.argv);
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,IAAI,eAAe,EAAE,EAAE,CAAC;IACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,IAAI,CAAC;KACV,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC;KAChC,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACnC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC3B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAE5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,OAAO,CAAC,UAAU,EAAE,CAAC;AACzB,CAAC;AAED,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import omelette from 'omelette';
|
|
2
|
+
export declare const completion: omelette.Instance;
|
|
3
|
+
/**
|
|
4
|
+
* 補完候補のリストを取得する(#を付けない)
|
|
5
|
+
*/
|
|
6
|
+
export declare const getCandidates: () => string[];
|
|
7
|
+
export declare const setupCompletion: () => void;
|
|
8
|
+
//# sourceMappingURL=completion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/lib/completion.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAIhC,eAAO,MAAM,UAAU,mBAAiC,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,aAAa,QAAO,MAAM,EAqBtC,CAAC;AAEF,eAAO,MAAM,eAAe,YA0B3B,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import omelette from 'omelette';
|
|
2
|
+
import * as fsSync from 'fs';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
export const completion = omelette('vf <action> <item>');
|
|
5
|
+
/**
|
|
6
|
+
* 補完候補のリストを取得する(#を付けない)
|
|
7
|
+
*/
|
|
8
|
+
export const getCandidates = () => {
|
|
9
|
+
try {
|
|
10
|
+
const vaultPath = process.env.OBSIDIAN_VAULT_PATH;
|
|
11
|
+
if (!vaultPath)
|
|
12
|
+
return [];
|
|
13
|
+
const candidates = [];
|
|
14
|
+
const tagsPath = path.join(vaultPath, '_AI_Prompts', 'tags.json');
|
|
15
|
+
if (fsSync.existsSync(tagsPath)) {
|
|
16
|
+
const tags = JSON.parse(fsSync.readFileSync(tagsPath, 'utf-8'));
|
|
17
|
+
if (Array.isArray(tags))
|
|
18
|
+
candidates.push(...tags);
|
|
19
|
+
}
|
|
20
|
+
const modelsPath = path.join(vaultPath, '_AI_Prompts', 'ai-models.json');
|
|
21
|
+
if (fsSync.existsSync(modelsPath)) {
|
|
22
|
+
const modelsData = JSON.parse(fsSync.readFileSync(modelsPath, 'utf-8'));
|
|
23
|
+
Object.values(modelsData).forEach((models) => {
|
|
24
|
+
if (Array.isArray(models))
|
|
25
|
+
candidates.push(...models);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return candidates;
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
return [];
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
export const setupCompletion = () => {
|
|
35
|
+
completion.on('action', ({ reply }) => {
|
|
36
|
+
reply(['ask', 'diary', 'd', 'search', 's', 'init', 'completion']);
|
|
37
|
+
});
|
|
38
|
+
completion.on('item', ({ reply, line }) => {
|
|
39
|
+
const parts = line.split(/\s+/);
|
|
40
|
+
const action = parts[1] || '';
|
|
41
|
+
const askOptions = ['--mode', '-m', '--instruction', '-i', '--detach', '-d', '--model']; // -f 削除
|
|
42
|
+
const diaryOptions = ['--task', '-t'];
|
|
43
|
+
if (['ask', 'diary', 'd', 'search', 's'].includes(action)) {
|
|
44
|
+
reply([...getCandidates(), ...(action === 'ask' ? askOptions : (action === 'diary' || action === 'd' ? diaryOptions : []))]);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
const isCompletionRequest = process.argv.some(arg => arg.includes('--comp') || arg === '_completion' || arg === 'completion');
|
|
48
|
+
if (isCompletionRequest) {
|
|
49
|
+
if (process.argv.some(arg => arg.includes('--compzsh') || arg.includes('--compbash') || arg === '--completion')) {
|
|
50
|
+
completion.init();
|
|
51
|
+
process.exit(0);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=completion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/lib/completion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dummy.d.ts","sourceRoot":"","sources":["../../src/lib/dummy.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dummy.js","sourceRoot":"","sources":["../../src/lib/dummy.ts"],"names":[],"mappings":";AAAA,QAAQ"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLIからの入力を解析し、VaultForgeの実行を準備・トリガーするメインアクション。
|
|
3
|
+
* Parses input from the CLI, prepares, and triggers the execution of VaultForge.
|
|
4
|
+
* @param {string | undefined} inputArg - コマンドライン引数として渡された入力テキスト / Input text passed as a command-line argument.
|
|
5
|
+
* @param {any} options - commanderから渡されるオプションオブジェクト / Options object passed from commander.
|
|
6
|
+
*/
|
|
7
|
+
export declare function mainAction(inputArg: string | undefined, options: any): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=mainAction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mainAction.d.ts","sourceRoot":"","sources":["../../src/lib/mainAction.ts"],"names":[],"mappings":"AAUA;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,GAAG,iBAqH1E"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { spawn } from 'child_process';
|
|
2
|
+
import { VaultForge } from '../core/VaultForge.js';
|
|
3
|
+
import { AppMode } from '../types/constants.js';
|
|
4
|
+
import { getTags } from '../commands/completion.js';
|
|
5
|
+
import { readStdin } from './stdin.js';
|
|
6
|
+
import { TEXT } from '../config/text.js';
|
|
7
|
+
import { ConfigService } from '../services/ConfigService.js';
|
|
8
|
+
import * as fs from 'fs/promises';
|
|
9
|
+
/**
|
|
10
|
+
* CLIからの入力を解析し、VaultForgeの実行を準備・トリガーするメインアクション。
|
|
11
|
+
* Parses input from the CLI, prepares, and triggers the execution of VaultForge.
|
|
12
|
+
* @param {string | undefined} inputArg - コマンドライン引数として渡された入力テキスト / Input text passed as a command-line argument.
|
|
13
|
+
* @param {any} options - commanderから渡されるオプションオブジェクト / Options object passed from commander.
|
|
14
|
+
*/
|
|
15
|
+
export async function mainAction(inputArg, options) {
|
|
16
|
+
try {
|
|
17
|
+
if (options.detach && options.stream) {
|
|
18
|
+
console.error(TEXT.errors.optionConflict.replace('{option1}', '--stream').replace('{option2}', '--detach'));
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
if (options.detach && options.normal) {
|
|
22
|
+
console.error(TEXT.errors.optionConflict.replace('{option1}', '--normal').replace('{option2}', '--detach'));
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
if (options.stream && options.normal) {
|
|
26
|
+
console.error(TEXT.errors.optionConflict.replace('{option1}', '--stream').replace('{option2}', '--normal'));
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
let mode = options.preset || AppMode.GENERAL;
|
|
30
|
+
const configService = new ConfigService();
|
|
31
|
+
if (!configService.hasEnvFile()) {
|
|
32
|
+
console.error(TEXT.errors.envMissing);
|
|
33
|
+
console.error(TEXT.ui.runInit);
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
else if (!configService.hasVaultPath()) {
|
|
37
|
+
console.error(TEXT.errors.vaultPathNotSet);
|
|
38
|
+
console.error(TEXT.ui.runInit);
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
const vaultPath = configService.vaultPath;
|
|
42
|
+
if (options.detach) {
|
|
43
|
+
if (!VaultForge.supportsDetach(mode)) {
|
|
44
|
+
console.error(TEXT.errors.detachNotSupported.replace('{mode}', mode));
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
const args = process.argv.slice(2).filter(arg => arg !== '-d' && arg !== '--detach');
|
|
48
|
+
const subprocess = spawn(process.argv[0] || 'node', [process.argv[1] || '', ...args], {
|
|
49
|
+
detached: true,
|
|
50
|
+
stdio: 'ignore',
|
|
51
|
+
env: {
|
|
52
|
+
...process.env,
|
|
53
|
+
VF_DETACHED_MODE: 'true'
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
subprocess.unref();
|
|
57
|
+
process.exit(0);
|
|
58
|
+
}
|
|
59
|
+
const validCandidates = getTags();
|
|
60
|
+
const shouldAutoTag = options.autoTag !== false;
|
|
61
|
+
let finalInputData = "";
|
|
62
|
+
let finalInstruction = options.instruction || "";
|
|
63
|
+
const { data: stdinData, isPiped } = await readStdin();
|
|
64
|
+
if (isPiped) {
|
|
65
|
+
finalInputData = stdinData;
|
|
66
|
+
if (inputArg && inputArg.trim()) {
|
|
67
|
+
if (finalInstruction) {
|
|
68
|
+
finalInstruction += `\n${inputArg}`;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
finalInstruction = inputArg;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else if (options.file) {
|
|
76
|
+
try {
|
|
77
|
+
finalInputData = await fs.readFile(options.file, 'utf-8');
|
|
78
|
+
if (inputArg && inputArg.trim()) {
|
|
79
|
+
if (finalInstruction) {
|
|
80
|
+
finalInstruction += `\n${inputArg}`;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
finalInstruction = inputArg;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch (e) {
|
|
88
|
+
console.error(`${TEXT.errors.fileReadError} ${options.file}`);
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
finalInputData = (inputArg || "").split(' ').map(word => {
|
|
94
|
+
if (shouldAutoTag && validCandidates.includes(word)) {
|
|
95
|
+
return `#${word}`;
|
|
96
|
+
}
|
|
97
|
+
return word;
|
|
98
|
+
}).join(' ');
|
|
99
|
+
}
|
|
100
|
+
if (!finalInputData.trim() && !finalInstruction && mode !== AppMode.DIARY && mode !== AppMode.INIT) {
|
|
101
|
+
}
|
|
102
|
+
let overrideOutputMode = undefined;
|
|
103
|
+
if (options.stream) {
|
|
104
|
+
overrideOutputMode = 'stream';
|
|
105
|
+
}
|
|
106
|
+
else if (options.normal) {
|
|
107
|
+
overrideOutputMode = 'normal';
|
|
108
|
+
}
|
|
109
|
+
const config = {
|
|
110
|
+
vaultPath: vaultPath,
|
|
111
|
+
inputData: finalInputData,
|
|
112
|
+
mode: mode,
|
|
113
|
+
instruction: finalInstruction,
|
|
114
|
+
cliOptions: options,
|
|
115
|
+
isPiped: isPiped
|
|
116
|
+
};
|
|
117
|
+
const app = new VaultForge(config);
|
|
118
|
+
await app.run();
|
|
119
|
+
}
|
|
120
|
+
catch (e) {
|
|
121
|
+
const errorMessage = e instanceof Error ? e.message : String(e);
|
|
122
|
+
console.error(`${TEXT.errors.mainActionError} ${errorMessage}`);
|
|
123
|
+
process.exit(1);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=mainAction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mainAction.js","sourceRoot":"","sources":["../../src/lib/mainAction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ObsidianService } from '../services/ObsidianService.js';
|
|
2
|
+
import { ConfigService } from '../services/ConfigService.js';
|
|
3
|
+
export declare function search(query: string, obsidian: ObsidianService, config: ConfigService): Promise<void>;
|
|
4
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/lib/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAkB7D,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,iBAQ3F"}
|