[PR #15] [MERGED] v4.0.0 — 14 agents, env var overrides, verbosity config, inspect CLI #21

Closed
opened 2026-03-04 01:39:17 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/yigitkonur/cli-continues/pull/15
Author: @yigitkonur
Created: 2/25/2026
Status: Merged
Merged: 2/25/2026
Merged by: @yigitkonur

Base: mainHead: feat/v4-14-agents-env-vars


📝 Commits (10+)

  • fa1a7f4 feat: YAML verbosity config, inspect CLI, fix 10 parsing gaps
  • 22f14ca feat: add 7 new agent parsers, refactor existing ones from mnemo insights
  • ecc9847 fix: symlink support in fs-helpers, add test fixtures for all 7 new agents
  • 2f0606d fix: audit fixes — zero-token display, config-driven highlights, type cleanup
  • fd9ff9c docs: update README and CLI text for all 14 supported agents
  • 6b69a37 docs: rewrite README with human voice, reference community PRs
  • 27f0675 fix: respect tool-specific env vars for session storage paths
  • f577330 chore: bump version to v4.0.0
  • b95b96d fix: address PR review — broken symlinks, cline duplicates, inspect format handling
  • ce23b13 feat: v4 banner refresh + one-time GitHub star prompt

📊 Changes

45 files changed (+7102 additions, -392 deletions)

View changed files

.continues.example.yml (+107 -0)
📝 README.md (+133 -219)
package-lock.json (+2160 -0)
📝 package.json (+2 -2)
📝 src/__tests__/e2e-conversions.test.ts (+36 -1)
📝 src/__tests__/extract-handoffs.ts (+29 -1)
📝 src/cli.ts (+17 -1)
src/commands/inspect.ts (+772 -0)
📝 src/commands/pick.ts (+2 -0)
src/config/index.ts (+5 -0)
src/config/verbosity.ts (+545 -0)
📝 src/display/banner.ts (+15 -13)
📝 src/display/help.ts (+2 -1)
src/display/star-prompt.ts (+79 -0)
src/parsers/amp.ts (+292 -0)
src/parsers/antigravity.ts (+224 -0)
📝 src/parsers/claude.ts (+362 -14)
src/parsers/cline.ts (+457 -0)
📝 src/parsers/codex.ts (+18 -10)
📝 src/parsers/copilot.ts (+13 -7)

...and 25 more files

📄 Description

what changed

this doubles the agent count from 7 to 14 and adds a bunch of stuff people have been asking for.

new agents

added parsers for Amp, Kiro, Crush, Cline, Roo Code, Kilo Code, and Antigravity. each one reads the tool's native session format — JSON threads for Amp, workspace sessions for Kiro, SQLite for Crush, VS Code globalStorage for the Cline family, and binary-prefixed JSONL for Antigravity.

the Cline parser is a single unified module that covers Cline, Roo Code, and Kilo Code (they share the same ui_messages.json schema, just different extension IDs and globalStorage paths). scans Code, Code Insiders, Cursor, and Windsurf directories.

all seven were built by reverse-engineering mnemo's Go adapters and translating the schemas to TypeScript.

env var overrides (implements #14)

parsers now check each tool's official environment variable before falling back to hardcoded paths. this means if you set CLAUDE_CONFIG_DIR or CODEX_HOME or GEMINI_CLI_HOME or XDG_DATA_HOME, continues will find your sessions there instead of silently missing them.

covers 6 parsers total — the 4 from @yutakobayashidev's PR #14 plus Amp and Antigravity:

tool env var what it overrides
Claude Code CLAUDE_CONFIG_DIR ~/.claude
Codex CLI CODEX_HOME ~/.codex
Gemini CLI GEMINI_CLI_HOME os.homedir() (.gemini still appended)
OpenCode XDG_DATA_HOME ~/.local/share
Amp XDG_DATA_HOME ~/.local/share
Antigravity GEMINI_CLI_HOME os.homedir() (shares Gemini's .gemini/ base)

the registry also exposes an envVar field per adapter, so the help output now shows (override: $CLAUDE_CONFIG_DIR) next to the storage path when applicable.

verbosity config

new YAML-based configuration system. four presets (minimal, standard, verbose, full) control how much detail goes into handoff documents — message count, tool samples, subagent detail, thinking block highlights, the works. can be set via --preset, .continues.yml, or ~/.continues/config.yml.

inspect command

continues inspect <id> runs the full parsing pipeline and shows exactly what was parsed, how much made it into the markdown, and the conversion ratio. supports --truncate, --write-md, and --preset. useful for debugging parsers and verifying handoff quality.

existing parser improvements

  • claude.ts — token/cache/model extraction from message.usage, subagent parsing
  • codex.ts — reasoning token tracking for o-series models
  • cursor.ts — token extraction, stream-based session counting
  • gemini.ts — legacy session path support (~/.gemini/sessions/)

bugs fixed

  • symlink traversalfs.Dirent.isDirectory() returns false for symlinks. fixed with isSymbolicLink() && statSync() fallback in fs-helpers.ts
  • zero-token display — markdown no longer shows "0 in / 0 out" for sessions without token data
  • hardcoded Key Decisions — now respects the verbosity config instead of always showing 5
  • stale type casts — removed 5 unnecessary as SessionSource casts after expanding TOOL_NAMES

other

  • registry completeness assertion — throws at module load if any tool is in TOOL_NAMES but missing from the registry
  • test fixtures for all 7 new agents (10 fixture files + test harness)
  • README rewritten from scratch with less AI-doc energy
  • version bump 3.0.1 → 4.0.0

breaking changes

none, technically. all existing parsers still work the same way. the version bump is because going from 7→14 agents, adding env var overrides, and adding a config system felt like a major release.

test plan

  • npx tsc -b — clean build
  • continues scan --rebuild — all 14 agents detected
  • continues inspect with --preset minimal/standard/verbose/full — all produce valid markdown
  • CLAUDE_CONFIG_DIR=/tmp/empty continues scan — correctly finds 0 Claude sessions (env var override works)
  • all 7 new agents produce valid handoff markdown via test fixtures
  • existing Claude/Codex/Copilot/Gemini/OpenCode/Droid/Cursor parsers still work unchanged

refs #14


Open with Devin

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/yigitkonur/cli-continues/pull/15 **Author:** [@yigitkonur](https://github.com/yigitkonur) **Created:** 2/25/2026 **Status:** ✅ Merged **Merged:** 2/25/2026 **Merged by:** [@yigitkonur](https://github.com/yigitkonur) **Base:** `main` ← **Head:** `feat/v4-14-agents-env-vars` --- ### 📝 Commits (10+) - [`fa1a7f4`](https://github.com/yigitkonur/cli-continues/commit/fa1a7f45a2dd92254636cec4eb2ed1f844d19c81) feat: YAML verbosity config, inspect CLI, fix 10 parsing gaps - [`22f14ca`](https://github.com/yigitkonur/cli-continues/commit/22f14cabd4ac17de63145d51ead55a1e078a7976) feat: add 7 new agent parsers, refactor existing ones from mnemo insights - [`ecc9847`](https://github.com/yigitkonur/cli-continues/commit/ecc9847c454148f4aab17a82db9605dbbaee0b2b) fix: symlink support in fs-helpers, add test fixtures for all 7 new agents - [`2f0606d`](https://github.com/yigitkonur/cli-continues/commit/2f0606dbf8c4af386a2c4f013e07e52f4c9ec219) fix: audit fixes — zero-token display, config-driven highlights, type cleanup - [`fd9ff9c`](https://github.com/yigitkonur/cli-continues/commit/fd9ff9cd9380b5c65454a54d3182268459dcfcde) docs: update README and CLI text for all 14 supported agents - [`6b69a37`](https://github.com/yigitkonur/cli-continues/commit/6b69a37230e5442610ff5ec1db55255e9b5f8ddb) docs: rewrite README with human voice, reference community PRs - [`27f0675`](https://github.com/yigitkonur/cli-continues/commit/27f06757f342e43dfea7a7a9bac07b6183be5e4b) fix: respect tool-specific env vars for session storage paths - [`f577330`](https://github.com/yigitkonur/cli-continues/commit/f5773303abe839bffd674f6d8b4537f8442946e9) chore: bump version to v4.0.0 - [`b95b96d`](https://github.com/yigitkonur/cli-continues/commit/b95b96d95577b623dc7eb4a96fe0eacdf0ff2801) fix: address PR review — broken symlinks, cline duplicates, inspect format handling - [`ce23b13`](https://github.com/yigitkonur/cli-continues/commit/ce23b13f4d6350a47e1c2994e269077ed0545769) feat: v4 banner refresh + one-time GitHub star prompt ### 📊 Changes **45 files changed** (+7102 additions, -392 deletions) <details> <summary>View changed files</summary> ➕ `.continues.example.yml` (+107 -0) 📝 `README.md` (+133 -219) ➕ `package-lock.json` (+2160 -0) 📝 `package.json` (+2 -2) 📝 `src/__tests__/e2e-conversions.test.ts` (+36 -1) 📝 `src/__tests__/extract-handoffs.ts` (+29 -1) 📝 `src/cli.ts` (+17 -1) ➕ `src/commands/inspect.ts` (+772 -0) 📝 `src/commands/pick.ts` (+2 -0) ➕ `src/config/index.ts` (+5 -0) ➕ `src/config/verbosity.ts` (+545 -0) 📝 `src/display/banner.ts` (+15 -13) 📝 `src/display/help.ts` (+2 -1) ➕ `src/display/star-prompt.ts` (+79 -0) ➕ `src/parsers/amp.ts` (+292 -0) ➕ `src/parsers/antigravity.ts` (+224 -0) 📝 `src/parsers/claude.ts` (+362 -14) ➕ `src/parsers/cline.ts` (+457 -0) 📝 `src/parsers/codex.ts` (+18 -10) 📝 `src/parsers/copilot.ts` (+13 -7) _...and 25 more files_ </details> ### 📄 Description ## what changed this doubles the agent count from 7 to 14 and adds a bunch of stuff people have been asking for. ### new agents added parsers for **Amp**, **Kiro**, **Crush**, **Cline**, **Roo Code**, **Kilo Code**, and **Antigravity**. each one reads the tool's native session format — JSON threads for Amp, workspace sessions for Kiro, SQLite for Crush, VS Code globalStorage for the Cline family, and binary-prefixed JSONL for Antigravity. the Cline parser is a single unified module that covers Cline, Roo Code, and Kilo Code (they share the same `ui_messages.json` schema, just different extension IDs and globalStorage paths). scans Code, Code Insiders, Cursor, and Windsurf directories. all seven were built by reverse-engineering [mnemo](https://github.com/Pilan-AI/mnemo)'s Go adapters and translating the schemas to TypeScript. ### env var overrides (implements #14) parsers now check each tool's official environment variable before falling back to hardcoded paths. this means if you set `CLAUDE_CONFIG_DIR` or `CODEX_HOME` or `GEMINI_CLI_HOME` or `XDG_DATA_HOME`, continues will find your sessions there instead of silently missing them. covers 6 parsers total — the 4 from @yutakobayashidev's PR #14 plus Amp and Antigravity: | tool | env var | what it overrides | |------|---------|-------------------| | Claude Code | `CLAUDE_CONFIG_DIR` | `~/.claude` | | Codex CLI | `CODEX_HOME` | `~/.codex` | | Gemini CLI | `GEMINI_CLI_HOME` | `os.homedir()` (`.gemini` still appended) | | OpenCode | `XDG_DATA_HOME` | `~/.local/share` | | Amp | `XDG_DATA_HOME` | `~/.local/share` | | Antigravity | `GEMINI_CLI_HOME` | `os.homedir()` (shares Gemini's `.gemini/` base) | the registry also exposes an `envVar` field per adapter, so the help output now shows `(override: $CLAUDE_CONFIG_DIR)` next to the storage path when applicable. ### verbosity config new YAML-based configuration system. four presets (`minimal`, `standard`, `verbose`, `full`) control how much detail goes into handoff documents — message count, tool samples, subagent detail, thinking block highlights, the works. can be set via `--preset`, `.continues.yml`, or `~/.continues/config.yml`. ### inspect command `continues inspect <id>` runs the full parsing pipeline and shows exactly what was parsed, how much made it into the markdown, and the conversion ratio. supports `--truncate`, `--write-md`, and `--preset`. useful for debugging parsers and verifying handoff quality. ### existing parser improvements - **claude.ts** — token/cache/model extraction from `message.usage`, subagent parsing - **codex.ts** — reasoning token tracking for o-series models - **cursor.ts** — token extraction, stream-based session counting - **gemini.ts** — legacy session path support (`~/.gemini/sessions/`) ### bugs fixed - **symlink traversal** — `fs.Dirent.isDirectory()` returns `false` for symlinks. fixed with `isSymbolicLink() && statSync()` fallback in `fs-helpers.ts` - **zero-token display** — markdown no longer shows "0 in / 0 out" for sessions without token data - **hardcoded Key Decisions** — now respects the verbosity config instead of always showing 5 - **stale type casts** — removed 5 unnecessary `as SessionSource` casts after expanding TOOL_NAMES ### other - registry completeness assertion — throws at module load if any tool is in TOOL_NAMES but missing from the registry - test fixtures for all 7 new agents (10 fixture files + test harness) - README rewritten from scratch with less AI-doc energy - version bump 3.0.1 → 4.0.0 ## breaking changes none, technically. all existing parsers still work the same way. the version bump is because going from 7→14 agents, adding env var overrides, and adding a config system felt like a major release. ## test plan - [x] `npx tsc -b` — clean build - [x] `continues scan --rebuild` — all 14 agents detected - [x] `continues inspect` with `--preset minimal/standard/verbose/full` — all produce valid markdown - [x] `CLAUDE_CONFIG_DIR=/tmp/empty continues scan` — correctly finds 0 Claude sessions (env var override works) - [x] all 7 new agents produce valid handoff markdown via test fixtures - [x] existing Claude/Codex/Copilot/Gemini/OpenCode/Droid/Cursor parsers still work unchanged refs #14 <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/yigitkonur/cli-continues/pull/15" target="_blank"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-03-04 01:39:17 +03:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/cli-continues#21
No description provided.