Skip to content

Repository files navigation

ledger-view

nagi-ledger(AI エージェントの派遣・検証・ 試行錯誤を記録する MCP サーバ)が吐き出した台帳を、人が読める形にする 1 ページのビューアです。

素の TypeScript(strict)+ Vite — UI フレームワーク無し、ランタイム依存ゼロ。 qa-dashboard と同じ思想で作っています。

これは何のための道具か

nagi-ledger は、AI エージェント(Claude Code のサブエージェント)に何を派遣し、その結果を 検証したか(あるいは検証していないか)、どの手法が行き止まりだったかを記録する MCP サーバです。 台帳そのものは SQLite の行データで、そのままでは「派遣したのに検証していない仕事がどれだけ 溜まっているか」が見えません。

ledger-view は、nagi-ledger 側の export_json.py が吐き出す JSON スナップショットを読み込み、この「検証の滞留」を一目で見せることに主眼を置いています。 派遣した回数・確定した verdict・行き止まりに終わった手法を並べて表示するだけの、単純な ビューアです。

Run it

npm install
npm run dev       # dev server, 同梱サンプルを表示
npm run build     # tsc --strict の型チェック後 dist/ にビルド
npm run preview   # ビルド済み dist/ をローカルで配信
npm test          # vitest — ロジック部分のユニットテスト

画面

  1. サマリ帯 — 派遣総数 / verdict 内訳(CONFIRMED・REFUTED・PARTIAL・PENDING)/ actions の tier 内訳 / dead-end 数 / tool_failure 件数
  2. 検証の滞留 — verdict が null のままの派遣を ts 降順で並べる。この道具の主役。
  3. タスク別 — task 文字列で group し、派遣回数・最新 verdict・最終 ts を表示。 派遣回数 2 以上(リトライを消費している)の行を強調。
  4. approaches — DEAD_END / NO_GO / WORKS をタブで切り替え。
  5. actions — category と tier でフィルタできる一覧。

データはページへのドラッグ&ドロップで読み込みます。何も渡さなければ public/sample/ledger-export.json(完全な合成データ、実在のプロジェクト名や人名は 含みません)が表示されます。

Expected JSON shape

{
  "schema": "nagi-ledger-export/1",
  "exported_at": "2026-08-10 21:40:00",
  "actions": [
    {
      "id": 1,
      "ts": "2026-07-28 09:05:00",
      "tier": 0, // 0 | 1 | 2
      "category": "install",
      "description": "...",
      "project": "web-app" // or null
    }
  ],
  "dispatches": [
    {
      "id": 1,
      "ts": "2026-07-28 09:20:00",
      "task": "fix flaky test in test_widget.py",
      "agent_type": "nagi-implementer",
      "model": "sonnet",
      "brief_summary": "...",
      "verdict": "CONFIRMED", // "CONFIRMED" | "REFUTED" | "PARTIAL" | null (= pending)
      "verdict_ts": "2026-07-29 08:00:00", // or null
      "verdict_notes": "..." // or null
    }
  ],
  "approaches": [
    {
      "id": 1,
      "ts": "2026-07-31 09:00:00",
      "task": "extract changelog entries from a release notes page",
      "approach": "regex-based HTML parsing",
      "outcome": "DEAD_END", // "DEAD_END" | "NO_GO" | "WORKS"
      "reason": "breaks on nested <ul> tags, switched to a proper HTML parser library"
    }
  ]
}

ts は UTC の文字列としてそのまま表示します(タイムゾーン変換はしません)。 完全な型定義は src/types.ts を、実データ例は public/sample/ledger-export.json を参照してください。

テスト

src/logic.test.ts に、型ガード(isExport)・verdict/tier 集計・task グルーピング・ actions フィルタなど純ロジックのユニットテストが 24 件あります。DOM 描画部分 (src/render.ts)はテスト対象外です。

加えて src/realdata.integration.test.tsopt-in の実データ統合テストが 1 件: REAL_EXPORT_PATH に実際の export(export_json.py の出力)を指すと、本物の台帳が 型ガードを通ることを検証します(未指定なら skip — CI では走りません)。

デプロイ

vite.config.ts は GitHub Pages のプロジェクトページ配信に合わせて base: '/ledger-view/' を設定しています。.github/workflows/deploy.ymlmain への push で自動デプロイします。

ライセンス

MIT — LICENSE を参照。

About

Viewer for nagi-ledger's audit-ledger JSON — surfaces unverified agent dispatches. Vanilla TypeScript + Vite, zero runtime deps.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages