firstlight
firstlightv0.3.0MIT
Run lint, typecheck, and tests in parallel for a coding agent, and return at the first failure.
インストール
npm install firstlight- GitHub のソースコード
- 使っているツール: archstrict, depug, nukadoko, stryker-agent-reporter
firstlight は、コーディングエージェントのために、チェックを並列で実行するツールです。
エージェントは、lint、型検査、テストを firstlight 経由で実行します。
すべてのチェックを同時に始め、最初の 1 つが失敗した時点で制御を返すので、エージェントはすぐに修正に取りかかれます。
ほかのチェックはバックグラウンドで動き続け、エージェントはその結果を後で読みます。
チェックは任意のシェルコマンドなので、プロジェクトに Node や package.json は必要ありません。
Node が必要なのは firstlight 自身だけです。
firstlight は、検査するリポジトリには何も書き込みません。
run-pと同じ引数。firstlight run lint typecheck testはpackage.jsonのスクリプトを実行し、"lint:*"はパターンに一致するスクリプトを選びます。"bundle exec rspec"のように空白を含む引数は、シェルコマンドとして扱います。- 統一された形式の診断。
tsc、vitest、node --test、archstrictでは、失敗したチェックが、ログの末尾 10 行の前にfile:line:col rule messageの形式の行を表示します。tsc --noEmit && vitest runのように&&でつないだコマンドでは、それぞれのツールのパーサーを順に使います。 - 成功の再利用。
同じ作業ツリーに対して同じコマンドで成功したチェックは、再実行しません。
キーは、git のツリーのハッシュ、コマンド、
afterに指定したチェックのキーから作ります。--no-cacheを付けると、すべてのチェックを実行します。 - 新しい失敗だけを見る。
firstlight results --new --waitは、前回の実行になかった失敗があるときだけ終了コード 1 で終了します。 そのため、既知の失敗を抱えたプロジェクトでも、変更の可否を判定できます。 - 失敗したものだけ再実行。
firstlight run --failedは、最新の実行で成功しなかったチェックだけを実行します。 すべてのチェックが終わって失敗が 1 つでもあれば、resultsとfollowが次のコマンドとしてこれを示します。 - 残り時間。
実行中のチェックには、以前に成功したときの所要時間から見積もった、おおよその残り時間が表示されます。
firstlight followは状態が変わるたびにその変化を表示し、--jsonは JSON Lines を出力します。
エージェントでの使い方
Section titled “エージェントでの使い方”firstlight run lint typecheck testでチェックを始めます。 最初のチェックが失敗するかタイムアウトした時点で制御を返し、そのチェックの診断、ほかのすべてのチェックの状態、次のコマンドを示します。- ほかのチェックが続く間に、失敗を直します。
- 残りは
firstlight results --waitで読むか、firstlight followで各チェックが終わるのを見届けます。 firstlight run --failedで、成功しなかったものだけを実行します。 すべてのチェックが終わって失敗が 1 つでもあれば、これが次のコマンドとして示されます。 新しい実行は、手順 1 から残っているものをキャンセルします。
firstlight 自身が失敗したときは、次のコマンドを示す do フィールドを持つ JSON オブジェクトを 1 つ stderr に出力します。
firstlight には Node.js 24 以降が必要です。 それより古い Node では、どのコマンドも何もせずに止まり、エラーを表示して終了コード 1 で終了します。
npm i -D firstlightnpx firstlight --helpnpx firstlight runfirstlight.json がなければ、firstlight run は package.json のスクリプト lint、typecheck、test、archstrict のうち、存在するものを実行します。
check:architecture のように、チェックらしいほかのスクリプトは実行せず、not run: の行で名前を示します。
チェックを選ぶには、firstlight init に firstlight.json を提案させ、内容を読んでから --write で書き込みます。
npx firstlight init typecheck test check:architecturenpx firstlight init typecheck test check:architecture --writefirstlight.json では独自のチェックを定義でき、after で順序を、timeoutSec で制限時間を指定します。
- vitest が depug のレポーターを使っていると、firstlight は失敗した各テストの診断に、depug の証拠のパスと再実行のコマンドを添えます。
- firstlight は archstrict の
checkの出力を診断として読み、package.jsonにarchstrictのスクリプトがあれば既定で実行します。