mcp-test-timebox 0.1.2 → 0.1.4

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;AA8EpE;;;;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,33 @@ 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> に自動生成'),
60
+ /** 作業ディレクトリ(絶対パス、オプション) */
61
+ cwd: z.string().optional().describe('テスト実行の作業ディレクトリ(絶対パス)。省略時はMCPサーバの起動ディレクトリを使用。ワークスペースのルートパスを指定してください。'),
49
62
  };
50
63
  /**
51
64
  * デバッグログをstderrに出力する
@@ -69,7 +82,27 @@ export function createMcpServer() {
69
82
  const runTestTool = createRunTestTool();
70
83
  // run_testツールを登録(registerToolを使用)
71
84
  server.registerTool('run_test', {
72
- description: 'タイムボックス付きでテストを実行する。固定テンプレート(flutter test等)のみ許可し、実行結果をレポートとして保存する。',
85
+ description: `タイムボックス付きでテストを実行し、必ず結果を返す。
86
+
87
+ 【用途】
88
+ - テストがハングしても必ずタイムアウトで結果を返す
89
+ - テスト結果をraw.log/summary.md/summary.jsonとして保存
90
+ - AIがテスト結果を解析しやすい形式で出力
91
+
92
+ 【対応ランナー】
93
+ - flutter: Flutter/Dartプロジェクト(flutter test)
94
+ - vitest: Vite/TS/JSプロジェクト(npx vitest run)
95
+ - pytest: Pythonプロジェクト(pytest)
96
+ - jest: Node.js/TS/JSプロジェクト(npx jest)
97
+
98
+ 【推奨パラメータ】
99
+ - timeout_ms: 60000〜300000(1〜5分)
100
+ - no_output_timeout_ms: 30000〜60000(30秒〜1分)
101
+ - max_output_bytes: 102400(100KB)
102
+
103
+ 【レスポンス】
104
+ status: pass/fail/timeout/no_output/error
105
+ excerpt: テスト結果の要約(失敗時はエラー箇所を抽出)`,
73
106
  inputSchema: runTestInputShape,
74
107
  }, async (params) => {
75
108
  debugLog(`run_test called with params: ${JSON.stringify(params)}`);
@@ -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":"run-test.d.ts","sourceRoot":"","sources":["../../src/tools/run-test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,iDAAiD;IACjD,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IAC5D,8BAA8B;IAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gBAAgB;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB;IAClB,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAiBD;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC;;OAEG;gBACS,OAAO,GAAE,kBAAuB;IAK5C;;;;;OAKG;IACG,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAqIrD;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;CAe5B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW,CAE3E"}
1
+ {"version":3,"file":"run-test.d.ts","sourceRoot":"","sources":["../../src/tools/run-test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,iDAAiD;IACjD,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IAC5D,8BAA8B;IAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gBAAgB;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB;IAClB,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAiBD;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC;;OAEG;gBACS,OAAO,GAAE,kBAAuB;IAK5C;;;;;OAKG;IACG,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAwIrD;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;CAe5B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW,CAE3E"}
@@ -56,9 +56,11 @@ export class RunTestTool {
56
56
  return this.createErrorResponse(startTime, `入力バリデーションエラー: ${validationResult.errors?.join(', ')}`);
57
57
  }
58
58
  const validInput = validationResult.data;
59
+ // cwdが指定されている場合はそれを使用、なければrepoRootを使用
60
+ const workingDir = validInput.cwd || this.repoRoot;
59
61
  // 2. targetパスの検証(scope が file/pattern の場合)
60
62
  if (validInput.target) {
61
- const pathResult = normalizePath(validInput.target, this.repoRoot);
63
+ const pathResult = normalizePath(validInput.target, workingDir);
62
64
  if (!pathResult.valid) {
63
65
  return this.createErrorResponse(startTime, `パス検証エラー: ${pathResult.error}`);
64
66
  }
@@ -66,7 +68,7 @@ export class RunTestTool {
66
68
  // 3. report_dirパスの検証(指定されている場合)
67
69
  let reportDirBase;
68
70
  if (validInput.report_dir) {
69
- const pathResult = normalizePath(validInput.report_dir, this.repoRoot);
71
+ const pathResult = normalizePath(validInput.report_dir, workingDir);
70
72
  if (!pathResult.valid) {
71
73
  return this.createErrorResponse(startTime, `レポートディレクトリパス検証エラー: ${pathResult.error}`);
72
74
  }
@@ -86,7 +88,7 @@ export class RunTestTool {
86
88
  let processResult;
87
89
  try {
88
90
  processResult = await executor.execute(commandResult.command, commandResult.args, {
89
- cwd: this.repoRoot,
91
+ cwd: workingDir,
90
92
  timeoutMs: validInput.timeout_ms,
91
93
  noOutputTimeoutMs: validInput.no_output_timeout_ms,
92
94
  });
@@ -1 +1 @@
1
- {"version":3,"file":"run-test.js","sourceRoot":"","sources":["../../src/tools/run-test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-test.js","sourceRoot":"","sources":["../../src/tools/run-test.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";
@@ -45,6 +51,7 @@ export declare const runTestInputSchema: z.ZodObject<{
45
51
  no_output_timeout_ms: z.ZodNumber;
46
52
  max_output_bytes: z.ZodNumber;
47
53
  report_dir: z.ZodOptional<z.ZodString>;
54
+ cwd: z.ZodOptional<z.ZodString>;
48
55
  }, z.core.$strip>;
49
56
  /**
50
57
  * run_test入力の型定義
@@ -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;AA0ClD;;;;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: 全テスト実行
@@ -52,6 +55,8 @@ const baseRunTestInputSchema = z.object({
52
55
  max_output_bytes: positiveIntSchema,
53
56
  /** レポート出力ディレクトリ(相対パス、オプション) */
54
57
  report_dir: z.string().optional(),
58
+ /** 作業ディレクトリ(絶対パス、オプション) */
59
+ cwd: z.string().optional(),
55
60
  });
56
61
  /**
57
62
  * run_test入力スキーマ(条件付きバリデーション付き)
@@ -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.2",
3
+ "version": "0.1.4",
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",