mcp-test-timebox 0.1.1 → 0.1.3

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 CHANGED
@@ -7,8 +7,18 @@
7
7
  ## 特徴
8
8
 
9
9
  - **必ず結果を返す**: ハードタイムアウト・無出力タイムアウトにより、ハングしても必ずレスポンスを返却
10
- - **安全な実行**: 任意コマンド実行を禁止し、固定テンプレート(`flutter test`等)のみ許可
10
+ - **安全な実行**: 任意コマンド実行を禁止し、固定テンプレートのみ許可
11
11
  - **成果物の保存**: 実行ごとに `raw.log` / `summary.md` / `summary.json` を生成
12
+ - **複数ランナー対応**: Flutter, Vitest, Pytest, Jest をサポート
13
+
14
+ ## 対応テストランナー
15
+
16
+ | ランナー | 言語/フレームワーク | コマンド |
17
+ |---------|-------------------|---------|
18
+ | `flutter` | Flutter/Dart | `flutter test` |
19
+ | `vitest` | Vite/TypeScript/JavaScript | `npx vitest run` |
20
+ | `pytest` | Python | `pytest` |
21
+ | `jest` | Node.js/TypeScript/JavaScript | `npx jest` |
12
22
 
13
23
  ## インストール
14
24
 
@@ -16,7 +26,7 @@
16
26
 
17
27
  インストール不要で、MCP設定に追加するだけで使えます。
18
28
 
19
- ### ローカルインストール
29
+ ### グローバルインストール
20
30
 
21
31
  ```bash
22
32
  npm install -g mcp-test-timebox
@@ -34,7 +44,8 @@ npm install -g mcp-test-timebox
34
44
  "mcp-test-timebox": {
35
45
  "command": "npx",
36
46
  "args": ["-y", "mcp-test-timebox"],
37
- "disabled": false
47
+ "disabled": false,
48
+ "autoApprove": ["run_test"]
38
49
  }
39
50
  }
40
51
  }
@@ -76,7 +87,7 @@ npm install -g mcp-test-timebox
76
87
 
77
88
  | パラメータ | 型 | 必須 | 説明 |
78
89
  |-----------|-----|------|------|
79
- | `runner` | string | ✓ | テストランナー(現在は `flutter` のみ) |
90
+ | `runner` | string | ✓ | テストランナー: `flutter`, `vitest`, `pytest`, `jest` |
80
91
  | `scope` | string | ✓ | 実行スコープ: `all`, `file`, `pattern` |
81
92
  | `target` | string | △ | `scope` が `file` または `pattern` の場合に必須 |
82
93
  | `timeout_ms` | number | ✓ | ハードタイムアウト(ミリ秒) |
@@ -84,9 +95,17 @@ npm install -g mcp-test-timebox
84
95
  | `max_output_bytes` | number | ✓ | 要約対象の末尾バイト数 |
85
96
  | `report_dir` | string | - | レポート出力先(省略時は自動生成) |
86
97
 
98
+ ### 推奨パラメータ値
99
+
100
+ | パラメータ | 推奨値 | 説明 |
101
+ |-----------|--------|------|
102
+ | `timeout_ms` | 60000〜300000 | 1〜5分(テスト規模に応じて調整) |
103
+ | `no_output_timeout_ms` | 30000〜60000 | 30秒〜1分 |
104
+ | `max_output_bytes` | 102400 | 100KB |
105
+
87
106
  ### 実行例
88
107
 
89
- 全テスト実行:
108
+ #### Flutter - 全テスト
90
109
  ```json
91
110
  {
92
111
  "runner": "flutter",
@@ -97,13 +116,36 @@ npm install -g mcp-test-timebox
97
116
  }
98
117
  ```
99
118
 
100
- 特定ファイルのテスト:
119
+ #### Vitest - 特定ファイル
101
120
  ```json
102
121
  {
103
- "runner": "flutter",
122
+ "runner": "vitest",
104
123
  "scope": "file",
105
- "target": "test/widget_test.dart",
106
- "timeout_ms": 300000,
124
+ "target": "tests/unit/auth.test.ts",
125
+ "timeout_ms": 60000,
126
+ "no_output_timeout_ms": 30000,
127
+ "max_output_bytes": 102400
128
+ }
129
+ ```
130
+
131
+ #### Pytest - パターンマッチ
132
+ ```json
133
+ {
134
+ "runner": "pytest",
135
+ "scope": "pattern",
136
+ "target": "test_login",
137
+ "timeout_ms": 120000,
138
+ "no_output_timeout_ms": 30000,
139
+ "max_output_bytes": 102400
140
+ }
141
+ ```
142
+
143
+ #### Jest - 全テスト
144
+ ```json
145
+ {
146
+ "runner": "jest",
147
+ "scope": "all",
148
+ "timeout_ms": 180000,
107
149
  "no_output_timeout_ms": 60000,
108
150
  "max_output_bytes": 102400
109
151
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA+DpE;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,SAAS,CAgE3C;AAED;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAmBjD"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA0EpE;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,SAAS,CAoF3C;AAED;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAmBjD"}
package/dist/server.js CHANGED
@@ -32,20 +32,31 @@ const SERVER_INFO = {
32
32
  * 注意: MCP SDKはZodObjectではなく、オブジェクトの形状(shape)を期待する
33
33
  */
34
34
  const runTestInputShape = {
35
- /** テストランナー(MVPでは flutter のみ) */
36
- runner: z.enum(ALLOWED_RUNNERS).describe(`テストランナー。許可値: ${ALLOWED_RUNNERS.join(', ')}`),
35
+ /** テストランナー */
36
+ runner: z.enum(ALLOWED_RUNNERS).describe(`テストランナー。プロジェクトに応じて選択:
37
+ - flutter: Flutter/Dartプロジェクト
38
+ - vitest: Vite/TypeScript/JavaScriptプロジェクト
39
+ - pytest: Pythonプロジェクト
40
+ - jest: Node.js/TypeScript/JavaScriptプロジェクト`),
37
41
  /** テスト実行スコープ */
38
- scope: z.enum(ALLOWED_SCOPES).describe(`テスト実行スコープ。all: 全テスト, file: 特定ファイル, pattern: パターンマッチ`),
42
+ scope: z.enum(ALLOWED_SCOPES).describe(`テスト実行スコープ:
43
+ - all: 全テスト実行(推奨: 初回や全体確認時)
44
+ - file: 特定ファイルのテスト(例: test/widget_test.dart)
45
+ - pattern: テスト名でフィルタ(例: "login"を含むテスト)`),
39
46
  /** テスト対象(scope が file/pattern の場合必須) */
40
- target: z.string().optional().describe('テスト対象。scope file または pattern の場合必須'),
47
+ target: z.string().optional().describe(`テスト対象。scopeがfileの場合はファイルパス、patternの場合はテスト名パターン。
48
+ 例: "test/unit/auth.test.ts" または "should login"`),
41
49
  /** ハードタイムアウト(ミリ秒) */
42
- timeout_ms: z.number().int().positive().describe('ハードタイムアウト(ミリ秒)。この時間を超えるとプロセスを強制終了'),
50
+ timeout_ms: z.number().int().positive().describe(`ハードタイムアウト(ミリ秒)。推奨値:
51
+ - 単体テスト: 60000(1分)
52
+ - 統合テスト: 300000(5分)
53
+ - E2Eテスト: 600000(10分)`),
43
54
  /** 無出力タイムアウト(ミリ秒) */
44
- no_output_timeout_ms: z.number().int().positive().describe('無出力タイムアウト(ミリ秒)。この時間出力がないとプロセスを強制終了'),
55
+ no_output_timeout_ms: z.number().int().positive().describe(`無出力タイムアウト(ミリ秒)。この時間出力がないとハング判定。推奨: 30000〜60000`),
45
56
  /** 要約対象の末尾バイト数 */
46
- max_output_bytes: z.number().int().positive().describe('要約対象の末尾バイト数。ログ抽出時にこのバイト数を対象とする'),
57
+ max_output_bytes: z.number().int().positive().describe(`要約対象の末尾バイト数。ログが大きい場合に末尾からこのバイト数を抽出。推奨: 102400(100KB)`),
47
58
  /** レポート出力ディレクトリ(相対パス、オプション) */
48
- report_dir: z.string().optional().describe('レポート出力ディレクトリ(相対パス)。省略時はデフォルトパスを使用'),
59
+ report_dir: z.string().optional().describe('レポート出力ディレクトリ(相対パス)。省略時は .cache/mcp-test-timebox/reports/<timestamp> に自動生成'),
49
60
  };
50
61
  /**
51
62
  * デバッグログをstderrに出力する
@@ -69,7 +80,27 @@ export function createMcpServer() {
69
80
  const runTestTool = createRunTestTool();
70
81
  // run_testツールを登録(registerToolを使用)
71
82
  server.registerTool('run_test', {
72
- description: 'タイムボックス付きでテストを実行する。固定テンプレート(flutter test等)のみ許可し、実行結果をレポートとして保存する。',
83
+ description: `タイムボックス付きでテストを実行し、必ず結果を返す。
84
+
85
+ 【用途】
86
+ - テストがハングしても必ずタイムアウトで結果を返す
87
+ - テスト結果をraw.log/summary.md/summary.jsonとして保存
88
+ - AIがテスト結果を解析しやすい形式で出力
89
+
90
+ 【対応ランナー】
91
+ - flutter: Flutter/Dartプロジェクト(flutter test)
92
+ - vitest: Vite/TS/JSプロジェクト(npx vitest run)
93
+ - pytest: Pythonプロジェクト(pytest)
94
+ - jest: Node.js/TS/JSプロジェクト(npx jest)
95
+
96
+ 【推奨パラメータ】
97
+ - timeout_ms: 60000〜300000(1〜5分)
98
+ - no_output_timeout_ms: 30000〜60000(30秒〜1分)
99
+ - max_output_bytes: 102400(100KB)
100
+
101
+ 【レスポンス】
102
+ status: pass/fail/timeout/no_output/error
103
+ excerpt: テスト結果の要約(失敗時はエラー箇所を抽出)`,
73
104
  inputSchema: runTestInputShape,
74
105
  }, async (params) => {
75
106
  debugLog(`run_test called with params: ${JSON.stringify(params)}`);
@@ -139,12 +170,9 @@ export async function startServer() {
139
170
  }
140
171
  // メインエントリポイント
141
172
  // このファイルが直接実行された場合にサーバを起動
142
- // ESMではimport.meta.urlを使用してメインモジュールかどうかを判定
143
- const isMainModule = import.meta.url === `file://${process.argv[1]}`;
144
- if (isMainModule) {
145
- startServer().catch((error) => {
146
- console.error('Fatal error:', error);
147
- process.exit(1);
148
- });
149
- }
173
+ // 常にサーバを起動する(CLIツールとして使用されるため)
174
+ startServer().catch((error) => {
175
+ console.error('Fatal error:', error);
176
+ process.exit(1);
177
+ });
150
178
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"command-builder.d.ts","sourceRoot":"","sources":["../../src/validation/command-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AA2CD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,MAAM,CAAC,EAAE,MAAM,GACd,aAAa,CAqCf;AA+BD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAmChF"}
1
+ {"version":3,"file":"command-builder.d.ts","sourceRoot":"","sources":["../../src/validation/command-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAkGD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,MAAM,CAAC,EAAE,MAAM,GACd,aAAa,CAqCf;AA+BD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAsBhF"}
@@ -4,6 +4,7 @@
4
4
  * runner -> scope -> template のマッピング
5
5
  */
6
6
  const COMMAND_TEMPLATES = {
7
+ // Flutter/Dart用
7
8
  flutter: {
8
9
  all: {
9
10
  command: 'flutter',
@@ -21,6 +22,60 @@ const COMMAND_TEMPLATES = {
21
22
  targetFlag: '--name',
22
23
  },
23
24
  },
25
+ // Vitest用(TypeScript/JavaScript)
26
+ vitest: {
27
+ all: {
28
+ command: 'npx',
29
+ baseArgs: ['vitest', 'run'],
30
+ },
31
+ file: {
32
+ command: 'npx',
33
+ baseArgs: ['vitest', 'run'],
34
+ targetArgFormat: 'positional',
35
+ },
36
+ pattern: {
37
+ command: 'npx',
38
+ baseArgs: ['vitest', 'run'],
39
+ targetArgFormat: 'named',
40
+ targetFlag: '-t',
41
+ },
42
+ },
43
+ // Pytest用(Python)
44
+ pytest: {
45
+ all: {
46
+ command: 'pytest',
47
+ baseArgs: [],
48
+ },
49
+ file: {
50
+ command: 'pytest',
51
+ baseArgs: [],
52
+ targetArgFormat: 'positional',
53
+ },
54
+ pattern: {
55
+ command: 'pytest',
56
+ baseArgs: [],
57
+ targetArgFormat: 'named',
58
+ targetFlag: '-k',
59
+ },
60
+ },
61
+ // Jest用(TypeScript/JavaScript)
62
+ jest: {
63
+ all: {
64
+ command: 'npx',
65
+ baseArgs: ['jest'],
66
+ },
67
+ file: {
68
+ command: 'npx',
69
+ baseArgs: ['jest'],
70
+ targetArgFormat: 'positional',
71
+ },
72
+ pattern: {
73
+ command: 'npx',
74
+ baseArgs: ['jest'],
75
+ targetArgFormat: 'named',
76
+ targetFlag: '-t',
77
+ },
78
+ },
24
79
  };
25
80
  /**
26
81
  * 入力パラメータからコマンドと引数を構築する
@@ -111,32 +166,21 @@ export function formatCommand(result) {
111
166
  * @returns 許可されたパターンの場合 true
112
167
  */
113
168
  export function isAllowedCommandPattern(command, args) {
114
- // flutter test パターンのみ許可
115
- if (command !== 'flutter') {
116
- return false;
117
- }
118
- if (args.length === 0 || args[0] !== 'test') {
119
- return false;
169
+ // flutter test パターン
170
+ if (command === 'flutter' && args.length > 0 && args[0] === 'test') {
171
+ return true;
120
172
  }
121
- // 許可されたパターン:
122
- // 1. flutter test
123
- // 2. flutter test <target>
124
- // 3. flutter test --name <target>
125
- if (args.length === 1) {
126
- // flutter test
173
+ // npx vitest run パターン
174
+ if (command === 'npx' && args.length >= 2 && args[0] === 'vitest' && args[1] === 'run') {
127
175
  return true;
128
176
  }
129
- if (args.length === 2) {
130
- // flutter test <target>
131
- // targetが--で始まらないこと
132
- const arg1 = args[1];
133
- return arg1 !== undefined && !arg1.startsWith('--');
177
+ // npx jest パターン
178
+ if (command === 'npx' && args.length >= 1 && args[0] === 'jest') {
179
+ return true;
134
180
  }
135
- if (args.length === 3) {
136
- // flutter test --name <target>
137
- const arg1 = args[1];
138
- const arg2 = args[2];
139
- return arg1 === '--name' && arg2 !== undefined && !arg2.startsWith('--');
181
+ // pytest パターン
182
+ if (command === 'pytest') {
183
+ return true;
140
184
  }
141
185
  return false;
142
186
  }
@@ -1 +1 @@
1
- {"version":3,"file":"command-builder.js","sourceRoot":"","sources":["../../src/validation/command-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-builder.js","sourceRoot":"","sources":["../../src/validation/command-builder.ts"],"names":[],"mappings":"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"}
@@ -14,9 +14,12 @@
14
14
  import { z } from 'zod';
15
15
  /**
16
16
  * 許可されたテストランナー
17
- * MVPでは flutter のみサポート
17
+ * - flutter: Flutter/Dartプロジェクト用
18
+ * - vitest: Vite/Node.jsプロジェクト用(TypeScript/JavaScript)
19
+ * - pytest: Pythonプロジェクト用
20
+ * - jest: Node.jsプロジェクト用(TypeScript/JavaScript)
18
21
  */
19
- export declare const ALLOWED_RUNNERS: readonly ["flutter"];
22
+ export declare const ALLOWED_RUNNERS: readonly ["flutter", "vitest", "pytest", "jest"];
20
23
  export type Runner = typeof ALLOWED_RUNNERS[number];
21
24
  /**
22
25
  * テスト実行スコープ
@@ -34,6 +37,9 @@ export type Scope = typeof ALLOWED_SCOPES[number];
34
37
  export declare const runTestInputSchema: z.ZodObject<{
35
38
  runner: z.ZodEnum<{
36
39
  flutter: "flutter";
40
+ vitest: "vitest";
41
+ pytest: "pytest";
42
+ jest: "jest";
37
43
  }>;
38
44
  scope: z.ZodEnum<{
39
45
  all: "all";
@@ -1 +1 @@
1
- {"version":3,"file":"input-schema.d.ts","sourceRoot":"","sources":["../../src/validation/input-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,eAAe,sBAAuB,CAAC;AACpD,MAAM,MAAM,MAAM,GAAG,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;AAEpD;;;;;GAKG;AACH,eAAO,MAAM,cAAc,qCAAsC,CAAC;AAClE,MAAM,MAAM,KAAK,GAAG,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAuClD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;iBAS7B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,oBAAoB;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,sBAAsB;IACtB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAoBnF;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,MAAM,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,KAAK,CAE5D"}
1
+ {"version":3,"file":"input-schema.d.ts","sourceRoot":"","sources":["../../src/validation/input-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,kDAAmD,CAAC;AAChF,MAAM,MAAM,MAAM,GAAG,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;AAEpD;;;;;GAKG;AACH,eAAO,MAAM,cAAc,qCAAsC,CAAC;AAClE,MAAM,MAAM,KAAK,GAAG,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAuClD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;iBAS7B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,oBAAoB;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,sBAAsB;IACtB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAoBnF;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,MAAM,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,KAAK,CAE5D"}
@@ -14,9 +14,12 @@
14
14
  import { z } from 'zod';
15
15
  /**
16
16
  * 許可されたテストランナー
17
- * MVPでは flutter のみサポート
17
+ * - flutter: Flutter/Dartプロジェクト用
18
+ * - vitest: Vite/Node.jsプロジェクト用(TypeScript/JavaScript)
19
+ * - pytest: Pythonプロジェクト用
20
+ * - jest: Node.jsプロジェクト用(TypeScript/JavaScript)
18
21
  */
19
- export const ALLOWED_RUNNERS = ['flutter'];
22
+ export const ALLOWED_RUNNERS = ['flutter', 'vitest', 'pytest', 'jest'];
20
23
  /**
21
24
  * テスト実行スコープ
22
25
  * - all: 全テスト実行
@@ -1 +1 @@
1
- {"version":3,"file":"input-schema.js","sourceRoot":"","sources":["../../src/validation/input-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input-schema.js","sourceRoot":"","sources":["../../src/validation/input-schema.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-test-timebox",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "タイムボックス付きテスト専用MCPサーバ - テスト実行が終わらない問題を防ぐ",
5
5
  "type": "module",
6
6
  "main": "dist/server.js",
@@ -21,9 +21,12 @@
21
21
  "model-context-protocol",
22
22
  "test",
23
23
  "timebox",
24
- "flutter",
25
24
  "timeout",
26
- "test-runner"
25
+ "test-runner",
26
+ "flutter",
27
+ "vitest",
28
+ "pytest",
29
+ "jest"
27
30
  ],
28
31
  "author": "kawanishi0117",
29
32
  "license": "MIT",