You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
CLI: expose session-audit as npx-runnable bin (stretch from #8) #22
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.
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.
Что сделать
CLI-only build step (bundle src/cli/analyzeSession.ts + src/cli/sessionInventory.ts with their @main/@shared imports).
package.json → bin entry + files whitelist.
pnpm pack smoke test: install the tarball into a scratch directory and run the bin.
Доказательство — через собранный tarball, а не через tsx в репо:
pnpm pack с чистого состояния (без dist-cli/) даёт tarball, внутри которого только package.json + собранные CLI-артефакты dist-cli/ (никаких src/, out/, dist-electron/). Проверка: tar -tzf.
Установка 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 .).
Нет Electron в рантайме бина: в собранных бандлах нет require("electron")/from "electron" (grep по dist-cli/*.js), установка и запуск проходят без зависимостей приложения.
Регрессии: pnpm typecheck, pnpm lint, pnpm test — зелёные; существующие скрипты analyze:session / analyze:sessions (tsx-путь) не изменены.
Activity
axisrow commentedon Sep 25, 2026
Acceptance criteria (зафиксировано до реализации)
Доказательство — через собранный tarball, а не через tsx в репо:
pnpm packс чистого состояния (безdist-cli/) даёт tarball, внутри которого толькоpackage.json+ собранные CLI-артефактыdist-cli/(никакихsrc/,out/,dist-electron/). Проверка:tar -tzf./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 .).require("electron")/from "electron"(grep поdist-cli/*.js), установка и запуск проходят без зависимостей приложения.pnpm typecheck,pnpm lint,pnpm test— зелёные; существующие скриптыanalyze:session/analyze:sessions(tsx-путь) не изменены.chore: ignore dist-cli/ build output (#22)
chore(cli): drop dead publicDir from build options (#22)