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.
Files changed (224) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +336 -0
  3. package/dist/actions/dummy.d.ts +2 -0
  4. package/dist/actions/dummy.d.ts.map +1 -0
  5. package/dist/actions/dummy.js +3 -0
  6. package/dist/actions/dummy.js.map +1 -0
  7. package/dist/actions/mainAction.d.ts +5 -0
  8. package/dist/actions/mainAction.d.ts.map +1 -0
  9. package/dist/actions/mainAction.js +68 -0
  10. package/dist/actions/mainAction.js.map +1 -0
  11. package/dist/commands/ai.d.ts +3 -0
  12. package/dist/commands/ai.d.ts.map +1 -0
  13. package/dist/commands/ai.js +20 -0
  14. package/dist/commands/ai.js.map +1 -0
  15. package/dist/commands/ask.d.ts +3 -0
  16. package/dist/commands/ask.d.ts.map +1 -0
  17. package/dist/commands/ask.js +15 -0
  18. package/dist/commands/ask.js.map +1 -0
  19. package/dist/commands/completion.d.ts +34 -0
  20. package/dist/commands/completion.d.ts.map +1 -0
  21. package/dist/commands/completion.js +134 -0
  22. package/dist/commands/completion.js.map +1 -0
  23. package/dist/commands/diary.d.ts +3 -0
  24. package/dist/commands/diary.d.ts.map +1 -0
  25. package/dist/commands/diary.js +15 -0
  26. package/dist/commands/diary.js.map +1 -0
  27. package/dist/commands/dummy.d.ts +2 -0
  28. package/dist/commands/dummy.d.ts.map +1 -0
  29. package/dist/commands/dummy.js +3 -0
  30. package/dist/commands/dummy.js.map +1 -0
  31. package/dist/commands/find.d.ts +2 -0
  32. package/dist/commands/find.d.ts.map +1 -0
  33. package/dist/commands/find.js +3 -0
  34. package/dist/commands/find.js.map +1 -0
  35. package/dist/commands/init.d.ts +3 -0
  36. package/dist/commands/init.d.ts.map +1 -0
  37. package/dist/commands/init.js +46 -0
  38. package/dist/commands/init.js.map +1 -0
  39. package/dist/commands/search.d.ts +3 -0
  40. package/dist/commands/search.d.ts.map +1 -0
  41. package/dist/commands/search.js +29 -0
  42. package/dist/commands/search.js.map +1 -0
  43. package/dist/commands/tag.d.ts +3 -0
  44. package/dist/commands/tag.d.ts.map +1 -0
  45. package/dist/commands/tag.js +37 -0
  46. package/dist/commands/tag.js.map +1 -0
  47. package/dist/config/locales/en.d.ts +188 -0
  48. package/dist/config/locales/en.d.ts.map +1 -0
  49. package/dist/config/locales/en.js +190 -0
  50. package/dist/config/locales/en.js.map +1 -0
  51. package/dist/config/locales/ja.d.ts +188 -0
  52. package/dist/config/locales/ja.d.ts.map +1 -0
  53. package/dist/config/locales/ja.js +190 -0
  54. package/dist/config/locales/ja.js.map +1 -0
  55. package/dist/config/prompts/en.d.ts +6 -0
  56. package/dist/config/prompts/en.d.ts.map +1 -0
  57. package/dist/config/prompts/en.js +25 -0
  58. package/dist/config/prompts/en.js.map +1 -0
  59. package/dist/config/prompts/ja.d.ts +6 -0
  60. package/dist/config/prompts/ja.d.ts.map +1 -0
  61. package/dist/config/prompts/ja.js +25 -0
  62. package/dist/config/prompts/ja.js.map +1 -0
  63. package/dist/config/text.d.ts +195 -0
  64. package/dist/config/text.d.ts.map +1 -0
  65. package/dist/config/text.js +15 -0
  66. package/dist/config/text.js.map +1 -0
  67. package/dist/core/PromptLoader.d.ts +30 -0
  68. package/dist/core/PromptLoader.d.ts.map +1 -0
  69. package/dist/core/PromptLoader.js +187 -0
  70. package/dist/core/PromptLoader.js.map +1 -0
  71. package/dist/core/PromptSmith.d.ts +21 -0
  72. package/dist/core/PromptSmith.d.ts.map +1 -0
  73. package/dist/core/PromptSmith.js +197 -0
  74. package/dist/core/PromptSmith.js.map +1 -0
  75. package/dist/core/VaultForge.d.ts +17 -0
  76. package/dist/core/VaultForge.d.ts.map +1 -0
  77. package/dist/core/VaultForge.js +75 -0
  78. package/dist/core/VaultForge.js.map +1 -0
  79. package/dist/index.d.ts +3 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +28 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/lib/completion.d.ts +8 -0
  84. package/dist/lib/completion.d.ts.map +1 -0
  85. package/dist/lib/completion.js +55 -0
  86. package/dist/lib/completion.js.map +1 -0
  87. package/dist/lib/dummy.d.ts +2 -0
  88. package/dist/lib/dummy.d.ts.map +1 -0
  89. package/dist/lib/dummy.js +3 -0
  90. package/dist/lib/dummy.js.map +1 -0
  91. package/dist/lib/mainAction.d.ts +8 -0
  92. package/dist/lib/mainAction.d.ts.map +1 -0
  93. package/dist/lib/mainAction.js +126 -0
  94. package/dist/lib/mainAction.js.map +1 -0
  95. package/dist/lib/search.d.ts +4 -0
  96. package/dist/lib/search.d.ts.map +1 -0
  97. package/dist/lib/search.js +87 -0
  98. package/dist/lib/search.js.map +1 -0
  99. package/dist/lib/stdin.d.ts +10 -0
  100. package/dist/lib/stdin.d.ts.map +1 -0
  101. package/dist/lib/stdin.js +20 -0
  102. package/dist/lib/stdin.js.map +1 -0
  103. package/dist/services/AIModelService.d.ts +33 -0
  104. package/dist/services/AIModelService.d.ts.map +1 -0
  105. package/dist/services/AIModelService.js +116 -0
  106. package/dist/services/AIModelService.js.map +1 -0
  107. package/dist/services/AIOrchestratorService.d.ts +57 -0
  108. package/dist/services/AIOrchestratorService.d.ts.map +1 -0
  109. package/dist/services/AIOrchestratorService.js +164 -0
  110. package/dist/services/AIOrchestratorService.js.map +1 -0
  111. package/dist/services/ConfigService.d.ts +61 -0
  112. package/dist/services/ConfigService.d.ts.map +1 -0
  113. package/dist/services/ConfigService.js +132 -0
  114. package/dist/services/ConfigService.js.map +1 -0
  115. package/dist/services/ObsidianService.d.ts +97 -0
  116. package/dist/services/ObsidianService.d.ts.map +1 -0
  117. package/dist/services/ObsidianService.js +264 -0
  118. package/dist/services/ObsidianService.js.map +1 -0
  119. package/dist/services/TagService.d.ts +26 -0
  120. package/dist/services/TagService.d.ts.map +1 -0
  121. package/dist/services/TagService.js +73 -0
  122. package/dist/services/TagService.js.map +1 -0
  123. package/dist/services/UserInteraction.d.ts +100 -0
  124. package/dist/services/UserInteraction.d.ts.map +1 -0
  125. package/dist/services/UserInteraction.js +169 -0
  126. package/dist/services/UserInteraction.js.map +1 -0
  127. package/dist/services/XService.d.ts +15 -0
  128. package/dist/services/XService.d.ts.map +1 -0
  129. package/dist/services/XService.js +40 -0
  130. package/dist/services/XService.js.map +1 -0
  131. package/dist/services/ai/AIServiceFactory.d.ts +26 -0
  132. package/dist/services/ai/AIServiceFactory.d.ts.map +1 -0
  133. package/dist/services/ai/AIServiceFactory.js +69 -0
  134. package/dist/services/ai/AIServiceFactory.js.map +1 -0
  135. package/dist/services/ai/ClaudeService.d.ts +9 -0
  136. package/dist/services/ai/ClaudeService.d.ts.map +1 -0
  137. package/dist/services/ai/ClaudeService.js +59 -0
  138. package/dist/services/ai/ClaudeService.js.map +1 -0
  139. package/dist/services/ai/GeminiService.d.ts +9 -0
  140. package/dist/services/ai/GeminiService.d.ts.map +1 -0
  141. package/dist/services/ai/GeminiService.js +46 -0
  142. package/dist/services/ai/GeminiService.js.map +1 -0
  143. package/dist/services/ai/GroqService.d.ts +9 -0
  144. package/dist/services/ai/GroqService.d.ts.map +1 -0
  145. package/dist/services/ai/GroqService.js +53 -0
  146. package/dist/services/ai/GroqService.js.map +1 -0
  147. package/dist/services/ai/MockAIService.d.ts +8 -0
  148. package/dist/services/ai/MockAIService.d.ts.map +1 -0
  149. package/dist/services/ai/MockAIService.js +24 -0
  150. package/dist/services/ai/MockAIService.js.map +1 -0
  151. package/dist/services/ai/OpenAIService.d.ts +9 -0
  152. package/dist/services/ai/OpenAIService.d.ts.map +1 -0
  153. package/dist/services/ai/OpenAIService.js +51 -0
  154. package/dist/services/ai/OpenAIService.js.map +1 -0
  155. package/dist/strategies/BaseStrategy.d.ts +36 -0
  156. package/dist/strategies/BaseStrategy.d.ts.map +1 -0
  157. package/dist/strategies/BaseStrategy.js +110 -0
  158. package/dist/strategies/BaseStrategy.js.map +1 -0
  159. package/dist/strategies/DebugStrategy.d.ts +13 -0
  160. package/dist/strategies/DebugStrategy.d.ts.map +1 -0
  161. package/dist/strategies/DebugStrategy.js +16 -0
  162. package/dist/strategies/DebugStrategy.js.map +1 -0
  163. package/dist/strategies/DiaryStrategy.d.ts +19 -0
  164. package/dist/strategies/DiaryStrategy.d.ts.map +1 -0
  165. package/dist/strategies/DiaryStrategy.js +69 -0
  166. package/dist/strategies/DiaryStrategy.js.map +1 -0
  167. package/dist/strategies/GeneralStrategy.d.ts +8 -0
  168. package/dist/strategies/GeneralStrategy.d.ts.map +1 -0
  169. package/dist/strategies/GeneralStrategy.js +11 -0
  170. package/dist/strategies/GeneralStrategy.js.map +1 -0
  171. package/dist/strategies/InitStrategy.d.ts +19 -0
  172. package/dist/strategies/InitStrategy.d.ts.map +1 -0
  173. package/dist/strategies/InitStrategy.js +122 -0
  174. package/dist/strategies/InitStrategy.js.map +1 -0
  175. package/dist/strategies/SearchStrategy.d.ts +19 -0
  176. package/dist/strategies/SearchStrategy.d.ts.map +1 -0
  177. package/dist/strategies/SearchStrategy.js +112 -0
  178. package/dist/strategies/SearchStrategy.js.map +1 -0
  179. package/dist/strategies/XPostStrategy.d.ts +27 -0
  180. package/dist/strategies/XPostStrategy.d.ts.map +1 -0
  181. package/dist/strategies/XPostStrategy.js +119 -0
  182. package/dist/strategies/XPostStrategy.js.map +1 -0
  183. package/dist/templates/completion.bash +24 -0
  184. package/dist/templates/dailyNote.d.ts +2 -0
  185. package/dist/templates/dailyNote.d.ts.map +1 -0
  186. package/dist/templates/dailyNote.js +8 -0
  187. package/dist/templates/dailyNote.js.map +1 -0
  188. package/dist/templates/defaultPrompt.d.ts +2 -0
  189. package/dist/templates/defaultPrompt.d.ts.map +1 -0
  190. package/dist/templates/defaultPrompt.js +28 -0
  191. package/dist/templates/defaultPrompt.js.map +1 -0
  192. package/dist/templates/obsidianNote.d.ts +3 -0
  193. package/dist/templates/obsidianNote.d.ts.map +1 -0
  194. package/dist/templates/obsidianNote.js +17 -0
  195. package/dist/templates/obsidianNote.js.map +1 -0
  196. package/dist/templates/tokenUsage.d.ts +20 -0
  197. package/dist/templates/tokenUsage.d.ts.map +1 -0
  198. package/dist/templates/tokenUsage.js +50 -0
  199. package/dist/templates/tokenUsage.js.map +1 -0
  200. package/dist/test-tabtab.d.ts +2 -0
  201. package/dist/test-tabtab.d.ts.map +1 -0
  202. package/dist/test-tabtab.js +50 -0
  203. package/dist/test-tabtab.js.map +1 -0
  204. package/dist/types/constants.d.ts +16 -0
  205. package/dist/types/constants.d.ts.map +1 -0
  206. package/dist/types/constants.js +14 -0
  207. package/dist/types/constants.js.map +1 -0
  208. package/dist/types/interfaces.d.ts +56 -0
  209. package/dist/types/interfaces.d.ts.map +1 -0
  210. package/dist/types/interfaces.js +6 -0
  211. package/dist/types/interfaces.js.map +1 -0
  212. package/dist/types/schemas.d.ts +18 -0
  213. package/dist/types/schemas.d.ts.map +1 -0
  214. package/dist/types/schemas.js +13 -0
  215. package/dist/types/schemas.js.map +1 -0
  216. package/dist/utils/completion.d.ts +8 -0
  217. package/dist/utils/completion.d.ts.map +1 -0
  218. package/dist/utils/completion.js +58 -0
  219. package/dist/utils/completion.js.map +1 -0
  220. package/dist/utils/dummy.d.ts +2 -0
  221. package/dist/utils/dummy.d.ts.map +1 -0
  222. package/dist/utils/dummy.js +3 -0
  223. package/dist/utils/dummy.js.map +1 -0
  224. package/package.json +55 -0
@@ -0,0 +1,25 @@
1
+ export const PROMPTS = {
2
+ general: "あなたは優秀なテクニカルライター兼エンジニアです。\n" +
3
+ "提供されたテキストを深く分析し、以下の構造で出力してください。\n\n" +
4
+ "## 1. 概要\n" +
5
+ "内容を3行以内で簡潔に要約してください。\n\n" +
6
+ "## 2. 重要ポイント\n" +
7
+ "重要な情報を箇条書きで抽出してください。単なる事実の羅列ではなく、「なぜ重要か」も補足してください。\n\n" +
8
+ "## 3. 考察・アクション\n" +
9
+ "この情報から読み取れる洞察、または次に取るべきアクションがあれば提示してください。\n\n" +
10
+ "**フォーマット**: Markdown形式で見やすく整形してください。",
11
+ xpost: "この記事を元に、技術系ユーザーに刺さるX投稿案(140文字以内)を3つ、最適なハッシュタグと共に提案してください。\n" +
12
+ "**出力形式:**\n" +
13
+ "以下のJSON形式のみで出力してください。Markdownのコードブロック(```json)や説明文は含めないでください。\n" +
14
+ `[{"content": "投稿本文", "hashtags": ["#tag1", "#tag2"]}]`,
15
+ debug: "あなたは熟練したDevOpsエンジニアです。\n" +
16
+ "提供されたエラーログやコードを分析し、以下の手順で解決策を提示してください。\n\n" +
17
+ "## 1. 根本原因\n" +
18
+ "何がエラーを引き起こしているのか、技術的な背景を含めて解説してください。\n\n" +
19
+ "## 2. 解決策\n" +
20
+ "具体的なコマンド、コード修正案、または設定変更の手順を提示してください。\n\n" +
21
+ "## 3. 検証方法\n" +
22
+ "問題が解決したことを確認するためのコマンドや手順があれば教えてください。\n\n" +
23
+ "**ターゲット**: 初心者にも分かりやすく、かつ専門用語は正確に使ってください。",
24
+ };
25
+ //# sourceMappingURL=ja.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ja.js","sourceRoot":"","sources":["../../../src/config/prompts/ja.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG;IACnB,OAAO,EACH,6BAA6B;QAC7B,qCAAqC;QACrC,YAAY;QACZ,0BAA0B;QAC1B,gBAAgB;QAChB,wDAAwD;QACxD,kBAAkB;QAClB,+CAA+C;QAC/C,sCAAsC;IAE1C,KAAK,EACD,6DAA6D;QAC7D,aAAa;QACb,iEAAiE;QACjE,uDAAuD;IAE3D,KAAK,EACD,0BAA0B;QAC1B,4CAA4C;QAC5C,cAAc;QACd,0CAA0C;QAC1C,aAAa;QACb,0CAA0C;QAC1C,cAAc;QACd,0CAA0C;QAC1C,2CAA2C;CAClD,CAAC"}
@@ -0,0 +1,195 @@
1
+ declare const EN: {
2
+ prompts: {
3
+ general: string;
4
+ xpost: string;
5
+ debug: string;
6
+ };
7
+ appDescription: string;
8
+ logs: {
9
+ obsidianSaved: string;
10
+ aiAnalyzing: string;
11
+ modeSuffix: string;
12
+ analysisResult: string;
13
+ obsidianAppended: string;
14
+ readingFromObsidian: string;
15
+ stdinReading: string;
16
+ appRun: string;
17
+ completed: string;
18
+ xPostStart: string;
19
+ xPostSelected: string;
20
+ xPostSuccess: string;
21
+ xPostCancel: string;
22
+ fileRecorded: string;
23
+ tokenUsage: string;
24
+ xPostRetry: string;
25
+ xPostSaveExit: string;
26
+ runningInBackground: string;
27
+ searchingWithRipgrep: string;
28
+ ripgrepNotFoundOpeningObsidian: string;
29
+ noResultsFound: string;
30
+ unknownProviderFallback: string;
31
+ };
32
+ errors: {
33
+ noInput: string;
34
+ aiApi: string;
35
+ envMissing: string;
36
+ invalidMode: string;
37
+ availableModes: string;
38
+ executionError: string;
39
+ analysisFailed: string;
40
+ jsonParseFailed: string;
41
+ noCandidates: string;
42
+ notTTY: string;
43
+ xAuthMissing: string;
44
+ xPostFailed: string;
45
+ fileReadError: string;
46
+ unexpectedBackSignal: string;
47
+ generalBackgroundNotSupported: string;
48
+ searchError: string;
49
+ editorExitError: string;
50
+ vaultPathNotSet: string;
51
+ noAiKeys: string;
52
+ modelNotSpecified: string;
53
+ pipedInputTooLarge: string;
54
+ pipedInputLimit: string;
55
+ providerInferenceFailed: string;
56
+ modelNotFound: string;
57
+ editorNotSet: string;
58
+ mainActionError: string;
59
+ interactiveRequired: string;
60
+ testEnvRestriction: string;
61
+ detachNotSupported: string;
62
+ optionConflict: string;
63
+ missingServices: string;
64
+ streamNotSupported: string;
65
+ };
66
+ markdown: {
67
+ originalDataHeader: string;
68
+ analysisHeader: string;
69
+ xPostHeader: string;
70
+ xPostSuccessHeader: string;
71
+ xPostFailHeader: string;
72
+ };
73
+ ui: {
74
+ selectPost: string;
75
+ confirmPost: string;
76
+ retryOption: string;
77
+ retryDesc: string;
78
+ saveExitOption: string;
79
+ saveExitDesc: string;
80
+ initWelcome: string;
81
+ initTitle: string;
82
+ initCurrentSettings: string;
83
+ initVaultPath: string;
84
+ initLanguage: string;
85
+ initAvailableAI: string;
86
+ initConfirm: string;
87
+ initCancelled: string;
88
+ initGeneratingFiles: string;
89
+ initPromptsGenerated: string;
90
+ initTokenDirCreated: string;
91
+ initTokenDirFailed: string;
92
+ initEnvCreated: string;
93
+ initEnvFailed: string;
94
+ initDone: string;
95
+ initResetPrompts: string;
96
+ initUpdateAI: string;
97
+ initAIUpdated: string;
98
+ runInit: string;
99
+ selectAIForMode: string;
100
+ aiSettingsUpdatedFor: string;
101
+ backOption: string;
102
+ operationCancelled: string;
103
+ selectOutputMode: string;
104
+ outputModeNormal: string;
105
+ outputModeStream: string;
106
+ outputModeBackground: string;
107
+ diaryInputMessage: string;
108
+ diaryInputPlaceholder: string;
109
+ diarySaved: string;
110
+ ripgrepInstalled: string;
111
+ ripgrepNotFound: string;
112
+ ripgrepInstallHint: string;
113
+ searchResultsFound: string;
114
+ selectModel: string;
115
+ enterCustomModel: string;
116
+ customModelOption: string;
117
+ customModelPlaceholder: string;
118
+ tagsJsonCreated: string;
119
+ aiModelsJsonCreated: string;
120
+ setupCompletionConfirm: string;
121
+ setupCompletionFailed: string;
122
+ setupCompletionManual: string;
123
+ confirmLargeInput: string;
124
+ completionAlreadySetUp: string;
125
+ initCompleted: string;
126
+ };
127
+ loader: {
128
+ loadError: string;
129
+ reason: string;
130
+ confirmContinue: string;
131
+ usingDefault: string;
132
+ aborting: string;
133
+ loadErrorDetail: string;
134
+ createdDefaultFile: string;
135
+ createDefaultError: string;
136
+ defaultPromptDescription: string;
137
+ noDefaultPrompt: string;
138
+ };
139
+ labels: {
140
+ additionalInstruction: string;
141
+ targetData: string;
142
+ };
143
+ validation: {
144
+ promptTooShort: string;
145
+ };
146
+ commands: {
147
+ completion: {
148
+ description: string;
149
+ };
150
+ init: {
151
+ description: string;
152
+ };
153
+ diary: {
154
+ description: string;
155
+ args: {
156
+ input: string;
157
+ };
158
+ options: {
159
+ task: string;
160
+ };
161
+ };
162
+ search: {
163
+ description: string;
164
+ args: {
165
+ query: string;
166
+ };
167
+ };
168
+ run: {
169
+ description: string;
170
+ args: {
171
+ input: string;
172
+ };
173
+ options: {
174
+ mode: string;
175
+ file: string;
176
+ instruction: string;
177
+ detach: string;
178
+ };
179
+ };
180
+ ai: {
181
+ options: {
182
+ preset: string;
183
+ instruction: string;
184
+ detach: string;
185
+ model: string;
186
+ file: string;
187
+ stream: string;
188
+ normal: string;
189
+ };
190
+ };
191
+ };
192
+ };
193
+ export declare const TEXT: typeof EN;
194
+ export {};
195
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/config/text.ts"],"names":[],"mappings":"AAYA,QAAA,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGP,CAAC;AAEF,eAAO,MAAM,IAAI,EAAgC,OAAO,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { MESSAGES as JA_MESSAGES } from './locales/ja.js';
2
+ import { MESSAGES as EN_MESSAGES } from './locales/en.js';
3
+ import { PROMPTS as JA_PROMPTS } from './prompts/ja.js';
4
+ import { PROMPTS as EN_PROMPTS } from './prompts/en.js';
5
+ const lang = process.env.APP_LANG || 'ja';
6
+ const JA = {
7
+ ...JA_MESSAGES,
8
+ prompts: JA_PROMPTS
9
+ };
10
+ const EN = {
11
+ ...EN_MESSAGES,
12
+ prompts: EN_PROMPTS
13
+ };
14
+ export const TEXT = (lang === 'en' ? EN : JA);
15
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/config/text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC;AAE1C,MAAM,EAAE,GAAG;IACP,GAAG,WAAW;IACd,OAAO,EAAE,UAAU;CACtB,CAAC;AAEF,MAAM,EAAE,GAAG;IACP,GAAG,WAAW;IACd,OAAO,EAAE,UAAU;CACtB,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAc,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { ObsidianService } from '../services/ObsidianService.js';
2
+ import type { PromptData } from '../types/interfaces.js';
3
+ export declare const BACK_SIGNAL: unique symbol;
4
+ export declare class PromptLoader {
5
+ private obsidian;
6
+ private lang;
7
+ private aiModelService;
8
+ constructor(obsidian: ObsidianService, lang: string);
9
+ /**
10
+ * プロンプトファイルを読み込む
11
+ * Loads a prompt file.
12
+ */
13
+ load(promptName: string): Promise<PromptData>;
14
+ /**
15
+ * プロンプトファイルを新規作成(または上書き)する
16
+ * Creates (or overwrites) a prompt file.
17
+ */
18
+ create(promptName: string, interactive: boolean): Promise<string | typeof BACK_SIGNAL>;
19
+ /**
20
+ * 既存のプロンプトファイルのAI設定のみを更新する
21
+ * Updates only the AI settings of an existing prompt file.
22
+ */
23
+ updateAI(promptName: string): Promise<void | typeof BACK_SIGNAL>;
24
+ /**
25
+ * コンテンツに対話的にAI設定を注入するヘルパーメソッド
26
+ * Helper method to interactively inject AI settings into content.
27
+ */
28
+ private injectAIConfig;
29
+ }
30
+ //# sourceMappingURL=PromptLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptLoader.d.ts","sourceRoot":"","sources":["../../src/core/PromptLoader.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,eAAO,MAAM,WAAW,eAAiB,CAAC;AAE1C,qBAAa,YAAY;IACrB,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,cAAc,CAAiB;gBAE3B,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM;IAMnD;;;OAGG;IACG,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA4CnD;;;OAGG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,WAAW,CAAC;IAuB5F;;;OAGG;IACG,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,WAAW,CAAC;IAuBtE;;;OAGG;YACW,cAAc;CA8F/B"}
@@ -0,0 +1,187 @@
1
+ import * as path from 'path';
2
+ import matter from 'gray-matter';
3
+ import { z } from 'zod';
4
+ import { PromptFileSchema } from '../types/schemas.js';
5
+ import { DEFAULT_PROMPTS } from '../templates/defaultPrompt.js';
6
+ import { TEXT } from '../config/text.js';
7
+ import { ObsidianService } from '../services/ObsidianService.js';
8
+ import { select, text as clackText, isCancel, cancel } from '@clack/prompts';
9
+ import { AIProvider, AppMode } from '../types/constants.js';
10
+ import { AIModelService } from '../services/AIModelService.js';
11
+ export const BACK_SIGNAL = Symbol('BACK');
12
+ export class PromptLoader {
13
+ obsidian;
14
+ lang;
15
+ aiModelService;
16
+ constructor(obsidian, lang) {
17
+ this.obsidian = obsidian;
18
+ this.lang = lang;
19
+ this.aiModelService = new AIModelService(obsidian.getVaultPath());
20
+ }
21
+ /**
22
+ * プロンプトファイルを読み込む
23
+ * Loads a prompt file.
24
+ */
25
+ async load(promptName) {
26
+ const relativePath = path.join('_AI_Prompts', 'prompts', this.lang, `${promptName}.md`);
27
+ try {
28
+ const fileContent = await this.obsidian.readNote(relativePath);
29
+ const { content, data } = matter(fileContent);
30
+ const validated = PromptFileSchema.parse({
31
+ frontmatter: data,
32
+ content: content.trim()
33
+ });
34
+ return {
35
+ content: validated.content,
36
+ aiProvider: validated.frontmatter?.aiProvider,
37
+ model: validated.frontmatter?.model,
38
+ outputMode: validated.frontmatter?.outputMode
39
+ };
40
+ }
41
+ catch (error) {
42
+ if (error.code === 'ENOENT') {
43
+ const result = await this.create(promptName, false);
44
+ if (result === BACK_SIGNAL)
45
+ throw new Error(TEXT.errors.unexpectedBackSignal);
46
+ const { content, data } = matter(result);
47
+ return { content: content.trim(), ...data };
48
+ }
49
+ if (error instanceof z.ZodError) {
50
+ const contentError = error.issues.find(issue => issue.path.includes('content') && issue.code === 'too_small');
51
+ if (contentError) {
52
+ const errorMessage = TEXT.loader.loadErrorDetail.replace('{filePath}', relativePath);
53
+ throw new Error(`${errorMessage}\n${TEXT.loader.reason}: ${TEXT.validation.promptTooShort}`);
54
+ }
55
+ }
56
+ const errorMessage = TEXT.loader.loadErrorDetail.replace('{filePath}', relativePath);
57
+ throw new Error(`${errorMessage}\n${TEXT.loader.reason}: ${error.message}`);
58
+ }
59
+ }
60
+ /**
61
+ * プロンプトファイルを新規作成(または上書き)する
62
+ * Creates (or overwrites) a prompt file.
63
+ */
64
+ async create(promptName, interactive) {
65
+ const relativePath = path.join('_AI_Prompts', 'prompts', this.lang, `${promptName}.md`);
66
+ let defaultContent = DEFAULT_PROMPTS[promptName];
67
+ if (!defaultContent) {
68
+ const errorMessage = TEXT.loader.noDefaultPrompt.replace('{promptName}', promptName);
69
+ throw new Error(errorMessage);
70
+ }
71
+ if (interactive) {
72
+ const result = await this.injectAIConfig(defaultContent, promptName);
73
+ if (result === BACK_SIGNAL)
74
+ return BACK_SIGNAL;
75
+ defaultContent = result;
76
+ }
77
+ await this.obsidian.createNote(relativePath, defaultContent);
78
+ const logMessage = TEXT.loader.createdDefaultFile.replace('{filePath}', relativePath);
79
+ console.log(logMessage);
80
+ return defaultContent;
81
+ }
82
+ /**
83
+ * 既存のプロンプトファイルのAI設定のみを更新する
84
+ * Updates only the AI settings of an existing prompt file.
85
+ */
86
+ async updateAI(promptName) {
87
+ const relativePath = path.join('_AI_Prompts', 'prompts', this.lang, `${promptName}.md`);
88
+ try {
89
+ const fileContent = await this.obsidian.readNote(relativePath);
90
+ const newContent = await this.injectAIConfig(fileContent, promptName);
91
+ if (newContent === BACK_SIGNAL)
92
+ return BACK_SIGNAL;
93
+ await this.obsidian.createNote(relativePath, newContent);
94
+ console.log(TEXT.ui.aiSettingsUpdatedFor.replace('{mode}', promptName));
95
+ }
96
+ catch (error) {
97
+ if (error.code === 'ENOENT') {
98
+ const result = await this.create(promptName, true);
99
+ if (result === BACK_SIGNAL)
100
+ return BACK_SIGNAL;
101
+ return;
102
+ }
103
+ else {
104
+ throw error;
105
+ }
106
+ }
107
+ }
108
+ /**
109
+ * コンテンツに対話的にAI設定を注入するヘルパーメソッド
110
+ * Helper method to interactively inject AI settings into content.
111
+ */
112
+ async injectAIConfig(fileContent, promptName) {
113
+ const availableProviders = Object.values(AIProvider).filter(provider => {
114
+ const key = `${provider.toUpperCase()}_API_KEY`;
115
+ return process.env[key] || process.env[`${provider.toUpperCase()}_API_SECRET`];
116
+ });
117
+ if (availableProviders.length > 0) {
118
+ const options = availableProviders.map(p => ({ value: p, label: p }));
119
+ options.push({ value: 'BACK', label: TEXT.ui.backOption });
120
+ const selectedProvider = await select({
121
+ message: TEXT.ui.selectAIForMode.replace('{mode}', promptName),
122
+ options: options,
123
+ });
124
+ if (isCancel(selectedProvider)) {
125
+ cancel(TEXT.ui.operationCancelled);
126
+ process.exit(0);
127
+ }
128
+ if (selectedProvider === 'BACK') {
129
+ return BACK_SIGNAL;
130
+ }
131
+ const provider = selectedProvider;
132
+ const models = await this.aiModelService.getModels(provider);
133
+ const modelOptions = models.map(m => ({ value: m, label: m }));
134
+ modelOptions.push({ value: 'CUSTOM', label: TEXT.ui.customModelOption });
135
+ const selectedModel = await select({
136
+ message: TEXT.ui.selectModel,
137
+ options: modelOptions,
138
+ });
139
+ if (isCancel(selectedModel)) {
140
+ cancel(TEXT.ui.operationCancelled);
141
+ process.exit(0);
142
+ }
143
+ let model = selectedModel;
144
+ if (selectedModel === 'CUSTOM') {
145
+ const customModel = await clackText({
146
+ message: TEXT.ui.enterCustomModel,
147
+ placeholder: 'e.g. gpt-4-32k',
148
+ });
149
+ if (isCancel(customModel)) {
150
+ cancel(TEXT.ui.operationCancelled);
151
+ process.exit(0);
152
+ }
153
+ model = customModel;
154
+ await this.aiModelService.addModel(provider, model);
155
+ }
156
+ const outputModeOptions = [
157
+ { value: 'normal', label: TEXT.ui.outputModeNormal },
158
+ { value: 'stream', label: TEXT.ui.outputModeStream },
159
+ ];
160
+ if (promptName !== AppMode.GENERAL) {
161
+ outputModeOptions.push({ value: 'background', label: TEXT.ui.outputModeBackground });
162
+ }
163
+ const selectedOutputMode = await select({
164
+ message: TEXT.ui.selectOutputMode.replace('{mode}', promptName),
165
+ options: outputModeOptions,
166
+ initialValue: 'normal',
167
+ });
168
+ if (isCancel(selectedOutputMode)) {
169
+ cancel(TEXT.ui.operationCancelled);
170
+ process.exit(0);
171
+ }
172
+ const { data: frontmatter, content } = matter(fileContent);
173
+ const existingTags = frontmatter.tags || [];
174
+ const newTags = Array.from(new Set([...existingTags, selectedProvider, model]));
175
+ const newFrontmatter = {
176
+ ...frontmatter,
177
+ aiProvider: selectedProvider,
178
+ model: model,
179
+ outputMode: selectedOutputMode,
180
+ tags: newTags
181
+ };
182
+ return matter.stringify(content, newFrontmatter);
183
+ }
184
+ return fileContent;
185
+ }
186
+ }
187
+ //# sourceMappingURL=PromptLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptLoader.js","sourceRoot":"","sources":["../../src/core/PromptLoader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { ObsidianService } from '../services/ObsidianService.js';
2
+ import { ConfigService } from '../services/ConfigService.js';
3
+ import type { PromptData } from '../types/interfaces.js';
4
+ export declare const BACK_SIGNAL: unique symbol;
5
+ export declare class PromptSmith {
6
+ private obsidian;
7
+ private lang;
8
+ private aiOrchestrator;
9
+ private configService;
10
+ constructor(obsidian: ObsidianService, lang: string, configService: ConfigService);
11
+ load(promptName: string): Promise<PromptData>;
12
+ create(promptName: string, interactive: boolean): Promise<string | typeof BACK_SIGNAL>;
13
+ updateAI(promptName: string): Promise<void | typeof BACK_SIGNAL>;
14
+ initializeModels(): Promise<boolean>;
15
+ getModels(provider: string): Promise<string[]>;
16
+ addModel(provider: string, model: string): Promise<void>;
17
+ removeModel(provider: string, model: string): Promise<void>;
18
+ resolveProvider(modelName: string): Promise<string | null>;
19
+ private injectAIConfig;
20
+ }
21
+ //# sourceMappingURL=PromptSmith.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptSmith.d.ts","sourceRoot":"","sources":["../../src/core/PromptSmith.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAG7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,eAAO,MAAM,WAAW,eAAiB,CAAC;AAE1C,qBAAa,WAAW;IACpB,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,aAAa,CAAgB;gBAEzB,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa;IAW3E,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA4C7C,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,WAAW,CAAC;IAuBtF,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,WAAW,CAAC;IA2BhE,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAIpC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAI9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;YAQlD,cAAc;CA4F/B"}