chrome-devtools-mcp-for-extension 0.9.25 → 0.9.27

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.
@@ -218,32 +218,50 @@ async function detectDeepResearchMode(page) {
218
218
  async function enableDeepResearchMode(page, response) {
219
219
  try {
220
220
  response.appendResponseLine('DeepResearchモードを有効化中...');
221
- // Step 1: Click "+" button
221
+ // Step 1: Click じっくり思考 button with haspopup="menu"
222
+ const thinkingMenuClicked = await page.evaluate(() => {
223
+ const buttons = Array.from(document.querySelectorAll('button'));
224
+ const thinkingMenuButton = buttons.find((btn) => {
225
+ const text = btn.textContent?.trim() || '';
226
+ return text.includes('じっくり思考') && btn.getAttribute('haspopup') === 'menu';
227
+ });
228
+ if (!thinkingMenuButton) {
229
+ return { success: false, error: 'じっくり思考メニューボタンが見つかりません' };
230
+ }
231
+ thinkingMenuButton.click();
232
+ return { success: true };
233
+ });
234
+ if (!thinkingMenuClicked.success) {
235
+ return { success: false, error: thinkingMenuClicked.error };
236
+ }
237
+ response.appendResponseLine('✅ じっくり思考メニューを開く');
238
+ await new Promise((resolve) => setTimeout(resolve, 500));
239
+ // Step 2: Click "+" button (ファイルの追加など)
222
240
  const plusClicked = await page.evaluate(() => {
223
241
  const buttons = Array.from(document.querySelectorAll('button'));
224
242
  const plusButton = buttons.find((btn) => {
225
243
  const aria = btn.getAttribute('aria-label') || '';
226
- const desc = btn.getAttribute('description') || '';
227
- return aria.includes('ファイルの追加') || desc.includes('ファイルの追加');
244
+ return aria.includes('ファイルの追加');
228
245
  });
229
246
  if (!plusButton)
230
- return { success: false, error: '+ボタンが見つかりません' };
247
+ return { success: false, error: '+ボタン(ファイルの追加など)が見つかりません' };
231
248
  plusButton.click();
232
249
  return { success: true };
233
250
  });
234
251
  if (!plusClicked.success) {
235
252
  return { success: false, error: plusClicked.error };
236
253
  }
237
- await new Promise((resolve) => setTimeout(resolve, 800));
238
- // Step 2: Select DeepResearch option
254
+ response.appendResponseLine('✅ +ボタン(ファイルの追加など)をクリック');
255
+ await new Promise((resolve) => setTimeout(resolve, 500));
256
+ // Step 3: Click "Deep Research" menuitemradio
239
257
  const deepResearchSelected = await page.evaluate(() => {
240
258
  const menuItems = Array.from(document.querySelectorAll('[role="menuitemradio"]'));
241
259
  const deepResearchItem = menuItems.find((item) => item.textContent?.includes('Deep Research') ||
242
- item.textContent?.includes('ディープリサーチ'));
260
+ item.textContent?.includes('リサーチ'));
243
261
  if (!deepResearchItem) {
244
262
  return {
245
263
  success: false,
246
- error: 'DeepResearchオプションが見つかりません',
264
+ error: 'DeepResearch menuitemradio が見つかりません',
247
265
  };
248
266
  }
249
267
  deepResearchItem.click();
@@ -252,14 +270,14 @@ async function enableDeepResearchMode(page, response) {
252
270
  if (!deepResearchSelected.success) {
253
271
  return { success: false, error: deepResearchSelected.error };
254
272
  }
255
- response.appendResponseLine('✅ DeepResearchモード有効化');
273
+ response.appendResponseLine('✅ DeepResearch menuitemradio をクリック');
256
274
  await new Promise((resolve) => setTimeout(resolve, 1000));
257
- // Verify mode was actually enabled
275
+ // Step 3: Verify mode was actually enabled (composer-pill detection)
258
276
  const verification = await detectDeepResearchMode(page);
259
277
  if (!verification.isEnabled) {
260
278
  return {
261
279
  success: false,
262
- error: 'DeepResearchモードの有効化に失敗しました(確認できませんでした)',
280
+ error: 'DeepResearchモードの有効化に失敗しました(リサーチpillが検出されませんでした)',
263
281
  };
264
282
  }
265
283
  response.appendResponseLine(`✅ モード確認完了: DeepResearch有効 (${verification.indicator})`);
@@ -563,7 +581,7 @@ export const deepResearchChatGPT = defineTool({
563
581
  }
564
582
  }
565
583
  if (needsNewChat) {
566
- await page.goto('https://chatgpt.com/', { waitUntil: 'networkidle2' });
584
+ await page.goto('https://chatgpt.com/?model=gpt-5-thinking', { waitUntil: 'networkidle2' });
567
585
  }
568
586
  // Check if logged in
569
587
  const currentUrl = page.url();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chrome-devtools-mcp-for-extension",
3
- "version": "0.9.25",
3
+ "version": "0.9.27",
4
4
  "description": "MCP server for Chrome extension development with Web Store automation. Fork of chrome-devtools-mcp with extension-specific tools.",
5
5
  "type": "module",
6
6
  "bin": "./build/src/index.js",