Skip to content

CLI: expose session-audit as npx-runnable bin (stretch from #8) #22

Description

@axisrow

Part of the optional stretch in #8, deferred from #21 (v0.1.0-fork.1 release).

The session-audit CLI currently runs via pnpm analyze:session / pnpm analyze:sessions (tsx from devDependencies). External users should be able to npx the audit without cloning the Electron app.

Why it wasn't a quick add in #21

src/cli/analyzeSession.ts imports @main/services/discovery, @main/types, and @main/utils — a bin + files whitelist needs a CLI-only bundle built outside electron-vite, plus verification that no Electron-only imports leak into that bundle.

Что сделать

  1. CLI-only build step (bundle src/cli/analyzeSession.ts + src/cli/sessionInventory.ts with their @main/@shared imports).
  2. package.json → bin entry + files whitelist.
  3. pnpm pack smoke test: install the tarball into a scratch directory and run the bin.

Acceptance

Activity

  1. axisrow commented on Sep 25, 2026

    @axisrow
    OwnerAuthor

    Acceptance criteria (зафиксировано до реализации)

    Доказательство — через собранный tarball, а не через tsx в репо:

    1. pnpm pack с чистого состояния (без dist-cli/) даёт tarball, внутри которого только package.json + собранные CLI-артефакты dist-cli/ (никаких src/, out/, dist-electron/). Проверка: tar -tzf.
    2. Установка tarball во временную директорию /tmp и запуск бина оттуда на реальном JSONL из ~/.claude/projects/:
      • npx session-audit <file.jsonl> — exit code 0, в stdout есть === SESSION === и === TOKENS (billed) ===;
      • npx session-inventory --limit 3 — exit code 0, в stdout список сессий (sessions: N total);
      • --json обоих бинов парсится как валидный JSON (jq -e .).
    3. Нет Electron в рантайме бина: в собранных бандлах нет require("electron")/from "electron" (grep по dist-cli/*.js), установка и запуск проходят без зависимостей приложения.
    4. Регрессии: pnpm typecheck, pnpm lint, pnpm test — зелёные; существующие скрипты analyze:session / analyze:sessions (tsx-путь) не изменены.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions