[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-75012":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":12,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":15,"starSnapshotCount":15,"syncStatus":36,"lastSyncTime":37,"discoverSource":38},75012,"cli-continues","yigitkonur\u002Fcli-continues","yigitkonur","resume any AI coding session in another tool — Claude Code, Copilot, Gemini, Codex, Cursor",null,"TypeScript",1252,21,5,3,0,7,27,85,88.03,"MIT License",false,"main",true,[25,26,27,28,29,30,31,32],"ai-coding-assistant","claude-code","cli","context-transfer","cursor","gemini-cli","github-copilot","session-management","2026-06-12 04:01:16","# continues\n\n> You hit the rate limit mid-debug. 30 messages of context — file changes, architecture decisions, half-finished refactors — and now you either wait hours or start fresh in another tool. **`continues` grabs your session from whichever AI coding tool you were using and hands it off to another one.** Conversation history, file changes, working state — all of it comes along.\n\n```bash\nnpx continues\n```\n\nhttps:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F6945f3a5-bd19-45ab-9702-6df8e165a734\n\n\n[![npm version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fcontinues.svg)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fcontinues)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n\n## Supported tools\n\n16 AI coding agents, any-to-any handoff:\n\n**Claude Code** · **Codex** · **GitHub Copilot CLI** · **Gemini CLI** · **Cursor** · **Amp** · **Cline** · **Roo Code** · **Kilo Code** · **Kiro** · **Crush** · **OpenCode** · **Factory Droid** · **Antigravity** · **Kimi CLI** · **Qwen Code**\n\nThat's 240 cross-tool handoff paths. Pick any source, pick any destination — it works.\n\n## Install\n\nNo install needed — just run `npx continues`. Or install globally:\n\n```bash\nnpm install -g continues    # gives you `continues` and `cont`\n```\n\n## How it works\n\n1. **Discovery** — scans session directories for all 16 tools\n2. **Parsing** — reads each tool's native format (JSONL, JSON, SQLite, YAML — they're all different)\n3. **Extraction** — pulls recent messages, file changes, tool activity, AI reasoning\n4. **Handoff** — generates a structured context doc and injects it into the target tool\n\nThe handoff document is designed so the receiving agent immediately understands what you were doing, what files were touched, what commands ran, and what's left to do.\n\n## Usage\n\n### Interactive (default)\n\nJust run `continues`. It finds all your sessions, lets you pick one, and asks where to continue:\n\n```\n┌  continues — pick up where you left off\n│\n│  Found 1842 sessions across 16 CLI tools\n│    claude: 723  codex: 72  cursor: 68  copilot: 39  ...\n│\n◆  Select a session\n│  [claude]   2026-02-19 05:28  my-project    Debugging SSH tunnel config   84a36c5d\n│  [copilot]  2026-02-19 04:41  my-project    Migrate presets from Electron c2f5974c\n│  [codex]    2026-02-18 23:12  my-project    Fix OpenCode SQLite parser    a1e90b3f\n│  ...\n└\n\n◆  Continue in:\n│  ○ Gemini   ○ Codex   ○ Amp   ○ Kiro   ...\n└\n```\n\nWhen you run from a project directory, sessions from that directory are prioritized.\n\n### Quick resume\n\nSkip the picker entirely — resume the Nth most recent session from a tool:\n\n```bash\ncontinues claude        # latest Claude session\ncontinues codex 3       # 3rd most recent Codex\ncontinues amp           # latest Amp\ncontinues cline         # latest Cline\ncontinues kiro          # latest Kiro\ncontinues crush         # latest Crush\ncontinues kimi          # latest Kimi\ncontinues qwen-code     # latest Qwen Code\n```\n\nWorks for all 16 tools. This uses **native resume** — same tool, full history, no context injection.\n\n### Cross-tool handoff\n\nThis is the main thing. Start in one tool, finish in another:\n\n```bash\n# Hit the Claude rate limit? Hand it off to Gemini:\ncontinues resume abc123 --in gemini\n\n# Or pass flags through to the destination tool:\ncontinues resume abc123 --in codex --yolo --search --add-dir \u002Ftmp\n\n# Or print the exact handoff prompt without launching the target tool:\ncontinues resume abc123 --in codex --debug-prompt\n```\n\n`continues` maps common flags (model, sandbox, auto-approve, extra dirs) to the target tool's equivalent. Anything it doesn't recognize gets passed through as-is.\n\n`--debug-prompt` is for handoff inspection and testing. It writes the handoff file as usual, then prints the exact prompt that would be passed to the target agent and exits without launching it.\n\n### Scripting & CI\n\n```bash\ncontinues list                          # table output\ncontinues list --source claude --json   # JSON, filtered\ncontinues list --jsonl -n 10            # JSONL, last 10\ncontinues scan                          # discovery stats\ncontinues scan --rebuild                # force re-index\n```\n\n### Inspect (for debugging)\n\nSee exactly what gets parsed and what ends up in the handoff:\n\n```bash\ncontinues inspect abc123                              # diagnostic view\ncontinues inspect abc123 --preset full --write-md handoff.md   # dump full markdown\ncontinues inspect abc123 --truncate 50                # compact one-liner view\n```\n\n### Dump (bulk export)\n\nExport all sessions to files for backup, analysis, or archival:\n\n```bash\n# Export all sessions to markdown (default)\ncontinues dump all .\u002Fsessions\n\n# Export specific tool's sessions\ncontinues dump claude .\u002Fsessions\u002Fclaude\ncontinues dump gemini .\u002Fsessions\u002Fgemini\n\n# Export as JSON instead of markdown\ncontinues dump all .\u002Fsessions --json\n\n# Control verbosity with presets\ncontinues dump all .\u002Fsessions --preset full\n\n# Limit number of sessions\ncontinues dump all .\u002Fsessions --limit 50\n```\n\nFile naming: `{source}_{id}.md` or `{source}_{id}.json`\n\n## Verbosity control\n\nNot every handoff needs to be a novel. Four presets control how much detail goes in:\n\n| Preset | Messages | Tool samples | Subagent detail | When to use |\n|:-------|:---------|:-------------|:----------------|:------------|\n| `minimal` | 3 | 0 | None | Quick context, token-constrained targets |\n| `standard` | 10 | 5 | 500 chars | Default — good balance |\n| `verbose` | 20 | 10 | 2000 chars | Debugging, complex multi-file tasks |\n| `full` | 50 | All | Everything | Complete session capture |\n\n```bash\ncontinues resume abc123 --preset full\n```\n\n### YAML config\n\nFor per-project defaults, drop a `.continues.yml` in your project root:\n\n```yaml\npreset: verbose\nrecentMessages: 15\nshell:\n  maxSamples: 10\n  stdoutLines: 20\n```\n\nResolution order: `--config \u003Cpath>` → `.continues.yml` in cwd → `~\u002F.continues\u002Fconfig.yml` → `standard` preset. See `.continues.example.yml` for the full reference.\n\n## What gets extracted\n\nEvery tool stores sessions differently — different formats, different schemas, different paths. Here's what `continues` reads:\n\n| Tool | Format | Where it lives |\n|:-----|:-------|:---------------|\n| Claude Code | JSONL | `~\u002F.claude\u002Fprojects\u002F` |\n| Codex | JSONL | `~\u002F.codex\u002Fsessions\u002F` |\n| Copilot | YAML + JSONL | `~\u002F.copilot\u002Fsession-state\u002F` |\n| Gemini CLI | JSON | `~\u002F.gemini\u002Ftmp\u002F*\u002Fchats\u002F` |\n| OpenCode | SQLite | `~\u002F.local\u002Fshare\u002Fopencode\u002Fstorage\u002F` |\n| Factory Droid | JSONL + JSON | `~\u002F.factory\u002Fsessions\u002F` |\n| Cursor | JSONL | `~\u002F.cursor\u002Fprojects\u002F*\u002Fagent-transcripts\u002F` |\n| Amp | JSON | `~\u002F.local\u002Fshare\u002Famp\u002Fthreads\u002F` |\n| Kiro | JSON | `~\u002FLibrary\u002FApplication Support\u002FKiro\u002Fworkspace-sessions\u002F` |\n| Crush | SQLite | `~\u002F.crush\u002Fcrush.db` |\n| Cline | JSON | VS Code `globalStorage\u002Fsaoudrizwan.claude-dev\u002Ftasks\u002F` |\n| Roo Code | JSON | VS Code `globalStorage\u002Frooveterinaryinc.roo-cline\u002Ftasks\u002F` |\n| Kilo Code | JSON | VS Code `globalStorage\u002Fkilocode.kilo-code\u002Ftasks\u002F` |\n| Antigravity | PB + brain artifacts + optional live RPC | `~\u002F.gemini\u002Fantigravity\u002F` |\n| Kimi CLI | JSONL + JSON | `~\u002F.kimi\u002Fsessions\u002F` |\n| Qwen Code | JSONL | `~\u002F.qwen\u002Fprojects\u002F*\u002Fchats\u002F` |\n\nAll reads are **read-only** — `continues` never modifies your session files. Index cached at `~\u002F.continues\u002Fsessions.jsonl` (5-min TTL, auto-refresh).\n\n### Tool activity in handoffs\n\nThe handoff document includes a **Tool Activity** section so the target agent knows what was *done*, not just what was *said*:\n\n```markdown\n## Tool Activity\n- **Bash** (×47): `$ npm test → exit 0` · `$ git status → exit 0` · `$ npm run build → exit 1`\n- **Edit** (×12): `edit src\u002Fauth.ts` · `edit src\u002Fapi\u002Froutes.ts` · `edit tests\u002Fauth.test.ts`\n- **Grep** (×8): `grep \"handleLogin\" src\u002F` · `grep \"JWT_SECRET\"` · `grep \"middleware\"`\n\n## Session Notes\n- **Model**: claude-sonnet-4\n- **Tokens**: 45,230 in \u002F 12,847 out\n- 💭 Need to handle the edge case where token refresh races with logout\n```\n\nThis works for all 16 tools — bash commands, file reads\u002Fwrites\u002Fedits, grep\u002Fglob, MCP tool calls, thinking blocks, subagent dispatches, token usage, model info. The shared `SummaryCollector` keeps the format consistent regardless of source.\n\nEvery handoff also includes the **full file path** of the original session, so the receiving tool can trace back to the raw data if needed.\n\n## Commands reference\n\n| Command | What it does |\n|:--------|:-------------|\n| `continues` | Interactive TUI picker |\n| `continues list` | List sessions (`--source`, `--json`, `--jsonl`, `-n`) |\n| `continues resume \u003Cid>` | Resume by ID (`--in \u003Ctool>`, `--preset`) |\n| `continues inspect \u003Cid>` | Diagnostic view (`--truncate`, `--write-md`, `--preset`) |\n| `continues dump \u003Csource\\|all> \u003Cdir>` | Bulk export sessions (`--json`, `--preset`, `--limit`) |\n| `continues scan` | Discovery stats (`--rebuild`) |\n| `continues rebuild` | Force-rebuild session index |\n| `continues \u003Ctool> [n]` | Quick-resume Nth session from any of the 16 tools |\n\nGlobal flags: `--config \u003Cpath>`, `--preset \u003Cname>`, `--verbose`, `--debug`\n\n## Community contributions\n\nThis started as a 7-tool project and grew fast thanks to contributors:\n\n- **Factory Droid support** — [#1](https:\u002F\u002Fgithub.com\u002Fyigitkonur\u002Fcli-continues\u002Fpull\u002F1), first community parser\n- **Cursor AI support** — [#4](https:\u002F\u002Fgithub.com\u002Fyigitkonur\u002Fcli-continues\u002Fpull\u002F4) by [@Evrim267](https:\u002F\u002Fgithub.com\u002FEvrim267), with smart slug-to-path resolution\n- **Single-tool error handling** — [#3](https:\u002F\u002Fgithub.com\u002Fyigitkonur\u002Fcli-continues\u002Fpull\u002F3) by [@barisgirismen](https:\u002F\u002Fgithub.com\u002Fbarisgirismen), clear error when only one CLI is installed\n- **Env var overrides** — [#14](https:\u002F\u002Fgithub.com\u002Fyigitkonur\u002Fcli-continues\u002Fpull\u002F14) by [@yutakobayashidev](https:\u002F\u002Fgithub.com\u002Fyutakobayashidev), respects `CLAUDE_CONFIG_DIR`, `CODEX_HOME`, `GEMINI_CLI_HOME`, `XDG_DATA_HOME`\n\nThe latest batch — **Amp, Kiro, Crush, Cline, Roo Code, Kilo Code, Antigravity, Kimi CLI, and Qwen Code** — was added by reverse-engineering [mnemo](https:\u002F\u002Fgithub.com\u002FPilan-AI\u002Fmnemo)'s Go adapters and adapting the schemas for TypeScript. Along the way we also improved token\u002Fcache\u002Fmodel extraction for the existing Claude, Codex, Cursor, and Gemini parsers.\n\n**Bugs fixed in this round:**\n- Symlink traversal — `fs.Dirent.isDirectory()` returns `false` for symlinks; fixed with `isSymbolicLink() && statSync()` fallback\n- Zero-token display — no longer shows \"0 in \u002F 0 out\" when a session has no token data\n- Key Decisions count — now respects the verbosity config instead of being hardcoded to 5\n\n## Requirements\n\n- **Node.js 22.5+** (uses built-in `node:sqlite` for OpenCode and Crush)\n- At least one of the 16 supported tools installed\n\n## Development\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fyigitkonur\u002Fcli-continues\ncd cli-continues\npnpm install\n\npnpm run dev          # run with tsx, no build needed\npnpm run build        # compile TypeScript\npnpm test             # run tests\npnpm run test:watch   # watch mode\n```\n\nAdding a new tool? Create a parser in `src\u002Fparsers\u002F`, add the tool name to `src\u002Ftypes\u002Ftool-names.ts`, register it in `src\u002Fparsers\u002Fregistry.ts`. The registry has a compile-time completeness check — if you add a name but forget the parser, it throws at import.\n\n## License\n\nMIT © [Yigit Konur](https:\u002F\u002Fgithub.com\u002Fyigitkonur)\n","`continues` 是一个用于在不同AI编码工具之间无缝切换会话的命令行工具。它支持Claude Code、GitHub Copilot CLI、Gemini CLI等16种AI编码助手之间的上下文转移，能够将对话历史、文件更改和工作状态从一个工具迁移到另一个工具中。该工具使用TypeScript编写，通过解析各工具特有的数据格式（如JSONL、JSON、SQLite、YAML），提取关键信息并生成结构化文档供目标工具使用。适用于需要频繁更换开发环境或遇到API调用限制时，开发者希望继续之前的工作而不丢失进度的场景。",2,"2026-06-11 03:51:57","high_star"]