@nahisaho/shikigami-mcp-server 1.7.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/README.md +80 -0
- package/dist/config/index.d.ts +8 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +8 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +43 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +211 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/types.d.ts +303 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +102 -0
- package/dist/config/types.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +374 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/embedding.d.ts +76 -0
- package/dist/tools/embedding.d.ts.map +1 -0
- package/dist/tools/embedding.js +181 -0
- package/dist/tools/embedding.js.map +1 -0
- package/dist/tools/file-parser.d.ts +61 -0
- package/dist/tools/file-parser.d.ts.map +1 -0
- package/dist/tools/file-parser.js +269 -0
- package/dist/tools/file-parser.js.map +1 -0
- package/dist/tools/pdf-parser/index.d.ts +57 -0
- package/dist/tools/pdf-parser/index.d.ts.map +1 -0
- package/dist/tools/pdf-parser/index.js +326 -0
- package/dist/tools/pdf-parser/index.js.map +1 -0
- package/dist/tools/pdf-parser/types.d.ts +88 -0
- package/dist/tools/pdf-parser/types.d.ts.map +1 -0
- package/dist/tools/pdf-parser/types.js +9 -0
- package/dist/tools/pdf-parser/types.js.map +1 -0
- package/dist/tools/search/fallback-handler.d.ts +26 -0
- package/dist/tools/search/fallback-handler.d.ts.map +1 -0
- package/dist/tools/search/fallback-handler.js +104 -0
- package/dist/tools/search/fallback-handler.js.map +1 -0
- package/dist/tools/search/health-checker.d.ts +36 -0
- package/dist/tools/search/health-checker.d.ts.map +1 -0
- package/dist/tools/search/health-checker.js +131 -0
- package/dist/tools/search/health-checker.js.map +1 -0
- package/dist/tools/search/provider-manager.d.ts +45 -0
- package/dist/tools/search/provider-manager.d.ts.map +1 -0
- package/dist/tools/search/provider-manager.js +131 -0
- package/dist/tools/search/provider-manager.js.map +1 -0
- package/dist/tools/search/providers/brave.d.ts +23 -0
- package/dist/tools/search/providers/brave.d.ts.map +1 -0
- package/dist/tools/search/providers/brave.js +107 -0
- package/dist/tools/search/providers/brave.js.map +1 -0
- package/dist/tools/search/providers/duckduckgo.d.ts +22 -0
- package/dist/tools/search/providers/duckduckgo.d.ts.map +1 -0
- package/dist/tools/search/providers/duckduckgo.js +121 -0
- package/dist/tools/search/providers/duckduckgo.js.map +1 -0
- package/dist/tools/search/providers/index.d.ts +8 -0
- package/dist/tools/search/providers/index.d.ts.map +1 -0
- package/dist/tools/search/providers/index.js +8 -0
- package/dist/tools/search/providers/index.js.map +1 -0
- package/dist/tools/search/providers/searxng.d.ts +25 -0
- package/dist/tools/search/providers/searxng.d.ts.map +1 -0
- package/dist/tools/search/providers/searxng.js +125 -0
- package/dist/tools/search/providers/searxng.js.map +1 -0
- package/dist/tools/search/providers/types.d.ts +124 -0
- package/dist/tools/search/providers/types.d.ts.map +1 -0
- package/dist/tools/search/providers/types.js +41 -0
- package/dist/tools/search/providers/types.js.map +1 -0
- package/dist/tools/search/recovery/index.d.ts +59 -0
- package/dist/tools/search/recovery/index.d.ts.map +1 -0
- package/dist/tools/search/recovery/index.js +188 -0
- package/dist/tools/search/recovery/index.js.map +1 -0
- package/dist/tools/search/recovery/strategies/index.d.ts +9 -0
- package/dist/tools/search/recovery/strategies/index.d.ts.map +1 -0
- package/dist/tools/search/recovery/strategies/index.js +9 -0
- package/dist/tools/search/recovery/strategies/index.js.map +1 -0
- package/dist/tools/search/recovery/strategies/simplify.d.ts +50 -0
- package/dist/tools/search/recovery/strategies/simplify.d.ts.map +1 -0
- package/dist/tools/search/recovery/strategies/simplify.js +181 -0
- package/dist/tools/search/recovery/strategies/simplify.js.map +1 -0
- package/dist/tools/search/recovery/strategies/synonym.d.ts +41 -0
- package/dist/tools/search/recovery/strategies/synonym.d.ts.map +1 -0
- package/dist/tools/search/recovery/strategies/synonym.js +119 -0
- package/dist/tools/search/recovery/strategies/synonym.js.map +1 -0
- package/dist/tools/search/recovery/strategies/translate.d.ts +38 -0
- package/dist/tools/search/recovery/strategies/translate.d.ts.map +1 -0
- package/dist/tools/search/recovery/strategies/translate.js +148 -0
- package/dist/tools/search/recovery/strategies/translate.js.map +1 -0
- package/dist/tools/search/recovery/types.d.ts +93 -0
- package/dist/tools/search/recovery/types.d.ts.map +1 -0
- package/dist/tools/search/recovery/types.js +9 -0
- package/dist/tools/search/recovery/types.js.map +1 -0
- package/dist/tools/search.d.ts +73 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +323 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/visit.d.ts +29 -0
- package/dist/tools/visit.d.ts.map +1 -0
- package/dist/tools/visit.js +269 -0
- package/dist/tools/visit.js.map +1 -0
- package/docs/shikigami-quality-validation.prompt.md +141 -0
- package/package.json +43 -0
- package/shikigami.config.example.yaml +165 -0
- package/src/config/index.ts +8 -0
- package/src/config/loader.ts +248 -0
- package/src/config/types.ts +417 -0
- package/src/index.ts +418 -0
- package/src/tools/embedding.ts +279 -0
- package/src/tools/file-parser.ts +332 -0
- package/src/tools/pdf-parser/index.ts +396 -0
- package/src/tools/pdf-parser/types.ts +95 -0
- package/src/tools/search/fallback-handler.ts +132 -0
- package/src/tools/search/health-checker.ts +190 -0
- package/src/tools/search/provider-manager.ts +149 -0
- package/src/tools/search/providers/brave.ts +147 -0
- package/src/tools/search/providers/duckduckgo.ts +155 -0
- package/src/tools/search/providers/index.ts +8 -0
- package/src/tools/search/providers/searxng.ts +169 -0
- package/src/tools/search/providers/types.ts +157 -0
- package/src/tools/search/recovery/index.ts +253 -0
- package/src/tools/search/recovery/strategies/index.ts +9 -0
- package/src/tools/search/recovery/strategies/simplify.ts +209 -0
- package/src/tools/search/recovery/strategies/synonym.ts +143 -0
- package/src/tools/search/recovery/strategies/translate.ts +173 -0
- package/src/tools/search/recovery/types.ts +100 -0
- package/src/tools/search.ts +415 -0
- package/src/tools/visit.ts +333 -0
- package/tsconfig.json +19 -0
package/README.md
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# SHIKIGAMI MCP Server
|
|
2
|
+
|
|
3
|
+
Deep Research用のMCPサーバー。DuckDuckGo検索とJina AI Readerを使用してリアルタイムWeb検索を実行。
|
|
4
|
+
|
|
5
|
+
## インストール
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
cd mcp-server
|
|
9
|
+
npm install
|
|
10
|
+
npm run build
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## ツール
|
|
14
|
+
|
|
15
|
+
### search
|
|
16
|
+
|
|
17
|
+
DuckDuckGoでバッチWeb検索を実行。
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"query": "TypeScript best practices",
|
|
22
|
+
"maxResults": 10
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
または複数クエリ:
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{
|
|
30
|
+
"query": ["TypeScript best practices", "TypeScript design patterns"],
|
|
31
|
+
"maxResults": 5
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### visit
|
|
36
|
+
|
|
37
|
+
Webページを訪問し、内容をLLM用にクリーンなテキストとして抽出。
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"url": "https://example.com/article",
|
|
42
|
+
"goal": "主要なポイントを抽出"
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
または複数URL:
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"url": ["https://example.com/1", "https://example.com/2"]
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## VS Code設定
|
|
55
|
+
|
|
56
|
+
`.vscode/mcp.json`:
|
|
57
|
+
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"servers": {
|
|
61
|
+
"shikigami": {
|
|
62
|
+
"command": "node",
|
|
63
|
+
"args": ["${workspaceFolder}/shikigami/mcp-server/dist/index.js"]
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## 要件準拠
|
|
70
|
+
|
|
71
|
+
- **REQ-DR-002**: DuckDuckGo Web検索 ✅
|
|
72
|
+
- **REQ-CS-004**: search/visit ツール ✅
|
|
73
|
+
- **レート制限**: 1.5秒間隔(DuckDuckGo)、1秒間隔(Jina AI)
|
|
74
|
+
|
|
75
|
+
## 検索プロバイダー
|
|
76
|
+
|
|
77
|
+
| プロバイダー | 用途 | APIキー |
|
|
78
|
+
|-------------|------|---------|
|
|
79
|
+
| DuckDuckGo | Web検索 | 不要 |
|
|
80
|
+
| Jina AI Reader | ページ内容抽出 | 不要 |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SHIKIGAMI Configuration Loader
|
|
3
|
+
*
|
|
4
|
+
* REQ-NF-007: プロバイダー設定ファイル対応
|
|
5
|
+
* shikigami.config.yaml を読み込み、設定をマージ
|
|
6
|
+
*/
|
|
7
|
+
import { ShikigamiConfig } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* 設定ファイルのパスを探索
|
|
10
|
+
* @param searchPaths 探索するディレクトリパス(デフォルト: カレント、ホーム)
|
|
11
|
+
* @returns 見つかった設定ファイルパス、または null
|
|
12
|
+
*/
|
|
13
|
+
export declare function findConfigFile(searchPaths?: string[]): string | null;
|
|
14
|
+
/**
|
|
15
|
+
* YAML ファイルから設定を読み込み
|
|
16
|
+
* @param filePath 設定ファイルパス
|
|
17
|
+
* @returns パースされた設定
|
|
18
|
+
*/
|
|
19
|
+
export declare function loadConfigFile(filePath: string): Partial<ShikigamiConfig>;
|
|
20
|
+
/**
|
|
21
|
+
* 環境変数から設定を上書き
|
|
22
|
+
* SHIKIGAMI_* 形式の環境変数を読み込み
|
|
23
|
+
*/
|
|
24
|
+
export declare function loadEnvOverrides(): Partial<ShikigamiConfig>;
|
|
25
|
+
/**
|
|
26
|
+
* 設定を読み込む(ファイル + 環境変数)
|
|
27
|
+
* 優先順位: 環境変数 > 設定ファイル > デフォルト
|
|
28
|
+
*
|
|
29
|
+
* @param configPath 明示的な設定ファイルパス(省略時は自動探索)
|
|
30
|
+
* @returns マージされた設定
|
|
31
|
+
*/
|
|
32
|
+
export declare function loadConfig(configPath?: string): ShikigamiConfig;
|
|
33
|
+
/**
|
|
34
|
+
* グローバル設定を取得
|
|
35
|
+
* 初回呼び出し時に設定をロード
|
|
36
|
+
*/
|
|
37
|
+
export declare function getConfig(): ShikigamiConfig;
|
|
38
|
+
/**
|
|
39
|
+
* グローバル設定をリセット(テスト用)
|
|
40
|
+
*/
|
|
41
|
+
export declare function resetConfig(): void;
|
|
42
|
+
export * from './types.js';
|
|
43
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,eAAe,EAAkB,MAAM,YAAY,CAAC;AAU7D;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAgBpE;AAoCD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CASzE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAAC,eAAe,CAAC,CA6F3D;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe,CAwB/D;AAKD;;;GAGG;AACH,wBAAgB,SAAS,IAAI,eAAe,CAK3C;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAGD,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SHIKIGAMI Configuration Loader
|
|
3
|
+
*
|
|
4
|
+
* REQ-NF-007: プロバイダー設定ファイル対応
|
|
5
|
+
* shikigami.config.yaml を読み込み、設定をマージ
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from 'fs';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
import * as yaml from 'yaml';
|
|
10
|
+
import { DEFAULT_CONFIG } from './types.js';
|
|
11
|
+
/** 設定ファイル名(優先順) */
|
|
12
|
+
const CONFIG_FILENAMES = [
|
|
13
|
+
'shikigami.config.yaml',
|
|
14
|
+
'shikigami.config.yml',
|
|
15
|
+
'.shikigami.yaml',
|
|
16
|
+
'.shikigami.yml',
|
|
17
|
+
];
|
|
18
|
+
/**
|
|
19
|
+
* 設定ファイルのパスを探索
|
|
20
|
+
* @param searchPaths 探索するディレクトリパス(デフォルト: カレント、ホーム)
|
|
21
|
+
* @returns 見つかった設定ファイルパス、または null
|
|
22
|
+
*/
|
|
23
|
+
export function findConfigFile(searchPaths) {
|
|
24
|
+
const paths = searchPaths ?? [
|
|
25
|
+
process.cwd(),
|
|
26
|
+
process.env.HOME ?? '',
|
|
27
|
+
].filter(Boolean);
|
|
28
|
+
for (const dir of paths) {
|
|
29
|
+
for (const filename of CONFIG_FILENAMES) {
|
|
30
|
+
const filePath = path.join(dir, filename);
|
|
31
|
+
if (fs.existsSync(filePath)) {
|
|
32
|
+
return filePath;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* 深いマージを行う(配列は置換)
|
|
40
|
+
*/
|
|
41
|
+
function deepMerge(target, source) {
|
|
42
|
+
const result = { ...target };
|
|
43
|
+
for (const key of Object.keys(source)) {
|
|
44
|
+
const sourceValue = source[key];
|
|
45
|
+
const targetValue = target[key];
|
|
46
|
+
if (sourceValue !== null &&
|
|
47
|
+
sourceValue !== undefined &&
|
|
48
|
+
typeof sourceValue === 'object' &&
|
|
49
|
+
!Array.isArray(sourceValue) &&
|
|
50
|
+
targetValue !== null &&
|
|
51
|
+
targetValue !== undefined &&
|
|
52
|
+
typeof targetValue === 'object' &&
|
|
53
|
+
!Array.isArray(targetValue)) {
|
|
54
|
+
// 両方がオブジェクトの場合、再帰マージ
|
|
55
|
+
result[key] = deepMerge(targetValue, sourceValue);
|
|
56
|
+
}
|
|
57
|
+
else if (sourceValue !== undefined) {
|
|
58
|
+
// それ以外は置換
|
|
59
|
+
result[key] = sourceValue;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* YAML ファイルから設定を読み込み
|
|
66
|
+
* @param filePath 設定ファイルパス
|
|
67
|
+
* @returns パースされた設定
|
|
68
|
+
*/
|
|
69
|
+
export function loadConfigFile(filePath) {
|
|
70
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
71
|
+
const parsed = yaml.parse(content);
|
|
72
|
+
if (!parsed || typeof parsed !== 'object') {
|
|
73
|
+
throw new Error(`Invalid config file: ${filePath}`);
|
|
74
|
+
}
|
|
75
|
+
return parsed;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* 環境変数から設定を上書き
|
|
79
|
+
* SHIKIGAMI_* 形式の環境変数を読み込み
|
|
80
|
+
*/
|
|
81
|
+
export function loadEnvOverrides() {
|
|
82
|
+
const overrides = {};
|
|
83
|
+
// 検索プロバイダー(レガシー形式で設定)
|
|
84
|
+
if (process.env.SHIKIGAMI_SEARCH_PROVIDER) {
|
|
85
|
+
const provider = process.env.SHIKIGAMI_SEARCH_PROVIDER;
|
|
86
|
+
overrides.search = {
|
|
87
|
+
provider,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
// 検索 API キー(レガシー形式で設定)
|
|
91
|
+
if (process.env.SHIKIGAMI_SEARCH_API_KEY) {
|
|
92
|
+
const existingSearch = overrides.search;
|
|
93
|
+
overrides.search = {
|
|
94
|
+
...existingSearch,
|
|
95
|
+
provider: (existingSearch?.provider ?? 'duckduckgo'),
|
|
96
|
+
options: {
|
|
97
|
+
...existingSearch?.options,
|
|
98
|
+
apiKey: process.env.SHIKIGAMI_SEARCH_API_KEY,
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
// ページ取得プロバイダー
|
|
103
|
+
if (process.env.SHIKIGAMI_PAGE_FETCHER_PROVIDER) {
|
|
104
|
+
overrides.pageFetcher = {
|
|
105
|
+
provider: process.env.SHIKIGAMI_PAGE_FETCHER_PROVIDER,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
// Jina API キー
|
|
109
|
+
if (process.env.JINA_API_KEY || process.env.SHIKIGAMI_JINA_API_KEY) {
|
|
110
|
+
overrides.pageFetcher = {
|
|
111
|
+
...overrides.pageFetcher,
|
|
112
|
+
provider: overrides.pageFetcher?.provider ?? 'jina',
|
|
113
|
+
options: {
|
|
114
|
+
...overrides.pageFetcher?.options,
|
|
115
|
+
apiKey: process.env.JINA_API_KEY || process.env.SHIKIGAMI_JINA_API_KEY,
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
// LLM プロバイダー
|
|
120
|
+
if (process.env.SHIKIGAMI_LLM_PROVIDER) {
|
|
121
|
+
overrides.llm = {
|
|
122
|
+
provider: process.env.SHIKIGAMI_LLM_PROVIDER,
|
|
123
|
+
model: process.env.SHIKIGAMI_LLM_MODEL ?? 'default',
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
// OpenAI API キー
|
|
127
|
+
if (process.env.OPENAI_API_KEY || process.env.SHIKIGAMI_OPENAI_API_KEY) {
|
|
128
|
+
overrides.llm = {
|
|
129
|
+
...overrides.llm,
|
|
130
|
+
provider: overrides.llm?.provider ?? 'openai',
|
|
131
|
+
model: overrides.llm?.model ?? 'gpt-4o-mini',
|
|
132
|
+
options: {
|
|
133
|
+
...overrides.llm?.options,
|
|
134
|
+
apiKey: process.env.OPENAI_API_KEY || process.env.SHIKIGAMI_OPENAI_API_KEY,
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
// Ollama エンドポイント
|
|
139
|
+
if (process.env.OLLAMA_HOST || process.env.SHIKIGAMI_OLLAMA_ENDPOINT) {
|
|
140
|
+
overrides.llm = {
|
|
141
|
+
...overrides.llm,
|
|
142
|
+
provider: 'ollama',
|
|
143
|
+
model: overrides.llm?.model ?? 'llama3.2',
|
|
144
|
+
options: {
|
|
145
|
+
...overrides.llm?.options,
|
|
146
|
+
endpoint: process.env.OLLAMA_HOST || process.env.SHIKIGAMI_OLLAMA_ENDPOINT,
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
// Embedding プロバイダー
|
|
151
|
+
if (process.env.SHIKIGAMI_EMBEDDING_PROVIDER) {
|
|
152
|
+
overrides.embedding = {
|
|
153
|
+
provider: process.env.SHIKIGAMI_EMBEDDING_PROVIDER,
|
|
154
|
+
model: process.env.SHIKIGAMI_EMBEDDING_MODEL ?? 'default',
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
// ログレベル
|
|
158
|
+
if (process.env.SHIKIGAMI_LOG_LEVEL) {
|
|
159
|
+
overrides.log = {
|
|
160
|
+
level: process.env.SHIKIGAMI_LOG_LEVEL,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
return overrides;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* 設定を読み込む(ファイル + 環境変数)
|
|
167
|
+
* 優先順位: 環境変数 > 設定ファイル > デフォルト
|
|
168
|
+
*
|
|
169
|
+
* @param configPath 明示的な設定ファイルパス(省略時は自動探索)
|
|
170
|
+
* @returns マージされた設定
|
|
171
|
+
*/
|
|
172
|
+
export function loadConfig(configPath) {
|
|
173
|
+
let fileConfig = {};
|
|
174
|
+
// 設定ファイルを探索・読み込み
|
|
175
|
+
const foundPath = configPath ?? findConfigFile();
|
|
176
|
+
if (foundPath) {
|
|
177
|
+
try {
|
|
178
|
+
fileConfig = loadConfigFile(foundPath);
|
|
179
|
+
console.error(`[SHIKIGAMI] Loaded config from: ${foundPath}`);
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
console.error(`[SHIKIGAMI] Failed to load config: ${error}`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// 環境変数の上書きを取得
|
|
186
|
+
const envOverrides = loadEnvOverrides();
|
|
187
|
+
// マージ: デフォルト < ファイル < 環境変数
|
|
188
|
+
const merged = deepMerge(deepMerge(DEFAULT_CONFIG, fileConfig), envOverrides);
|
|
189
|
+
return merged;
|
|
190
|
+
}
|
|
191
|
+
/** グローバル設定インスタンス(遅延初期化) */
|
|
192
|
+
let _config = null;
|
|
193
|
+
/**
|
|
194
|
+
* グローバル設定を取得
|
|
195
|
+
* 初回呼び出し時に設定をロード
|
|
196
|
+
*/
|
|
197
|
+
export function getConfig() {
|
|
198
|
+
if (!_config) {
|
|
199
|
+
_config = loadConfig();
|
|
200
|
+
}
|
|
201
|
+
return _config;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* グローバル設定をリセット(テスト用)
|
|
205
|
+
*/
|
|
206
|
+
export function resetConfig() {
|
|
207
|
+
_config = null;
|
|
208
|
+
}
|
|
209
|
+
// 型のエクスポート
|
|
210
|
+
export * from './types.js';
|
|
211
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SHIKIGAMI Configuration Types
|
|
3
|
+
*
|
|
4
|
+
* REQ-NF-007: プロバイダー設定ファイル対応
|
|
5
|
+
* REQ-SRCH-001: 検索フォールバック機構(v1.5.0)
|
|
6
|
+
* shikigami.config.yaml で設定をカスタマイズ可能
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* 検索プロバイダー名
|
|
10
|
+
*/
|
|
11
|
+
export type SearchProviderName = 'duckduckgo' | 'brave' | 'searxng';
|
|
12
|
+
/**
|
|
13
|
+
* 単一検索プロバイダー設定(v1.5.0: 複数プロバイダー対応)
|
|
14
|
+
*/
|
|
15
|
+
export interface SingleSearchProviderConfig {
|
|
16
|
+
/** プロバイダー名 */
|
|
17
|
+
name: SearchProviderName;
|
|
18
|
+
/** 優先度(1が最高) */
|
|
19
|
+
priority: number;
|
|
20
|
+
/** 有効/無効 */
|
|
21
|
+
enabled?: boolean;
|
|
22
|
+
/** API キー(Brave Search等) */
|
|
23
|
+
apiKey?: string;
|
|
24
|
+
/** カスタムエンドポイント(SearXNG等) */
|
|
25
|
+
endpoint?: string;
|
|
26
|
+
/** プロバイダー固有の設定 */
|
|
27
|
+
options?: {
|
|
28
|
+
/** リクエストタイムアウト(ms) */
|
|
29
|
+
timeout?: number;
|
|
30
|
+
/** 最大リトライ回数 */
|
|
31
|
+
maxRetries?: number;
|
|
32
|
+
/** レート制限間隔(ms) */
|
|
33
|
+
rateLimitMs?: number;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* フォールバック設定(v1.5.0)
|
|
38
|
+
*/
|
|
39
|
+
export interface SearchFallbackConfig {
|
|
40
|
+
/** フォールバックを有効にするか */
|
|
41
|
+
enabled: boolean;
|
|
42
|
+
/** 各プロバイダーの最大リトライ回数 */
|
|
43
|
+
maxRetries?: number;
|
|
44
|
+
/** リトライ間隔(ms) */
|
|
45
|
+
retryDelayMs?: number;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 検索設定(v1.5.0: 複数プロバイダー・フォールバック対応)
|
|
49
|
+
*/
|
|
50
|
+
export interface SearchConfig {
|
|
51
|
+
/** 検索プロバイダー一覧 */
|
|
52
|
+
providers: SingleSearchProviderConfig[];
|
|
53
|
+
/** フォールバック設定 */
|
|
54
|
+
fallback?: SearchFallbackConfig;
|
|
55
|
+
/** 共通オプション */
|
|
56
|
+
options?: {
|
|
57
|
+
/** リクエストタイムアウト(ms) */
|
|
58
|
+
timeout?: number;
|
|
59
|
+
/** レート制限間隔(ms) */
|
|
60
|
+
rateLimitMs?: number;
|
|
61
|
+
/** 言語/地域設定 */
|
|
62
|
+
locale?: string;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* 検索プロバイダー設定(後方互換性のため維持)
|
|
67
|
+
* @deprecated v1.5.0以降は SearchConfig を使用
|
|
68
|
+
*/
|
|
69
|
+
export interface SearchProviderConfig {
|
|
70
|
+
/** プロバイダー名 */
|
|
71
|
+
provider: 'duckduckgo' | 'google' | 'bing' | 'tavily';
|
|
72
|
+
/** プロバイダー固有の設定 */
|
|
73
|
+
options?: {
|
|
74
|
+
/** API キー(必要な場合) */
|
|
75
|
+
apiKey?: string;
|
|
76
|
+
/** カスタムエンドポイント */
|
|
77
|
+
endpoint?: string;
|
|
78
|
+
/** リクエストタイムアウト(ms) */
|
|
79
|
+
timeout?: number;
|
|
80
|
+
/** 最大リトライ回数 */
|
|
81
|
+
maxRetries?: number;
|
|
82
|
+
/** レート制限間隔(ms) */
|
|
83
|
+
rateLimitMs?: number;
|
|
84
|
+
/** 言語/地域設定 */
|
|
85
|
+
locale?: string;
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* ページ取得プロバイダー設定
|
|
90
|
+
*/
|
|
91
|
+
export interface PageFetcherConfig {
|
|
92
|
+
/** プロバイダー名 */
|
|
93
|
+
provider: 'jina' | 'firecrawl' | 'browserbase';
|
|
94
|
+
/** プロバイダー固有の設定 */
|
|
95
|
+
options?: {
|
|
96
|
+
/** API キー(必要な場合) */
|
|
97
|
+
apiKey?: string;
|
|
98
|
+
/** カスタムエンドポイント */
|
|
99
|
+
endpoint?: string;
|
|
100
|
+
/** リクエストタイムアウト(ms) */
|
|
101
|
+
timeout?: number;
|
|
102
|
+
/** レート制限間隔(ms) */
|
|
103
|
+
rateLimitMs?: number;
|
|
104
|
+
/** JavaScript 実行を待つか */
|
|
105
|
+
waitForJS?: boolean;
|
|
106
|
+
/** 返却形式 */
|
|
107
|
+
format?: 'markdown' | 'text' | 'html';
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* LLM プロバイダー設定
|
|
112
|
+
*/
|
|
113
|
+
export interface LLMProviderConfig {
|
|
114
|
+
/** プロバイダー名 */
|
|
115
|
+
provider: 'ollama' | 'openai' | 'anthropic' | 'azure-openai';
|
|
116
|
+
/** モデル名 */
|
|
117
|
+
model: string;
|
|
118
|
+
/** プロバイダー固有の設定 */
|
|
119
|
+
options?: {
|
|
120
|
+
/** API キー(必要な場合) */
|
|
121
|
+
apiKey?: string;
|
|
122
|
+
/** カスタムエンドポイント(Ollama等) */
|
|
123
|
+
endpoint?: string;
|
|
124
|
+
/** 生成時の温度パラメータ */
|
|
125
|
+
temperature?: number;
|
|
126
|
+
/** 最大トークン数 */
|
|
127
|
+
maxTokens?: number;
|
|
128
|
+
/** タイムアウト(ms) */
|
|
129
|
+
timeout?: number;
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Embedding プロバイダー設定
|
|
134
|
+
*/
|
|
135
|
+
export interface EmbeddingProviderConfig {
|
|
136
|
+
/** プロバイダー名 */
|
|
137
|
+
provider: 'ollama' | 'openai' | 'huggingface';
|
|
138
|
+
/** モデル名 */
|
|
139
|
+
model: string;
|
|
140
|
+
/** プロバイダー固有の設定 */
|
|
141
|
+
options?: {
|
|
142
|
+
/** API キー(必要な場合) */
|
|
143
|
+
apiKey?: string;
|
|
144
|
+
/** カスタムエンドポイント */
|
|
145
|
+
endpoint?: string;
|
|
146
|
+
/** ベクトル次元数 */
|
|
147
|
+
dimensions?: number;
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* キャッシュ設定
|
|
152
|
+
*/
|
|
153
|
+
export interface CacheConfig {
|
|
154
|
+
/** キャッシュを有効にするか */
|
|
155
|
+
enabled: boolean;
|
|
156
|
+
/** TTL(秒) */
|
|
157
|
+
ttlSeconds?: number;
|
|
158
|
+
/** 最大キャッシュサイズ(エントリ数) */
|
|
159
|
+
maxSize?: number;
|
|
160
|
+
/** キャッシュ保存場所 */
|
|
161
|
+
storage?: 'memory' | 'file';
|
|
162
|
+
/** ファイルキャッシュのパス */
|
|
163
|
+
filePath?: string;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* ログ設定
|
|
167
|
+
*/
|
|
168
|
+
export interface LogConfig {
|
|
169
|
+
/** ログレベル */
|
|
170
|
+
level: 'debug' | 'info' | 'warn' | 'error';
|
|
171
|
+
/** 出力先 */
|
|
172
|
+
output?: 'stderr' | 'file';
|
|
173
|
+
/** ファイル出力時のパス */
|
|
174
|
+
filePath?: string;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* 同義語辞書エントリ
|
|
178
|
+
*/
|
|
179
|
+
export interface SynonymEntry {
|
|
180
|
+
/** 元の語句 */
|
|
181
|
+
term: string;
|
|
182
|
+
/** 同義語リスト */
|
|
183
|
+
synonyms: string[];
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* 検索リカバリー設定 (v1.7.0)
|
|
187
|
+
* REQ-SRCH-003: 検索失敗時の自動リカバリー
|
|
188
|
+
*/
|
|
189
|
+
export interface SearchRecoveryConfig {
|
|
190
|
+
/** リカバリー機能を有効にするか */
|
|
191
|
+
enabled: boolean;
|
|
192
|
+
/** 最大リトライ回数(デフォルト: 3) */
|
|
193
|
+
maxRetries?: number;
|
|
194
|
+
/** リカバリー全体のタイムアウト(ms)(デフォルト: 30000) */
|
|
195
|
+
timeoutMs?: number;
|
|
196
|
+
/** 戦略設定 */
|
|
197
|
+
strategies?: {
|
|
198
|
+
/** 同義語置換戦略 */
|
|
199
|
+
synonym?: {
|
|
200
|
+
enabled?: boolean;
|
|
201
|
+
/** カスタム同義語辞書 */
|
|
202
|
+
customDictionary?: SynonymEntry[];
|
|
203
|
+
};
|
|
204
|
+
/** クエリ簡略化戦略 */
|
|
205
|
+
simplify?: {
|
|
206
|
+
enabled?: boolean;
|
|
207
|
+
/** 保持する最大語数(デフォルト: 3) */
|
|
208
|
+
maxWords?: number;
|
|
209
|
+
};
|
|
210
|
+
/** 言語変換戦略 */
|
|
211
|
+
translate?: {
|
|
212
|
+
enabled?: boolean;
|
|
213
|
+
/** カスタム翻訳辞書(日本語→英語) */
|
|
214
|
+
customDictionary?: Record<string, string>;
|
|
215
|
+
};
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* ナレッジ連携設定 (v1.7.0)
|
|
220
|
+
* REQ-KM-003: 関連プロジェクトの自動検出
|
|
221
|
+
*/
|
|
222
|
+
export interface KnowledgeDiscoveryConfig {
|
|
223
|
+
/** ナレッジ連携を有効にするか */
|
|
224
|
+
enabled: boolean;
|
|
225
|
+
/** プロジェクト検索パス(デフォルト: outputs/) */
|
|
226
|
+
searchPath?: string;
|
|
227
|
+
/** 類似度閾値(0-1、デフォルト: 0.3) */
|
|
228
|
+
similarityThreshold?: number;
|
|
229
|
+
/** 表示する最大プロジェクト数(デフォルト: 5) */
|
|
230
|
+
maxResults?: number;
|
|
231
|
+
/** 鮮度警告の日数(デフォルト: 30) */
|
|
232
|
+
freshnessWarningDays?: number;
|
|
233
|
+
/** インデックスファイル名(デフォルト: .shikigami-index.json) */
|
|
234
|
+
indexFileName?: string;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* PDF解析設定 (v1.7.0)
|
|
238
|
+
* REQ-PARSE-001: PDFコンテンツ抽出
|
|
239
|
+
*/
|
|
240
|
+
export interface PdfParsingConfig {
|
|
241
|
+
/** PDF解析を有効にするか */
|
|
242
|
+
enabled: boolean;
|
|
243
|
+
/** 最大ファイルサイズ(バイト、デフォルト: 10MB) */
|
|
244
|
+
maxFileSizeBytes?: number;
|
|
245
|
+
/** 最大ページ数(デフォルト: 50) */
|
|
246
|
+
maxPages?: number;
|
|
247
|
+
/** 解析タイムアウト(ms)(デフォルト: 60000) */
|
|
248
|
+
timeoutMs?: number;
|
|
249
|
+
/** 一時ファイル保存ディレクトリ */
|
|
250
|
+
tempDir?: string;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* SHIKIGAMI 設定全体
|
|
254
|
+
*/
|
|
255
|
+
export interface ShikigamiConfig {
|
|
256
|
+
/** 設定ファイルバージョン */
|
|
257
|
+
version: '1.0';
|
|
258
|
+
/** 検索設定(v1.5.0: 複数プロバイダー対応) */
|
|
259
|
+
search?: SearchConfig | SearchProviderConfig;
|
|
260
|
+
/** ページ取得プロバイダー設定 */
|
|
261
|
+
pageFetcher?: PageFetcherConfig;
|
|
262
|
+
/** LLM プロバイダー設定 */
|
|
263
|
+
llm?: LLMProviderConfig;
|
|
264
|
+
/** Embedding プロバイダー設定 */
|
|
265
|
+
embedding?: EmbeddingProviderConfig;
|
|
266
|
+
/** キャッシュ設定 */
|
|
267
|
+
cache?: CacheConfig;
|
|
268
|
+
/** ログ設定 */
|
|
269
|
+
log?: LogConfig;
|
|
270
|
+
/** 検索リカバリー設定 (v1.7.0) */
|
|
271
|
+
searchRecovery?: SearchRecoveryConfig;
|
|
272
|
+
/** ナレッジ連携設定 (v1.7.0) */
|
|
273
|
+
knowledgeDiscovery?: KnowledgeDiscoveryConfig;
|
|
274
|
+
/** PDF解析設定 (v1.7.0) */
|
|
275
|
+
pdfParsing?: PdfParsingConfig;
|
|
276
|
+
/** カスタム設定(拡張用) */
|
|
277
|
+
custom?: Record<string, unknown>;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* 検索設定がv1.5.0形式かどうかを判定
|
|
281
|
+
*/
|
|
282
|
+
export declare function isSearchConfig(config: SearchConfig | SearchProviderConfig | undefined): config is SearchConfig;
|
|
283
|
+
/**
|
|
284
|
+
* 検索設定がv1.4.0以前の形式かどうかを判定
|
|
285
|
+
*/
|
|
286
|
+
export declare function isLegacySearchConfig(config: SearchConfig | SearchProviderConfig | undefined): config is SearchProviderConfig;
|
|
287
|
+
/**
|
|
288
|
+
* デフォルト設定
|
|
289
|
+
*/
|
|
290
|
+
export declare const DEFAULT_CONFIG: ShikigamiConfig;
|
|
291
|
+
/**
|
|
292
|
+
* デフォルト検索リカバリー設定
|
|
293
|
+
*/
|
|
294
|
+
export declare const DEFAULT_SEARCH_RECOVERY_CONFIG: Required<Omit<SearchRecoveryConfig, 'strategies'>> & Pick<SearchRecoveryConfig, 'strategies'>;
|
|
295
|
+
/**
|
|
296
|
+
* デフォルトナレッジ連携設定
|
|
297
|
+
*/
|
|
298
|
+
export declare const DEFAULT_KNOWLEDGE_DISCOVERY_CONFIG: Required<KnowledgeDiscoveryConfig>;
|
|
299
|
+
/**
|
|
300
|
+
* デフォルトPDF解析設定
|
|
301
|
+
*/
|
|
302
|
+
export declare const DEFAULT_PDF_PARSING_CONFIG: Required<PdfParsingConfig>;
|
|
303
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|