本文へスキップ
cd /languages
混在ランタイムプログラミングフルグラフ対応

MaguyvaのJavaScript対応: 混在ランタイムのリポジトリのためのAI検索

MaguyvaはAST解析とシンボル抽出によりJavaScriptに対応しており、AIエージェントが単純な文字列検索に頼ることなく、Nodeのサービス、ブラウザコード、スクリプト、レガシーモジュールを横断して作業できるようにします。

混在したJavaScriptリポジトリになお構造を理解した検索が必要な理由

多くのAIコードツールは、JavaScriptを「本物の」TypeScriptに至る前の乱雑な過渡状態として、それとなく扱っています。それは、実際の本番リポジトリがどう見えるかを見落としています。JavaScriptは今も、ビルドステップ、プラグインシステム、ブラウザコード、タスクスクリプト、そして誰もきれいに書き直す予算を確保できていない息の長いサービスパスを担っています。

それゆえ、JavaScript対応の本質はきれいな構文よりも歴史にあります。危険なのはファイルをパースすることではありません。危険なのは、そのモジュールやヘルパーがCommonJSに属するのか、ESMに属するのか、ブラウザコードに属するのか、あるいは何らかの古いローカルパターンに属するのかを理解しないまま編集することです。

MaguyvaがJavaScriptで実際に抽出するもの

Maguyvaは.js.mjs.cjsをカバーし、メンバー修飾された呼び出しを正規化し、フロントエンドとバックエンドの境界があいまいなJavaScriptコードベースにおいてJSXコンポーネントのヒューリスティックをサポートします。また、標準的なブラウザおよびNodeランタイムのノイズを大量にフィルタリングすることで、リポジトリ固有の関係性を見えやすく保ちます。

これは、同じ概念が複数のファイルスタイルにまたがって存在しうる、あるいは正確な命名がしばしば一貫していない、古いリポジトリや混在リポジトリで役立ちます。

混在ランタイムのリポジトリに役立つMCPワークフロー

実践的なワークフローは、たいてい次のようになります。

  • text_pattern_searchを使う — module.exportsのような正確な文字列、イベント名、古い設定マーカーに対して。
  • intelligent_searchを使う — 「レガシーなアップロードフロー」や「ブラウザバンドル内で認証がチェックされている場所」のような、挙動レベルの発見が必要なとき。
  • get_task_contextを使う — 命名が一貫しておらず、エージェントが何かを編集する前に縫い合わされた要約が欲しいとき。

このページが役立つ場面

このページは、移行がすでに完了したふりをしているチームのためではなく、今もJavaScriptが意味のある割合を占めているリポジトリのためのものです。現在のリポジトリが大部分TypeScriptであれば、TypeScriptから始めてください。古いWebスタックがサーバーサイドのテンプレートやPHPにまで今も及んでいる場合は、PHPガイドがより関連性の高い併読先です。

最適な用途

  • >1つのモジュールシステムや1世代のフレームワークへの収束を、ついに終えなかったNode/ブラウザのリポジトリ。
  • >レガシーなJavaScriptを保守しながら、TypeScriptや新しいパッケージ境界を段階的に導入しているチーム。
  • >その場しのぎのリポジトリ検索ではなく、`.js`、`.mjs`、`.cjs`にまたがる構造が必要なエージェントワークフロー。

エージェントワークフロー

  • >編集する前に、古いJavaScriptモジュールを通じてリクエストパスやビルドステップをたどる。
  • >リポジトリ全体で、同じ挙動のCommonJS実装とESM実装を比較する。
  • >新しい抽象化を導入する前に、スクリプト、ユーティリティ、フロントエンドコンポーネントに繰り返し現れるパターンを見つける。

エンジンの詳細

  • >JavaScriptの対応は `.js`、`.mjs`、`.cjs` をカバーしており、1つのリポジトリ内で複数のモジュール形式が混在している場合に重要です。
  • >メンバーのプレフィックスと呼び出し引数は正規化されるため、古いファイル同士でも繰り返し使われるヘルパーを比較しやすくなります。
  • >JSXコンポーネントのヒューリスティックに対応しており、ブラウザやNodeの組み込みグローバルによる大量のノイズは関係性から除外されます。

役立つMCPエントリーポイント

  • text_pattern_search

    `module.exports` やイベント名、レガシーな設定マーカーなど、正確な文字列を検索する際に、検索範囲を広げる前にまず使用してください。

  • intelligent_search

    命名が一貫していない場合や、シンボルではなく「file upload flow」のような振る舞いを見つけたいときに使用してください。

  • get_task_context

    リポジトリが乱雑になっていて、レガシーなパスに触れる前にまとまった要約が必要なときに便利です。