diff --git a/.gitignore b/.gitignore
index 8ad33fd3c..fd1fa9a4d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,4 +15,5 @@ aider/_version.py
.venv/
.#*
.gitattributes
-tmp.benchmarks/
\ No newline at end of file
+tmp.benchmarks/
+.docker_bash_history
\ No newline at end of file
diff --git a/HISTORY.md b/HISTORY.md
index 6a560a5f0..d113d0adf 100644
--- a/HISTORY.md
+++ b/HISTORY.md
@@ -1,6 +1,96 @@
# Release history
-### main branch
+### Aider v0.86.0
+
+- Expanded GPT-5 model support across family variants and providers (OpenAI, Azure, OpenRouter), including dated and chat/mini/nano variants.
+- Aider wrote 88% of the code in this release.
+
+### Aider v0.85.5
+
+- Enforced diff edit format for GPT-5 models.
+- Added support for the reasoning_effort setting for GPT-5 models.
+- Fixed model detection to correctly apply GPT-5 settings to versioned names (gpt-5 and gpt-5-2025-08-07).
+
+### Aider v0.85.4
+
+- Added support for openai/gpt-5
+- Fixed analytics to support the latest PostHog SDK event-capture API.
+- Disabled temperature when using GPT-5 models for more deterministic outputs.
+
+### Aider v0.85.3
+
+- Bumped dependencies to pick up latest litellm==1.75.0.
+
+### Aider v0.85.2
+
+- Added support for Grok-4 via `xai/grok-4` and `openrouter/x-ai/grok-4` model names.
+- Added support for `gemini/gemini-2.5-flash-lite-preview-06-17` model, by Tamir Zahavi-Brunner.
+- `/clear` now prints βAll chat history cleared.β so you know it worked, by Zexin Yuan.
+- `/undo` output now shows only the first line of each commit message, making it easier to read.
+- Fixed an issue where new settings for an existing model didn't replace the old ones, by Andrew Grigorev.
+- Added support for `openrouter/moonshotai/kimi-k2` model, by Jack Harrington.
+
+### Aider v0.85.1
+
+- Display model announcements with no-arg `/model` command.
+
+### Aider v0.85.0
+
+- Support for Responses API models like o1-pro, o3-pro.
+- Updated pricing for o3.
+- Added support for new Gemini models including `gemini-2.5-pro`, `gemini-2.5-flash`, and `gemini-2.5-pro-preview-06-05` with thinking tokens support.
+- Updated model aliases: `flash` now points to `gemini-2.5-flash` and `gemini` now points to `gemini-2.5-pro`.
+- Added `--add-gitignore-files` flag to enable adding files listed in .gitignore to Aider's editing scope, by omarcinkonis.
+- Added `--commit-language` option to specify the language for commit messages, by Kyosuke Takayama.
+- Enhanced thinking tokens support: can now be disabled by setting to 0, and improved help text with examples.
+- Added MATLAB language support for repository maps, by Matthew Tofano.
+- Added support for OpenAI o3-pro model across multiple providers.
+- Improved GitHub Copilot token handling with better validation and error messages, by Vincent Taverna and Sebastian Estrella.
+- Fixed encoding issues in git diff output and LLM history logging.
+- Enhanced commit message generation to use system prompt prefixes, by Luke Reeves.
+- Improved inline code rendering in Rich markdown output, by Vamsi Talupula.
+- Fixed Vertex AI model name prefixes in settings, by Wietse Venema.
+- Improved `/read-only` command to resolve literal paths correctly, by Matteo Landi.
+- Skip expensive file tracking operations when `--skip-sanity-check-repo` is enabled for better performance, by Makar Ivashko.
+- Ensure pip is available before package installation.
+- Auto-create parent directories for chat history files to prevent startup errors, by contributor.
+- Fixed search block regex to accept optional closing tags when working with HTML content, by Mathis Beer.
+- Co-authored-by attribution is now enabled by default for commit messages.
+- Added Clojure language support for repository maps, by Garrett Hopper.
+- Added custom PostHog analytics configuration options with `--analytics-posthog-host` and `--analytics-posthog-project-api-key` flags, by Vasil Markoukin.
+- Optimized chat history summarization performance, by jayeshthk.
+- Improved kebab-case identifier recognition in repository maps for better code analysis.
+- Increased max tokens for Deepseek models to 65536 for better performance.
+- Aider wrote 21% of the code in this release.
+
+### Aider v0.84.0
+
+- Added support for new Claude models including the Sonnet 4 and Opus 4 series (e.g., `claude-sonnet-4-20250514`,
+`claude-opus-4-20250514`) across various providers. The default `sonnet` and `opus` aliases were updated to these newer
+versions.
+- Added support for the `vertex_ai/gemini-2.5-flash-preview-05-20` model.
+- Fixed OpenRouter token cost calculation for improved accuracy.
+- Updated default OpenRouter models during onboarding to `deepseek/deepseek-r1:free` for the free tier and
+`anthropic/claude-sonnet-4` for paid tiers.
+- Automatically refresh GitHub Copilot tokens when used as OpenAI API keys, by Lih Chen.
+- Aider wrote 79% of the code in this release.
+
+### Aider v0.83.2
+
+- Bumped configargparse to 1.7.1 as 1.7 was pulled.
+- Added shell tab completion for file path arguments (by saviour) and for `--edit-format`/`--editor-edit-format` options.
+- Improved OpenRouter model metadata handling by introducing a local cache, increasing reliability and performance.
+- The `/settings` command now displays detailed metadata for active main, editor, and weak models.
+- Fixed an issue where files explicitly added via the command line were not correctly ignored if listed in `.gitignore`.
+- Improved automatic commit messages by providing more context during their generation, by wangboxue.
+
+### Aider v0.83.1
+
+- Improved user language detection by correctly normalizing hyphenated language codes (e.g., `en-US` to `en`) and enhancing the validation of locale results.
+- Prevented Aider from instructing the LLM to reply in 'C' or 'POSIX' when these are detected as the system locale.
+- Displayed a spinner with the model name when generating commit messages.
+
+### Aider v0.83.0
- Added support for `gemini-2.5-pro-preview-05-06` models.
- Added support for `qwen3-235b` models.
@@ -404,7 +494,7 @@
- [Aider works with LLM web chat UIs](https://aider.chat/docs/usage/copypaste.html).
- New `--copy-paste` mode.
- New `/copy-context` command.
-- [Set API keys and other environment variables for all providers from command line or yaml conf file](https://aider.chat/docs/config/aider_conf.html#storing-llm-keys).
+- [Set API keys and other environment variables for all providers from command line or YAML conf file](https://aider.chat/docs/config/aider_conf.html#storing-llm-keys).
- New `--api-key provider=key` setting.
- New `--set-env VAR=value` setting.
- Added bash and zsh support to `--watch-files`.
@@ -572,7 +662,7 @@
### Aider v0.59.1
-- Check for obsolete `yes: true` in yaml config, show helpful error.
+- Check for obsolete `yes: true` in YAML config, show helpful error.
- Model settings for openrouter/anthropic/claude-3.5-sonnet:beta
### Aider v0.59.0
@@ -582,7 +672,7 @@
- Still auto-completes the full paths of the repo files like `/add`.
- Now supports globs like `src/**/*.py`
- Renamed `--yes` to `--yes-always`.
- - Now uses `AIDER_YES_ALWAYS` env var and `yes-always:` yaml key.
+ - Now uses `AIDER_YES_ALWAYS` env var and `yes-always:` YAML key.
- Existing YAML and .env files will need to be updated.
- Can still abbreviate to `--yes` on the command line.
- Config file now uses standard YAML list syntax with ` - list entries`, one per line.
@@ -789,7 +879,7 @@
- Use `--map-refresh ` to configure.
- Improved cost estimate logic for caching.
- Improved editing performance on Jupyter Notebook `.ipynb` files.
-- Show which config yaml file is loaded with `--verbose`.
+- Show which config YAML file is loaded with `--verbose`.
- Bumped dependency versions.
- Bugfix: properly load `.aider.models.metadata.json` data.
- Bugfix: Using `--msg /ask ...` caused an exception.
diff --git a/README.md b/README.md
index d4677b58c..c04b775f6 100644
--- a/README.md
+++ b/README.md
@@ -27,13 +27,13 @@ cog.out(text)
+src="https://img.shields.io/badge/π¦%20Installs-4.1M-2ecc71?style=flat-square&labelColor=555555"/>
+src="https://img.shields.io/badge/π%20Singularity-88%25-e74c3c?style=flat-square&labelColor=555555"/>
@@ -136,43 +136,45 @@ See the [installation instructions](https://aider.chat/docs/install.html) and [u
- [LLM Leaderboards](https://aider.chat/docs/leaderboards/)
- [GitHub Repository](https://github.com/Aider-AI/aider)
- [Discord Community](https://discord.gg/Y7X7bhMQFV)
+- [Release notes](https://aider.chat/HISTORY.html)
- [Blog](https://aider.chat/blog/)
## Kind Words From Users
-- *"My life has changed... There's finally an AI coding tool that's good enough to keep up with me... Aider... It's going to rock your world."* β [Eric S. Raymond](https://x.com/esrtweet/status/1910809356381413593)
-- *"The best free open source AI coding assistant."* β [IndyDevDan](https://youtu.be/YALpX8oOn78)
-- *"The best AI coding assistant so far."* β [Matthew Berman](https://www.youtube.com/watch?v=df8afeb1FY8)
-- *"Aider ... has easily quadrupled my coding productivity."* β [SOLAR_FIELDS](https://news.ycombinator.com/item?id=36212100)
-- *"It's a cool workflow... Aider's ergonomics are perfect for me."* β [qup](https://news.ycombinator.com/item?id=38185326)
-- *"It's really like having your senior developer live right in your Git repo - truly amazing!"* β [rappster](https://github.com/Aider-AI/aider/issues/124)
-- *"What an amazing tool. It's incredible."* β [valyagolev](https://github.com/Aider-AI/aider/issues/6#issue-1722897858)
-- *"Aider is such an astounding thing!"* β [cgrothaus](https://github.com/Aider-AI/aider/issues/82#issuecomment-1631876700)
-- *"It was WAY faster than I would be getting off the ground and making the first few working versions."* β [Daniel Feldman](https://twitter.com/d_feldman/status/1662295077387923456)
-- *"THANK YOU for Aider! It really feels like a glimpse into the future of coding."* β [derwiki](https://news.ycombinator.com/item?id=38205643)
-- *"It's just amazing. It is freeing me to do things I felt were out my comfort zone before."* β [Dougie](https://discord.com/channels/1131200896827654144/1174002618058678323/1174084556257775656)
-- *"This project is stellar."* β [funkytaco](https://github.com/Aider-AI/aider/issues/112#issuecomment-1637429008)
-- *"Amazing project, definitely the best AI coding assistant I've used."* β [joshuavial](https://github.com/Aider-AI/aider/issues/84)
-- *"I absolutely love using Aider ... It makes software development feel so much lighter as an experience."* β [principalideal0](https://discord.com/channels/1131200896827654144/1133421607499595858/1229689636012691468)
-- *"I have been recovering from multiple shoulder surgeries ... and have used aider extensively. It has allowed me to continue productivity."* β [codeninja](https://www.reddit.com/r/OpenAI/s/nmNwkHy1zG)
-- *"I am an aider addict. I'm getting so much more work done, but in less time."* β [dandandan](https://discord.com/channels/1131200896827654144/1131200896827654149/1135913253483069470)
-- *"After wasting $100 on tokens trying to find something better, I'm back to Aider. It blows everything else out of the water hands down, there's no competition whatsoever."* β [SystemSculpt](https://discord.com/channels/1131200896827654144/1131200896827654149/1178736602797846548)
-- *"Aider is amazing, coupled with Sonnet 3.5 it's quite mind blowing."* β [Josh Dingus](https://discord.com/channels/1131200896827654144/1133060684540813372/1262374225298198548)
-- *"Hands down, this is the best AI coding assistant tool so far."* β [IndyDevDan](https://www.youtube.com/watch?v=MPYFPvxfGZs)
-- *"[Aider] changed my daily coding workflows. It's mind-blowing how a single Python application can change your life."* β [maledorak](https://discord.com/channels/1131200896827654144/1131200896827654149/1258453375620747264)
-- *"Best agent for actual dev work in existing codebases."* β [Nick Dobos](https://twitter.com/NickADobos/status/1690408967963652097?s=20)
-- *"One of my favorite pieces of software. Blazing trails on new paradigms!"* β [Chris Wall](https://x.com/chris65536/status/1905053299251798432)
-- *"Aider has been revolutionary for me and my work."* β [Starry Hope](https://x.com/starryhopeblog/status/1904985812137132056)
-- *"Try aider! One of the best ways to vibe code."* β [Chris Wall](https://x.com/Chris65536/status/1905053418961391929)
-- *"Aider is hands down the best. And it's free and opensource."* β [AriyaSavakaLurker](https://www.reddit.com/r/ChatGPTCoding/comments/1ik16y6/whats_your_take_on_aider/mbip39n/)
-- *"Aider is also my best friend."* β [jzn21](https://www.reddit.com/r/ChatGPTCoding/comments/1heuvuo/aider_vs_cline_vs_windsurf_vs_cursor/m27dcnb/)
-- *"Try Aider, it's worth it."* β [jorgejhms](https://www.reddit.com/r/ChatGPTCoding/comments/1heuvuo/aider_vs_cline_vs_windsurf_vs_cursor/m27cp99/)
-- *"I like aider :)"* β [Chenwei Cui](https://x.com/ccui42/status/1904965344999145698)
-- *"Aider is the precision tool of LLM code gen... Minimal, thoughtful and capable of surgical changes to your codebase all while keeping the developer in control."* β [Reilly Sweetland](https://x.com/rsweetland/status/1904963807237259586)
-- *"Cannot believe aider vibe coded a 650 LOC feature across service and cli today in 1 shot."* - [autopoietist](https://discord.com/channels/1131200896827654144/1131200896827654149/1355675042259796101)
-- *"Oh no the secret is out! Yes, Aider is the best coding tool around. I highly, highly recommend it to anyone."* β [Joshua D Vander Hook](https://x.com/jodavaho/status/1911154899057795218)
-- *"thanks to aider, i have started and finished three personal projects within the last two days"* β [joseph stalzyn](https://x.com/anitaheeder/status/1908338609645904160)
-- *"Been using aider as my daily driver for over a year ... I absolutely love the tool, like beyond words."* β [koleok](https://discord.com/channels/1131200896827654144/1273248471394291754/1356727448372252783)
-- *"Aider ... is the tool to benchmark against."* β [BeetleB](https://news.ycombinator.com/item?id=43930201)
-- *"aider is really cool"* β [kache (@yacineMTB)](https://x.com/yacineMTB/status/1911224442430124387)
+- *"My life has changed... Aider... It's going to rock your world."* β [Eric S. Raymond on X](https://x.com/esrtweet/status/1910809356381413593)
+- *"The best free open source AI coding assistant."* β [IndyDevDan on YouTube](https://youtu.be/YALpX8oOn78)
+- *"The best AI coding assistant so far."* β [Matthew Berman on YouTube](https://www.youtube.com/watch?v=df8afeb1FY8)
+- *"Aider ... has easily quadrupled my coding productivity."* β [SOLAR_FIELDS on Hacker News](https://news.ycombinator.com/item?id=36212100)
+- *"It's a cool workflow... Aider's ergonomics are perfect for me."* β [qup on Hacker News](https://news.ycombinator.com/item?id=38185326)
+- *"It's really like having your senior developer live right in your Git repo - truly amazing!"* β [rappster on GitHub](https://github.com/Aider-AI/aider/issues/124)
+- *"What an amazing tool. It's incredible."* β [valyagolev on GitHub](https://github.com/Aider-AI/aider/issues/6#issue-1722897858)
+- *"Aider is such an astounding thing!"* β [cgrothaus on GitHub](https://github.com/Aider-AI/aider/issues/82#issuecomment-1631876700)
+- *"It was WAY faster than I would be getting off the ground and making the first few working versions."* β [Daniel Feldman on X](https://twitter.com/d_feldman/status/1662295077387923456)
+- *"THANK YOU for Aider! It really feels like a glimpse into the future of coding."* β [derwiki on Hacker News](https://news.ycombinator.com/item?id=38205643)
+- *"It's just amazing. It is freeing me to do things I felt were out my comfort zone before."* β [Dougie on Discord](https://discord.com/channels/1131200896827654144/1174002618058678323/1174084556257775656)
+- *"This project is stellar."* β [funkytaco on GitHub](https://github.com/Aider-AI/aider/issues/112#issuecomment-1637429008)
+- *"Amazing project, definitely the best AI coding assistant I've used."* β [joshuavial on GitHub](https://github.com/Aider-AI/aider/issues/84)
+- *"I absolutely love using Aider ... It makes software development feel so much lighter as an experience."* β [principalideal0 on Discord](https://discord.com/channels/1131200896827654144/1133421607499595858/1229689636012691468)
+- *"I have been recovering from ... surgeries ... aider ... has allowed me to continue productivity."* β [codeninja on Reddit](https://www.reddit.com/r/OpenAI/s/nmNwkHy1zG)
+- *"I am an aider addict. I'm getting so much more work done, but in less time."* β [dandandan on Discord](https://discord.com/channels/1131200896827654144/1131200896827654149/1135913253483069470)
+- *"Aider... blows everything else out of the water hands down, there's no competition whatsoever."* β [SystemSculpt on Discord](https://discord.com/channels/1131200896827654144/1131200896827654149/1178736602797846548)
+- *"Aider is amazing, coupled with Sonnet 3.5 it's quite mind blowing."* β [Josh Dingus on Discord](https://discord.com/channels/1131200896827654144/1133060684540813372/1262374225298198548)
+- *"Hands down, this is the best AI coding assistant tool so far."* β [IndyDevDan on YouTube](https://www.youtube.com/watch?v=MPYFPvxfGZs)
+- *"[Aider] changed my daily coding workflows. It's mind-blowing how ...(it)... can change your life."* β [maledorak on Discord](https://discord.com/channels/1131200896827654144/1131200896827654149/1258453375620747264)
+- *"Best agent for actual dev work in existing codebases."* β [Nick Dobos on X](https://twitter.com/NickADobos/status/1690408967963652097?s=20)
+- *"One of my favorite pieces of software. Blazing trails on new paradigms!"* β [Chris Wall on X](https://x.com/chris65536/status/1905053299251798432)
+- *"Aider has been revolutionary for me and my work."* β [Starry Hope on X](https://x.com/starryhopeblog/status/1904985812137132056)
+- *"Try aider! One of the best ways to vibe code."* β [Chris Wall on X](https://x.com/Chris65536/status/1905053418961391929)
+- *"Freaking love Aider."* β [hztar on Hacker News](https://news.ycombinator.com/item?id=44035015)
+- *"Aider is hands down the best. And it's free and opensource."* β [AriyaSavakaLurker on Reddit](https://www.reddit.com/r/ChatGPTCoding/comments/1ik16y6/whats_your_take_on_aider/mbip39n/)
+- *"Aider is also my best friend."* β [jzn21 on Reddit](https://www.reddit.com/r/ChatGPTCoding/comments/1heuvuo/aider_vs_cline_vs_windsurf_vs_cursor/m27dcnb/)
+- *"Try Aider, it's worth it."* β [jorgejhms on Reddit](https://www.reddit.com/r/ChatGPTCoding/comments/1heuvuo/aider_vs_cline_vs_windsurf_vs_cursor/m27cp99/)
+- *"I like aider :)"* β [Chenwei Cui on X](https://x.com/ccui42/status/1904965344999145698)
+- *"Aider is the precision tool of LLM code gen... Minimal, thoughtful and capable of surgical changes ... while keeping the developer in control."* β [Reilly Sweetland on X](https://x.com/rsweetland/status/1904963807237259586)
+- *"Cannot believe aider vibe coded a 650 LOC feature across service and cli today in 1 shot."* - [autopoietist on Discord](https://discord.com/channels/1131200896827654144/1131200896827654149/1355675042259796101)
+- *"Oh no the secret is out! Yes, Aider is the best coding tool around. I highly, highly recommend it to anyone."* β [Joshua D Vander Hook on X](https://x.com/jodavaho/status/1911154899057795218)
+- *"thanks to aider, i have started and finished three personal projects within the last two days"* β [joseph stalzyn on X](https://x.com/anitaheeder/status/1908338609645904160)
+- *"Been using aider as my daily driver for over a year ... I absolutely love the tool, like beyond words."* β [koleok on Discord](https://discord.com/channels/1131200896827654144/1273248471394291754/1356727448372252783)
+- *"Aider ... is the tool to benchmark against."* β [BeetleB on Hacker News](https://news.ycombinator.com/item?id=43930201)
+- *"aider is really cool"* β [kache on X](https://x.com/yacineMTB/status/1911224442430124387)
diff --git a/aider/__init__.py b/aider/__init__.py
index 1e9327789..00b338056 100644
--- a/aider/__init__.py
+++ b/aider/__init__.py
@@ -1,6 +1,6 @@
from packaging import version
-__version__ = "0.83.1.dev"
+__version__ = "0.86.2.dev"
safe_version = __version__
try:
diff --git a/aider/analytics.py b/aider/analytics.py
index d5c37c10a..f3eb071c3 100644
--- a/aider/analytics.py
+++ b/aider/analytics.py
@@ -70,9 +70,17 @@ class Analytics:
# ephemeral
logfile = None
- def __init__(self, logfile=None, permanently_disable=False):
+ def __init__(
+ self,
+ logfile=None,
+ permanently_disable=False,
+ posthog_host=None,
+ posthog_project_api_key=None,
+ ):
self.logfile = logfile
self.get_or_create_uuid()
+ self.custom_posthog_host = posthog_host
+ self.custom_posthog_project_api_key = posthog_project_api_key
if self.permanently_disable or permanently_disable or not self.asked_opt_in:
self.disable(permanently_disable)
@@ -92,8 +100,8 @@ class Analytics:
# self.mp = Mixpanel(mixpanel_project_token)
self.ph = Posthog(
- project_api_key=posthog_project_api_key,
- host=posthog_host,
+ project_api_key=self.custom_posthog_project_api_key or posthog_project_api_key,
+ host=self.custom_posthog_host or posthog_host,
on_error=self.posthog_error,
enable_exception_autocapture=True,
super_properties=self.get_system_info(), # Add system info to all events
@@ -229,7 +237,7 @@ class Analytics:
self.mp = None # Disable mixpanel on connection errors
if self.ph:
- self.ph.capture(self.user_id, event_name, dict(properties))
+ self.ph.capture(event_name, distinct_id=self.user_id, properties=dict(properties))
if self.logfile:
log_entry = {
diff --git a/aider/args.py b/aider/args.py
index 1543bb07e..5b3fdf07f 100644
--- a/aider/args.py
+++ b/aider/args.py
@@ -40,10 +40,22 @@ def get_parser(default_config_files, git_root):
config_file_parser_class=configargparse.YAMLConfigFileParser,
auto_env_var_prefix="AIDER_",
)
+ # List of valid edit formats for argparse validation & shtab completion.
+ # Dynamically gather them from the registered coder classes so the list
+ # stays in sync if new formats are added.
+ from aider import coders as _aider_coders
+
+ edit_format_choices = sorted(
+ {
+ c.edit_format
+ for c in _aider_coders.__all__
+ if hasattr(c, "edit_format") and c.edit_format is not None
+ }
+ )
group = parser.add_argument_group("Main model")
group.add_argument(
"files", metavar="FILE", nargs="*", help="files to edit with an LLM (optional)"
- )
+ ).complete = shtab.FILE
group.add_argument(
"--model",
metavar="MODEL",
@@ -110,13 +122,13 @@ def get_parser(default_config_files, git_root):
metavar="MODEL_SETTINGS_FILE",
default=".aider.model.settings.yml",
help="Specify a file with aider model settings for unknown models",
- )
+ ).complete = shtab.FILE
group.add_argument(
"--model-metadata-file",
metavar="MODEL_METADATA_FILE",
default=".aider.model.metadata.json",
help="Specify a file with context window and costs for unknown models",
- )
+ ).complete = shtab.FILE
group.add_argument(
"--alias",
action="append",
@@ -131,7 +143,10 @@ def get_parser(default_config_files, git_root):
group.add_argument(
"--thinking-tokens",
type=str,
- help="Set the thinking token budget for models that support it (default: not set)",
+ help=(
+ "Set the thinking token budget for models that support it. Use 0 to disable. (default:"
+ " not set)"
+ ),
)
group.add_argument(
"--verify-ssl",
@@ -149,6 +164,7 @@ def get_parser(default_config_files, git_root):
"--edit-format",
"--chat-mode",
metavar="EDIT_FORMAT",
+ choices=edit_format_choices,
default=None,
help="Specify what edit format the LLM should use (default depends on model)",
)
@@ -183,6 +199,7 @@ def get_parser(default_config_files, git_root):
group.add_argument(
"--editor-edit-format",
metavar="EDITOR_EDIT_FORMAT",
+ choices=edit_format_choices,
default=None,
help="Specify the edit format for the editor model (default: depends on editor model)",
)
@@ -262,13 +279,13 @@ def get_parser(default_config_files, git_root):
metavar="INPUT_HISTORY_FILE",
default=default_input_history_file,
help=f"Specify the chat input history file (default: {default_input_history_file})",
- )
+ ).complete = shtab.FILE
group.add_argument(
"--chat-history-file",
metavar="CHAT_HISTORY_FILE",
default=default_chat_history_file,
help=f"Specify the chat history file (default: {default_chat_history_file})",
- )
+ ).complete = shtab.FILE
group.add_argument(
"--restore-chat-history",
action=argparse.BooleanOptionalAction,
@@ -280,7 +297,7 @@ def get_parser(default_config_files, git_root):
metavar="LLM_HISTORY_FILE",
default=None,
help="Log the conversation with the LLM to this file (for example, .aider.llm.history)",
- )
+ ).complete = shtab.FILE
##########
group = parser.add_argument_group("Output settings")
@@ -396,6 +413,12 @@ def get_parser(default_config_files, git_root):
default=True,
help="Enable/disable adding .aider* to .gitignore (default: True)",
)
+ group.add_argument(
+ "--add-gitignore-files",
+ action=argparse.BooleanOptionalAction,
+ default=False,
+ help="Enable/disable the addition of files listed in .gitignore to Aider's editing scope.",
+ )
default_aiderignore_file = (
os.path.join(git_root, ".aiderignore") if git_root else ".aiderignore"
)
@@ -406,7 +429,7 @@ def get_parser(default_config_files, git_root):
type=lambda path_str: resolve_aiderignore_path(path_str, git_root),
default=default_aiderignore_file,
help="Specify the aider ignore file (default: .aiderignore in git root)",
- )
+ ).complete = shtab.FILE
group.add_argument(
"--subtree-only",
action="store_true",
@@ -458,10 +481,10 @@ def get_parser(default_config_files, git_root):
group.add_argument(
"--attribute-co-authored-by",
action=argparse.BooleanOptionalAction,
- default=False,
+ default=True,
help=(
"Attribute aider edits using the Co-authored-by trailer in the commit message"
- " (default: False). If True, this takes precedence over default --attribute-author and"
+ " (default: True). If True, this takes precedence over default --attribute-author and"
" --attribute-committer behavior unless they are explicitly set to True."
),
)
@@ -552,13 +575,23 @@ def get_parser(default_config_files, git_root):
"--analytics-log",
metavar="ANALYTICS_LOG_FILE",
help="Specify a file to log analytics events",
- )
+ ).complete = shtab.FILE
group.add_argument(
"--analytics-disable",
action="store_true",
help="Permanently disable analytics",
default=False,
)
+ group.add_argument(
+ "--analytics-posthog-host",
+ metavar="ANALYTICS_POSTHOG_HOST",
+ help="Send analytics to custom PostHog instance",
+ )
+ group.add_argument(
+ "--analytics-posthog-project-api-key",
+ metavar="ANALYTICS_POSTHOG_PROJECT_API_KEY",
+ help="Send analytics to custom PostHog project",
+ )
#########
group = parser.add_argument_group("Upgrading")
@@ -619,7 +652,7 @@ def get_parser(default_config_files, git_root):
"Specify a file containing the message to send the LLM, process reply, then exit"
" (disables chat mode)"
),
- )
+ ).complete = shtab.FILE
group.add_argument(
"--gui",
"--browser",
@@ -637,7 +670,7 @@ def get_parser(default_config_files, git_root):
"--apply",
metavar="FILE",
help="Apply the changes from the given file instead of running the chat (debug)",
- )
+ ).complete = shtab.FILE
group.add_argument(
"--apply-clipboard-edits",
action="store_true",
@@ -698,13 +731,13 @@ def get_parser(default_config_files, git_root):
action="append",
metavar="FILE",
help="specify a file to edit (can be used multiple times)",
- )
+ ).complete = shtab.FILE
group.add_argument(
"--read",
action="append",
metavar="FILE",
help="specify a read-only file (can be used multiple times)",
- )
+ ).complete = shtab.FILE
group.add_argument(
"--vim",
action="store_true",
@@ -717,6 +750,12 @@ def get_parser(default_config_files, git_root):
default=None,
help="Specify the language to use in the chat (default: None, uses system settings)",
)
+ group.add_argument(
+ "--commit-language",
+ metavar="COMMIT_LANGUAGE",
+ default=None,
+ help="Specify the language to use in the commit message (default: None, user language)",
+ )
group.add_argument(
"--yes-always",
action="store_true",
@@ -734,7 +773,7 @@ def get_parser(default_config_files, git_root):
"--load",
metavar="LOAD_FILE",
help="Load and execute /commands from a file on launch",
- )
+ ).complete = shtab.FILE
group.add_argument(
"--encoding",
default="utf-8",
@@ -755,7 +794,7 @@ def get_parser(default_config_files, git_root):
"Specify the config file (default: search for .aider.conf.yml in git root, cwd"
" or home directory)"
),
- )
+ ).complete = shtab.FILE
# This is a duplicate of the argument in the preparser and is a no-op by this time of
# argument parsing, but it's here so that the help is displayed as expected.
group.add_argument(
@@ -763,7 +802,7 @@ def get_parser(default_config_files, git_root):
metavar="ENV_FILE",
default=default_env_file(git_root),
help="Specify the .env file to load (default: .env in git root)",
- )
+ ).complete = shtab.FILE
group.add_argument(
"--suggest-shell-commands",
action=argparse.BooleanOptionalAction,
diff --git a/aider/args_formatter.py b/aider/args_formatter.py
index c7672ccba..fc4c3efac 100644
--- a/aider/args_formatter.py
+++ b/aider/args_formatter.py
@@ -96,7 +96,7 @@ class YamlHelpFormatter(argparse.HelpFormatter):
# Place in your home dir, or at the root of your git repo.
##########################################################
-# Note: You can only put OpenAI and Anthropic API keys in the yaml
+# Note: You can only put OpenAI and Anthropic API keys in the YAML
# config file. Keys for all APIs can be stored in a .env file
# https://aider.chat/docs/config/dotenv.html
diff --git a/aider/coders/ask_prompts.py b/aider/coders/ask_prompts.py
index c8c2fb4ea..347466bcf 100644
--- a/aider/coders/ask_prompts.py
+++ b/aider/coders/ask_prompts.py
@@ -8,8 +8,7 @@ class AskPrompts(CoderPrompts):
Answer questions about the supplied code.
Always reply to the user in {language}.
-Describe code changes however you like, but elide unchanging code.
-Don't use SEARCH/REPLACE blocks or return huge swaths of unchanging code.
+If you need to describe code changes, do so *briefly*.
"""
example_messages = []
diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py
index fc40d818e..b824e9286 100755
--- a/aider/coders/base_coder.py
+++ b/aider/coders/base_coder.py
@@ -118,6 +118,7 @@ class Coder:
detect_urls = True
ignore_mentions = None
chat_language = None
+ commit_language = None
file_watcher = None
@classmethod
@@ -301,6 +302,7 @@ class Coder:
io,
repo=None,
fnames=None,
+ add_gitignore_files=False,
read_only_fnames=None,
show_diffs=False,
auto_commits=True,
@@ -328,6 +330,7 @@ class Coder:
num_cache_warming_pings=0,
suggest_shell_commands=True,
chat_language=None,
+ commit_language=None,
detect_urls=True,
ignore_mentions=None,
total_tokens_sent=0,
@@ -341,6 +344,7 @@ class Coder:
self.event = self.analytics.event
self.chat_language = chat_language
+ self.commit_language = commit_language
self.commit_before_message = []
self.aider_commit_hashes = set()
self.rejected_urls = set()
@@ -386,6 +390,7 @@ class Coder:
self.verbose = verbose
self.abs_fnames = set()
self.abs_read_only_fnames = set()
+ self.add_gitignore_files = add_gitignore_files
if cur_messages:
self.cur_messages = cur_messages
@@ -443,8 +448,9 @@ class Coder:
for fname in fnames:
fname = Path(fname)
- if self.repo and self.repo.git_ignored_file(fname):
+ if self.repo and self.repo.git_ignored_file(fname) and not self.add_gitignore_files:
self.io.tool_warning(f"Skipping {fname} that matches gitignore spec.")
+ continue
if self.repo and self.repo.ignored_file(fname):
self.io.tool_warning(f"Skipping {fname} that matches aiderignore spec.")
@@ -1049,6 +1055,9 @@ class Coder:
if not lang_code:
return None
+ if lang_code.upper() in ("C", "POSIX"):
+ return None
+
# Probably already a language name
if (
len(lang_code) > 3
@@ -1079,7 +1088,8 @@ class Coder:
"ko": "Korean",
"ru": "Russian",
}
- return fallback.get(lang_code.split("_")[0].lower(), lang_code)
+ primary_lang_code = lang_code.replace("-", "_").split("_")[0].lower()
+ return fallback.get(primary_lang_code, lang_code)
def get_user_language(self):
"""
@@ -1090,6 +1100,7 @@ class Coder:
2. ``locale.getlocale()``
3. ``LANG`` / ``LANGUAGE`` / ``LC_ALL`` / ``LC_MESSAGES`` environment variables
"""
+
# Explicit override
if self.chat_language:
return self.normalize_language(self.chat_language)
@@ -1098,9 +1109,11 @@ class Coder:
try:
lang = locale.getlocale()[0]
if lang:
- return self.normalize_language(lang)
+ lang = self.normalize_language(lang)
+ if lang:
+ return lang
except Exception:
- pass # pragma: no cover
+ pass
# Environment variables
for env_var in ("LANG", "LANGUAGE", "LC_ALL", "LC_MESSAGES"):
@@ -1182,10 +1195,10 @@ class Coder:
)
rename_with_shell = ""
- if self.chat_language:
- language = self.chat_language
+ if user_lang: # user_lang is the result of self.get_user_language()
+ language = user_lang
else:
- language = "the same language they are using"
+ language = "the same language they are using" # Default if no specific lang detected
if self.fence[0] == "`" * 4:
quad_backtick_reminder = (
diff --git a/aider/coders/editblock_coder.py b/aider/coders/editblock_coder.py
index d8f85da52..37d40d97c 100644
--- a/aider/coders/editblock_coder.py
+++ b/aider/coders/editblock_coder.py
@@ -383,7 +383,7 @@ def do_replace(fname, content, before_text, after_text, fence=None):
return new_content
-HEAD = r"^<{5,9} SEARCH\s*$"
+HEAD = r"^<{5,9} SEARCH>?\s*$"
DIVIDER = r"^={5,9}\s*$"
UPDATED = r"^>{5,9} REPLACE\s*$"
diff --git a/aider/coders/editblock_prompts.py b/aider/coders/editblock_prompts.py
index f6baaeb5f..fc494af4f 100644
--- a/aider/coders/editblock_prompts.py
+++ b/aider/coders/editblock_prompts.py
@@ -12,8 +12,6 @@ Respect and use existing conventions, libraries, etc that are already present in
Take requests for changes to the supplied code.
If the request is ambiguous, ask questions.
-Always reply to the user in {language}.
-
Once you understand the request you MUST:
1. Decide if you need to propose *SEARCH/REPLACE* edits to any files that haven't been added to the chat. You can create new files without asking!
diff --git a/aider/coders/patch_prompts.py b/aider/coders/patch_prompts.py
index 690a08884..66832ee16 100644
--- a/aider/coders/patch_prompts.py
+++ b/aider/coders/patch_prompts.py
@@ -15,8 +15,6 @@ Respect and use existing conventions, libraries, etc that are already present in
Take requests for changes to the supplied code.
If the request is ambiguous, ask questions.
-Always reply to the user in {language}.
-
Once you understand the request you MUST:
1. Decide if you need to propose edits to any files that haven't been added to the chat. You can create new files without asking!
diff --git a/aider/coders/search_replace.py b/aider/coders/search_replace.py
index f31e97799..320ff3ec7 100755
--- a/aider/coders/search_replace.py
+++ b/aider/coders/search_replace.py
@@ -109,7 +109,7 @@ class RelativeIndenter:
"""
if self.marker in text:
- raise ValueError("Text already contains the outdent marker: {self.marker}")
+ raise ValueError(f"Text already contains the outdent marker: {self.marker}")
lines = text.splitlines(keepends=True)
diff --git a/aider/coders/udiff_prompts.py b/aider/coders/udiff_prompts.py
index 5201b8d89..23d2d8f73 100644
--- a/aider/coders/udiff_prompts.py
+++ b/aider/coders/udiff_prompts.py
@@ -13,8 +13,6 @@ Respect and use existing conventions, libraries, etc that are already present in
Take requests for changes to the supplied code.
If the request is ambiguous, ask questions.
-Always reply to the user in {language}.
-
For each file that needs to be changed, write out the changes similar to a unified diff like `diff -U0` would produce.
"""
diff --git a/aider/coders/wholefile_prompts.py b/aider/coders/wholefile_prompts.py
index 6b6795833..2f3868d6b 100644
--- a/aider/coders/wholefile_prompts.py
+++ b/aider/coders/wholefile_prompts.py
@@ -7,9 +7,6 @@ class WholeFilePrompts(CoderPrompts):
main_system = """Act as an expert software developer.
Take requests for changes to the supplied code.
If the request is ambiguous, ask questions.
-
-Always reply to the user in {language}.
-
{final_reminders}
Once you understand the request you MUST:
1. Determine if any code changes are needed.
diff --git a/aider/commands.py b/aider/commands.py
index 7a7a738c3..b9a3d3c2a 100644
--- a/aider/commands.py
+++ b/aider/commands.py
@@ -88,6 +88,11 @@ class Commands:
"Switch the Main Model to a new LLM"
model_name = args.strip()
+ if not model_name:
+ announcements = "\n".join(self.coder.get_announcements())
+ self.io.tool_output(announcements)
+ return
+
model = models.Model(
model_name,
editor_model=self.coder.main_model.editor_model.name,
@@ -346,7 +351,7 @@ class Commands:
return
commit_message = args.strip() if args else None
- self.coder.repo.commit(message=commit_message)
+ self.coder.repo.commit(message=commit_message, coder=self.coder)
def cmd_lint(self, args="", fnames=None):
"Lint and fix in-chat files or all dirty files if none in chat"
@@ -407,6 +412,7 @@ class Commands:
"Clear the chat history"
self._clear_chat_history()
+ self.io.tool_output("All chat history cleared.")
def _drop_all_files(self):
self.coder.abs_fnames = set()
@@ -563,6 +569,7 @@ class Commands:
last_commit_hash = self.coder.repo.get_head_commit_sha(short=True)
last_commit_message = self.coder.repo.get_head_commit_message("(unknown)").strip()
+ last_commit_message = (last_commit_message.splitlines() or [""])[0]
if last_commit_hash not in self.coder.aider_commit_hashes:
self.io.tool_error("The last commit was not made by aider in this chat session.")
self.io.tool_output(
@@ -641,6 +648,7 @@ class Commands:
# Get the current HEAD after undo
current_head_hash = self.coder.repo.get_head_commit_sha(short=True)
current_head_message = self.coder.repo.get_head_commit_message("(unknown)").strip()
+ current_head_message = (current_head_message.splitlines() or [""])[0]
self.io.tool_output(f"Now at: {current_head_hash} {current_head_message}")
if self.coder.main_model.send_undo_reply:
@@ -844,7 +852,11 @@ class Commands:
)
continue
- if self.coder.repo and self.coder.repo.git_ignored_file(matched_file):
+ if (
+ self.coder.repo
+ and self.coder.repo.git_ignored_file(matched_file)
+ and not self.coder.add_gitignore_files
+ ):
self.io.tool_error(f"Can't add {matched_file} which is in gitignore")
continue
@@ -1312,12 +1324,23 @@ class Commands:
# First collect all expanded paths
for pattern in filenames:
expanded_pattern = expanduser(pattern)
- if os.path.isabs(expanded_pattern):
- # For absolute paths, glob it
- matches = list(glob.glob(expanded_pattern))
+ path_obj = Path(expanded_pattern)
+ is_abs = path_obj.is_absolute()
+ if not is_abs:
+ path_obj = Path(self.coder.root) / path_obj
+
+ matches = []
+ # Check for literal path existence first
+ if path_obj.exists():
+ matches = [path_obj]
else:
- # For relative paths and globs, use glob from the root directory
- matches = list(Path(self.coder.root).glob(expanded_pattern))
+ # If literal path doesn't exist, try globbing
+ if is_abs:
+ # For absolute paths, glob it
+ matches = [Path(p) for p in glob.glob(expanded_pattern)]
+ else:
+ # For relative paths and globs, use glob from the root directory
+ matches = list(Path(self.coder.root).glob(expanded_pattern))
if not matches:
self.io.tool_error(f"No matches found for: {pattern}")
@@ -1392,7 +1415,30 @@ class Commands:
"Print out the current settings"
settings = format_settings(self.parser, self.args)
announcements = "\n".join(self.coder.get_announcements())
+
+ # Build metadata for the active models (main, editor, weak)
+ model_sections = []
+ active_models = [
+ ("Main model", self.coder.main_model),
+ ("Editor model", getattr(self.coder.main_model, "editor_model", None)),
+ ("Weak model", getattr(self.coder.main_model, "weak_model", None)),
+ ]
+ for label, model in active_models:
+ if not model:
+ continue
+ info = getattr(model, "info", {}) or {}
+ if not info:
+ continue
+ model_sections.append(f"{label} ({model.name}):")
+ for k, v in sorted(info.items()):
+ model_sections.append(f" {k}: {v}")
+ model_sections.append("") # blank line between models
+
+ model_metadata = "\n".join(model_sections)
+
output = f"{announcements}\n{settings}"
+ if model_metadata:
+ output += "\n" + model_metadata
self.io.tool_output(output)
def completions_raw_load(self, document, complete_event):
@@ -1514,7 +1560,7 @@ class Commands:
return self.cmd_editor(args)
def cmd_think_tokens(self, args):
- "Set the thinking token budget (supports formats like 8096, 8k, 10.5k, 0.5M)"
+ """Set the thinking token budget, eg: 8096, 8k, 10.5k, 0.5M, or 0 to disable."""
model = self.coder.main_model
if not args.strip():
@@ -1532,10 +1578,16 @@ class Commands:
value = args.strip()
model.set_thinking_tokens(value)
- formatted_budget = model.get_thinking_tokens()
- budget = model.get_raw_thinking_tokens()
+ # Handle the special case of 0 to disable thinking tokens
+ if value == "0":
+ self.io.tool_output("Thinking tokens disabled.")
+ else:
+ formatted_budget = model.get_thinking_tokens()
+ budget = model.get_raw_thinking_tokens()
+ self.io.tool_output(
+ f"Set thinking token budget to {budget:,} tokens ({formatted_budget})."
+ )
- self.io.tool_output(f"Set thinking token budget to {budget:,} tokens ({formatted_budget}).")
self.io.tool_output()
# Output announcements
diff --git a/aider/exceptions.py b/aider/exceptions.py
index a81a058e0..c2d0feb3b 100644
--- a/aider/exceptions.py
+++ b/aider/exceptions.py
@@ -20,6 +20,7 @@ EXCEPTIONS = [
"The API provider is not able to authenticate you. Check your API key.",
),
ExInfo("AzureOpenAIError", True, None),
+ ExInfo("BadGatewayError", True, "The API provider's servers are down or overloaded."),
ExInfo("BadRequestError", False, None),
ExInfo("BudgetExceededError", True, None),
ExInfo(
@@ -28,6 +29,8 @@ EXCEPTIONS = [
"The API provider has refused the request due to a safety policy about the content.",
),
ExInfo("ContextWindowExceededError", False, None), # special case handled in base_coder
+ ExInfo("ErrorEventError", True, None),
+ ExInfo("ImageFetchError", False, "The API provider was unable to fetch one or more images."),
ExInfo("InternalServerError", True, "The API provider's servers are down or overloaded."),
ExInfo("InvalidRequestError", True, None),
ExInfo("JSONSchemaValidationError", True, None),
diff --git a/aider/history.py b/aider/history.py
index a4727b941..8d0bce7b3 100644
--- a/aider/history.py
+++ b/aider/history.py
@@ -63,37 +63,37 @@ class ChatSummary:
if split_index <= min_split:
return self.summarize_all(messages)
- head = messages[:split_index]
+ # Split head and tail
tail = messages[split_index:]
- sized = sized[:split_index]
- head.reverse()
- sized.reverse()
+ # Only size the head once
+ sized_head = sized[:split_index]
+
+ # Precompute token limit (fallback to 4096 if undefined)
+ model_max_input_tokens = self.models[0].info.get("max_input_tokens") or 4096
+ model_max_input_tokens -= 512 # reserve buffer for safety
+
keep = []
total = 0
- # These sometimes come set with value = None
- model_max_input_tokens = self.models[0].info.get("max_input_tokens") or 4096
- model_max_input_tokens -= 512
-
- for i in range(split_index):
- total += sized[i][0]
+ # Iterate in original order, summing tokens until limit
+ for tokens, msg in sized_head:
+ total += tokens
if total > model_max_input_tokens:
break
- keep.append(head[i])
-
- keep.reverse()
+ keep.append(msg)
+ # No need to reverse lists back and forth
summary = self.summarize_all(keep)
- tail_tokens = sum(tokens for tokens, msg in sized[split_index:])
+ # If the combined summary and tail still fits, return directly
summary_tokens = self.token_count(summary)
-
- result = summary + tail
+ tail_tokens = sum(tokens for tokens, _ in sized[split_index:])
if summary_tokens + tail_tokens < self.max_tokens:
- return result
+ return summary + tail
- return self.summarize_real(result, depth + 1)
+ # Otherwise recurse with increased depth
+ return self.summarize_real(summary + tail, depth + 1)
def summarize_all(self, messages):
content = ""
diff --git a/aider/io.py b/aider/io.py
index f28a1c86d..ed6f22d51 100644
--- a/aider/io.py
+++ b/aider/io.py
@@ -308,6 +308,12 @@ class InputOutput:
self.yes = yes
self.input_history_file = input_history_file
+ if self.input_history_file:
+ try:
+ Path(self.input_history_file).parent.mkdir(parents=True, exist_ok=True)
+ except (PermissionError, OSError) as e:
+ self.tool_warning(f"Could not create directory for input history: {e}")
+ self.input_history_file = None
self.llm_history_file = llm_history_file
if chat_history_file is not None:
self.chat_history_file = Path(chat_history_file)
@@ -749,9 +755,14 @@ class InputOutput:
if not self.llm_history_file:
return
timestamp = datetime.now().isoformat(timespec="seconds")
- with open(self.llm_history_file, "a", encoding=self.encoding) as log_file:
- log_file.write(f"{role.upper()} {timestamp}\n")
- log_file.write(content + "\n")
+ try:
+ Path(self.llm_history_file).parent.mkdir(parents=True, exist_ok=True)
+ with open(self.llm_history_file, "a", encoding="utf-8") as log_file:
+ log_file.write(f"{role.upper()} {timestamp}\n")
+ log_file.write(content + "\n")
+ except (PermissionError, OSError) as err:
+ self.tool_warning(f"Unable to write to llm history file {self.llm_history_file}: {err}")
+ self.llm_history_file = None
def display_user_input(self, inp):
if self.pretty and self.user_input_color:
@@ -1001,7 +1012,11 @@ class InputOutput:
self.console.print(*messages, style=style)
def get_assistant_mdstream(self):
- mdargs = dict(style=self.assistant_output_color, code_theme=self.code_theme)
+ mdargs = dict(
+ style=self.assistant_output_color,
+ code_theme=self.code_theme,
+ inline_code_lexer="text",
+ )
mdStream = MarkdownStream(mdargs=mdargs)
return mdStream
@@ -1112,6 +1127,7 @@ class InputOutput:
text += "\n"
if self.chat_history_file is not None:
try:
+ self.chat_history_file.parent.mkdir(parents=True, exist_ok=True)
with self.chat_history_file.open("a", encoding=self.encoding, errors="ignore") as f:
f.write(text)
except (PermissionError, OSError) as err:
diff --git a/aider/main.py b/aider/main.py
index ea344f0ba..afb3f8366 100644
--- a/aider/main.py
+++ b/aider/main.py
@@ -633,7 +633,12 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F
)
os.environ["OPENAI_ORGANIZATION"] = args.openai_organization_id
- analytics = Analytics(logfile=args.analytics_log, permanently_disable=args.analytics_disable)
+ analytics = Analytics(
+ logfile=args.analytics_log,
+ permanently_disable=args.analytics_disable,
+ posthog_host=args.analytics_posthog_host,
+ posthog_project_api_key=args.analytics_posthog_project_api_key,
+ )
if args.analytics is not False:
if analytics.need_to_ask(args.analytics):
io.tool_output(
@@ -921,8 +926,9 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F
analytics.event("exit", reason="Repository sanity check failed")
return 1
- if repo:
- analytics.event("repo", num_files=len(repo.get_tracked_files()))
+ if repo and not args.skip_sanity_check_repo:
+ num_files = len(repo.get_tracked_files())
+ analytics.event("repo", num_files=num_files)
else:
analytics.event("no-repo")
@@ -993,9 +999,11 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F
num_cache_warming_pings=args.cache_keepalive_pings,
suggest_shell_commands=args.suggest_shell_commands,
chat_language=args.chat_language,
+ commit_language=args.commit_language,
detect_urls=args.detect_urls,
auto_copy_context=args.copy_paste,
auto_accept_architect=args.auto_accept_architect,
+ add_gitignore_files=args.add_gitignore_files,
)
except UnknownEditFormat as err:
io.tool_error(str(err))
diff --git a/aider/models.py b/aider/models.py
index d69ae2d5a..db0c28d1e 100644
--- a/aider/models.py
+++ b/aider/models.py
@@ -8,6 +8,7 @@ import platform
import sys
import time
from dataclasses import dataclass, fields
+from datetime import datetime
from pathlib import Path
from typing import Optional, Union
@@ -15,8 +16,10 @@ import json5
import yaml
from PIL import Image
+from aider import __version__
from aider.dump import dump # noqa: F401
from aider.llm import litellm
+from aider.openrouter import OpenRouterModelManager
from aider.sendchat import ensure_alternating_roles, sanity_check_messages
from aider.utils import check_pip_install_extra
@@ -69,6 +72,8 @@ claude-3-opus-20240229
claude-3-sonnet-20240229
claude-3-5-sonnet-20240620
claude-3-5-sonnet-20241022
+claude-sonnet-4-20250514
+claude-opus-4-20250514
"""
ANTHROPIC_MODELS = [ln.strip() for ln in ANTHROPIC_MODELS.splitlines() if ln.strip()]
@@ -76,9 +81,9 @@ ANTHROPIC_MODELS = [ln.strip() for ln in ANTHROPIC_MODELS.splitlines() if ln.str
# Mapping of model aliases to their canonical names
MODEL_ALIASES = {
# Claude models
- "sonnet": "anthropic/claude-3-7-sonnet-20250219",
+ "sonnet": "anthropic/claude-sonnet-4-20250514",
"haiku": "claude-3-5-haiku-20241022",
- "opus": "claude-3-opus-20240229",
+ "opus": "claude-opus-4-20250514",
# GPT models
"4": "gpt-4-0613",
"4o": "gpt-4o",
@@ -88,11 +93,13 @@ MODEL_ALIASES = {
"3": "gpt-3.5-turbo",
# Other models
"deepseek": "deepseek/deepseek-chat",
- "flash": "gemini/gemini-2.5-flash-preview-04-17",
+ "flash": "gemini/gemini-2.5-flash",
+ "flash-lite": "gemini/gemini-2.5-flash-lite",
"quasar": "openrouter/openrouter/quasar-alpha",
"r1": "deepseek/deepseek-reasoner",
- "gemini-2.5-pro": "gemini/gemini-2.5-pro-preview-05-06",
- "gemini": "gemini/gemini-2.5-pro-preview-05-06",
+ "gemini-2.5-pro": "gemini/gemini-2.5-pro",
+ "gemini-3-pro-preview": "gemini/gemini-3-pro-preview",
+ "gemini": "gemini/gemini-3-pro-preview",
"gemini-exp": "gemini/gemini-2.5-pro-exp-03-25",
"grok3": "xai/grok-3-beta",
"optimus": "openrouter/openrouter/optimus-alpha",
@@ -149,8 +156,13 @@ class ModelInfoManager:
self.verify_ssl = True
self._cache_loaded = False
+ # Manager for the cached OpenRouter model database
+ self.openrouter_manager = OpenRouterModelManager()
+
def set_verify_ssl(self, verify_ssl):
self.verify_ssl = verify_ssl
+ if hasattr(self, "openrouter_manager"):
+ self.openrouter_manager.set_verify_ssl(verify_ssl)
def _load_cache(self):
if self._cache_loaded:
@@ -232,6 +244,12 @@ class ModelInfoManager:
return litellm_info
if not cached_info and model.startswith("openrouter/"):
+ # First try using the locally cached OpenRouter model database
+ openrouter_info = self.openrouter_manager.get_model_info(model)
+ if openrouter_info:
+ return openrouter_info
+
+ # Fallback to legacy web-scraping if the API cache does not contain the model
openrouter_info = self.fetch_openrouter_model_info(model)
if openrouter_info:
return openrouter_info
@@ -420,6 +438,14 @@ class Model(ModelSettings):
self.examples_as_sys_msg = False
return # <--
+ last_segment = model.split("/")[-1]
+ if last_segment in ("gpt-5", "gpt-5-2025-08-07"):
+ self.use_temperature = False
+ self.edit_format = "diff"
+ if "reasoning_effort" not in self.accepts_settings:
+ self.accepts_settings.append("reasoning_effort")
+ return # <--
+
if "/o1-mini" in model:
self.use_repo_map = True
self.use_temperature = False
@@ -778,6 +804,7 @@ class Model(ModelSettings):
"""
Set the thinking token budget for models that support it.
Accepts formats: 8096, "8k", "10.5k", "0.5M", "10K", etc.
+ Pass "0" to disable thinking tokens.
"""
if value is not None:
num_tokens = self.parse_token_value(value)
@@ -789,9 +816,17 @@ class Model(ModelSettings):
if self.name.startswith("openrouter/"):
if "extra_body" not in self.extra_params:
self.extra_params["extra_body"] = {}
- self.extra_params["extra_body"]["reasoning"] = {"max_tokens": num_tokens}
+ if num_tokens > 0:
+ self.extra_params["extra_body"]["reasoning"] = {"max_tokens": num_tokens}
+ else:
+ if "reasoning" in self.extra_params["extra_body"]:
+ del self.extra_params["extra_body"]["reasoning"]
else:
- self.extra_params["thinking"] = {"type": "enabled", "budget_tokens": num_tokens}
+ if num_tokens > 0:
+ self.extra_params["thinking"] = {"type": "enabled", "budget_tokens": num_tokens}
+ else:
+ if "thinking" in self.extra_params:
+ del self.extra_params["thinking"]
def get_raw_thinking_tokens(self):
"""Get formatted thinking token budget if available"""
@@ -861,6 +896,57 @@ class Model(ModelSettings):
def is_ollama(self):
return self.name.startswith("ollama/") or self.name.startswith("ollama_chat/")
+ def github_copilot_token_to_open_ai_key(self, extra_headers):
+ # check to see if there's an openai api key
+ # If so, check to see if it's expire
+ openai_api_key = "OPENAI_API_KEY"
+
+ if openai_api_key not in os.environ or (
+ int(dict(x.split("=") for x in os.environ[openai_api_key].split(";"))["exp"])
+ < int(datetime.now().timestamp())
+ ):
+ import requests
+
+ class GitHubCopilotTokenError(Exception):
+ """Custom exception for GitHub Copilot token-related errors."""
+
+ pass
+
+ # Validate GitHub Copilot token exists
+ if "GITHUB_COPILOT_TOKEN" not in os.environ:
+ raise KeyError("GITHUB_COPILOT_TOKEN environment variable not found")
+
+ github_token = os.environ["GITHUB_COPILOT_TOKEN"]
+ if not github_token.strip():
+ raise KeyError("GITHUB_COPILOT_TOKEN environment variable is empty")
+
+ headers = {
+ "Authorization": f"Bearer {os.environ['GITHUB_COPILOT_TOKEN']}",
+ "Editor-Version": extra_headers["Editor-Version"],
+ "Copilot-Integration-Id": extra_headers["Copilot-Integration-Id"],
+ "Content-Type": "application/json",
+ }
+
+ url = "https://api.github.com/copilot_internal/v2/token"
+ res = requests.get(url, headers=headers)
+ if res.status_code != 200:
+ safe_headers = {k: v for k, v in headers.items() if k != "Authorization"}
+ token_preview = github_token[:5] + "..." if len(github_token) >= 5 else github_token
+ safe_headers["Authorization"] = f"Bearer {token_preview}"
+ raise GitHubCopilotTokenError(
+ f"GitHub Copilot API request failed (Status: {res.status_code})\n"
+ f"URL: {url}\n"
+ f"Headers: {json.dumps(safe_headers, indent=2)}\n"
+ f"JSON: {res.text}"
+ )
+
+ response_data = res.json()
+ token = response_data.get("token")
+ if not token:
+ raise GitHubCopilotTokenError("Response missing 'token' field")
+
+ os.environ[openai_api_key] = token
+
def send_completion(self, messages, functions, stream, temperature=None):
if os.environ.get("AIDER_SANITY_CHECK_TURNS"):
sanity_check_messages(messages)
@@ -902,6 +988,16 @@ class Model(ModelSettings):
dump(kwargs)
kwargs["messages"] = messages
+ # Are we using github copilot?
+ if "GITHUB_COPILOT_TOKEN" in os.environ:
+ if "extra_headers" not in kwargs:
+ kwargs["extra_headers"] = {
+ "Editor-Version": f"aider/{__version__}",
+ "Copilot-Integration-Id": "vscode-chat",
+ }
+
+ self.github_copilot_token_to_open_ai_key(kwargs["extra_headers"])
+
res = litellm.completion(**kwargs)
return hash_object, res
@@ -966,12 +1062,10 @@ def register_models(model_settings_fnames):
for model_settings_dict in model_settings_list:
model_settings = ModelSettings(**model_settings_dict)
- existing_model_settings = next(
- (ms for ms in MODEL_SETTINGS if ms.name == model_settings.name), None
- )
- if existing_model_settings:
- MODEL_SETTINGS.remove(existing_model_settings)
+ # Remove all existing settings for this model name
+ MODEL_SETTINGS[:] = [ms for ms in MODEL_SETTINGS if ms.name != model_settings.name]
+ # Add the new settings
MODEL_SETTINGS.append(model_settings)
except Exception as e:
raise Exception(f"Error loading model settings from {model_settings_fname}: {e}")
diff --git a/aider/onboarding.py b/aider/onboarding.py
index 0321c0d63..9b6abd54b 100644
--- a/aider/onboarding.py
+++ b/aider/onboarding.py
@@ -55,9 +55,9 @@ def try_to_select_default_model():
# Check if the user is on a free tier
is_free_tier = check_openrouter_tier(openrouter_key)
if is_free_tier:
- return "openrouter/google/gemini-2.5-pro-exp-03-25:free"
+ return "openrouter/deepseek/deepseek-r1:free"
else:
- return "openrouter/anthropic/claude-3.7-sonnet"
+ return "openrouter/anthropic/claude-sonnet-4"
# Select model based on other available API keys
model_key_pairs = [
diff --git a/aider/openrouter.py b/aider/openrouter.py
new file mode 100644
index 000000000..6517cb152
--- /dev/null
+++ b/aider/openrouter.py
@@ -0,0 +1,128 @@
+"""
+OpenRouter model metadata caching and lookup.
+
+This module keeps a local cached copy of the OpenRouter model list
+(downloaded from ``https://openrouter.ai/api/v1/models``) and exposes a
+helper class that returns metadata for a given model in a format compatible
+with litellmβs ``get_model_info``.
+"""
+from __future__ import annotations
+
+import json
+import time
+from pathlib import Path
+from typing import Dict
+
+import requests
+
+
+def _cost_per_token(val: str | None) -> float | None:
+ """Convert a price string (USD per token) to a float."""
+ if val in (None, "", "0"):
+ return 0.0 if val == "0" else None
+ try:
+ return float(val)
+ except Exception: # noqa: BLE001
+ return None
+
+
+class OpenRouterModelManager:
+ MODELS_URL = "https://openrouter.ai/api/v1/models"
+ CACHE_TTL = 60 * 60 * 24 # 24 h
+
+ def __init__(self) -> None:
+ self.cache_dir = Path.home() / ".aider" / "caches"
+ self.cache_file = self.cache_dir / "openrouter_models.json"
+ self.content: Dict | None = None
+ self.verify_ssl: bool = True
+ self._cache_loaded = False
+
+ # ------------------------------------------------------------------ #
+ # Public API #
+ # ------------------------------------------------------------------ #
+ def set_verify_ssl(self, verify_ssl: bool) -> None:
+ """Enable/disable SSL verification for API requests."""
+ self.verify_ssl = verify_ssl
+
+ def get_model_info(self, model: str) -> Dict:
+ """
+ Return metadata for *model* or an empty ``dict`` when unknown.
+
+ ``model`` should use the aider naming convention, e.g.
+ ``openrouter/nousresearch/deephermes-3-mistral-24b-preview:free``.
+ """
+ self._ensure_content()
+ if not self.content or "data" not in self.content:
+ return {}
+
+ route = self._strip_prefix(model)
+
+ # Consider both the exact id and id without any β:suffixβ.
+ candidates = {route}
+ if ":" in route:
+ candidates.add(route.split(":", 1)[0])
+
+ record = next((item for item in self.content["data"] if item.get("id") in candidates), None)
+ if not record:
+ return {}
+
+ context_len = (
+ record.get("top_provider", {}).get("context_length")
+ or record.get("context_length")
+ or None
+ )
+
+ pricing = record.get("pricing", {})
+ return {
+ "max_input_tokens": context_len,
+ "max_tokens": context_len,
+ "max_output_tokens": context_len,
+ "input_cost_per_token": _cost_per_token(pricing.get("prompt")),
+ "output_cost_per_token": _cost_per_token(pricing.get("completion")),
+ "litellm_provider": "openrouter",
+ }
+
+ # ------------------------------------------------------------------ #
+ # Internal helpers #
+ # ------------------------------------------------------------------ #
+ def _strip_prefix(self, model: str) -> str:
+ return model[len("openrouter/") :] if model.startswith("openrouter/") else model
+
+ def _ensure_content(self) -> None:
+ self._load_cache()
+ if not self.content:
+ self._update_cache()
+
+ def _load_cache(self) -> None:
+ if self._cache_loaded:
+ return
+ try:
+ self.cache_dir.mkdir(parents=True, exist_ok=True)
+ if self.cache_file.exists():
+ cache_age = time.time() - self.cache_file.stat().st_mtime
+ if cache_age < self.CACHE_TTL:
+ try:
+ self.content = json.loads(self.cache_file.read_text())
+ except json.JSONDecodeError:
+ self.content = None
+ except OSError:
+ # Cache directory might be unwritable; ignore.
+ pass
+
+ self._cache_loaded = True
+
+ def _update_cache(self) -> None:
+ try:
+ response = requests.get(self.MODELS_URL, timeout=10, verify=self.verify_ssl)
+ if response.status_code == 200:
+ self.content = response.json()
+ try:
+ self.cache_file.write_text(json.dumps(self.content, indent=2))
+ except OSError:
+ pass # Non-fatal if we canβt write the cache
+ except Exception as ex: # noqa: BLE001
+ print(f"Failed to fetch OpenRouter model list: {ex}")
+ try:
+ self.cache_file.write_text("{}")
+ except OSError:
+ pass
diff --git a/aider/prompts.py b/aider/prompts.py
index aecf29a9e..912bc02c6 100644
--- a/aider/prompts.py
+++ b/aider/prompts.py
@@ -19,9 +19,6 @@ Ensure the commit message:{language_instruction}
- Does not exceed 72 characters.
Reply only with the one-line commit message, without any additional text, explanations, or line breaks.
-
-Reply only with the one-line commit message, without any additional text, explanations, \
-or line breaks.
"""
# COMMANDS
diff --git a/aider/queries/tree-sitter-language-pack/clojure-tags.scm b/aider/queries/tree-sitter-language-pack/clojure-tags.scm
new file mode 100644
index 000000000..4b2bfa172
--- /dev/null
+++ b/aider/queries/tree-sitter-language-pack/clojure-tags.scm
@@ -0,0 +1,7 @@
+(list_lit
+ meta: _*
+ . (sym_lit name: (sym_name) @ignore)
+ . (sym_lit name: (sym_name) @name.definition.method)
+ (#match? @ignore "^def.*"))
+
+(sym_lit name: (sym_name) @name.reference.call)
diff --git a/aider/queries/tree-sitter-language-pack/matlab-tags.scm b/aider/queries/tree-sitter-language-pack/matlab-tags.scm
new file mode 100644
index 000000000..66f12527f
--- /dev/null
+++ b/aider/queries/tree-sitter-language-pack/matlab-tags.scm
@@ -0,0 +1,10 @@
+(class_definition
+ name: (identifier) @name.definition.class) @definition.class
+
+(function_definition
+ name: (identifier) @name.definition.function) @definition.function
+
+(function_call
+ name: (identifier) @name.reference.call) @reference.call
+
+(command (command_name) @name.reference.call) @reference.call
\ No newline at end of file
diff --git a/aider/queries/tree-sitter-languages/README.md b/aider/queries/tree-sitter-languages/README.md
index 12e1d5ee8..59e7219ca 100644
--- a/aider/queries/tree-sitter-languages/README.md
+++ b/aider/queries/tree-sitter-languages/README.md
@@ -21,3 +21,4 @@ tree-sitter language implementations:
* [https://github.com/tree-sitter/tree-sitter-ruby](https://github.com/tree-sitter/tree-sitter-ruby) β licensed under the MIT License.
* [https://github.com/tree-sitter/tree-sitter-rust](https://github.com/tree-sitter/tree-sitter-rust) β licensed under the MIT License.
* [https://github.com/tree-sitter/tree-sitter-typescript](https://github.com/tree-sitter/tree-sitter-typescript) β licensed under the MIT License.
+* [https://github.com/starelmanma/tree-sitter-fortran](https://github.com/starelmanma/tree-sitter-fortran) β licensed under the MIT License.
diff --git a/aider/queries/tree-sitter-languages/fortran-tags.scm b/aider/queries/tree-sitter-languages/fortran-tags.scm
new file mode 100644
index 000000000..c0bb260e8
--- /dev/null
+++ b/aider/queries/tree-sitter-languages/fortran-tags.scm
@@ -0,0 +1,15 @@
+;; derived from: https://github.com/stadelmanma/tree-sitter-fortran
+;; License: MIT
+
+(module_statement
+ (name) @name.definition.class) @definition.class
+
+(function_statement
+ name: (name) @name.definition.function) @definition.function
+
+(subroutine_statement
+ name: (name) @name.definition.function) @definition.function
+
+(module_procedure_statement
+ name: (name) @name.definition.function) @definition.function
+
\ No newline at end of file
diff --git a/aider/queries/tree-sitter-languages/haskell-tags.scm b/aider/queries/tree-sitter-languages/haskell-tags.scm
new file mode 100644
index 000000000..f5c073750
--- /dev/null
+++ b/aider/queries/tree-sitter-languages/haskell-tags.scm
@@ -0,0 +1,3 @@
+(function (variable) @name.definition.function)
+(bind (variable) @name.definition.function)
+(signature (variable) @name.definition.type)
diff --git a/aider/queries/tree-sitter-languages/julia-tags.scm b/aider/queries/tree-sitter-languages/julia-tags.scm
new file mode 100644
index 000000000..b7d33d93b
--- /dev/null
+++ b/aider/queries/tree-sitter-languages/julia-tags.scm
@@ -0,0 +1,60 @@
+;; derived from: https://github.com/tree-sitter/tree-sitter-julia
+;; License: MIT
+
+(module
+ name: (identifier) @name.definition.module) @definition.module
+
+(module
+ name: (scoped_identifier) @name.definition.module) @definition.module
+
+(struct_definition
+ name: (type_identifier) @name.definition.class) @definition.class
+
+(mutable_struct_definition
+ name: (type_identifier) @name.definition.class) @definition.class
+
+(abstract_type_declaration
+ name: (type_identifier) @name.definition.class) @definition.class
+
+(constant_assignment
+ left: (identifier) @name.definition.class) @definition.class
+
+(function_definition
+ name: (identifier) @name.definition.function) @definition.function
+
+(function_definition
+ name: (scoped_identifier) @name.definition.function) @definition.function
+
+(assignment
+ left: (call_expression
+ function: (identifier) @name.definition.function)) @definition.function
+
+(method_definition
+ name: (identifier) @name.definition.method) @definition.method
+
+(macro_definition
+ name: (identifier) @name.definition.macro) @definition.macro
+
+(macro_call
+ name: (identifier) @name.reference.call) @reference.call
+
+(call_expression
+ function: (identifier) @name.reference.call) @reference.call
+
+(call_expression
+ function: (scoped_identifier) @name.reference.call) @reference.call
+
+(type_expression
+ name: (type_identifier) @name.reference.type) @reference.type
+
+(constant_assignment
+ left: (identifier) @name.definition.constant) @definition.constant
+
+(export_statement
+ (identifier) @name.reference.export) @reference.export
+
+(using_statement
+ (identifier) @name.reference.module) @reference.module
+
+(import_statement
+ (identifier) @name.reference.module) @reference.module
diff --git a/aider/queries/tree-sitter-languages/matlab-tags.scm b/aider/queries/tree-sitter-languages/matlab-tags.scm
new file mode 100644
index 000000000..66f12527f
--- /dev/null
+++ b/aider/queries/tree-sitter-languages/matlab-tags.scm
@@ -0,0 +1,10 @@
+(class_definition
+ name: (identifier) @name.definition.class) @definition.class
+
+(function_definition
+ name: (identifier) @name.definition.function) @definition.function
+
+(function_call
+ name: (identifier) @name.reference.call) @reference.call
+
+(command (command_name) @name.reference.call) @reference.call
\ No newline at end of file
diff --git a/aider/queries/tree-sitter-languages/zig-tags.scm b/aider/queries/tree-sitter-languages/zig-tags.scm
new file mode 100644
index 000000000..c02028ea8
--- /dev/null
+++ b/aider/queries/tree-sitter-languages/zig-tags.scm
@@ -0,0 +1,3 @@
+(FnProto) @name.definition.function
+(VarDecl "const" @name.definition.constant)
+(VarDecl "var" @name.definition.variable)
diff --git a/aider/repo.py b/aider/repo.py
index 0723c6c14..e4597c8e4 100644
--- a/aider/repo.py
+++ b/aider/repo.py
@@ -21,6 +21,7 @@ import pathspec
from aider import prompts, utils
from .dump import dump # noqa: F401
+from .waiting import WaitingSpinner
ANY_GIT_ERROR += [
OSError,
@@ -164,7 +165,7 @@ class GitRepo:
- --attribute-author: Modify Author name to "User Name (aider)".
- --attribute-committer: Modify Committer name to "User Name (aider)".
- --attribute-co-authored-by: Add
- "Co-authored-by: aider () " trailer to commit message.
+ "Co-authored-by: aider () " trailer to commit message.
Behavior Summary:
@@ -209,7 +210,9 @@ class GitRepo:
else:
user_language = None
if coder:
- user_language = coder.get_user_language()
+ user_language = coder.commit_language
+ if not user_language:
+ user_language = coder.get_user_language()
commit_message = self.get_commit_message(diffs, context, user_language)
# Retrieve attribute settings, prioritizing coder.args if available
@@ -246,9 +249,7 @@ class GitRepo:
model_name = "unknown-model"
if coder and hasattr(coder, "main_model") and coder.main_model.name:
model_name = coder.main_model.name
- commit_message_trailer = (
- f"\n\nCo-authored-by: aider ({model_name}) "
- )
+ commit_message_trailer = f"\n\nCo-authored-by: aider ({model_name}) "
# Determine if author/committer names should be modified
# Author modification applies only to aider edits.
@@ -331,25 +332,35 @@ class GitRepo:
content += diffs
system_content = self.commit_prompt or prompts.commit_system
+
language_instruction = ""
if user_language:
language_instruction = f"\n- Is written in {user_language}."
system_content = system_content.format(language_instruction=language_instruction)
- messages = [
- dict(role="system", content=system_content),
- dict(role="user", content=content),
- ]
-
commit_message = None
for model in self.models:
- num_tokens = model.token_count(messages)
- max_tokens = model.info.get("max_input_tokens") or 0
- if max_tokens and num_tokens > max_tokens:
- continue
- commit_message = model.simple_send_with_retries(messages)
- if commit_message:
- break
+ spinner_text = f"Generating commit message with {model.name}"
+ with WaitingSpinner(spinner_text):
+ if model.system_prompt_prefix:
+ current_system_content = model.system_prompt_prefix + "\n" + system_content
+ else:
+ current_system_content = system_content
+
+ messages = [
+ dict(role="system", content=current_system_content),
+ dict(role="user", content=content),
+ ]
+
+ num_tokens = model.token_count(messages)
+ max_tokens = model.info.get("max_input_tokens") or 0
+
+ if max_tokens and num_tokens > max_tokens:
+ continue
+
+ commit_message = model.simple_send_with_retries(messages)
+ if commit_message:
+ break # Found a model that could generate the message
if not commit_message:
self.io.tool_error("Failed to generate commit message!")
@@ -386,14 +397,20 @@ class GitRepo:
try:
if current_branch_has_commits:
args = ["HEAD", "--"] + list(fnames)
- diffs += self.repo.git.diff(*args)
+ diffs += self.repo.git.diff(*args, stdout_as_string=False).decode(
+ self.io.encoding, "replace"
+ )
return diffs
wd_args = ["--"] + list(fnames)
index_args = ["--cached"] + wd_args
- diffs += self.repo.git.diff(*index_args)
- diffs += self.repo.git.diff(*wd_args)
+ diffs += self.repo.git.diff(*index_args, stdout_as_string=False).decode(
+ self.io.encoding, "replace"
+ )
+ diffs += self.repo.git.diff(*wd_args, stdout_as_string=False).decode(
+ self.io.encoding, "replace"
+ )
return diffs
except ANY_GIT_ERROR as err:
@@ -407,7 +424,9 @@ class GitRepo:
args += ["--color=never"]
args += [from_commit, to_commit]
- diffs = self.repo.git.diff(*args)
+ diffs = self.repo.git.diff(*args, stdout_as_string=False).decode(
+ self.io.encoding, "replace"
+ )
return diffs
diff --git a/aider/repomap.py b/aider/repomap.py
index 6328a701f..23eee239f 100644
--- a/aider/repomap.py
+++ b/aider/repomap.py
@@ -19,7 +19,7 @@ from tqdm import tqdm
from aider.dump import dump
from aider.special import filter_important_files
-from aider.utils import Spinner
+from aider.waiting import Spinner
# tree_sitter is throwing a FutureWarning
warnings.simplefilter("ignore", category=FutureWarning)
@@ -468,10 +468,11 @@ class RepoMap:
mul = 1.0
is_snake = ("_" in ident) and any(c.isalpha() for c in ident)
+ is_kebab = ("-" in ident) and any(c.isalpha() for c in ident)
is_camel = any(c.isupper() for c in ident) and any(c.islower() for c in ident)
if ident in mentioned_idents:
mul *= 10
- if (is_snake or is_camel) and len(ident) >= 8:
+ if (is_snake or is_kebab or is_camel) and len(ident) >= 8:
mul *= 10
if ident.startswith("_"):
mul *= 0.1
diff --git a/aider/resources/model-metadata.json b/aider/resources/model-metadata.json
index 72c394730..64c480e55 100644
--- a/aider/resources/model-metadata.json
+++ b/aider/resources/model-metadata.json
@@ -1,16 +1,32 @@
{
- "deepseek-reasoner": {
- "max_tokens": 8192,
- "max_input_tokens": 64000,
- "max_output_tokens": 8192,
- "input_cost_per_token": 0.00000055,
- "input_cost_per_token_cache_hit": 0.00000014,
- "cache_read_input_token_cost": 0.00000014,
+ "deepseek/deepseek-reasoner": {
+ "max_tokens": 64000,
+ "max_input_tokens": 128000,
+ "max_output_tokens": 64000,
+ "input_cost_per_token": 0.00000028,
+ "input_cost_per_token_cache_hit": 0.000000028,
+ "cache_read_input_token_cost": 0.000000028,
"cache_creation_input_token_cost": 0.0,
- "output_cost_per_token": 0.00000219,
+ "output_cost_per_token": 0.00000042,
"litellm_provider": "deepseek",
"mode": "chat",
- //"supports_function_calling": true,
+ //"supports_function_calling": true,
+ "supports_assistant_prefill": true,
+ "supports_tool_choice": false,
+ "supports_prompt_caching": true
+ },
+ "deepseek/deepseek-chat": {
+ "max_tokens": 8192,
+ "max_input_tokens": 128000,
+ "max_output_tokens": 8192,
+ "input_cost_per_token": 0.00000028,
+ "input_cost_per_token_cache_hit": 0.000000028,
+ "cache_read_input_token_cost": 0.000000028,
+ "cache_creation_input_token_cost": 0.0,
+ "output_cost_per_token": 0.00000042,
+ "litellm_provider": "deepseek",
+ "mode": "chat",
+ //"supports_function_calling": true,
"supports_assistant_prefill": true,
//"supports_tool_choice": true,
"supports_prompt_caching": true
@@ -49,7 +65,7 @@
},
"openrouter/deepseek/deepseek-chat-v3-0324": {
"max_tokens": 8192,
- "max_input_tokens": 64000,
+ "max_input_tokens": 131072,
"max_output_tokens": 8192,
"input_cost_per_token": 0.00000055,
"input_cost_per_token_cache_hit": 0.00000014,
@@ -276,6 +292,61 @@
"supports_tool_choice": true,
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing"
},
+ "vertex_ai/gemini-2.5-pro": {
+ "max_tokens": 65536,
+ "max_input_tokens": 1048576,
+ "max_output_tokens": 65536,
+ "max_images_per_prompt": 3000,
+ "max_videos_per_prompt": 10,
+ "max_video_length": 1,
+ "max_audio_length_hours": 8.4,
+ "max_audio_per_prompt": 1,
+ "max_pdf_size_mb": 20,
+ "input_cost_per_token": 0.00000125,
+ "input_cost_per_token_above_200k_tokens": 0.0000025,
+ "output_cost_per_token": 0.00001,
+ "output_cost_per_token_above_200k_tokens": 0.000015,
+ "litellm_provider": "vertex_ai-language-models",
+ "mode": "chat",
+ "rpm": 2000,
+ "tpm": 8000000,
+ "supports_system_messages": true,
+ "supports_function_calling": true,
+ "supports_vision": true,
+ "supports_response_schema": true,
+ "supports_audio_output": false,
+ "supports_tool_choice": true,
+ "supported_modalities": ["text", "image", "audio", "video"],
+ "supported_output_modalities": ["text"],
+ "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing"
+ },
+ "vertex_ai/gemini-2.5-flash": {
+ "max_tokens": 65536,
+ "max_input_tokens": 1048576,
+ "max_output_tokens": 65536,
+ "max_images_per_prompt": 3000,
+ "max_videos_per_prompt": 10,
+ "max_video_length": 1,
+ "max_audio_length_hours": 8.4,
+ "max_audio_per_prompt": 1,
+ "max_pdf_size_mb": 20,
+ "input_cost_per_token": 0.0000003,
+ "input_cost_per_audio_token": 0.000001,
+ "output_cost_per_token": 0.0000025,
+ "litellm_provider": "vertex_ai-language-models",
+ "mode": "chat",
+ "rpm": 10000,
+ "tpm": 8000000,
+ "supports_system_messages": true,
+ "supports_function_calling": true,
+ "supports_vision": true,
+ "supports_response_schema": true,
+ "supports_audio_output": false,
+ "supports_tool_choice": true,
+ "supported_modalities": ["text", "image", "audio", "video"],
+ "supported_output_modalities": ["text"],
+ "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing"
+ },
"openrouter/google/gemini-2.5-pro-preview-03-25": {
"max_tokens": 8192,
"max_input_tokens": 1048576,
@@ -348,6 +419,42 @@
"supports_tool_choice": true,
"source": "https://cloud.google.com/vertex-ai/generative-ai/pricing"
},
+ "openrouter/google/gemini-2.5": {
+ "max_tokens": 8192,
+ "max_input_tokens": 1048576,
+ "max_output_tokens": 64000,
+ "max_images_per_prompt": 3000,
+ "max_videos_per_prompt": 10,
+ "max_video_length": 1,
+ "max_audio_length_hours": 8.4,
+ "max_audio_per_prompt": 1,
+ "max_pdf_size_mb": 30,
+ "input_cost_per_image": 0,
+ "input_cost_per_video_per_second": 0,
+ "input_cost_per_audio_per_second": 0,
+ "input_cost_per_token": 0,
+ "input_cost_per_character": 0,
+ "input_cost_per_token_above_128k_tokens": 0,
+ "input_cost_per_character_above_128k_tokens": 0,
+ "input_cost_per_image_above_128k_tokens": 0,
+ "input_cost_per_video_per_second_above_128k_tokens": 0,
+ "input_cost_per_audio_per_second_above_128k_tokens": 0,
+ "output_cost_per_token": 0,
+ "output_cost_per_character": 0,
+ "output_cost_per_token_above_128k_tokens": 0,
+ "output_cost_per_character_above_128k_tokens": 0,
+ "litellm_provider": "openrouter",
+ "mode": "chat",
+ "supports_system_messages": true,
+ "supports_function_calling": true,
+ "supports_vision": true,
+ "supports_audio_input": true,
+ "supports_video_input": true,
+ "supports_pdf_input": true,
+ "supports_response_schema": true,
+ "supports_tool_choice": true,
+ "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing"
+ },
"openrouter/x-ai/grok-3-beta": {
"max_tokens": 131072,
"max_input_tokens": 131072,
@@ -432,6 +539,35 @@
"supported_output_modalities": ["text"],
"source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview"
},
+ "gemini-2.5-pro-preview-06-05": {
+ "max_tokens": 65536,
+ "max_input_tokens": 1048576,
+ "max_output_tokens": 65536,
+ "max_images_per_prompt": 3000,
+ "max_videos_per_prompt": 10,
+ "max_video_length": 1,
+ "max_audio_length_hours": 8.4,
+ "max_audio_per_prompt": 1,
+ "max_pdf_size_mb": 30,
+ "input_cost_per_audio_token": 0.00000125,
+ "input_cost_per_token": 0.00000125,
+ "input_cost_per_token_above_200k_tokens": 0.0000025,
+ "output_cost_per_token": 0.00001,
+ "output_cost_per_token_above_200k_tokens": 0.000015,
+ "litellm_provider": "vertex_ai-language-models",
+ "mode": "chat",
+ "supports_reasoning": true,
+ "supports_system_messages": true,
+ "supports_function_calling": true,
+ "supports_vision": true,
+ "supports_response_schema": true,
+ "supports_audio_output": false,
+ "supports_tool_choice": true,
+ "supported_endpoints": ["/v1/chat/completions", "/v1/completions", "/v1/batch"],
+ "supported_modalities": ["text", "image", "audio", "video"],
+ "supported_output_modalities": ["text"],
+ "source": "https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-preview"
+ },
"gemini/gemini-2.5-pro-preview-05-06": {
"max_tokens": 65536,
"max_input_tokens": 1048576,
@@ -461,6 +597,117 @@
"supported_output_modalities": ["text"],
"source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-pro-preview"
},
+ "gemini/gemini-2.5-pro-preview-06-05": {
+ "max_tokens": 65536,
+ "max_input_tokens": 1048576,
+ "max_output_tokens": 65536,
+ "max_images_per_prompt": 3000,
+ "max_videos_per_prompt": 10,
+ "max_video_length": 1,
+ "max_audio_length_hours": 8.4,
+ "max_audio_per_prompt": 1,
+ "max_pdf_size_mb": 30,
+ "input_cost_per_audio_token": 0.0000007,
+ "input_cost_per_token": 0.00000125,
+ "input_cost_per_token_above_200k_tokens": 0.0000025,
+ "output_cost_per_token": 0.00001,
+ "output_cost_per_token_above_200k_tokens": 0.000015,
+ "litellm_provider": "gemini",
+ "mode": "chat",
+ "rpm": 10000,
+ "tpm": 10000000,
+ "supports_system_messages": true,
+ "supports_function_calling": true,
+ "supports_vision": true,
+ "supports_response_schema": true,
+ "supports_audio_output": false,
+ "supports_tool_choice": true,
+ "supported_modalities": ["text", "image", "audio", "video"],
+ "supported_output_modalities": ["text"],
+ "source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-pro-preview"
+ },
+ "gemini/gemini-2.5-pro": {
+ "max_tokens": 65536,
+ "max_input_tokens": 1048576,
+ "max_output_tokens": 65536,
+ "max_images_per_prompt": 3000,
+ "max_videos_per_prompt": 10,
+ "max_video_length": 1,
+ "max_audio_length_hours": 8.4,
+ "max_audio_per_prompt": 1,
+ "max_pdf_size_mb": 20,
+ "input_cost_per_token": 0.00000125,
+ "input_cost_per_token_above_200k_tokens": 0.0000025,
+ "output_cost_per_token": 0.00001,
+ "output_cost_per_token_above_200k_tokens": 0.000015,
+ "litellm_provider": "gemini",
+ "mode": "chat",
+ "rpm": 2000,
+ "tpm": 8000000,
+ "supports_system_messages": true,
+ "supports_function_calling": true,
+ "supports_vision": true,
+ "supports_response_schema": true,
+ "supports_audio_output": false,
+ "supports_tool_choice": true,
+ "supported_modalities": ["text", "image", "audio", "video"],
+ "supported_output_modalities": ["text"],
+ "source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-pro"
+ },
+ "gemini/gemini-2.5-flash": {
+ "max_tokens": 65536,
+ "max_input_tokens": 1048576,
+ "max_output_tokens": 65536,
+ "max_images_per_prompt": 3000,
+ "max_videos_per_prompt": 10,
+ "max_video_length": 1,
+ "max_audio_length_hours": 8.4,
+ "max_audio_per_prompt": 1,
+ "max_pdf_size_mb": 20,
+ "input_cost_per_token": 0.00000035,
+ "input_cost_per_audio_token": 0.000001,
+ "output_cost_per_token": 0.0000025,
+ "litellm_provider": "gemini",
+ "mode": "chat",
+ "rpm": 10000,
+ "tpm": 8000000,
+ "supports_system_messages": true,
+ "supports_function_calling": true,
+ "supports_vision": true,
+ "supports_response_schema": true,
+ "supports_audio_output": false,
+ "supports_tool_choice": true,
+ "supported_modalities": ["text", "image", "audio", "video"],
+ "supported_output_modalities": ["text"],
+ "source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-flash"
+ },
+ "gemini/gemini-2.5-flash-lite-preview-06-17": {
+ "max_tokens": 64000,
+ "max_input_tokens": 1000000,
+ "max_output_tokens": 64000,
+ "max_images_per_prompt": 3000,
+ "max_videos_per_prompt": 10,
+ "max_video_length": 1,
+ "max_audio_length_hours": 8.4,
+ "max_audio_per_prompt": 1,
+ "max_pdf_size_mb": 20,
+ "input_cost_per_token": 0.00000001,
+ "input_cost_per_audio_token": 0.0000005,
+ "output_cost_per_token": 0.0000004,
+ "litellm_provider": "gemini",
+ "mode": "chat",
+ "rpm": 30000,
+ "tpm": 30000000,
+ "supports_system_messages": true,
+ "supports_function_calling": true,
+ "supports_vision": true,
+ "supports_response_schema": true,
+ "supports_audio_output": false,
+ "supports_tool_choice": true,
+ "supported_modalities": ["text", "image", "audio", "video"],
+ "supported_output_modalities": ["text"],
+ "source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-flash-lite"
+ },
"together_ai/Qwen/Qwen3-235B-A22B-fp8-tput": {
"input_cost_per_token": 0.0000002,
"output_cost_per_token": 0.0000006,
diff --git a/aider/resources/model-settings.yml b/aider/resources/model-settings.yml
index 5b00a0f0d..9052c668e 100644
--- a/aider/resources/model-settings.yml
+++ b/aider/resources/model-settings.yml
@@ -315,7 +315,7 @@
editor_edit_format: editor-diff
accepts_settings: ["thinking_tokens"]
-- name: vertex_ai-anthropic_models/vertex_ai/claude-3-7-sonnet@20250219
+- name: vertex_ai/claude-3-7-sonnet@20250219
overeager: true
edit_format: diff
weak_model_name: vertex_ai/claude-3-5-haiku@20241022
@@ -323,7 +323,7 @@
examples_as_sys_msg: true
extra_params:
max_tokens: 64000
- editor_model_name: vertex_ai-anthropic_models/vertex_ai/claude-3-7-sonnet@20250219
+ editor_model_name: vertex_ai/claude-3-7-sonnet@20250219
editor_edit_format: editor-diff
accepts_settings: ["thinking_tokens"]
@@ -533,28 +533,10 @@
edit_format: diff-fenced
use_repo_map: true
-- name: gemini/gemini-1.5-pro-exp-0827
- edit_format: diff-fenced
- use_repo_map: true
-
- name: gemini/gemini-exp-1206
edit_format: diff
use_repo_map: true
-- name: gemini/gemini-exp-1114
- edit_format: diff
- use_repo_map: true
-
-- name: gemini/gemini-exp-1121
- edit_format: diff
- use_repo_map: true
-
-- name: vertex_ai/gemini-pro-experimental
- edit_format: diff-fenced
- use_repo_map: true
-
-- name: gemini/gemini-1.5-flash-exp-0827
-
- name: gemini/gemini-2.0-flash-exp
edit_format: diff
use_repo_map: true
@@ -603,7 +585,7 @@
use_repo_map: true
examples_as_sys_msg: true
extra_params:
- max_tokens: 8192
+ max_tokens: 64000
caches_by_default: true
use_temperature: false
editor_model_name: deepseek/deepseek-chat
@@ -674,7 +656,7 @@
reminder: sys
examples_as_sys_msg: true
extra_params:
- max_tokens: 8192
+ max_tokens: 65536
caches_by_default: true
- name: openrouter/openai/gpt-4o
@@ -818,6 +800,13 @@
editor_model_name: openrouter/deepseek/deepseek-chat
editor_edit_format: editor-diff
+- name: openrouter/moonshotai/kimi-k2
+ edit_format: diff
+ use_repo_map: true
+ examples_as_sys_msg: true
+ extra_params:
+ temperature: 0.6
+
- name: fireworks_ai/accounts/fireworks/models/deepseek-r1
edit_format: diff
weak_model_name: fireworks_ai/accounts/fireworks/models/deepseek-v3
@@ -978,16 +967,16 @@
- name: vertex_ai/gemini-2.5-pro-exp-03-25
edit_format: diff-fenced
use_repo_map: true
- weak_model_name: vertex_ai-language-models/gemini-2.5-flash-preview-04-17
+ weak_model_name: vertex_ai/gemini-2.5-flash-preview-04-17
overeager: true
- editor_model_name: vertex_ai-language-models/gemini-2.5-flash-preview-04-17
+ editor_model_name: vertex_ai/gemini-2.5-flash-preview-04-17
- name: vertex_ai/gemini-2.5-pro-preview-03-25
edit_format: diff-fenced
use_repo_map: true
- weak_model_name: vertex_ai-language-models/gemini-2.5-flash-preview-04-17
+ weak_model_name: vertex_ai/gemini-2.5-flash-preview-04-17
overeager: true
- editor_model_name: vertex_ai-language-models/gemini-2.5-flash-preview-04-17
+ editor_model_name: vertex_ai/gemini-2.5-flash-preview-04-17
- name: openrouter/openrouter/quasar-alpha
use_repo_map: true
@@ -1007,9 +996,6 @@
edit_format: whole
accepts_settings:
- reasoning_effort
- #extra_params:
- # extra_body:
- # reasoning_effort: high
- name: openai/o4-mini
edit_format: diff
@@ -1021,9 +1007,6 @@
system_prompt_prefix: "Formatting re-enabled. "
accepts_settings: ["reasoning_effort"]
examples_as_sys_msg: true
- #extra_params:
- # extra_body:
- # reasoning_effort: high
- name: openrouter/openai/o4-mini
edit_format: diff
@@ -1035,9 +1018,6 @@
system_prompt_prefix: "Formatting re-enabled. "
accepts_settings: ["reasoning_effort"]
examples_as_sys_msg: true
- #extra_params:
- # extra_body:
- # reasoning_effort: high
- name: azure/o4-mini
edit_format: diff
@@ -1049,18 +1029,24 @@
system_prompt_prefix: "Formatting re-enabled. "
accepts_settings: ["reasoning_effort"]
examples_as_sys_msg: true
- #extra_params:
- # extra_body:
- # reasoning_effort: high
+
+- name: xai/grok-4
+ use_repo_map: true
+ edit_format: diff
+ accepts_settings:
+ - reasoning_effort
+
+- name: openrouter/x-ai/grok-4
+ use_repo_map: true
+ edit_format: diff
+ accepts_settings:
+ - reasoning_effort
- name: xai/grok-3-mini-beta
use_repo_map: true
edit_format: whole
accepts_settings:
- reasoning_effort
- #extra_params:
- # extra_body:
- # reasoning_effort: low
- name: openrouter/x-ai/grok-3-fast-beta
use_repo_map: true
@@ -1153,9 +1139,17 @@
system_prompt_prefix: "Formatting re-enabled. "
accepts_settings: ["reasoning_effort"]
examples_as_sys_msg: true
- #extra_params:
- # extra_body:
- # reasoning_effort: high
+
+- name: o3-pro
+ streaming: false
+ edit_format: diff
+ weak_model_name: gpt-4.1-mini
+ use_repo_map: true
+ editor_model_name: gpt-4.1
+ editor_edit_format: editor-diff
+ system_prompt_prefix: "Formatting re-enabled. "
+ accepts_settings: ["reasoning_effort"]
+ examples_as_sys_msg: true
- name: openai/o4-mini
edit_format: diff
@@ -1167,9 +1161,6 @@
system_prompt_prefix: "Formatting re-enabled. "
accepts_settings: ["reasoning_effort"]
examples_as_sys_msg: true
- #extra_params:
- # extra_body:
- # reasoning_effort: high
- name: openrouter/openai/o4-mini
edit_format: diff
@@ -1181,9 +1172,6 @@
system_prompt_prefix: "Formatting re-enabled. "
accepts_settings: ["reasoning_effort"]
examples_as_sys_msg: true
- #extra_params:
- # extra_body:
- # reasoning_effort: high
- name: azure/o4-mini
edit_format: diff
@@ -1195,9 +1183,6 @@
system_prompt_prefix: "Formatting re-enabled. "
accepts_settings: ["reasoning_effort"]
examples_as_sys_msg: true
- #extra_params:
- # extra_body:
- # reasoning_effort: high
- name: openai/o3
streaming: false
@@ -1209,9 +1194,17 @@
system_prompt_prefix: "Formatting re-enabled. "
accepts_settings: ["reasoning_effort"]
examples_as_sys_msg: true
- #extra_params:
- # extra_body:
- # reasoning_effort: high
+
+- name: openai/o3-pro
+ streaming: false
+ edit_format: diff
+ weak_model_name: openai/gpt-4.1-mini
+ use_repo_map: true
+ editor_model_name: openai/gpt-4.1
+ editor_edit_format: editor-diff
+ system_prompt_prefix: "Formatting re-enabled. "
+ accepts_settings: ["reasoning_effort"]
+ examples_as_sys_msg: true
- name: openai/o4-mini
edit_format: diff
@@ -1223,9 +1216,6 @@
system_prompt_prefix: "Formatting re-enabled. "
accepts_settings: ["reasoning_effort"]
examples_as_sys_msg: true
- #extra_params:
- # extra_body:
- # reasoning_effort: high
- name: openrouter/openai/o4-mini
edit_format: diff
@@ -1237,9 +1227,6 @@
system_prompt_prefix: "Formatting re-enabled. "
accepts_settings: ["reasoning_effort"]
examples_as_sys_msg: true
- #extra_params:
- # extra_body:
- # reasoning_effort: high
- name: azure/o4-mini
edit_format: diff
@@ -1251,9 +1238,6 @@
system_prompt_prefix: "Formatting re-enabled. "
accepts_settings: ["reasoning_effort"]
examples_as_sys_msg: true
- #extra_params:
- # extra_body:
- # reasoning_effort: high
- name: openrouter/openai/o3
streaming: false
@@ -1265,9 +1249,17 @@
system_prompt_prefix: "Formatting re-enabled. "
accepts_settings: ["reasoning_effort"]
examples_as_sys_msg: true
- #extra_params:
- # extra_body:
- # reasoning_effort: high
+
+- name: openrouter/openai/o3-pro
+ streaming: false
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-4.1-mini
+ use_repo_map: true
+ editor_model_name: openrouter/openai/gpt-4.1
+ editor_edit_format: editor-diff
+ system_prompt_prefix: "Formatting re-enabled. "
+ accepts_settings: ["reasoning_effort"]
+ examples_as_sys_msg: true
- name: openai/o4-mini
edit_format: diff
@@ -1279,9 +1271,6 @@
system_prompt_prefix: "Formatting re-enabled. "
accepts_settings: ["reasoning_effort"]
examples_as_sys_msg: true
- #extra_params:
- # extra_body:
- # reasoning_effort: high
- name: openrouter/openai/o4-mini
edit_format: diff
@@ -1293,9 +1282,6 @@
system_prompt_prefix: "Formatting re-enabled. "
accepts_settings: ["reasoning_effort"]
examples_as_sys_msg: true
- #extra_params:
- # extra_body:
- # reasoning_effort: high
- name: azure/o4-mini
edit_format: diff
@@ -1307,9 +1293,6 @@
system_prompt_prefix: "Formatting re-enabled. "
accepts_settings: ["reasoning_effort"]
examples_as_sys_msg: true
- #extra_params:
- # extra_body:
- # reasoning_effort: high
- name: azure/o3
streaming: false
@@ -1321,9 +1304,17 @@
system_prompt_prefix: "Formatting re-enabled. "
accepts_settings: ["reasoning_effort"]
examples_as_sys_msg: true
- #extra_params:
- # extra_body:
- # reasoning_effort: high
+
+- name: azure/o3-pro
+ streaming: false
+ edit_format: diff
+ weak_model_name: azure/gpt-4.1-mini
+ use_repo_map: true
+ editor_model_name: azure/gpt-4.1
+ editor_edit_format: editor-diff
+ system_prompt_prefix: "Formatting re-enabled. "
+ accepts_settings: ["reasoning_effort"]
+ examples_as_sys_msg: true
- name: openai/o4-mini
edit_format: diff
@@ -1368,9 +1359,6 @@
system_prompt_prefix: "Formatting re-enabled. "
accepts_settings: ["reasoning_effort"]
examples_as_sys_msg: true
- #extra_params:
- # extra_body:
- # reasoning_effort: high
- name: gemini/gemini-2.5-flash-preview-04-17
edit_format: diff
@@ -1382,7 +1370,7 @@
use_repo_map: true
accepts_settings: ["reasoning_effort", "thinking_tokens"]
-- name: vertex_ai-language-models/gemini-2.5-flash-preview-04-17
+- name: vertex_ai/gemini-2.5-flash-preview-04-17
edit_format: diff
use_repo_map: true
accepts_settings: ["reasoning_effort", "thinking_tokens"]
@@ -1399,19 +1387,126 @@
use_repo_map: true
weak_model_name: gemini/gemini-2.5-flash-preview-04-17
+- name: gemini/gemini-2.5-pro-preview-06-05
+ overeager: true
+ edit_format: diff-fenced
+ use_repo_map: true
+ weak_model_name: gemini/gemini-2.5-flash-preview-04-17
+ accepts_settings: ["thinking_tokens"]
+
+- name: gemini/gemini-2.5-flash
+ overeager: true
+ edit_format: diff-fenced
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["thinking_tokens"]
+
+- name: gemini/gemini-2.5-pro
+ overeager: true
+ edit_format: diff-fenced
+ use_repo_map: true
+ weak_model_name: gemini/gemini-2.5-flash
+ use_temperature: false
+ accepts_settings: ["thinking_tokens"]
+
+- name: gemini/gemini-2.5-flash-lite-preview-06-17
+ overeager: true
+ edit_format: diff-fenced
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["thinking_tokens"]
+
- name: vertex_ai/gemini-2.5-pro-preview-05-06
edit_format: diff-fenced
use_repo_map: true
- weak_model_name: vertex_ai-language-models/gemini-2.5-flash-preview-04-17
+ weak_model_name: vertex_ai/gemini-2.5-flash-preview-04-17
overeager: true
- editor_model_name: vertex_ai-language-models/gemini-2.5-flash-preview-04-17
+ editor_model_name: vertex_ai/gemini-2.5-flash-preview-04-17
+
+- name: vertex_ai/gemini-2.5-pro-preview-06-05
+ edit_format: diff-fenced
+ use_repo_map: true
+ weak_model_name: vertex_ai/gemini-2.5-flash-preview-04-17
+ overeager: true
+ editor_model_name: vertex_ai/gemini-2.5-flash-preview-04-17
+ accepts_settings: ["thinking_tokens"]
+
+- name: vertex_ai/gemini-2.5-pro
+ edit_format: diff-fenced
+ use_repo_map: true
+ weak_model_name: vertex_ai/gemini-2.5-flash
+ overeager: true
+ editor_model_name: vertex_ai/gemini-2.5-flash
+ accepts_settings: ["thinking_tokens"]
+
+- name: vertex_ai/gemini-2.5-flash
+ overeager: true
+ edit_format: diff-fenced
+ use_repo_map: true
+ accepts_settings: ["thinking_tokens"]
- name: openrouter/google/gemini-2.5-pro-preview-05-06
overeager: true
edit_format: diff-fenced
use_repo_map: true
weak_model_name: openrouter/google/gemini-2.0-flash-001
-
+
+- name: openrouter/google/gemini-2.5-pro-preview-06-05
+ overeager: true
+ edit_format: diff-fenced
+ use_repo_map: true
+ weak_model_name: openrouter/google/gemini-2.0-flash-001
+ accepts_settings: ["thinking_tokens"]
+
+- name: openrouter/google/gemini-2.5-pro
+ overeager: true
+ edit_format: diff-fenced
+ use_repo_map: true
+ weak_model_name: openrouter/google/gemini-2.5-flash
+ accepts_settings: ["thinking_tokens"]
+
+- name: gemini/gemini-3-pro-preview
+ overeager: true
+ edit_format: diff-fenced
+ use_repo_map: true
+ weak_model_name: gemini/gemini-2.5-flash
+ use_temperature: false
+ accepts_settings: ["thinking_tokens"]
+
+- name: vertex_ai/gemini-3-pro-preview
+ edit_format: diff-fenced
+ use_repo_map: true
+ weak_model_name: vertex_ai/gemini-2.5-flash
+ overeager: true
+ editor_model_name: vertex_ai/gemini-2.5-flash
+ accepts_settings: ["thinking_tokens"]
+
+- name: openrouter/google/gemini-3-pro-preview
+ overeager: true
+ edit_format: diff-fenced
+ use_repo_map: true
+ weak_model_name: openrouter/google/gemini-2.5-flash
+ accepts_settings: ["thinking_tokens"]
+
+- name: gemini/gemini-3-flash-preview
+ overeager: true
+ edit_format: diff-fenced
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["thinking_tokens"]
+
+- name: vertex_ai/gemini-3-flash-preview
+ overeager: true
+ edit_format: diff-fenced
+ use_repo_map: true
+ accepts_settings: ["thinking_tokens"]
+
+- name: openrouter/google/gemini-3-flash-preview
+ overeager: true
+ edit_format: diff-fenced
+ use_repo_map: true
+ accepts_settings: ["thinking_tokens"]
+
#- name: openrouter/qwen/qwen3-235b-a22b
# system_prompt_prefix: "/no_think"
# use_temperature: 0.7
@@ -1435,4 +1530,869 @@
# top_k: 20
# min_p: 0.0
# temperature: 0.7
-
\ No newline at end of file
+
+
+- name: claude-sonnet-4-20250514
+ edit_format: diff
+ weak_model_name: claude-3-5-haiku-20241022
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: claude-sonnet-4-20250514
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: anthropic/claude-sonnet-4-20250514
+ edit_format: diff
+ weak_model_name: anthropic/claude-3-5-haiku-20241022
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: anthropic/claude-sonnet-4-20250514
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: bedrock/anthropic.claude-sonnet-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: bedrock/anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: bedrock/anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: bedrock/us.anthropic.claude-sonnet-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: bedrock/us.anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: bedrock/us.anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: bedrock/global.anthropic.claude-sonnet-4-5-20250929-v1:0
+ edit_format: diff
+ weak_model_name: bedrock/anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: bedrock/global.anthropic.claude-sonnet-4-5-20250929-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: bedrock_converse/anthropic.claude-sonnet-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: bedrock_converse/anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: bedrock_converse/anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: bedrock_converse/us.anthropic.claude-sonnet-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: bedrock_converse/us.anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: bedrock_converse/us.anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: vertex_ai/claude-sonnet-4@20250514
+ edit_format: diff
+ weak_model_name: vertex_ai/claude-3-5-haiku@20241022
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ max_tokens: 64000
+ editor_model_name: vertex_ai/claude-sonnet-4@20250514
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: vertex_ai/claude-sonnet-4@20250514
+ edit_format: diff
+ weak_model_name: vertex_ai/claude-3-5-haiku@20241022
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ max_tokens: 64000
+ editor_model_name: vertex_ai/claude-sonnet-4@20250514
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: openrouter/anthropic/claude-sonnet-4
+ edit_format: diff
+ weak_model_name: openrouter/anthropic/claude-3-5-haiku
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: openrouter/anthropic/claude-sonnet-4
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: anthropic.claude-sonnet-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: bedrock_converse/eu.anthropic.claude-sonnet-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: bedrock_converse/eu.anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: bedrock_converse/eu.anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: eu.anthropic.claude-sonnet-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: eu.anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: eu.anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: us.anthropic.claude-sonnet-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: us.anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: us.anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: claude-opus-4-20250514
+ edit_format: diff
+ weak_model_name: claude-3-5-haiku-20241022
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 32000
+ cache_control: true
+ editor_model_name: claude-sonnet-4-20250514
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: anthropic/claude-opus-4-20250514
+ edit_format: diff
+ weak_model_name: anthropic/claude-3-5-haiku-20241022
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 32000
+ cache_control: true
+ editor_model_name: anthropic/claude-sonnet-4-20250514
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: anthropic.claude-opus-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 32000
+ cache_control: true
+ editor_model_name: anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: bedrock_converse/anthropic.claude-opus-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: bedrock_converse/anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 32000
+ cache_control: true
+ editor_model_name: bedrock_converse/anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: bedrock_converse/us.anthropic.claude-opus-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: bedrock_converse/us.anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 32000
+ cache_control: true
+ editor_model_name: bedrock_converse/us.anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: bedrock_converse/eu.anthropic.claude-opus-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: bedrock_converse/eu.anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 32000
+ cache_control: true
+ editor_model_name: bedrock_converse/eu.anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: eu.anthropic.claude-opus-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: eu.anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 32000
+ cache_control: true
+ editor_model_name: eu.anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: us.anthropic.claude-opus-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: us.anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 32000
+ cache_control: true
+ editor_model_name: us.anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: vertex_ai/claude-opus-4@20250514
+ edit_format: diff
+ weak_model_name: vertex_ai/claude-3-5-haiku@20241022
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ max_tokens: 32000
+ editor_model_name: vertex_ai/claude-sonnet-4@20250514
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: vertex_ai/claude-opus-4@20250514
+ edit_format: diff
+ weak_model_name: vertex_ai/claude-3-5-haiku@20241022
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ max_tokens: 32000
+ editor_model_name: vertex_ai/claude-sonnet-4@20250514
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+- name: vertex_ai/gemini-2.5-flash-preview-05-20
+ edit_format: diff
+ use_repo_map: true
+ accepts_settings: ["reasoning_effort", "thinking_tokens"]
+
+- name: openrouter/anthropic/claude-opus-4
+ edit_format: diff
+ weak_model_name: openrouter/anthropic/claude-3-5-haiku
+ use_repo_map: true
+ examples_as_sys_msg: false
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 32000
+ cache_control: true
+ editor_model_name: openrouter/anthropic/claude-sonnet-4
+ editor_edit_format: editor-diff
+ accepts_settings: ["thinking_tokens"]
+
+# GPT-5 family
+- name: gpt-5
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+ overeager: true
+
+- name: gpt-5-pro
+ streaming: false
+ edit_format: diff
+ weak_model_name: gpt-5-mini
+ use_repo_map: true
+ editor_model_name: gpt-5
+ editor_edit_format: editor-diff
+ system_prompt_prefix: "Formatting re-enabled. "
+ accepts_settings: ["reasoning_effort"]
+ examples_as_sys_msg: true
+ use_temperature: false
+
+- name: gpt-5-2025-08-07
+ edit_format: diff
+ weak_model_name: gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: gpt-5.1
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+ overeager: true
+
+- name: gpt-5.1-2025-11-13
+ edit_format: diff
+ weak_model_name: gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: gpt-5.2-pro
+ streaming: false
+ edit_format: diff
+ weak_model_name: gpt-5-mini
+ use_repo_map: true
+ editor_model_name: gpt-5.2
+ editor_edit_format: editor-diff
+ system_prompt_prefix: "Formatting re-enabled. "
+ accepts_settings: ["reasoning_effort"]
+ examples_as_sys_msg: true
+ use_temperature: false
+
+- name: gpt-5.2
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+ overeager: true
+
+- name: gpt-5.2-2025-12-11
+ edit_format: diff
+ weak_model_name: gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: gpt-5-mini
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: gpt-5-mini-2025-08-07
+ edit_format: diff
+ weak_model_name: gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: gpt-5-nano
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: gpt-5-nano-2025-08-07
+ edit_format: diff
+ weak_model_name: gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: gpt-5-chat
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: gpt-5-chat-latest
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: gpt-5.1-chat
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: gpt-5.1-chat-latest
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: gpt-5.2-chat-latest
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: gpt-5-codex
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: gpt-5.1-codex
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: azure/gpt-5
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: azure/gpt-5-pro
+ streaming: false
+ edit_format: diff
+ weak_model_name: azure/gpt-5-mini
+ use_repo_map: true
+ editor_model_name: azure/gpt-5
+ editor_edit_format: editor-diff
+ system_prompt_prefix: "Formatting re-enabled. "
+ accepts_settings: ["reasoning_effort"]
+ examples_as_sys_msg: true
+ use_temperature: false
+
+- name: azure/gpt-5-2025-08-07
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: azure/gpt-5.1
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: azure/gpt-5.1-2025-11-13
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: azure/gpt-5.2
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: azure/gpt-5.2-2025-12-11
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: azure/gpt-5-mini
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: azure/gpt-5-mini-2025-08-07
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: azure/gpt-5-nano
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: azure/gpt-5-nano-2025-08-07
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: azure/gpt-5-chat
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: azure/gpt-5-chat-latest
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: azure/gpt-5.1-chat
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: azure/gpt-5.1-chat-latest
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: azure/gpt-5.2-chat-latest
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openai/gpt-5
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openai/gpt-5-pro
+ streaming: false
+ edit_format: diff
+ weak_model_name: openai/gpt-5-mini
+ use_repo_map: true
+ editor_model_name: openai/gpt-5
+ editor_edit_format: editor-diff
+ system_prompt_prefix: "Formatting re-enabled. "
+ accepts_settings: ["reasoning_effort"]
+ examples_as_sys_msg: true
+ use_temperature: false
+
+- name: openai/gpt-5-2025-08-07
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openai/gpt-5.1
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openai/gpt-5.1-2025-11-13
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openai/gpt-5.2-pro
+ streaming: false
+ edit_format: diff
+ weak_model_name: openai/gpt-5-mini
+ use_repo_map: true
+ editor_model_name: openai/gpt-5.2
+ editor_edit_format: editor-diff
+ system_prompt_prefix: "Formatting re-enabled. "
+ accepts_settings: ["reasoning_effort"]
+ examples_as_sys_msg: true
+ use_temperature: false
+
+- name: openai/gpt-5.2
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openai/gpt-5.2-2025-12-11
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openai/gpt-5-mini
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openai/gpt-5-mini-2025-08-07
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openai/gpt-5-nano
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openai/gpt-5-nano-2025-08-07
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openai/gpt-5-chat
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openai/gpt-5-chat-latest
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openai/gpt-5.1-chat
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openai/gpt-5.1-chat-latest
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openai/gpt-5.2-chat-latest
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openrouter/openai/gpt-5
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openrouter/openai/gpt-5-pro
+ streaming: false
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-mini
+ use_repo_map: true
+ editor_model_name: openrouter/openai/gpt-5
+ editor_edit_format: editor-diff
+ system_prompt_prefix: "Formatting re-enabled. "
+ accepts_settings: ["reasoning_effort"]
+ examples_as_sys_msg: true
+ use_temperature: false
+
+- name: openrouter/openai/gpt-5-2025-08-07
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openrouter/openai/gpt-5.1
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openrouter/openai/gpt-5.1-2025-11-13
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openrouter/openai/gpt-5.2-pro
+ streaming: false
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-mini
+ use_repo_map: true
+ editor_model_name: openrouter/openai/gpt-5.2
+ editor_edit_format: editor-diff
+ system_prompt_prefix: "Formatting re-enabled. "
+ accepts_settings: ["reasoning_effort"]
+ examples_as_sys_msg: true
+ use_temperature: false
+
+- name: openrouter/openai/gpt-5.2
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openrouter/openai/gpt-5.2-2025-12-11
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openrouter/openai/gpt-5-mini
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openrouter/openai/gpt-5-mini-2025-08-07
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openrouter/openai/gpt-5-nano
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openrouter/openai/gpt-5-nano-2025-08-07
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openrouter/openai/gpt-5-chat
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openrouter/openai/gpt-5-chat-latest
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openrouter/openai/gpt-5.1-chat
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openrouter/openai/gpt-5.1-chat-latest
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
+
+- name: openrouter/openai/gpt-5.2-chat-latest
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings: ["reasoning_effort"]
diff --git a/aider/utils.py b/aider/utils.py
index 80cb0f38e..834ffa195 100644
--- a/aider/utils.py
+++ b/aider/utils.py
@@ -3,13 +3,12 @@ import platform
import subprocess
import sys
import tempfile
-import time
from pathlib import Path
import oslex
-from rich.console import Console
from aider.dump import dump # noqa: F401
+from aider.waiting import Spinner
IMAGE_EXTENSIONS = {".png", ".jpg", ".jpeg", ".gif", ".bmp", ".tiff", ".webp", ".pdf"}
@@ -212,6 +211,13 @@ def run_install(cmd):
print()
print("Installing:", printable_shell_command(cmd))
+ # First ensure pip is available
+ ensurepip_cmd = [sys.executable, "-m", "ensurepip", "--upgrade"]
+ try:
+ subprocess.run(ensurepip_cmd, capture_output=True, check=False)
+ except Exception:
+ pass # Continue even if ensurepip fails
+
try:
output = []
process = subprocess.Popen(
@@ -251,154 +257,6 @@ def run_install(cmd):
return False, output
-class Spinner:
- """
- Minimal spinner that scans a single marker back and forth across a line.
-
- The animation is pre-rendered into a list of frames. If the terminal
- cannot display unicode the frames are converted to plain ASCII.
- """
-
- last_frame_idx = 0 # Class variable to store the last frame index
-
- def __init__(self, text: str, width: int = 7):
- self.text = text
- self.start_time = time.time()
- self.last_update = 0.0
- self.visible = False
- self.is_tty = sys.stdout.isatty()
- self.console = Console()
-
- # Pre-render the animation frames using pure ASCII so they will
- # always display, even on very limited terminals.
- ascii_frames = [
- "#= ", # C1 C2 space(8)
- "=# ", # C2 C1 space(8)
- " =# ", # space(1) C2 C1 space(7)
- " =# ", # space(2) C2 C1 space(6)
- " =# ", # space(3) C2 C1 space(5)
- " =# ", # space(4) C2 C1 space(4)
- " =# ", # space(5) C2 C1 space(3)
- " =# ", # space(6) C2 C1 space(2)
- " =# ", # space(7) C2 C1 space(1)
- " =#", # space(8) C2 C1
- " #=", # space(8) C1 C2
- " #= ", # space(7) C1 C2 space(1)
- " #= ", # space(6) C1 C2 space(2)
- " #= ", # space(5) C1 C2 space(3)
- " #= ", # space(4) C1 C2 space(4)
- " #= ", # space(3) C1 C2 space(5)
- " #= ", # space(2) C1 C2 space(6)
- " #= ", # space(1) C1 C2 space(7)
- ]
-
- self.unicode_palette = "ββ"
- xlate_from, xlate_to = ("=#", self.unicode_palette)
-
- # If unicode is supported, swap the ASCII chars for nicer glyphs.
- if self._supports_unicode():
- translation_table = str.maketrans(xlate_from, xlate_to)
- frames = [f.translate(translation_table) for f in ascii_frames]
- self.scan_char = xlate_to[xlate_from.find("#")]
- else:
- frames = ascii_frames
- self.scan_char = "#"
-
- # Bounce the scanner back and forth.
- self.frames = frames
- self.frame_idx = Spinner.last_frame_idx # Initialize from class variable
- self.width = len(frames[0]) - 2 # number of chars between the brackets
- self.animation_len = len(frames[0])
- self.last_display_len = 0 # Length of the last spinner line (frame + text)
-
- def _supports_unicode(self) -> bool:
- if not self.is_tty:
- return False
- try:
- out = self.unicode_palette
- out += "\b" * len(self.unicode_palette)
- out += " " * len(self.unicode_palette)
- out += "\b" * len(self.unicode_palette)
- sys.stdout.write(out)
- sys.stdout.flush()
- return True
- except UnicodeEncodeError:
- return False
- except Exception:
- return False
-
- def _next_frame(self) -> str:
- frame = self.frames[self.frame_idx]
- self.frame_idx = (self.frame_idx + 1) % len(self.frames)
- Spinner.last_frame_idx = self.frame_idx # Update class variable
- return frame
-
- def step(self, text: str = None) -> None:
- if text is not None:
- self.text = text
-
- if not self.is_tty:
- return
-
- now = time.time()
- if not self.visible and now - self.start_time >= 0.5:
- self.visible = True
- self.last_update = 0.0
- if self.is_tty:
- self.console.show_cursor(False)
-
- if not self.visible or now - self.last_update < 0.1:
- return
-
- self.last_update = now
- frame_str = self._next_frame()
-
- # Determine the maximum width for the spinner line
- # Subtract 2 as requested, to leave a margin or prevent cursor wrapping issues
- max_spinner_width = self.console.width - 2
- if max_spinner_width < 0: # Handle extremely narrow terminals
- max_spinner_width = 0
-
- current_text_payload = f" {self.text}"
- line_to_display = f"{frame_str}{current_text_payload}"
-
- # Truncate the line if it's too long for the console width
- if len(line_to_display) > max_spinner_width:
- line_to_display = line_to_display[:max_spinner_width]
-
- len_line_to_display = len(line_to_display)
-
- # Calculate padding to clear any remnants from a longer previous line
- padding_to_clear = " " * max(0, self.last_display_len - len_line_to_display)
-
- # Write the spinner frame, text, and any necessary clearing spaces
- sys.stdout.write(f"\r{line_to_display}{padding_to_clear}")
- self.last_display_len = len_line_to_display
-
- # Calculate number of backspaces to position cursor at the scanner character
- scan_char_abs_pos = frame_str.find(self.scan_char)
-
- # Total characters written to the line (frame + text + padding)
- total_chars_written_on_line = len_line_to_display + len(padding_to_clear)
-
- # num_backspaces will be non-positive if scan_char_abs_pos is beyond
- # total_chars_written_on_line (e.g., if the scan char itself was truncated).
- # (e.g., if the scan char itself was truncated).
- # In such cases, (effectively) 0 backspaces are written,
- # and the cursor stays at the end of the line.
- num_backspaces = total_chars_written_on_line - scan_char_abs_pos
- sys.stdout.write("\b" * num_backspaces)
- sys.stdout.flush()
-
- def end(self) -> None:
- if self.visible and self.is_tty:
- clear_len = self.last_display_len # Use the length of the last displayed content
- sys.stdout.write("\r" + " " * clear_len + "\r")
- sys.stdout.flush()
- self.console.show_cursor(True)
- self.visible = False
-
-
def find_common_root(abs_fnames):
try:
if len(abs_fnames) == 1:
@@ -485,20 +343,3 @@ def printable_shell_command(cmd_list):
str: Shell-escaped command string.
"""
return oslex.join(cmd_list)
-
-
-def main():
- spinner = Spinner("Running spinner...")
- try:
- for _ in range(100):
- time.sleep(0.15)
- spinner.step()
- print("Success!")
- except KeyboardInterrupt:
- print("\nInterrupted by user.")
- finally:
- spinner.end()
-
-
-if __name__ == "__main__":
- main()
diff --git a/aider/waiting.py b/aider/waiting.py
index 8068551bb..9c2f72bc7 100644
--- a/aider/waiting.py
+++ b/aider/waiting.py
@@ -13,10 +13,159 @@ Use it like:
spinner.stop()
"""
+import sys
import threading
import time
-from aider.utils import Spinner
+from rich.console import Console
+
+
+class Spinner:
+ """
+ Minimal spinner that scans a single marker back and forth across a line.
+
+ The animation is pre-rendered into a list of frames. If the terminal
+ cannot display unicode the frames are converted to plain ASCII.
+ """
+
+ last_frame_idx = 0 # Class variable to store the last frame index
+
+ def __init__(self, text: str, width: int = 7):
+ self.text = text
+ self.start_time = time.time()
+ self.last_update = 0.0
+ self.visible = False
+ self.is_tty = sys.stdout.isatty()
+ self.console = Console()
+
+ # Pre-render the animation frames using pure ASCII so they will
+ # always display, even on very limited terminals.
+ ascii_frames = [
+ "#= ", # C1 C2 space(8)
+ "=# ", # C2 C1 space(8)
+ " =# ", # space(1) C2 C1 space(7)
+ " =# ", # space(2) C2 C1 space(6)
+ " =# ", # space(3) C2 C1 space(5)
+ " =# ", # space(4) C2 C1 space(4)
+ " =# ", # space(5) C2 C1 space(3)
+ " =# ", # space(6) C2 C1 space(2)
+ " =# ", # space(7) C2 C1 space(1)
+ " =#", # space(8) C2 C1
+ " #=", # space(8) C1 C2
+ " #= ", # space(7) C1 C2 space(1)
+ " #= ", # space(6) C1 C2 space(2)
+ " #= ", # space(5) C1 C2 space(3)
+ " #= ", # space(4) C1 C2 space(4)
+ " #= ", # space(3) C1 C2 space(5)
+ " #= ", # space(2) C1 C2 space(6)
+ " #= ", # space(1) C1 C2 space(7)
+ ]
+
+ self.unicode_palette = "ββ"
+ xlate_from, xlate_to = ("=#", self.unicode_palette)
+
+ # If unicode is supported, swap the ASCII chars for nicer glyphs.
+ if self._supports_unicode():
+ translation_table = str.maketrans(xlate_from, xlate_to)
+ frames = [f.translate(translation_table) for f in ascii_frames]
+ self.scan_char = xlate_to[xlate_from.find("#")]
+ else:
+ frames = ascii_frames
+ self.scan_char = "#"
+
+ # Bounce the scanner back and forth.
+ self.frames = frames
+ self.frame_idx = Spinner.last_frame_idx # Initialize from class variable
+ self.width = len(frames[0]) - 2 # number of chars between the brackets
+ self.animation_len = len(frames[0])
+ self.last_display_len = 0 # Length of the last spinner line (frame + text)
+
+ def _supports_unicode(self) -> bool:
+ if not self.is_tty:
+ return False
+ try:
+ out = self.unicode_palette
+ out += "\b" * len(self.unicode_palette)
+ out += " " * len(self.unicode_palette)
+ out += "\b" * len(self.unicode_palette)
+ sys.stdout.write(out)
+ sys.stdout.flush()
+ return True
+ except UnicodeEncodeError:
+ return False
+ except Exception:
+ return False
+
+ def _next_frame(self) -> str:
+ frame = self.frames[self.frame_idx]
+ self.frame_idx = (self.frame_idx + 1) % len(self.frames)
+ Spinner.last_frame_idx = self.frame_idx # Update class variable
+ return frame
+
+ def step(self, text: str = None) -> None:
+ if text is not None:
+ self.text = text
+
+ if not self.is_tty:
+ return
+
+ now = time.time()
+ if not self.visible and now - self.start_time >= 0.5:
+ self.visible = True
+ self.last_update = 0.0
+ if self.is_tty:
+ self.console.show_cursor(False)
+
+ if not self.visible or now - self.last_update < 0.1:
+ return
+
+ self.last_update = now
+ frame_str = self._next_frame()
+
+ # Determine the maximum width for the spinner line
+ # Subtract 2 as requested, to leave a margin or prevent cursor wrapping issues
+ max_spinner_width = self.console.width - 2
+ if max_spinner_width < 0: # Handle extremely narrow terminals
+ max_spinner_width = 0
+
+ current_text_payload = f" {self.text}"
+ line_to_display = f"{frame_str}{current_text_payload}"
+
+ # Truncate the line if it's too long for the console width
+ if len(line_to_display) > max_spinner_width:
+ line_to_display = line_to_display[:max_spinner_width]
+
+ len_line_to_display = len(line_to_display)
+
+ # Calculate padding to clear any remnants from a longer previous line
+ padding_to_clear = " " * max(0, self.last_display_len - len_line_to_display)
+
+ # Write the spinner frame, text, and any necessary clearing spaces
+ sys.stdout.write(f"\r{line_to_display}{padding_to_clear}")
+ self.last_display_len = len_line_to_display
+
+ # Calculate number of backspaces to position cursor at the scanner character
+ scan_char_abs_pos = frame_str.find(self.scan_char)
+
+ # Total characters written to the line (frame + text + padding)
+ total_chars_written_on_line = len_line_to_display + len(padding_to_clear)
+
+ # num_backspaces will be non-positive if scan_char_abs_pos is beyond
+ # total_chars_written_on_line (e.g., if the scan char itself was truncated).
+ # (e.g., if the scan char itself was truncated).
+ # In such cases, (effectively) 0 backspaces are written,
+ # and the cursor stays at the end of the line.
+ num_backspaces = total_chars_written_on_line - scan_char_abs_pos
+ sys.stdout.write("\b" * num_backspaces)
+ sys.stdout.flush()
+
+ def end(self) -> None:
+ if self.visible and self.is_tty:
+ clear_len = self.last_display_len # Use the length of the last displayed content
+ sys.stdout.write("\r" + " " * clear_len + "\r")
+ sys.stdout.flush()
+ self.console.show_cursor(True)
+ self.visible = False
class WaitingSpinner:
@@ -30,8 +179,8 @@ class WaitingSpinner:
def _spin(self):
while not self._stop_event.is_set():
- time.sleep(self.delay)
self.spinner.step()
+ time.sleep(self.delay)
self.spinner.end()
def start(self):
@@ -43,7 +192,7 @@ class WaitingSpinner:
"""Request the spinner to stop and wait briefly for the thread to exit."""
self._stop_event.set()
if self._thread.is_alive():
- self._thread.join(timeout=0.1)
+ self._thread.join(timeout=self.delay)
self.spinner.end()
# Allow use as a context-manager
@@ -53,3 +202,20 @@ class WaitingSpinner:
def __exit__(self, exc_type, exc_val, exc_tb):
self.stop()
+
+
+def main():
+ spinner = Spinner("Running spinner...")
+ try:
+ for _ in range(100):
+ time.sleep(0.15)
+ spinner.step()
+ print("Success!")
+ except KeyboardInterrupt:
+ print("\nInterrupted by user.")
+ finally:
+ spinner.end()
+
+
+if __name__ == "__main__":
+ main()
diff --git a/aider/website/HISTORY.md b/aider/website/HISTORY.md
index 90e914e3a..d32a1215a 100644
--- a/aider/website/HISTORY.md
+++ b/aider/website/HISTORY.md
@@ -24,7 +24,97 @@ cog.out(text)
]]]-->
-### main branch
+### Aider v0.86.0
+
+- Expanded GPT-5 model support across family variants and providers (OpenAI, Azure, OpenRouter), including dated and chat/mini/nano variants.
+- Aider wrote 88% of the code in this release.
+
+### Aider v0.85.5
+
+- Enforced diff edit format for GPT-5 models.
+- Added support for the reasoning_effort setting for GPT-5 models.
+- Fixed model detection to correctly apply GPT-5 settings to versioned names (gpt-5 and gpt-5-2025-08-07).
+
+### Aider v0.85.4
+
+- Added support for openai/gpt-5
+- Fixed analytics to support the latest PostHog SDK event-capture API.
+- Disabled temperature when using GPT-5 models for more deterministic outputs.
+
+### Aider v0.85.3
+
+- Bumped dependencies to pick up latest litellm==1.75.0.
+
+### Aider v0.85.2
+
+- Added support for Grok-4 via `xai/grok-4` and `openrouter/x-ai/grok-4` model names.
+- Added support for `gemini/gemini-2.5-flash-lite-preview-06-17` model, by Tamir Zahavi-Brunner.
+- `/clear` now prints βAll chat history cleared.β so you know it worked, by Zexin Yuan.
+- `/undo` output now shows only the first line of each commit message, making it easier to read.
+- Fixed an issue where new settings for an existing model didn't replace the old ones, by Andrew Grigorev.
+- Added support for `openrouter/moonshotai/kimi-k2` model, by Jack Harrington.
+
+### Aider v0.85.1
+
+- Display model announcements with no-arg `/model` command.
+
+### Aider v0.85.0
+
+- Support for Responses API models like o1-pro, o3-pro.
+- Updated pricing for o3.
+- Added support for new Gemini models including `gemini-2.5-pro`, `gemini-2.5-flash`, and `gemini-2.5-pro-preview-06-05` with thinking tokens support.
+- Updated model aliases: `flash` now points to `gemini-2.5-flash` and `gemini` now points to `gemini-2.5-pro`.
+- Added `--add-gitignore-files` flag to enable adding files listed in .gitignore to Aider's editing scope, by omarcinkonis.
+- Added `--commit-language` option to specify the language for commit messages, by Kyosuke Takayama.
+- Enhanced thinking tokens support: can now be disabled by setting to 0, and improved help text with examples.
+- Added MATLAB language support for repository maps, by Matthew Tofano.
+- Added support for OpenAI o3-pro model across multiple providers.
+- Improved GitHub Copilot token handling with better validation and error messages, by Vincent Taverna and Sebastian Estrella.
+- Fixed encoding issues in git diff output and LLM history logging.
+- Enhanced commit message generation to use system prompt prefixes, by Luke Reeves.
+- Improved inline code rendering in Rich markdown output, by Vamsi Talupula.
+- Fixed Vertex AI model name prefixes in settings, by Wietse Venema.
+- Improved `/read-only` command to resolve literal paths correctly, by Matteo Landi.
+- Skip expensive file tracking operations when `--skip-sanity-check-repo` is enabled for better performance, by Makar Ivashko.
+- Ensure pip is available before package installation.
+- Auto-create parent directories for chat history files to prevent startup errors, by contributor.
+- Fixed search block regex to accept optional closing tags when working with HTML content, by Mathis Beer.
+- Co-authored-by attribution is now enabled by default for commit messages.
+- Added Clojure language support for repository maps, by Garrett Hopper.
+- Added custom PostHog analytics configuration options with `--analytics-posthog-host` and `--analytics-posthog-project-api-key` flags, by Vasil Markoukin.
+- Optimized chat history summarization performance, by jayeshthk.
+- Improved kebab-case identifier recognition in repository maps for better code analysis.
+- Increased max tokens for Deepseek models to 65536 for better performance.
+- Aider wrote 21% of the code in this release.
+
+### Aider v0.84.0
+
+- Added support for new Claude models including the Sonnet 4 and Opus 4 series (e.g., `claude-sonnet-4-20250514`,
+`claude-opus-4-20250514`) across various providers. The default `sonnet` and `opus` aliases were updated to these newer
+versions.
+- Added support for the `vertex_ai/gemini-2.5-flash-preview-05-20` model.
+- Fixed OpenRouter token cost calculation for improved accuracy.
+- Updated default OpenRouter models during onboarding to `deepseek/deepseek-r1:free` for the free tier and
+`anthropic/claude-sonnet-4` for paid tiers.
+- Automatically refresh GitHub Copilot tokens when used as OpenAI API keys, by Lih Chen.
+- Aider wrote 79% of the code in this release.
+
+### Aider v0.83.2
+
+- Bumped configargparse to 1.7.1 as 1.7 was pulled.
+- Added shell tab completion for file path arguments (by saviour) and for `--edit-format`/`--editor-edit-format` options.
+- Improved OpenRouter model metadata handling by introducing a local cache, increasing reliability and performance.
+- The `/settings` command now displays detailed metadata for active main, editor, and weak models.
+- Fixed an issue where files explicitly added via the command line were not correctly ignored if listed in `.gitignore`.
+- Improved automatic commit messages by providing more context during their generation, by wangboxue.
+
+### Aider v0.83.1
+
+- Improved user language detection by correctly normalizing hyphenated language codes (e.g., `en-US` to `en`) and enhancing the validation of locale results.
+- Prevented Aider from instructing the LLM to reply in 'C' or 'POSIX' when these are detected as the system locale.
+- Displayed a spinner with the model name when generating commit messages.
+
+### Aider v0.83.0
- Added support for `gemini-2.5-pro-preview-05-06` models.
- Added support for `qwen3-235b` models.
@@ -428,7 +518,7 @@ cog.out(text)
- [Aider works with LLM web chat UIs](https://aider.chat/docs/usage/copypaste.html).
- New `--copy-paste` mode.
- New `/copy-context` command.
-- [Set API keys and other environment variables for all providers from command line or yaml conf file](https://aider.chat/docs/config/aider_conf.html#storing-llm-keys).
+- [Set API keys and other environment variables for all providers from command line or YAML conf file](https://aider.chat/docs/config/aider_conf.html#storing-llm-keys).
- New `--api-key provider=key` setting.
- New `--set-env VAR=value` setting.
- Added bash and zsh support to `--watch-files`.
@@ -596,7 +686,7 @@ cog.out(text)
### Aider v0.59.1
-- Check for obsolete `yes: true` in yaml config, show helpful error.
+- Check for obsolete `yes: true` in YAML config, show helpful error.
- Model settings for openrouter/anthropic/claude-3.5-sonnet:beta
### Aider v0.59.0
@@ -606,7 +696,7 @@ cog.out(text)
- Still auto-completes the full paths of the repo files like `/add`.
- Now supports globs like `src/**/*.py`
- Renamed `--yes` to `--yes-always`.
- - Now uses `AIDER_YES_ALWAYS` env var and `yes-always:` yaml key.
+ - Now uses `AIDER_YES_ALWAYS` env var and `yes-always:` YAML key.
- Existing YAML and .env files will need to be updated.
- Can still abbreviate to `--yes` on the command line.
- Config file now uses standard YAML list syntax with ` - list entries`, one per line.
@@ -813,7 +903,7 @@ cog.out(text)
- Use `--map-refresh ` to configure.
- Improved cost estimate logic for caching.
- Improved editing performance on Jupyter Notebook `.ipynb` files.
-- Show which config yaml file is loaded with `--verbose`.
+- Show which config YAML file is loaded with `--verbose`.
- Bumped dependency versions.
- Bugfix: properly load `.aider.models.metadata.json` data.
- Bugfix: Using `--msg /ask ...` caused an exception.
diff --git a/aider/website/_data/blame.yml b/aider/website/_data/blame.yml
index a5d280d60..2d302504e 100644
--- a/aider/website/_data/blame.yml
+++ b/aider/website/_data/blame.yml
@@ -1,5 +1,5 @@
-- aider_percentage: 29.08
- aider_total: 41
+- aider_percentage: 31.33
+ aider_total: 47
end_date: '2023-06-15'
end_tag: v0.6.0
file_counts:
@@ -17,44 +17,44 @@
Paul Gauthier: 6
Paul Gauthier (aider): 1
aider/utils.py:
- Paul Gauthier: 22
- Paul Gauthier (aider): 17
+ Paul Gauthier: 25
+ Paul Gauthier (aider): 21
setup.py:
Paul Gauthier: 7
Paul Gauthier (aider): 7
tests/test_utils.py:
- Paul Gauthier (aider): 7
+ Paul Gauthier (aider): 9
grand_total:
- Paul Gauthier: 100
- Paul Gauthier (aider): 41
+ Paul Gauthier: 103
+ Paul Gauthier (aider): 47
start_tag: v0.5.0
- total_lines: 141
-- aider_percentage: 15.99
- aider_total: 224
+ total_lines: 150
+- aider_percentage: 14.36
+ aider_total: 209
end_date: '2023-06-25'
end_tag: v0.7.0
file_counts:
.github/workflows/release.yml:
Paul Gauthier: 2
- Paul Gauthier (aider): 25
+ Paul Gauthier (aider): 29
aider/__init__.py:
Paul Gauthier: 1
aider/coders/__init__.py:
Paul Gauthier: 6
aider/coders/base_coder.py:
- Paul Gauthier: 305
+ Paul Gauthier: 314
aider/coders/editblock_coder.py:
- Paul Gauthier: 32
+ Paul Gauthier: 35
aider/coders/wholefile_coder.py:
- Paul Gauthier: 86
+ Paul Gauthier: 115
Paul Gauthier (aider): 3
aider/coders/wholefile_func_coder.py:
- Paul Gauthier: 116
+ Paul Gauthier: 120
Paul Gauthier (aider): 11
aider/commands.py:
Paul Gauthier: 28
aider/diffs.py:
- Paul Gauthier: 17
+ Paul Gauthier: 18
aider/io.py:
Paul Gauthier: 16
aider/main.py:
@@ -77,22 +77,22 @@
tests/test_commands.py:
Paul Gauthier: 3
tests/test_editblock.py:
- Paul Gauthier: 24
+ Paul Gauthier: 28
tests/test_main.py:
Paul Gauthier: 8
tests/test_models.py:
Paul Gauthier: 21
Paul Gauthier (aider): 7
tests/test_wholefile.py:
- Paul Gauthier: 67
- Paul Gauthier (aider): 84
+ Paul Gauthier: 86
+ Paul Gauthier (aider): 65
grand_total:
- Paul Gauthier: 1177
- Paul Gauthier (aider): 224
+ Paul Gauthier: 1246
+ Paul Gauthier (aider): 209
start_tag: v0.6.0
- total_lines: 1401
-- aider_percentage: 8.21
- aider_total: 142
+ total_lines: 1455
+- aider_percentage: 7.94
+ aider_total: 139
end_date: '2023-07-06'
end_tag: v0.8.0
file_counts:
@@ -100,21 +100,21 @@
Paul Gauthier: 5
.github/workflows/windows-tests.yml:
Paul Gauthier: 13
- Paul Gauthier (aider): 25
+ Paul Gauthier (aider): 15
aider/__init__.py:
Paul Gauthier: 1
aider/coders/__init__.py:
Paul Gauthier: 10
aider/coders/base_coder.py:
- Paul Gauthier: 159
+ Paul Gauthier: 161
Paul Gauthier (aider): 5
aider/coders/editblock_coder.py:
Paul Gauthier: 14
aider/coders/editblock_func_coder.py:
- Paul Gauthier: 123
+ Paul Gauthier: 131
Paul Gauthier (aider): 8
aider/coders/single_wholefile_func_coder.py:
- Paul Gauthier: 45
+ Paul Gauthier: 49
aider/coders/wholefile_coder.py:
Paul Gauthier: 24
aider/coders/wholefile_func_coder.py:
@@ -137,7 +137,7 @@
benchmark/Dockerfile:
Paul Gauthier: 7
benchmark/benchmark.py:
- Paul Gauthier: 446
+ Paul Gauthier: 447
Paul Gauthier (aider): 29
benchmark/docker.sh:
Paul Gauthier: 11
@@ -149,16 +149,16 @@
benchmark/rungrid.py:
Paul Gauthier: 60
benchmark/test_benchmark.py:
- Paul Gauthier: 34
- Paul Gauthier (aider): 13
+ Paul Gauthier: 35
+ Paul Gauthier (aider): 12
tests/test_coder.py:
- Paul Gauthier: 87
- Paul Gauthier (aider): 24
+ Paul Gauthier: 101
+ Paul Gauthier (aider): 32
tests/test_commands.py:
- Paul Gauthier: 14
+ Paul Gauthier: 21
Paul Gauthier (aider): 17
tests/test_editblock.py:
- Paul Gauthier: 94
+ Paul Gauthier: 86
tests/test_io.py:
Paul Gauthier: 3
Paul Gauthier (aider): 6
@@ -167,22 +167,22 @@
tests/test_repomap.py:
Paul Gauthier: 26
tests/test_wholefile.py:
- Paul Gauthier: 193
+ Paul Gauthier: 189
grand_total:
- Paul Gauthier: 1582
- Paul Gauthier (aider): 142
+ Paul Gauthier: 1607
+ Paul Gauthier (aider): 139
kwmiebach: 5
start_tag: v0.7.0
- total_lines: 1729
-- aider_percentage: 17.67
- aider_total: 144
+ total_lines: 1751
+- aider_percentage: 18.95
+ aider_total: 170
end_date: '2023-07-16'
end_tag: v0.9.0
file_counts:
aider/__init__.py:
Paul Gauthier: 1
aider/coders/base_coder.py:
- Paul Gauthier: 74
+ Paul Gauthier: 75
aider/coders/editblock_coder.py:
Paul Gauthier: 8
aider/coders/single_wholefile_func_coder.py:
@@ -192,72 +192,72 @@
aider/coders/wholefile_func_coder.py:
Paul Gauthier: 1
aider/commands.py:
- Paul Gauthier: 86
+ Paul Gauthier: 87
Paul Gauthier (aider): 4
aider/io.py:
- Paul Gauthier: 7
+ Paul Gauthier: 8
aider/main.py:
- Paul Gauthier: 126
- Paul Gauthier (aider): 59
+ Paul Gauthier: 162
+ Paul Gauthier (aider): 57
aider/repomap.py:
- Paul Gauthier: 36
+ Paul Gauthier: 37
aider/utils.py:
Paul Gauthier: 8
benchmark/benchmark.py:
Paul Gauthier: 3
scripts/versionbump.py:
Paul Gauthier: 15
- Paul Gauthier (aider): 10
+ Paul Gauthier (aider): 13
setup.py:
Paul Gauthier (aider): 1
tests/test_coder.py:
Paul Gauthier: 110
- Paul Gauthier (aider): 23
+ Paul Gauthier (aider): 30
tests/test_commands.py:
Paul Gauthier: 36
- Paul Gauthier (aider): 43
+ Paul Gauthier (aider): 61
tests/test_editblock.py:
Paul Gauthier: 1
tests/test_io.py:
Paul Gauthier: 1
tests/test_main.py:
- Paul Gauthier: 12
+ Paul Gauthier: 20
tests/test_repomap.py:
Paul Gauthier: 13
Paul Gauthier (aider): 1
tests/test_wholefile.py:
- Paul Gauthier: 42
+ Paul Gauthier: 50
tests/utils.py:
Paul Gauthier: 43
Paul Gauthier (aider): 3
grand_total:
- Paul Gauthier: 671
- Paul Gauthier (aider): 144
+ Paul Gauthier: 727
+ Paul Gauthier (aider): 170
start_tag: v0.8.0
- total_lines: 815
-- aider_percentage: 11.34
- aider_total: 33
+ total_lines: 897
+- aider_percentage: 12.26
+ aider_total: 39
end_date: '2023-07-22'
end_tag: v0.10.0
file_counts:
aider/__init__.py:
Paul Gauthier: 1
aider/coders/base_coder.py:
- Paul Gauthier: 23
+ Paul Gauthier: 24
aider/coders/editblock_coder.py:
Paul Gauthier: 11
aider/coders/single_wholefile_func_coder.py:
- Paul Gauthier: 1
+ Paul Gauthier: 2
aider/coders/wholefile_coder.py:
- Paul Gauthier: 1
+ Paul Gauthier: 2
aider/coders/wholefile_func_coder.py:
- Paul Gauthier: 1
+ Paul Gauthier: 2
aider/commands.py:
- Amer Amayreh: 8
- Paul Gauthier (aider): 4
+ Amer Amayreh: 4
+ Paul Gauthier (aider): 12
aider/io.py:
- Paul Gauthier: 3
- Paul Gauthier (aider): 6
+ Paul Gauthier: 4
+ Paul Gauthier (aider): 5
aider/main.py:
Paul Gauthier: 62
aider/versioncheck.py:
@@ -268,32 +268,32 @@
scripts/versionbump.py:
Paul Gauthier (aider): 2
tests/test_coder.py:
- Paul Gauthier: 35
+ Paul Gauthier: 43
tests/test_commands.py:
- Paul Gauthier: 22
- Paul Gauthier (aider): 13
+ Paul Gauthier: 31
+ Paul Gauthier (aider): 12
tests/test_editblock.py:
- Paul Gauthier: 17
+ Paul Gauthier: 20
tests/test_main.py:
Paul Gauthier: 44
Paul Gauthier (aider): 3
tests/utils.py:
Paul Gauthier: 6
grand_total:
- Amer Amayreh: 8
- Paul Gauthier: 250
- Paul Gauthier (aider): 33
+ Amer Amayreh: 4
+ Paul Gauthier: 275
+ Paul Gauthier (aider): 39
start_tag: v0.9.0
- total_lines: 291
-- aider_percentage: 6.62
- aider_total: 49
+ total_lines: 318
+- aider_percentage: 6.63
+ aider_total: 55
end_date: '2023-08-02'
end_tag: v0.11.0
file_counts:
aider/__init__.py:
Paul Gauthier: 1
aider/coders/base_coder.py:
- Paul Gauthier: 104
+ Paul Gauthier: 119
aider/coders/wholefile_coder.py:
Paul Gauthier: 2
aider/commands.py:
@@ -306,34 +306,34 @@
Paul Gauthier: 86
Paul Gauthier (aider): 3
aider/repo.py:
- Paul Gauthier: 113
- Paul Gauthier (aider): 7
+ Paul Gauthier: 133
+ Paul Gauthier (aider): 13
aider/sendchat.py:
Paul Gauthier: 64
scripts/versionbump.py:
Paul Gauthier: 4
tests/test_coder.py:
- Paul Gauthier: 26
+ Paul Gauthier: 35
tests/test_commands.py:
Paul Gauthier: 53
Paul Gauthier (aider): 6
tests/test_main.py:
- Paul Gauthier: 24
+ Paul Gauthier: 30
Paul Gauthier (aider): 1
tests/test_repo.py:
- Paul Gauthier: 56
+ Paul Gauthier: 75
Paul Gauthier (aider): 5
tests/test_sendchat.py:
- Paul Gauthier: 11
+ Paul Gauthier: 25
tests/utils.py:
Paul Gauthier: 6
grand_total:
- Paul Gauthier: 691
- Paul Gauthier (aider): 49
+ Paul Gauthier: 774
+ Paul Gauthier (aider): 55
start_tag: v0.10.0
- total_lines: 740
-- aider_percentage: 4.71
- aider_total: 24
+ total_lines: 829
+- aider_percentage: 5.21
+ aider_total: 28
end_date: '2023-08-11'
end_tag: v0.12.0
file_counts:
@@ -343,13 +343,13 @@
Arseniy Pavlenko: 3
Paul Gauthier: 4
aider/coders/editblock_coder.py:
- Paul Gauthier: 123
+ Paul Gauthier: 124
aider/commands.py:
Joshua Vial: 2
Paul Gauthier: 17
Paul Gauthier (aider): 3
aider/history.py:
- Paul Gauthier: 6
+ Paul Gauthier: 10
aider/io.py:
Paul Gauthier: 10
aider/main.py:
@@ -364,27 +364,27 @@
Paul Gauthier: 77
Paul Gauthier (aider): 8
benchmark/benchmark.py:
- Paul Gauthier: 57
+ Paul Gauthier: 60
scripts/versionbump.py:
Paul Gauthier: 1
tests/test_coder.py:
Paul Gauthier: 1
- Paul Gauthier (aider): 13
+ Paul Gauthier (aider): 17
tests/test_commands.py:
- Paul Gauthier: 19
+ Paul Gauthier: 22
tests/test_editblock.py:
- Paul Gauthier: 43
+ Paul Gauthier: 52
tests/test_repo.py:
- Paul Gauthier: 55
+ Paul Gauthier: 58
grand_total:
Arseniy Pavlenko: 3
Joshua Vial: 2
- Paul Gauthier: 481
- Paul Gauthier (aider): 24
+ Paul Gauthier: 504
+ Paul Gauthier (aider): 28
start_tag: v0.11.0
- total_lines: 510
-- aider_percentage: 4.32
- aider_total: 23
+ total_lines: 537
+- aider_percentage: 4.18
+ aider_total: 24
end_date: '2023-08-22'
end_tag: v0.13.0
file_counts:
@@ -395,7 +395,7 @@
aider/__init__.py:
Paul Gauthier: 1
aider/coders/base_coder.py:
- Paul Gauthier: 89
+ Paul Gauthier: 93
Paul Gauthier (aider): 2
aider/coders/editblock_coder.py:
Paul Gauthier: 6
@@ -410,31 +410,31 @@
aider/commands.py:
Paul Gauthier: 34
aider/io.py:
- Paul Gauthier: 7
+ Paul Gauthier: 8
aider/main.py:
Paul Gauthier: 2
- Paul Gauthier (aider): 19
+ Paul Gauthier (aider): 20
aider/repo.py:
- Paul Gauthier: 56
+ Paul Gauthier: 59
aider/voice.py:
- Paul Gauthier: 24
+ Paul Gauthier: 26
setup.py:
Paul Gauthier (aider): 1
tests/test_coder.py:
- Paul Gauthier: 255
+ Paul Gauthier: 277
Paul Gauthier (aider): 1
tests/test_main.py:
Paul Gauthier: 1
tests/test_repo.py:
- Paul Gauthier: 9
+ Paul Gauthier: 17
tests/test_wholefile.py:
Paul Gauthier: 1
grand_total:
- Paul Gauthier: 510
- Paul Gauthier (aider): 23
+ Paul Gauthier: 550
+ Paul Gauthier (aider): 24
start_tag: v0.12.0
- total_lines: 533
-- aider_percentage: 0.55
+ total_lines: 574
+- aider_percentage: 0.53
aider_total: 1
end_date: '2023-09-08'
end_tag: v0.14.0
@@ -442,7 +442,7 @@
aider/__init__.py:
Paul Gauthier: 1
aider/coders/base_coder.py:
- Joshua Vial: 19
+ Joshua Vial: 20
Paul Gauthier: 4
aider/commands.py:
JV: 1
@@ -453,10 +453,10 @@
JV: 1
Joshua Vial: 1
aider/models/__init__.py:
- JV: 2
- Paul Gauthier: 13
+ JV: 1
+ Paul Gauthier: 14
aider/models/model.py:
- JV: 21
+ JV: 27
Joshua Vial: 4
Paul Gauthier: 8
aider/models/openai.py:
@@ -484,14 +484,14 @@
Joshua Vial: 22
Paul Gauthier: 13
grand_total:
- JV: 62
- Joshua Vial: 59
- Paul Gauthier: 60
+ JV: 67
+ Joshua Vial: 60
+ Paul Gauthier: 61
Paul Gauthier (aider): 1
start_tag: v0.13.0
- total_lines: 182
-- aider_percentage: 11.28
- aider_total: 38
+ total_lines: 189
+- aider_percentage: 10.57
+ aider_total: 41
end_date: '2023-10-20'
end_tag: v0.15.0
file_counts:
@@ -508,15 +508,15 @@
Paul Gauthier: 49
aider/main.py:
Paul Gauthier: 29
- Paul Gauthier (aider): 21
- Thinh Nguyen: 6
+ Paul Gauthier (aider): 24
+ Thinh Nguyen: 7
aider/repo.py:
Paul Gauthier: 26
Paul Gauthier (aider): 2
aider/repomap.py:
Paul Gauthier: 11
aider/voice.py:
- Paul Gauthier: 8
+ Paul Gauthier: 9
benchmark/Dockerfile:
Joshua Vial: 1
benchmark/benchmark.py:
@@ -526,20 +526,20 @@
scripts/versionbump.py:
Paul Gauthier: 2
tests/test_commands.py:
- Paul Gauthier: 95
+ Paul Gauthier: 123
tests/test_main.py:
Paul Gauthier: 17
tests/test_repo.py:
- Paul Gauthier: 20
+ Paul Gauthier: 38
grand_total:
Alexander Kjeldaas (aider): 1
Joshua Vial: 2
- Paul Gauthier: 289
- Paul Gauthier (aider): 37
- Thinh Nguyen: 8
+ Paul Gauthier: 336
+ Paul Gauthier (aider): 40
+ Thinh Nguyen: 9
start_tag: v0.14.0
- total_lines: 337
-- aider_percentage: 1.76
+ total_lines: 388
+- aider_percentage: 1.71
aider_total: 16
end_date: '2023-10-29'
end_tag: v0.16.0
@@ -587,7 +587,7 @@
aider/queries/tree-sitter-typescript-tags.scm:
Paul Gauthier: 23
aider/repomap.py:
- Paul Gauthier: 187
+ Paul Gauthier: 193
Paul Gauthier (aider): 2
benchmark/Dockerfile:
Paul Gauthier: 4
@@ -597,26 +597,28 @@
Paul Gauthier: 2
Paul Gauthier (aider): 2
tests/test_coder.py:
- Paul Gauthier: 19
+ Paul Gauthier: 21
tests/test_commands.py:
- Paul Gauthier: 5
+ Paul Gauthier: 10
+ paul-gauthier: 1
tests/test_editblock.py:
- Paul Gauthier: 44
+ Paul Gauthier: 55
tests/test_repomap.py:
Paul Gauthier: 5
grand_total:
- Paul Gauthier: 894
+ Paul Gauthier: 918
Paul Gauthier (aider): 16
+ paul-gauthier: 1
start_tag: v0.15.0
- total_lines: 910
-- aider_percentage: 5.35
- aider_total: 13
+ total_lines: 935
+- aider_percentage: 7.91
+ aider_total: 22
end_date: '2023-11-06'
end_tag: v0.17.0
file_counts:
.github/workflows/docker-build-test.yml:
- Paul Gauthier: 7
- Paul Gauthier (aider): 7
+ Paul Gauthier: 11
+ Paul Gauthier (aider): 16
.github/workflows/release.yml:
Paul Gauthier: 4
aider/__init__.py:
@@ -632,9 +634,9 @@
aider/io.py:
Paul Gauthier: 1
aider/main.py:
- Paul Gauthier: 1
+ Paul Gauthier: 3
aider/models/openai.py:
- Paul Gauthier: 8
+ Paul Gauthier: 9
aider/queries/tree-sitter-elisp-tags.scm:
Paul Gauthier: 3
aider/repomap.py:
@@ -649,29 +651,29 @@
Jack Hallam: 3
Paul Gauthier: 10
tests/test_commands.py:
- Paul Gauthier: 51
+ Paul Gauthier: 65
tests/test_editblock.py:
- Paul Gauthier: 21
+ Paul Gauthier: 23
tests/test_io.py:
Paul Gauthier: 24
tests/utils.py:
- Paul Gauthier: 3
+ Paul Gauthier: 6
grand_total:
Jack Hallam: 3
Omri Bloch: 1
- Paul Gauthier: 226
- Paul Gauthier (aider): 13
+ Paul Gauthier: 252
+ Paul Gauthier (aider): 22
start_tag: v0.16.0
- total_lines: 243
-- aider_percentage: 39.3
- aider_total: 90
+ total_lines: 278
+- aider_percentage: 38.49
+ aider_total: 107
end_date: '2023-11-17'
end_tag: v0.18.0
file_counts:
aider/__init__.py:
Paul Gauthier: 1
aider/coders/base_coder.py:
- Paul Gauthier: 27
+ Paul Gauthier: 33
aider/commands.py:
Paul Gauthier: 12
Paul Gauthier (aider): 3
@@ -683,27 +685,27 @@
Paul Gauthier: 10
benchmark/benchmark.py:
Paul Gauthier: 22
- Paul Gauthier (aider): 33
+ Paul Gauthier (aider): 50
benchmark/rungrid.py:
Paul Gauthier: 16
scripts/versionbump.py:
Paul Gauthier (aider): 41
tests/test_coder.py:
- Paul Gauthier: 14
+ Paul Gauthier: 25
tests/test_commands.py:
- Paul Gauthier: 10
+ Paul Gauthier: 19
tests/test_main.py:
- Paul Gauthier: 3
+ Paul Gauthier: 4
Paul Gauthier (aider): 13
tests/test_repomap.py:
- Paul Gauthier: 8
+ Paul Gauthier: 13
grand_total:
- Paul Gauthier: 139
- Paul Gauthier (aider): 90
+ Paul Gauthier: 171
+ Paul Gauthier (aider): 107
start_tag: v0.17.0
- total_lines: 229
-- aider_percentage: 0.72
- aider_total: 13
+ total_lines: 278
+- aider_percentage: 0.75
+ aider_total: 14
end_date: '2023-12-19'
end_tag: v0.19.0
file_counts:
@@ -712,13 +714,13 @@
aider/coders/__init__.py:
Paul Gauthier: 2
aider/coders/base_coder.py:
- Paul Gauthier: 54
+ Paul Gauthier: 66
aider/coders/editblock_coder.py:
Paul Gauthier: 2
aider/coders/search_replace.py:
- Paul Gauthier: 767
+ Paul Gauthier: 769
aider/coders/udiff_coder.py:
- Paul Gauthier: 389
+ Paul Gauthier: 395
aider/coders/wholefile_coder.py:
Paul Gauthier: 2
aider/commands.py:
@@ -726,9 +728,9 @@
aider/history.py:
Paul Gauthier: 3
aider/main.py:
- Paul Gauthier: 41
+ Paul Gauthier: 44
Your Name: 3
- Your Name (aider): 13
+ Your Name (aider): 14
aider/models/__init__.py:
Paul Gauthier: 3
aider/models/model.py:
@@ -742,11 +744,11 @@
aider/sendchat.py:
Paul Gauthier: 15
aider/utils.py:
- Paul Gauthier: 15
+ Paul Gauthier: 28
aider/voice.py:
Paul Gauthier: 7
benchmark/benchmark.py:
- Paul Gauthier: 175
+ Paul Gauthier: 200
benchmark/refactor_tools.py:
Paul Gauthier: 209
tests/test_coder.py:
@@ -757,9 +759,9 @@
Paul Gauthier: 1
tests/test_main.py:
Paul Gauthier: 10
- Your Name: 16
+ Your Name: 18
tests/test_models.py:
- Paul Gauthier: 8
+ Paul Gauthier: 10
tests/test_repo.py:
Paul Gauthier: 1
tests/test_repomap.py:
@@ -769,13 +771,13 @@
tests/test_wholefile.py:
Paul Gauthier: 10
grand_total:
- Paul Gauthier: 1780
- Your Name: 19
- Your Name (aider): 13
+ Paul Gauthier: 1843
+ Your Name: 21
+ Your Name (aider): 14
start_tag: v0.18.0
- total_lines: 1812
-- aider_percentage: 11.38
- aider_total: 38
+ total_lines: 1878
+- aider_percentage: 11.49
+ aider_total: 40
end_date: '2024-01-04'
end_tag: v0.20.0
file_counts:
@@ -784,8 +786,8 @@
aider/__init__.py:
Paul Gauthier: 1
aider/coders/base_coder.py:
- Joshua Vial: 26
- Paul Gauthier: 23
+ Joshua Vial: 28
+ Paul Gauthier: 25
aider/coders/search_replace.py:
Paul Gauthier: 2
aider/coders/udiff_coder.py:
@@ -795,9 +797,9 @@
Christopher Toth: 2
Joshua Vial: 16
Paul Gauthier: 2
- Paul Gauthier (aider): 6
+ Paul Gauthier (aider): 7
aider/io.py:
- Joshua Vial: 14
+ Joshua Vial: 15
aider/models/model.py:
Joshua Vial: 43
aider/models/openrouter.py:
@@ -813,22 +815,22 @@
benchmark/benchmark.py:
Joshua Vial: 16
tests/test_commands.py:
- Paul Gauthier: 17
- Paul Gauthier (aider): 20
+ Paul Gauthier: 21
+ Paul Gauthier (aider): 24
tests/test_models.py:
Joshua Vial: 13
tests/test_udiff.py:
- Paul Gauthier: 63
- Paul Gauthier (aider): 10
+ Paul Gauthier: 66
+ Paul Gauthier (aider): 7
grand_total:
Christopher Toth: 7
- Joshua Vial: 170
- Paul Gauthier: 119
- Paul Gauthier (aider): 38
+ Joshua Vial: 173
+ Paul Gauthier: 128
+ Paul Gauthier (aider): 40
start_tag: v0.19.0
- total_lines: 334
-- aider_percentage: 19.32
- aider_total: 17
+ total_lines: 348
+- aider_percentage: 19.78
+ aider_total: 18
end_date: '2024-01-08'
end_tag: v0.21.0
file_counts:
@@ -841,18 +843,18 @@
aider/coders/udiff_coder.py:
Paul Gauthier: 22
aider/main.py:
- Paul Gauthier (aider): 9
+ Paul Gauthier (aider): 10
aider/versioncheck.py:
Paul Gauthier (aider): 8
setup.py:
Paul Gauthier: 2
tests/test_udiff.py:
- Paul Gauthier: 44
+ Paul Gauthier: 46
grand_total:
- Paul Gauthier: 71
- Paul Gauthier (aider): 17
+ Paul Gauthier: 73
+ Paul Gauthier (aider): 18
start_tag: v0.20.0
- total_lines: 88
+ total_lines: 91
- aider_percentage: 0.0
aider_total: 0
end_date: '2024-01-22'
@@ -865,14 +867,14 @@
aider/coders/udiff_coder.py:
Paul Gauthier: 5
aider/commands.py:
- Paul Gauthier: 44
+ Paul Gauthier: 48
aider/main.py:
Paul Gauthier: 2
grand_total:
- Paul Gauthier: 54
+ Paul Gauthier: 58
start_tag: v0.21.0
- total_lines: 54
-- aider_percentage: 1.16
+ total_lines: 58
+- aider_percentage: 1.11
aider_total: 2
end_date: '2024-02-03'
end_tag: v0.23.0
@@ -882,25 +884,25 @@
aider/coders/base_coder.py:
Paul Gauthier: 10
aider/commands.py:
- Paul Gauthier: 2
+ Paul Gauthier: 5
aider/main.py:
- Paul Gauthier: 13
- Zachary Vorhies: 6
+ Paul Gauthier: 15
+ Zachary Vorhies: 7
aider/mdstream.py:
Paul Gauthier: 120
Paul Gauthier (aider): 2
aider/models/openai.py:
Paul Gauthier: 3
benchmark/benchmark.py:
- Paul Gauthier: 16
+ Paul Gauthier: 17
grand_total:
- Paul Gauthier: 165
+ Paul Gauthier: 171
Paul Gauthier (aider): 2
- Zachary Vorhies: 6
+ Zachary Vorhies: 7
start_tag: v0.22.0
- total_lines: 173
-- aider_percentage: 6.68
- aider_total: 25
+ total_lines: 180
+- aider_percentage: 5.07
+ aider_total: 19
end_date: '2024-02-10'
end_tag: v0.24.0
file_counts:
@@ -920,19 +922,19 @@
aider/models/openai.py:
Paul Gauthier: 135
aider/scrape.py:
- Paul Gauthier: 170
- Paul Gauthier (aider): 17
+ Paul Gauthier: 176
+ Paul Gauthier (aider): 11
aider/utils.py:
- Paul Gauthier: 7
+ Paul Gauthier: 8
tests/test_models.py:
Paul Gauthier: 8
grand_total:
- Paul Gauthier: 349
- Paul Gauthier (aider): 25
+ Paul Gauthier: 356
+ Paul Gauthier (aider): 19
start_tag: v0.23.0
- total_lines: 374
-- aider_percentage: 5.79
- aider_total: 7
+ total_lines: 375
+- aider_percentage: 6.02
+ aider_total: 8
end_date: '2024-03-04'
end_tag: v0.25.0
file_counts:
@@ -944,7 +946,7 @@
Paul Gauthier: 5
aider/main.py:
Paul Gauthier: 4
- Paul Gauthier (aider): 7
+ Paul Gauthier (aider): 8
aider/models/openai.py:
Paul Gauthier: 1
aider/repo.py:
@@ -952,14 +954,14 @@
aider/scrape.py:
Paul Gauthier: 1
tests/test_coder.py:
- Paul Gauthier: 22
+ Paul Gauthier: 28
tests/test_commands.py:
- Paul Gauthier: 23
+ Paul Gauthier: 28
grand_total:
- Paul Gauthier: 114
- Paul Gauthier (aider): 7
+ Paul Gauthier: 125
+ Paul Gauthier (aider): 8
start_tag: v0.24.0
- total_lines: 121
+ total_lines: 133
- aider_percentage: 0.0
aider_total: 0
end_date: '2024-03-08'
@@ -970,11 +972,11 @@
aider/coders/base_coder.py:
Paul Gauthier: 8
aider/main.py:
- Paul Gauthier: 26
+ Paul Gauthier: 30
grand_total:
- Paul Gauthier: 35
+ Paul Gauthier: 39
start_tag: v0.25.0
- total_lines: 35
+ total_lines: 39
- aider_percentage: 0.0
aider_total: 0
end_date: '2024-03-22'
@@ -987,20 +989,20 @@
aider/main.py:
Paul Gauthier: 14
aider/queries/tree-sitter-typescript-tags.scm:
- Ryan Freckleton: 21
+ Ryan Freckleton: 32
aider/repomap.py:
Paul Gauthier: 6
benchmark/benchmark.py:
- Paul Gauthier: 91
+ Paul Gauthier: 111
tests/test_commands.py:
Paul Gauthier: 3
tests/test_repomap.py:
- Ryan Freckleton: 48
+ Ryan Freckleton: 59
grand_total:
- Paul Gauthier: 125
- Ryan Freckleton: 69
+ Paul Gauthier: 145
+ Ryan Freckleton: 91
start_tag: v0.26.0
- total_lines: 194
+ total_lines: 236
- aider_percentage: 0.0
aider_total: 0
end_date: '2024-04-09'
@@ -1009,12 +1011,12 @@
aider/__init__.py:
Paul Gauthier: 1
aider/models/openai.py:
- Paul Gauthier: 3
+ Paul Gauthier: 10
grand_total:
- Paul Gauthier: 4
+ Paul Gauthier: 11
start_tag: v0.27.0
- total_lines: 4
-- aider_percentage: 5.69
+ total_lines: 11
+- aider_percentage: 5.47
aider_total: 35
end_date: '2024-04-21'
end_tag: v0.29.0
@@ -1041,9 +1043,9 @@
aider/history.py:
Paul Gauthier: 6
aider/main.py:
- Paul Gauthier: 68
+ Paul Gauthier: 81
aider/models.py:
- Paul Gauthier: 216
+ Paul Gauthier: 219
Paul Gauthier (aider): 33
aider/repo.py:
Paul Gauthier: 19
@@ -1065,7 +1067,7 @@
tests/test_models.py:
Paul Gauthier: 13
tests/test_repo.py:
- Paul Gauthier: 17
+ Paul Gauthier: 26
tests/test_repomap.py:
Paul Gauthier: 13
tests/test_sendchat.py:
@@ -1074,10 +1076,10 @@
Paul Gauthier: 14
grand_total:
Aloha: 1
- Paul Gauthier: 579
+ Paul Gauthier: 604
Paul Gauthier (aider): 35
start_tag: v0.28.0
- total_lines: 615
+ total_lines: 640
- aider_percentage: 0.0
aider_total: 0
end_date: '2024-04-23'
@@ -1090,9 +1092,9 @@
aider/history.py:
Paul Gauthier: 2
aider/main.py:
- Paul Gauthier: 26
+ Paul Gauthier: 27
aider/models.py:
- Paul Gauthier: 154
+ Paul Gauthier: 171
aider/sendchat.py:
Paul Gauthier: 3
aider/voice.py:
@@ -1114,9 +1116,9 @@
tests/test_wholefile.py:
Paul Gauthier: 1
grand_total:
- Paul Gauthier: 213
+ Paul Gauthier: 231
start_tag: v0.29.0
- total_lines: 213
+ total_lines: 231
- aider_percentage: 0.16
aider_total: 2
end_date: '2024-05-02'
@@ -1127,7 +1129,7 @@
aider/args.py:
Paul Gauthier: 375
aider/coders/base_coder.py:
- Paul Gauthier: 120
+ Paul Gauthier: 131
aider/commands.py:
Paul Gauthier: 45
aider/gui.py:
@@ -1144,17 +1146,17 @@
tests/test_coder.py:
Paul Gauthier: 16
tests/test_commands.py:
- Paul Gauthier: 8
+ Paul Gauthier: 10
tests/test_editblock.py:
Paul Gauthier: 4
tests/test_wholefile.py:
Paul Gauthier: 1
grand_total:
- Paul Gauthier: 1247
+ Paul Gauthier: 1260
Paul Gauthier (aider): 2
start_tag: v0.30.0
- total_lines: 1249
-- aider_percentage: 3.29
+ total_lines: 1262
+- aider_percentage: 3.0
aider_total: 8
end_date: '2024-05-07'
end_tag: v0.32.0
@@ -1166,9 +1168,9 @@
aider/coders/__init__.py:
Paul Gauthier: 2
aider/coders/base_coder.py:
- Paul Gauthier: 54
+ Paul Gauthier: 55
aider/coders/editblock_coder.py:
- Paul Gauthier: 3
+ Paul Gauthier: 4
aider/coders/editblock_fenced_coder.py:
Paul Gauthier: 11
aider/gui.py:
@@ -1177,25 +1179,25 @@
Paul Gauthier: 5
Paul Gauthier (aider): 3
aider/models.py:
- Paul Gauthier: 45
+ Paul Gauthier: 54
aider/sendchat.py:
Paul Gauthier: 10
aider/utils.py:
Paul Gauthier: 1
benchmark/benchmark.py:
- Paul Gauthier: 78
+ Paul Gauthier: 81
Paul Gauthier (aider): 5
benchmark/plots.py:
- Paul Gauthier: 3
+ Paul Gauthier: 5
tests/test_main.py:
- Paul Gauthier: 10
+ Paul Gauthier: 18
tests/test_sendchat.py:
Paul Gauthier: 4
grand_total:
- Paul Gauthier: 235
+ Paul Gauthier: 259
Paul Gauthier (aider): 8
start_tag: v0.31.0
- total_lines: 243
+ total_lines: 267
- aider_percentage: 0.0
aider_total: 0
end_date: '2024-05-08'
@@ -1212,15 +1214,15 @@
aider/main.py:
Paul Gauthier: 1
aider/models.py:
- Paul Gauthier: 3
+ Paul Gauthier: 9
aider/sendchat.py:
Paul Gauthier: 1
aider/voice.py:
Paul Gauthier: 2
grand_total:
- Paul Gauthier: 21
+ Paul Gauthier: 27
start_tag: v0.32.0
- total_lines: 21
+ total_lines: 27
- aider_percentage: 0.0
aider_total: 0
end_date: '2024-05-10'
@@ -1235,18 +1237,18 @@
aider/main.py:
Paul Gauthier: 9
aider/models.py:
- Paul Gauthier: 7
+ Paul Gauthier: 14
aider/repomap.py:
Paul Gauthier: 3
aider/sendchat.py:
- Paul Gauthier: 6
+ Paul Gauthier: 7
tests/test_sendchat.py:
Paul Gauthier: 4
grand_total:
- Paul Gauthier: 54
+ Paul Gauthier: 62
start_tag: v0.33.0
- total_lines: 54
-- aider_percentage: 6.8
+ total_lines: 62
+- aider_percentage: 6.42
aider_total: 17
end_date: '2024-05-13'
end_tag: v0.35.0
@@ -1254,36 +1256,36 @@
aider/__init__.py:
Paul Gauthier: 1
aider/args.py:
- Paul Gauthier: 15
+ Paul Gauthier: 18
Paul Gauthier (aider): 5
aider/coders/base_coder.py:
Paul Gauthier: 22
Paul Gauthier (aider): 1
aider/coders/editblock_coder.py:
- Paul Gauthier: 82
+ Paul Gauthier: 84
Paul Gauthier (aider): 10
aider/history.py:
Paul Gauthier: 20
aider/io.py:
- Paul Gauthier: 7
+ Paul Gauthier: 8
aider/main.py:
Paul Gauthier: 1
Paul Gauthier (aider): 1
aider/models.py:
- Paul Gauthier: 18
+ Paul Gauthier: 25
aider/sendchat.py:
- Paul Gauthier: 6
+ Paul Gauthier: 8
aider/utils.py:
Paul Gauthier: 51
aider/versioncheck.py:
Paul Gauthier: 10
grand_total:
- Paul Gauthier: 233
+ Paul Gauthier: 248
Paul Gauthier (aider): 17
start_tag: v0.34.0
- total_lines: 250
-- aider_percentage: 15.38
- aider_total: 92
+ total_lines: 265
+- aider_percentage: 14.64
+ aider_total: 89
end_date: '2024-05-22'
end_tag: v0.36.0
file_counts:
@@ -1292,15 +1294,15 @@
aider/__init__.py:
Paul Gauthier: 1
aider/args.py:
- Paul Gauthier: 37
- Paul Gauthier (aider): 3
+ Paul Gauthier: 42
+ Paul Gauthier (aider): 1
aider/coders/base_coder.py:
- Paul Gauthier: 110
+ Paul Gauthier: 113
Paul Gauthier (aider): 3
aider/coders/wholefile_coder.py:
Paul Gauthier (aider): 2
aider/commands.py:
- Paul Gauthier: 45
+ Paul Gauthier: 49
aider/io.py:
Paul Gauthier: 9
aider/linter.py:
@@ -1319,8 +1321,8 @@
benchmark/benchmark.py:
Paul Gauthier: 5
benchmark/over_time.py:
- Paul Gauthier: 29
- Paul Gauthier (aider): 28
+ Paul Gauthier: 30
+ Paul Gauthier (aider): 27
scripts/jekyll_build.sh:
Paul Gauthier: 1
Paul Gauthier (aider): 3
@@ -1328,11 +1330,11 @@
Paul Gauthier: 1
Paul Gauthier (aider): 3
grand_total:
- Paul Gauthier: 506
- Paul Gauthier (aider): 92
+ Paul Gauthier: 519
+ Paul Gauthier (aider): 89
start_tag: v0.35.0
- total_lines: 598
-- aider_percentage: 19.06
+ total_lines: 608
+- aider_percentage: 18.65
aider_total: 113
end_date: '2024-06-04'
end_tag: v0.37.0
@@ -1340,7 +1342,7 @@
aider/__init__.py:
Paul Gauthier: 1
aider/coders/base_coder.py:
- Paul Gauthier: 71
+ Paul Gauthier: 73
Paul Gauthier (aider): 3
aider/coders/editblock_coder.py:
Paul Gauthier: 1
@@ -1349,14 +1351,14 @@
Aleksandr Bobrov (aider): 1
Paul Gauthier: 24
aider/io.py:
- Paul Gauthier: 6
+ Paul Gauthier: 7
Paul Gauthier (aider): 1
aider/linter.py:
Paul Gauthier: 4
aider/litellm.py:
Paul Gauthier: 1
aider/repomap.py:
- Paul Gauthier: 113
+ Paul Gauthier: 115
aider/sendchat.py:
Paul Gauthier: 2
aider/voice.py:
@@ -1364,23 +1366,23 @@
benchmark/over_time.py:
Paul Gauthier (aider): 7
benchmark/swe_bench.py:
- Paul Gauthier: 99
- Paul Gauthier (aider): 24
+ Paul Gauthier: 101
+ Paul Gauthier (aider): 30
scripts/blame.py:
- Paul Gauthier: 153
- Paul Gauthier (aider): 59
+ Paul Gauthier: 159
+ Paul Gauthier (aider): 53
tests/test_io.py:
Paul Gauthier: 4
Paul Gauthier (aider): 14
grand_total:
Aleksandr Bobrov: 1
Aleksandr Bobrov (aider): 1
- Paul Gauthier: 479
+ Paul Gauthier: 492
Paul Gauthier (aider): 112
start_tag: v0.36.0
- total_lines: 593
-- aider_percentage: 9.53
- aider_total: 53
+ total_lines: 606
+- aider_percentage: 8.96
+ aider_total: 50
end_date: '2024-06-16'
end_tag: v0.38.0
file_counts:
@@ -1399,13 +1401,13 @@
Paul Gauthier: 1
aider/args.py:
Krazer: 4
- Paul Gauthier: 57
+ Paul Gauthier: 58
develmusa: 1
aider/args_formatter.py:
- Paul Gauthier: 116
- Paul Gauthier (aider): 20
+ Paul Gauthier: 119
+ Paul Gauthier (aider): 17
aider/coders/base_coder.py:
- Paul Gauthier: 77
+ Paul Gauthier: 78
aider/commands.py:
Paul Gauthier: 29
aider/gui.py:
@@ -1440,13 +1442,13 @@
Paul Gauthier: 4
grand_total:
Krazer: 28
- Paul Gauthier: 474
- Paul Gauthier (aider): 53
+ Paul Gauthier: 479
+ Paul Gauthier (aider): 50
develmusa: 1
start_tag: v0.37.0
- total_lines: 556
-- aider_percentage: 15.56
- aider_total: 47
+ total_lines: 558
+- aider_percentage: 17.1
+ aider_total: 59
end_date: '2024-06-20'
end_tag: v0.39.0
file_counts:
@@ -1456,13 +1458,13 @@
Paul Gauthier (aider): 4
aider/args.py:
Daniel Vainsencher: 6
- John-Mason P. Shackelford: 14
- Paul Gauthier: 14
+ John-Mason P. Shackelford: 18
+ Paul Gauthier: 23
aider/args_formatter.py:
Paul Gauthier: 24
- Paul Gauthier (aider): 9
+ Paul Gauthier (aider): 15
aider/coders/base_coder.py:
- Daniel Vainsencher: 4
+ Daniel Vainsencher: 5
Daniel Vainsencher (aider): 2
Paul Gauthier: 2
aider/commands.py:
@@ -1473,7 +1475,7 @@
Daniel Vainsencher: 1
John-Mason P. Shackelford: 14
aider/models.py:
- Paul Gauthier: 14
+ Paul Gauthier: 18
aider/repo.py:
Paul Gauthier: 23
aider/scrape.py:
@@ -1481,29 +1483,29 @@
aider/tests/test_commands.py:
Paul Gauthier: 6
aider/tests/test_main.py:
- John-Mason P. Shackelford: 80
+ John-Mason P. Shackelford: 88
aider/tests/test_repo.py:
- Paul Gauthier: 19
- Paul Gauthier (aider): 21
+ Paul Gauthier: 24
+ Paul Gauthier (aider): 24
aider/urls.py:
Nicolas Perez: 1
Paul Gauthier: 1
aider/utils.py:
Daniel Vainsencher: 7
- Daniel Vainsencher (aider): 11
+ Daniel Vainsencher (aider): 14
John-Mason P. Shackelford: 7
scripts/update-docs.sh:
Paul Gauthier: 1
grand_total:
- Daniel Vainsencher: 32
- Daniel Vainsencher (aider): 13
- John-Mason P. Shackelford: 115
+ Daniel Vainsencher: 33
+ Daniel Vainsencher (aider): 16
+ John-Mason P. Shackelford: 127
Nicolas Perez: 2
- Paul Gauthier: 106
- Paul Gauthier (aider): 34
+ Paul Gauthier: 124
+ Paul Gauthier (aider): 43
start_tag: v0.38.0
- total_lines: 302
-- aider_percentage: 6.42
+ total_lines: 345
+- aider_percentage: 5.82
aider_total: 21
end_date: '2024-06-24'
end_tag: v0.40.0
@@ -1512,34 +1514,34 @@
Paul Gauthier: 1
aider/args.py:
Krazer: 6
- Paul Gauthier: 27
+ Paul Gauthier: 33
aider/coders/base_coder.py:
Paul Gauthier: 28
aider/coders/editblock_coder.py:
Paul Gauthier: 64
aider/linter.py:
- Paul Gauthier: 23
+ Paul Gauthier: 24
Paul Gauthier (aider): 21
aider/main.py:
- Krazer: 32
+ Krazer: 36
Paul Gauthier: 23
aider/models.py:
- Dustin Miller: 13
+ Dustin Miller: 14
Krazer: 31
- Paul Gauthier: 16
+ Paul Gauthier: 28
aider/repo.py:
Paul Gauthier: 26
aider/tests/test_editblock.py:
- Paul Gauthier: 16
+ Paul Gauthier: 26
grand_total:
- Dustin Miller: 13
- Krazer: 69
- Paul Gauthier: 224
+ Dustin Miller: 14
+ Krazer: 73
+ Paul Gauthier: 253
Paul Gauthier (aider): 21
start_tag: v0.39.0
- total_lines: 327
-- aider_percentage: 4.74
- aider_total: 11
+ total_lines: 361
+- aider_percentage: 5.86
+ aider_total: 15
end_date: '2024-07-01'
end_tag: v0.41.0
file_counts:
@@ -1548,26 +1550,26 @@
aider/__init__.py:
Paul Gauthier: 1
aider/args.py:
- Paul Gauthier: 5
- Paul Gauthier (aider): 5
+ Paul Gauthier: 10
+ Paul Gauthier (aider): 6
aider/coders/base_coder.py:
- Paul Gauthier: 122
+ Paul Gauthier: 125
Paul Gauthier (aider): 2
aider/coders/wholefile_coder.py:
- Paul Gauthier: 2
+ Paul Gauthier: 3
aider/commands.py:
- Amir Elaguizy (aider): 3
+ Amir Elaguizy (aider): 6
Paul Gauthier: 1
aider/gui.py:
Paul Gauthier: 4
aider/main.py:
- Paul Gauthier: 10
+ Paul Gauthier: 11
Paul Gauthier (aider): 1
aider/mdstream.py:
Paul Gauthier: 1
aider/models.py:
Mitsuki Ogasahara: 3
- Paul Gauthier: 28
+ Paul Gauthier: 38
aider/repo.py:
Paul Gauthier: 7
aider/repomap.py:
@@ -1585,12 +1587,12 @@
setup.py:
Paul Gauthier: 3
grand_total:
- Amir Elaguizy (aider): 3
+ Amir Elaguizy (aider): 6
Mitsuki Ogasahara: 3
- Paul Gauthier: 218
- Paul Gauthier (aider): 8
+ Paul Gauthier: 238
+ Paul Gauthier (aider): 9
start_tag: v0.40.0
- total_lines: 232
+ total_lines: 256
- aider_percentage: 2.29
aider_total: 7
end_date: '2024-07-04'
@@ -1636,8 +1638,8 @@
Paul Gauthier (aider): 7
start_tag: v0.41.0
total_lines: 306
-- aider_percentage: 10.61
- aider_total: 40
+- aider_percentage: 9.82
+ aider_total: 38
end_date: '2024-07-07'
end_tag: v0.43.0
file_counts:
@@ -1658,11 +1660,11 @@
aider/coders/__init__.py:
Paul Gauthier: 2
aider/coders/base_coder.py:
- Paul Gauthier: 44
+ Paul Gauthier: 45
aider/coders/help_coder.py:
- Paul Gauthier: 15
+ Paul Gauthier: 17
aider/commands.py:
- Paul Gauthier: 63
+ Paul Gauthier: 69
Paul Gauthier (aider): 5
aider/help.py:
Paul Gauthier: 114
@@ -1672,14 +1674,14 @@
aider/llm.py:
Paul Gauthier: 1
aider/main.py:
- Paul Gauthier: 35
+ Paul Gauthier: 36
aider/repomap.py:
Paul Gauthier: 14
aider/tests/test_commands.py:
Paul Gauthier: 1
aider/tests/test_help.py:
- Paul Gauthier: 5
- Paul Gauthier (aider): 26
+ Paul Gauthier: 7
+ Paul Gauthier (aider): 24
aider/versioncheck.py:
Paul Gauthier: 2
scripts/jekyll_run.sh:
@@ -1690,12 +1692,12 @@
Paul Gauthier: 6
Paul Gauthier (aider): 3
grand_total:
- Paul Gauthier: 337
- Paul Gauthier (aider): 40
+ Paul Gauthier: 349
+ Paul Gauthier (aider): 38
start_tag: v0.42.0
- total_lines: 377
-- aider_percentage: 27.02
- aider_total: 157
+ total_lines: 387
+- aider_percentage: 27.04
+ aider_total: 159
end_date: '2024-07-16'
end_tag: v0.44.0
file_counts:
@@ -1706,7 +1708,7 @@
aider/__init__.py:
Paul Gauthier: 1
aider/args.py:
- Paul Gauthier: 4
+ Paul Gauthier: 5
aider/args_formatter.py:
Paul Gauthier: 1
aider/coders/base_coder.py:
@@ -1719,16 +1721,16 @@
aider/help.py:
Paul Gauthier: 20
aider/main.py:
- Paul Gauthier: 20
+ Paul Gauthier: 22
aider/models.py:
Paul Gauthier: 11
aider/scrape.py:
- Paul Gauthier: 53
+ Paul Gauthier: 54
aider/utils.py:
Paul Gauthier: 78
Paul Gauthier (aider): 16
aider/versioncheck.py:
- Paul Gauthier: 27
+ Paul Gauthier: 28
aider/voice.py:
Paul Gauthier: 6
benchmark/Dockerfile:
@@ -1751,19 +1753,19 @@
Paul Gauthier (aider): 37
tests/browser/test_browser.py:
Paul Gauthier: 13
- Paul Gauthier (aider): 16
+ Paul Gauthier (aider): 18
tests/help/test_help.py:
Paul Gauthier: 23
tests/scrape/test_scrape.py:
Paul Gauthier: 16
Paul Gauthier (aider): 26
grand_total:
- Paul Gauthier: 424
- Paul Gauthier (aider): 157
+ Paul Gauthier: 429
+ Paul Gauthier (aider): 159
start_tag: v0.43.0
- total_lines: 581
-- aider_percentage: 44.93
- aider_total: 93
+ total_lines: 588
+- aider_percentage: 48.43
+ aider_total: 123
end_date: '2024-07-18'
end_tag: v0.45.0
file_counts:
@@ -1779,29 +1781,29 @@
Paul Gauthier: 1
Paul Gauthier (aider): 5
aider/models.py:
- Paul Gauthier: 7
+ Paul Gauthier: 16
aider/repomap.py:
Paul Gauthier: 1
aider/scrape.py:
- Paul Gauthier: 8
+ Paul Gauthier: 9
aider/versioncheck.py:
Paul Gauthier: 14
tests/basic/test_coder.py:
Paul Gauthier: 15
- Paul Gauthier (aider): 21
+ Paul Gauthier (aider): 25
tests/basic/test_commands.py:
- Paul Gauthier: 15
- Paul Gauthier (aider): 55
+ Paul Gauthier: 22
+ Paul Gauthier (aider): 81
tests/basic/test_main.py:
Paul Gauthier: 27
Paul Gauthier (aider): 5
grand_total:
- Paul Gauthier: 114
- Paul Gauthier (aider): 93
+ Paul Gauthier: 131
+ Paul Gauthier (aider): 123
start_tag: v0.44.0
- total_lines: 207
-- aider_percentage: 52.87
- aider_total: 313
+ total_lines: 254
+- aider_percentage: 53.3
+ aider_total: 339
end_date: '2024-07-29'
end_tag: v0.46.0
file_counts:
@@ -1816,7 +1818,7 @@
Your Name: 9
aider/coders/base_coder.py:
Paul Gauthier: 17
- Paul Gauthier (aider): 43
+ Paul Gauthier (aider): 45
Your Name: 27
Your Name (aider): 6
aider/coders/editblock_coder.py:
@@ -1832,19 +1834,19 @@
Your Name (aider): 2
aider/commands.py:
Paul Gauthier: 43
- Your Name: 26
- Your Name (aider): 25
+ Your Name: 28
+ Your Name (aider): 34
aider/io.py:
Paul Gauthier: 3
aider/llm.py:
- Paul Gauthier: 10
+ Paul Gauthier: 11
aider/main.py:
Paul Gauthier: 3
Paul Gauthier (aider): 8
Your Name: 6
Your Name (aider): 1
aider/models.py:
- Paul Gauthier: 9
+ Paul Gauthier: 24
aider/queries/tree-sitter-elm-tags.scm:
Charles Joachim: 4
aider/repomap.py:
@@ -1864,37 +1866,37 @@
Paul Gauthier (aider): 13
tests/basic/test_repomap.py:
Paul Gauthier: 70
- Paul Gauthier (aider): 10
+ Paul Gauthier (aider): 25
tests/scrape/test_scrape.py:
Paul Gauthier: 14
Paul Gauthier (aider): 73
grand_total:
Charles Joachim: 4
- Paul Gauthier: 204
- Paul Gauthier (aider): 272
- Your Name: 71
- Your Name (aider): 41
+ Paul Gauthier: 220
+ Paul Gauthier (aider): 289
+ Your Name: 73
+ Your Name (aider): 50
start_tag: v0.45.0
- total_lines: 592
-- aider_percentage: 56.98
- aider_total: 355
+ total_lines: 636
+- aider_percentage: 58.42
+ aider_total: 392
end_date: '2024-07-31'
end_tag: v0.47.0
file_counts:
.github/workflows/docker-release.yml:
- Paul Gauthier (aider): 20
+ Paul Gauthier (aider): 35
.github/workflows/release.yml:
Paul Gauthier (aider): 2
aider/__init__.py:
Paul Gauthier: 1
aider/args.py:
- Paul Gauthier: 4
+ Paul Gauthier: 6
Paul Gauthier (aider): 5
aider/coders/base_coder.py:
Paul Gauthier: 8
Paul Gauthier (aider): 3
aider/commands.py:
- Paul Gauthier: 20
+ Paul Gauthier: 23
Paul Gauthier (aider): 4
aider/history.py:
Paul Gauthier: 16
@@ -1906,7 +1908,7 @@
Paul Gauthier: 14
Paul Gauthier (aider): 1
aider/main.py:
- Paul Gauthier: 3
+ Paul Gauthier: 9
Paul Gauthier (aider): 1
aider/queries/tree-sitter-ocaml-tags.scm:
Paul Gauthier: 12
@@ -1927,34 +1929,34 @@
Paul Gauthier (aider): 12
docker/Dockerfile:
Paul Gauthier: 19
- Paul Gauthier (aider): 18
+ Paul Gauthier (aider): 21
scripts/blame.py:
- Paul Gauthier: 65
- Paul Gauthier (aider): 99
+ Paul Gauthier: 64
+ Paul Gauthier (aider): 110
scripts/update-blame.sh:
Paul Gauthier: 6
scripts/update-docs.sh:
Paul Gauthier: 1
tests/basic/test_coder.py:
- Paul Gauthier: 32
+ Paul Gauthier: 33
Paul Gauthier (aider): 4
tests/basic/test_commands.py:
Paul Gauthier: 11
- Paul Gauthier (aider): 25
+ Paul Gauthier (aider): 30
tests/basic/test_history.py:
Paul Gauthier (aider): 109
tests/basic/test_repo.py:
Paul Gauthier: 4
- Paul Gauthier (aider): 9
+ Paul Gauthier (aider): 12
tests/basic/test_repomap.py:
Paul Gauthier: 1
grand_total:
- Paul Gauthier: 268
- Paul Gauthier (aider): 355
+ Paul Gauthier: 279
+ Paul Gauthier (aider): 392
start_tag: v0.46.0
- total_lines: 623
-- aider_percentage: 45.67
- aider_total: 269
+ total_lines: 671
+- aider_percentage: 45.1
+ aider_total: 276
end_date: '2024-08-06'
end_tag: v0.48.0
file_counts:
@@ -1974,7 +1976,7 @@
aider/history.py:
Paul Gauthier: 2
aider/main.py:
- Paul Gauthier: 20
+ Paul Gauthier: 21
Paul Gauthier (aider): 30
aider/models.py:
Paul Gauthier: 9
@@ -1984,8 +1986,8 @@
Paul Gauthier: 42
Paul Gauthier (aider): 23
aider/repomap.py:
- Paul Gauthier: 60
- Paul Gauthier (aider): 3
+ Paul Gauthier: 62
+ Paul Gauthier (aider): 2
aider/sendchat.py:
Paul Gauthier: 26
Paul Gauthier (aider): 2
@@ -1995,71 +1997,71 @@
scripts/blame.py:
Paul Gauthier (aider): 2
tests/basic/test_coder.py:
- Paul Gauthier: 10
+ Paul Gauthier: 13
tests/basic/test_commands.py:
Paul Gauthier: 19
- Paul Gauthier (aider): 14
+ Paul Gauthier (aider): 18
tests/basic/test_history.py:
Paul Gauthier: 2
tests/basic/test_main.py:
- Paul Gauthier: 15
- Paul Gauthier (aider): 39
+ Paul Gauthier: 25
+ Paul Gauthier (aider): 42
tests/basic/test_repo.py:
Paul Gauthier: 8
- Paul Gauthier (aider): 35
+ Paul Gauthier (aider): 36
tests/basic/test_scripting.py:
Paul Gauthier (aider): 39
grand_total:
- Paul Gauthier: 318
- Paul Gauthier (aider): 269
+ Paul Gauthier: 334
+ Paul Gauthier (aider): 276
Thinh Nguyen: 1
paul-gauthier: 1
start_tag: v0.47.0
- total_lines: 589
-- aider_percentage: 59.83
- aider_total: 429
+ total_lines: 612
+- aider_percentage: 59.65
+ aider_total: 473
end_date: '2024-08-10'
end_tag: v0.49.0
file_counts:
aider/__init__.py:
Paul Gauthier: 1
aider/args.py:
- Paul Gauthier: 7
- Paul Gauthier (aider): 9
+ Paul Gauthier: 9
+ Paul Gauthier (aider): 13
aider/coders/base_coder.py:
- Paul Gauthier: 81
- Paul Gauthier (aider): 41
+ Paul Gauthier: 91
+ Paul Gauthier (aider): 44
aider/commands.py:
Paul Gauthier: 34
- Paul Gauthier (aider): 105
+ Paul Gauthier (aider): 108
aider/io.py:
Paul Gauthier: 7
- Paul Gauthier (aider): 23
+ Paul Gauthier (aider): 24
aider/llm.py:
Paul Gauthier (aider): 5
aider/main.py:
Paul Gauthier: 1
Paul Gauthier (aider): 4
aider/models.py:
- Paul Gauthier: 17
+ Paul Gauthier: 34
Paul Gauthier (aider): 3
aider/repo.py:
Paul Gauthier: 8
- Paul Gauthier (aider): 12
+ Paul Gauthier (aider): 13
aider/repomap.py:
Paul Gauthier: 11
Paul Gauthier (aider): 23
aider/scrape.py:
Paul Gauthier (aider): 17
aider/sendchat.py:
- Paul Gauthier: 20
+ Paul Gauthier: 21
aider/urls.py:
Paul Gauthier: 1
aider/utils.py:
Paul Gauthier (aider): 11
aider/versioncheck.py:
Paul Gauthier: 3
- Paul Gauthier (aider): 9
+ Paul Gauthier (aider): 11
aider/website/docs/leaderboards/index.md:
Paul Gauthier: 11
Paul Gauthier (aider): 11
@@ -2067,28 +2069,28 @@
Paul Gauthier: 5
Paul Gauthier (aider): 2
tests/basic/test_coder.py:
- Paul Gauthier (aider): 5
+ Paul Gauthier (aider): 7
tests/basic/test_commands.py:
Paul Gauthier: 35
- Paul Gauthier (aider): 83
+ Paul Gauthier (aider): 93
tests/basic/test_editblock.py:
Paul Gauthier (aider): 1
tests/basic/test_main.py:
- Paul Gauthier (aider): 28
+ Paul Gauthier (aider): 33
tests/basic/test_sendchat.py:
- Paul Gauthier: 45
+ Paul Gauthier: 47
tests/basic/test_wholefile.py:
Paul Gauthier (aider): 1
tests/scrape/test_scrape.py:
Paul Gauthier: 1
- Paul Gauthier (aider): 36
+ Paul Gauthier (aider): 49
grand_total:
- Paul Gauthier: 288
- Paul Gauthier (aider): 429
+ Paul Gauthier: 320
+ Paul Gauthier (aider): 473
start_tag: v0.48.0
- total_lines: 717
-- aider_percentage: 65.23
- aider_total: 182
+ total_lines: 793
+- aider_percentage: 65.52
+ aider_total: 209
end_date: '2024-08-13'
end_tag: v0.50.0
file_counts:
@@ -2097,14 +2099,14 @@
aider/__init__.py:
Paul Gauthier: 1
aider/args.py:
- Paul Gauthier (aider): 8
+ Paul Gauthier (aider): 10
aider/coders/base_coder.py:
Paul Gauthier: 24
- Paul Gauthier (aider): 30
+ Paul Gauthier (aider): 32
aider/commands.py:
- Amir Elaguizy (aider): 11
- Paul Gauthier: 26
- Paul Gauthier (aider): 15
+ Amir Elaguizy (aider): 13
+ Paul Gauthier: 28
+ Paul Gauthier (aider): 18
aider/io.py:
Paul Gauthier: 1
aider/main.py:
@@ -2127,24 +2129,24 @@
Paul Gauthier (aider): 34
tests/basic/test_coder.py:
Paul Gauthier: 3
- Paul Gauthier (aider): 16
+ Paul Gauthier (aider): 19
tests/basic/test_commands.py:
- Paul Gauthier: 7
- Paul Gauthier (aider): 27
+ Paul Gauthier: 18
+ Paul Gauthier (aider): 41
tests/basic/test_main.py:
Paul Gauthier: 1
- Paul Gauthier (aider): 7
+ Paul Gauthier (aider): 8
tests/help/test_help.py:
Paul Gauthier: 7
grand_total:
- Amir Elaguizy (aider): 11
+ Amir Elaguizy (aider): 13
Branch Vincent: 2
- Paul Gauthier: 95
- Paul Gauthier (aider): 171
+ Paul Gauthier: 108
+ Paul Gauthier (aider): 196
start_tag: v0.49.0
- total_lines: 279
-- aider_percentage: 56.95
- aider_total: 582
+ total_lines: 319
+- aider_percentage: 62.86
+ aider_total: 689
end_date: '2024-08-20'
end_tag: v0.51.0
file_counts:
@@ -2152,14 +2154,14 @@
Paul Gauthier: 1
aider/args.py:
Paul Gauthier: 2
- Paul Gauthier (aider): 8
+ Paul Gauthier (aider): 10
aider/coders/__init__.py:
- Paul Gauthier: 3
+ Paul Gauthier: 4
aider/coders/base_coder.py:
- Paul Gauthier: 168
- Paul Gauthier (aider): 45
+ Paul Gauthier: 172
+ Paul Gauthier (aider): 51
aider/coders/single_wholefile_func_coder.py:
- Paul Gauthier: 28
+ Paul Gauthier: 29
aider/commands.py:
Paul Gauthier: 3
Paul Gauthier (aider): 5
@@ -2167,23 +2169,23 @@
Paul Gauthier: 2
aider/main.py:
Paul Gauthier: 6
- Paul Gauthier (aider): 13
+ Paul Gauthier (aider): 16
aider/models.py:
- Paul Gauthier: 35
- Paul Gauthier (aider): 4
+ Paul Gauthier: 45
+ Paul Gauthier (aider): 2
aider/repomap.py:
- Paul Gauthier: 11
- Paul Gauthier (aider): 55
+ Paul Gauthier: 16
+ Paul Gauthier (aider): 58
aider/sendchat.py:
Paul Gauthier: 3
aider/utils.py:
Paul Gauthier (aider): 6
aider/website/_includes/code-in-json-benchmark.js:
- Paul Gauthier: 101
- Paul Gauthier (aider): 64
+ Paul Gauthier: 24
+ Paul Gauthier (aider): 141
aider/website/_includes/code-in-json-syntax.js:
- Paul Gauthier: 23
- Paul Gauthier (aider): 116
+ Paul Gauthier: 42
+ Paul Gauthier (aider): 97
aider/website/docs/leaderboards/index.md:
Paul Gauthier: 1
benchmark/benchmark.py:
@@ -2198,18 +2200,18 @@
tests/basic/test_commands.py:
Paul Gauthier: 5
tests/basic/test_main.py:
- Paul Gauthier: 4
- Paul Gauthier (aider): 92
+ Paul Gauthier: 6
+ Paul Gauthier (aider): 125
tests/basic/test_repomap.py:
- Paul Gauthier: 13
- Paul Gauthier (aider): 100
+ Paul Gauthier: 15
+ Paul Gauthier (aider): 104
grand_total:
- Paul Gauthier: 440
- Paul Gauthier (aider): 582
+ Paul Gauthier: 407
+ Paul Gauthier (aider): 689
start_tag: v0.50.0
- total_lines: 1022
-- aider_percentage: 67.74
- aider_total: 485
+ total_lines: 1096
+- aider_percentage: 66.9
+ aider_total: 479
end_date: '2024-08-23'
end_tag: v0.52.0
file_counts:
@@ -2219,22 +2221,23 @@
Paul Gauthier: 2
Paul Gauthier (aider): 6
aider/coders/base_coder.py:
- Paul Gauthier: 77
- Paul Gauthier (aider): 25
+ Paul Gauthier: 80
+ Paul Gauthier (aider): 23
aider/coders/chat_chunks.py:
- Paul Gauthier (aider): 53
+ Paul Gauthier: 1
+ Paul Gauthier (aider): 3
aider/coders/editblock_coder.py:
- Paul Gauthier: 42
- Paul Gauthier (aider): 67
+ Paul Gauthier: 45
+ Paul Gauthier (aider): 68
aider/coders/wholefile_coder.py:
Paul Gauthier: 1
aider/commands.py:
Paul Gauthier: 5
- Paul Gauthier (aider): 40
+ Paul Gauthier (aider): 42
pcamp: 1
aider/io.py:
- Paul Gauthier: 41
- Paul Gauthier (aider): 40
+ Paul Gauthier: 40
+ Paul Gauthier (aider): 41
aider/main.py:
Paul Gauthier: 2
aider/models.py:
@@ -2254,7 +2257,7 @@
scripts/blame.py:
Paul Gauthier: 1
tests/basic/test_commands.py:
- Paul Gauthier (aider): 74
+ Paul Gauthier (aider): 100
tests/basic/test_editblock.py:
Paul Gauthier (aider): 1
tests/basic/test_find_or_blocks.py:
@@ -2264,17 +2267,17 @@
Paul Gauthier (aider): 32
tests/basic/test_main.py:
Paul Gauthier: 2
- Paul Gauthier (aider): 27
+ Paul Gauthier (aider): 43
tests/basic/test_wholefile.py:
Paul Gauthier: 8
grand_total:
- Paul Gauthier: 230
- Paul Gauthier (aider): 485
+ Paul Gauthier: 236
+ Paul Gauthier (aider): 479
pcamp: 1
start_tag: v0.51.0
total_lines: 716
-- aider_percentage: 62.36
- aider_total: 434
+- aider_percentage: 62.33
+ aider_total: 455
end_date: '2024-08-27'
end_tag: v0.53.0
file_counts:
@@ -2284,7 +2287,7 @@
Paul Gauthier: 2
Paul Gauthier (aider): 10
aider/coders/base_coder.py:
- Paul Gauthier: 55
+ Paul Gauthier: 57
Paul Gauthier (aider): 18
aider/coders/chat_chunks.py:
Paul Gauthier (aider): 9
@@ -2292,7 +2295,7 @@
Paul Gauthier: 44
Paul Gauthier (aider): 6
aider/commands.py:
- Paul Gauthier: 18
+ Paul Gauthier: 19
aider/history.py:
Paul Gauthier (aider): 3
aider/io.py:
@@ -2313,7 +2316,7 @@
Paul Gauthier: 7
Paul Gauthier (aider): 11
aider/utils.py:
- Paul Gauthier: 9
+ Paul Gauthier: 12
Paul Gauthier (aider): 9
aider/versioncheck.py:
Paul Gauthier: 2
@@ -2321,13 +2324,13 @@
scripts/versionbump.py:
Paul Gauthier: 1
tests/basic/test_commands.py:
- Paul Gauthier: 6
+ Paul Gauthier: 12
tests/basic/test_editblock.py:
- Paul Gauthier: 5
- Paul Gauthier (aider): 27
+ Paul Gauthier: 6
+ Paul Gauthier (aider): 26
tests/basic/test_io.py:
Paul Gauthier: 2
- Paul Gauthier (aider): 44
+ Paul Gauthier (aider): 66
tests/basic/test_main.py:
Paul Gauthier: 2
tests/basic/test_models.py:
@@ -2344,12 +2347,12 @@
tests/fixtures/sample-code-base/sample.py:
Paul Gauthier (aider): 68
grand_total:
- Paul Gauthier: 262
- Paul Gauthier (aider): 434
+ Paul Gauthier: 275
+ Paul Gauthier (aider): 455
start_tag: v0.52.0
- total_lines: 696
-- aider_percentage: 67.4
- aider_total: 184
+ total_lines: 730
+- aider_percentage: 70.0
+ aider_total: 224
end_date: '2024-08-28'
end_tag: v0.54.0
file_counts:
@@ -2363,7 +2366,7 @@
Paul Gauthier: 1
aider/args.py:
Paul Gauthier: 1
- Paul Gauthier (aider): 10
+ Paul Gauthier (aider): 12
aider/coders/base_coder.py:
Paul Gauthier: 25
Paul Gauthier (aider): 12
@@ -2374,37 +2377,37 @@
Paul Gauthier: 28
aider/main.py:
Paul Gauthier: 2
- Paul Gauthier (aider): 4
+ Paul Gauthier (aider): 6
aider/models.py:
- Paul Gauthier (aider): 7
+ Paul Gauthier (aider): 11
aider/run_cmd.py:
- Paul Gauthier: 3
- Paul Gauthier (aider): 66
+ Paul Gauthier: 2
+ Paul Gauthier (aider): 70
aider/utils.py:
- Paul Gauthier (aider): 14
+ Paul Gauthier (aider): 15
aider/versioncheck.py:
Paul Gauthier: 1
- Paul Gauthier (aider): 9
+ Paul Gauthier (aider): 13
aider/website/docs/leaderboards/index.md:
Paul Gauthier: 1
tests/basic/test_coder.py:
- Paul Gauthier: 6
- Paul Gauthier (aider): 43
+ Paul Gauthier: 14
+ Paul Gauthier (aider): 49
tests/basic/test_io.py:
Paul Gauthier: 4
tests/basic/test_main.py:
Antti Kaihola: 4
- Paul Gauthier (aider): 12
+ Paul Gauthier (aider): 29
tests/scrape/test_scrape.py:
Paul Gauthier: 1
grand_total:
Antti Kaihola: 4
- Paul Gauthier: 85
- Paul Gauthier (aider): 184
+ Paul Gauthier: 92
+ Paul Gauthier (aider): 224
start_tag: v0.53.0
- total_lines: 273
-- aider_percentage: 52.82
- aider_total: 759
+ total_lines: 320
+- aider_percentage: 52.4
+ aider_total: 787
end_date: '2024-09-04'
end_tag: v0.55.0
file_counts:
@@ -2414,8 +2417,8 @@
aider/args.py:
Paul Gauthier (aider): 7
aider/coders/base_coder.py:
- Paul Gauthier: 62
- Paul Gauthier (aider): 39
+ Paul Gauthier: 63
+ Paul Gauthier (aider): 42
aider/coders/editblock_coder.py:
Nikolay Sedelnikov: 8
aider/coders/editblock_func_coder.py:
@@ -2426,15 +2429,15 @@
Paul Gauthier: 16
aider/commands.py:
Antti Kaihola: 7
- Paul Gauthier: 74
- Paul Gauthier (aider): 25
+ Paul Gauthier: 83
+ Paul Gauthier (aider): 27
aider/format_settings.py:
Paul Gauthier (aider): 2
aider/gui.py:
Paul Gauthier: 4
aider/io.py:
- Paul Gauthier: 56
- Paul Gauthier (aider): 11
+ Paul Gauthier: 57
+ Paul Gauthier (aider): 13
aider/linter.py:
Paul Gauthier: 5
aider/llm.py:
@@ -2468,7 +2471,7 @@
Paul Gauthier: 31
Paul Gauthier (aider): 29
aider/versioncheck.py:
- Paul Gauthier: 22
+ Paul Gauthier: 32
Paul Gauthier (aider): 6
aider/voice.py:
Paul Gauthier: 7
@@ -2476,23 +2479,23 @@
aider/website/docs/leaderboards/index.md:
Paul Gauthier: 1
scripts/versionbump.py:
- Paul Gauthier: 7
+ Paul Gauthier: 9
tests/basic/test_coder.py:
Paul Gauthier: 3
- Paul Gauthier (aider): 96
+ Paul Gauthier (aider): 105
tests/basic/test_editblock.py:
Antti Kaihola: 3
- Nikolay Sedelnikov: 23
+ Nikolay Sedelnikov: 37
tests/basic/test_io.py:
Paul Gauthier: 2
- Paul Gauthier (aider): 14
+ Paul Gauthier (aider): 15
tests/basic/test_main.py:
Paul Gauthier: 2
Paul Gauthier (aider): 10
tests/basic/test_models.py:
Paul Gauthier (aider): 4
tests/basic/test_repomap.py:
- Paul Gauthier (aider): 31
+ Paul Gauthier (aider): 42
tests/basic/test_run_cmd.py:
Paul Gauthier (aider): 11
tests/basic/test_special.py:
@@ -2502,13 +2505,13 @@
Paul Gauthier (aider): 11
grand_total:
Antti Kaihola: 12
- Nikolay Sedelnikov: 31
- Paul Gauthier: 635
- Paul Gauthier (aider): 759
+ Nikolay Sedelnikov: 45
+ Paul Gauthier: 658
+ Paul Gauthier (aider): 787
start_tag: v0.54.0
- total_lines: 1437
-- aider_percentage: 56.23
- aider_total: 149
+ total_lines: 1502
+- aider_percentage: 55.4
+ aider_total: 154
end_date: '2024-09-09'
end_tag: v0.56.0
file_counts:
@@ -2528,15 +2531,15 @@
aider/linter.py:
Paul Gauthier: 6
Paul Gauthier (aider): 4
- fry69: 9
+ fry69: 12
aider/main.py:
- Paul Gauthier: 32
- Paul Gauthier (aider): 49
+ Paul Gauthier: 35
+ Paul Gauthier (aider): 48
aider/models.py:
Paul Gauthier: 2
fry69: 3
aider/repo.py:
- Paul Gauthier: 14
+ Paul Gauthier: 16
aider/repomap.py:
Paul Gauthier: 13
aider/report.py:
@@ -2551,15 +2554,15 @@
Paul Gauthier (aider): 51
tests/basic/test_main.py:
Paul Gauthier: 2
- Paul Gauthier (aider): 3
+ Paul Gauthier (aider): 9
grand_total:
- Paul Gauthier: 104
- Paul Gauthier (aider): 149
- fry69: 12
+ Paul Gauthier: 109
+ Paul Gauthier (aider): 154
+ fry69: 15
start_tag: v0.55.0
- total_lines: 265
-- aider_percentage: 70.27
- aider_total: 390
+ total_lines: 278
+- aider_percentage: 70.36
+ aider_total: 406
end_date: '2024-09-21'
end_tag: v0.57.0
file_counts:
@@ -2570,10 +2573,10 @@
Paul Gauthier (aider): 1
aider/coders/base_coder.py:
Krazer: 1
- Paul Gauthier: 14
+ Paul Gauthier: 17
Paul Gauthier (aider): 2
aider/coders/chat_chunks.py:
- Paul Gauthier: 4
+ Paul Gauthier: 5
aider/coders/editblock_coder.py:
Paul Gauthier (aider): 27
aider/commands.py:
@@ -2581,21 +2584,22 @@
Paul Gauthier: 1
Paul Gauthier (aider): 34
aider/io.py:
- Krazer: 23
+ Krazer: 27
Paul Gauthier: 8
Paul Gauthier (aider): 42
aider/main.py:
+ Krazer: 2
Paul Gauthier: 5
Paul Gauthier (aider): 8
aider/models.py:
Jay Alammar: 1
Jay Alammar (aider): 13
- Paul Gauthier: 48
- Paul Gauthier (aider): 30
+ Paul Gauthier: 43
+ Paul Gauthier (aider): 46
aider/repo.py:
Paul Gauthier: 3
aider/run_cmd.py:
- Paul Gauthier: 7
+ Paul Gauthier: 8
Paul Gauthier (aider): 33
aider/sendchat.py:
Paul Gauthier: 3
@@ -2626,35 +2630,37 @@
Christian Clauss: 2
Jay Alammar: 1
Jay Alammar (aider): 13
- Krazer: 27
+ Krazer: 33
Paul Gauthier: 134
- Paul Gauthier (aider): 377
+ Paul Gauthier (aider): 393
start_tag: v0.56.0
- total_lines: 555
-- aider_percentage: 44.68
- aider_total: 600
+ total_lines: 577
+- aider_percentage: 48.74
+ aider_total: 658
end_date: '2024-09-29'
end_tag: v0.58.0
file_counts:
.github/workflows/docker-build-test.yml:
Paul Gauthier: 1
- Paul Gauthier (aider): 5
+ Paul Gauthier (aider): 11
aider/__init__.py:
Paul Gauthier: 1
aider/args.py:
Mike Bailey: 7
Paul Gauthier: 8
- Paul Gauthier (aider): 51
+ Paul Gauthier (aider): 55
Stein Martin Hustad: 17
fry69: 2
aider/coders/__init__.py:
Paul Gauthier: 6
+ Paul Gauthier (aider): 2
aider/coders/architect_coder.py:
Paul Gauthier: 40
Paul Gauthier (aider): 3
aider/coders/base_coder.py:
+ Jonathan Ellis: 1
Paul Gauthier: 32
- Paul Gauthier (aider): 4
+ Paul Gauthier (aider): 8
aider/coders/editor_editblock_coder.py:
Paul Gauthier: 6
Paul Gauthier (aider): 1
@@ -2665,8 +2671,8 @@
aider/commands.py:
Jonathan Ellis: 1
Mike Bailey: 1
- Paul Gauthier: 17
- Paul Gauthier (aider): 77
+ Paul Gauthier: 15
+ Paul Gauthier (aider): 78
fry69: 2
aider/help.py:
Paul Gauthier: 27
@@ -2674,12 +2680,12 @@
aider/history.py:
Paul Gauthier: 1
aider/io.py:
- Paul Gauthier: 38
+ Paul Gauthier: 39
Paul Gauthier (aider): 62
Stein Martin Hustad: 5
- fry69: 9
+ fry69: 10
aider/linter.py:
- Paul Gauthier: 5
+ Paul Gauthier: 6
aider/main.py:
Paul Gauthier: 13
Paul Gauthier (aider): 6
@@ -2688,7 +2694,7 @@
rti: 1
aider/models.py:
Paul Gauthier: 58
- Paul Gauthier (aider): 79
+ Paul Gauthier (aider): 85
aider/repo.py:
Paul Gauthier: 16
Paul Gauthier (aider): 2
@@ -2706,26 +2712,26 @@
aider/voice.py:
Mike Bailey: 17
Paul Gauthier: 2
- Paul Gauthier (aider): 6
+ Paul Gauthier (aider): 10
aider/website/docs/leaderboards/index.md:
- Paul Gauthier: 152
+ Paul Gauthier: 92
benchmark/benchmark.py:
Paul Gauthier: 25
Paul Gauthier (aider): 29
fry69: 3
scripts/issues.py:
Paul Gauthier: 5
- Paul Gauthier (aider): 43
+ Paul Gauthier (aider): 45
scripts/update-docs.sh:
Paul Gauthier: 1
scripts/yank-old-versions.py:
Paul Gauthier (aider): 51
tests/basic/test_commands.py:
Paul Gauthier: 2
- Paul Gauthier (aider): 82
+ Paul Gauthier (aider): 98
tests/basic/test_io.py:
Paul Gauthier: 2
- Paul Gauthier (aider): 84
+ Paul Gauthier (aider): 97
tests/basic/test_main.py:
Paul Gauthier: 2
tests/basic/test_models.py:
@@ -2733,19 +2739,19 @@
tests/basic/test_sanity_check_repo.py:
fry69: 179
tests/basic/test_wholefile.py:
- Paul Gauthier: 9
+ Paul Gauthier: 16
grand_total:
- Jonathan Ellis: 1
+ Jonathan Ellis: 2
Mike Bailey: 25
- Paul Gauthier: 494
- Paul Gauthier (aider): 600
+ Paul Gauthier: 441
+ Paul Gauthier (aider): 658
Stein Martin Hustad: 26
- fry69: 196
+ fry69: 197
rti: 1
start_tag: v0.57.0
- total_lines: 1343
-- aider_percentage: 68.72
- aider_total: 123
+ total_lines: 1350
+- aider_percentage: 72.14
+ aider_total: 145
end_date: '2024-10-04'
end_tag: v0.59.0
file_counts:
@@ -2764,7 +2770,7 @@
Paul Gauthier: 1
aider/commands.py:
Paul Gauthier: 3
- Paul Gauthier (aider): 47
+ Paul Gauthier (aider): 49
aider/gui.py:
Paul Gauthier: 2
aider/main.py:
@@ -2787,7 +2793,7 @@
Paul Gauthier: 2
tests/basic/test_commands.py:
Paul Gauthier: 4
- Paul Gauthier (aider): 33
+ Paul Gauthier (aider): 53
tests/basic/test_models.py:
Paul Gauthier: 1
Paul Gauthier (aider): 18
@@ -2797,11 +2803,11 @@
Paul Gauthier: 1
grand_total:
Paul Gauthier: 56
- Paul Gauthier (aider): 123
+ Paul Gauthier (aider): 145
start_tag: v0.58.0
- total_lines: 179
-- aider_percentage: 57.2
- aider_total: 139
+ total_lines: 201
+- aider_percentage: 51.47
+ aider_total: 140
end_date: '2024-10-22'
end_tag: v0.60.0
file_counts:
@@ -2831,9 +2837,9 @@
Paul Gauthier: 20
Paul Gauthier (aider): 39
aider/models.py:
- Paul Gauthier: 9
+ Paul Gauthier: 18
Sven Grunewaldt: 10
- fry69: 5
+ fry69: 16
aider/resources/__init__.py:
Paul Gauthier: 3
aider/sendchat.py:
@@ -2841,22 +2847,22 @@
aider/website/docs/leaderboards/index.md:
Paul Gauthier: 1
tests/basic/test_editblock.py:
- Paul Gauthier: 15
+ Paul Gauthier: 23
tests/basic/test_main.py:
Paul Gauthier: 1
tests/help/test_help.py:
Paul Gauthier: 4
- Paul Gauthier (aider): 45
+ Paul Gauthier (aider): 46
grand_total:
Jonathan Ellis: 10
- Paul Gauthier: 77
- Paul Gauthier (aider): 139
+ Paul Gauthier: 94
+ Paul Gauthier (aider): 140
Sven Grunewaldt: 10
- fry69: 7
+ fry69: 18
start_tag: v0.59.0
- total_lines: 243
-- aider_percentage: 67.04
- aider_total: 781
+ total_lines: 272
+- aider_percentage: 65.31
+ aider_total: 804
end_date: '2024-11-01'
end_tag: v0.61.0
file_counts:
@@ -2866,31 +2872,31 @@
Paul Gauthier: 75
Paul Gauthier (aider): 89
aider/args.py:
- Paul Gauthier: 9
- Paul Gauthier (aider): 21
+ Paul Gauthier: 6
+ Paul Gauthier (aider): 28
aider/coders/base_coder.py:
- Paul Gauthier: 55
+ Paul Gauthier: 56
Paul Gauthier (aider): 43
aider/coders/editblock_coder.py:
Paul Gauthier: 14
aider/commands.py:
- Paul Gauthier: 12
- Paul Gauthier (aider): 88
+ Paul Gauthier: 14
+ Paul Gauthier (aider): 86
aider/io.py:
Paul Gauthier: 12
Paul Gauthier (aider): 32
aider/linter.py:
Paul Gauthier: 6
aider/main.py:
- Paul Gauthier: 46
- Paul Gauthier (aider): 12
+ Paul Gauthier: 48
+ Paul Gauthier (aider): 10
aider/models.py:
- Paul Gauthier: 22
- Paul Gauthier (aider): 54
+ Paul Gauthier: 40
+ Paul Gauthier (aider): 63
kAIto47802: 4
aider/repomap.py:
- Paul Gauthier: 8
- Paul Gauthier (aider): 54
+ Paul Gauthier: 12
+ Paul Gauthier (aider): 52
aider/sendchat.py:
Paul Gauthier: 23
Paul Gauthier (aider): 23
@@ -2909,11 +2915,12 @@
Paul Gauthier: 1
Paul Gauthier (aider): 99
tests/basic/test_commands.py:
- Konstantin L: 10
- Paul Gauthier: 80
- Paul Gauthier (aider): 197
+ Konstantin L: 16
+ Paul Gauthier: 91
+ Paul Gauthier (aider): 212
tests/basic/test_io.py:
- Paul Gauthier (aider): 6
+ Paul Gauthier: 2
+ Paul Gauthier (aider): 4
tests/basic/test_main.py:
Paul Gauthier (aider): 3
tests/basic/test_models.py:
@@ -2924,38 +2931,38 @@
tests/basic/test_sendchat.py:
Paul Gauthier (aider): 8
grand_total:
- Konstantin L: 10
- Paul Gauthier: 370
- Paul Gauthier (aider): 781
+ Konstantin L: 16
+ Paul Gauthier: 407
+ Paul Gauthier (aider): 804
kAIto47802: 4
start_tag: v0.60.0
- total_lines: 1165
-- aider_percentage: 77.78
- aider_total: 56
+ total_lines: 1231
+- aider_percentage: 80.49
+ aider_total: 66
end_date: '2024-11-04'
end_tag: v0.62.0
file_counts:
aider/__init__.py:
Paul Gauthier: 1
aider/args.py:
- Paul Gauthier (aider): 12
+ Paul Gauthier (aider): 14
aider/coders/editblock_coder.py:
Paul Gauthier: 6
aider/main.py:
Paul Gauthier (aider): 4
aider/models.py:
Paul Gauthier: 5
- Paul Gauthier (aider): 28
+ Paul Gauthier (aider): 36
aider/website/docs/leaderboards/index.md:
Paul Gauthier: 4
Paul Gauthier (aider): 12
grand_total:
Paul Gauthier: 16
- Paul Gauthier (aider): 56
+ Paul Gauthier (aider): 66
start_tag: v0.61.0
- total_lines: 72
-- aider_percentage: 55.21
- aider_total: 350
+ total_lines: 82
+- aider_percentage: 54.99
+ aider_total: 369
end_date: '2024-11-13'
end_tag: v0.63.0
file_counts:
@@ -2980,13 +2987,13 @@
Paul Gauthier: 9
Paul Gauthier (aider): 9
aider/models.py:
- Logan Attwood: 13
- Paul Gauthier: 37
- Paul Gauthier (aider): 4
+ Logan Attwood: 17
+ Paul Gauthier: 50
+ Paul Gauthier (aider): 7
aider/repo.py:
Paul Gauthier: 7
aider/repomap.py:
- Paul Gauthier: 3
+ Paul Gauthier: 4
aider/sendchat.py:
Paul Gauthier: 17
Paul Gauthier (aider): 4
@@ -2994,11 +3001,11 @@
Paul Gauthier: 1
scripts/issues.py:
Paul Gauthier: 4
- Paul Gauthier (aider): 179
+ Paul Gauthier (aider): 183
tests/basic/test_coder.py:
Paul Gauthier: 2
tests/basic/test_commands.py:
- Paul Gauthier (aider): 13
+ Paul Gauthier (aider): 16
tests/basic/test_editblock.py:
Paul Gauthier: 41
tests/basic/test_exceptions.py:
@@ -3010,17 +3017,17 @@
Paul Gauthier (aider): 2
tests/basic/test_sendchat.py:
Paul Gauthier: 8
- Paul Gauthier (aider): 46
+ Paul Gauthier (aider): 55
tests/scrape/test_scrape.py:
Paul Gauthier: 1
grand_total:
- Logan Attwood: 13
- Paul Gauthier: 271
- Paul Gauthier (aider): 350
+ Logan Attwood: 17
+ Paul Gauthier: 285
+ Paul Gauthier (aider): 369
start_tag: v0.62.0
- total_lines: 634
-- aider_percentage: 73.55
- aider_total: 865
+ total_lines: 671
+- aider_percentage: 72.99
+ aider_total: 873
end_date: '2024-11-21'
end_tag: v0.64.0
file_counts:
@@ -3031,7 +3038,7 @@
Paul Gauthier (aider): 21
aider/args.py:
Paul Gauthier: 2
- Paul Gauthier (aider): 9
+ Paul Gauthier (aider): 10
aider/coders/base_coder.py:
Paul Gauthier: 15
Paul Gauthier (aider): 3
@@ -3041,8 +3048,8 @@
Paul Gauthier: 5
Paul Gauthier (aider): 19
aider/editor.py:
- Chad Phillips: 135
- Paul Gauthier (aider): 11
+ Chad Phillips: 133
+ Paul Gauthier (aider): 13
aider/exceptions.py:
Paul Gauthier: 5
aider/help_pats.py:
@@ -3052,22 +3059,22 @@
Paul Gauthier (aider): 41
mw: 21
aider/main.py:
- Paul Gauthier: 18
- Paul Gauthier (aider): 35
+ Paul Gauthier: 21
+ Paul Gauthier (aider): 37
aider/models.py:
- Paul Gauthier: 31
- Paul Gauthier (aider): 34
+ Paul Gauthier: 41
+ Paul Gauthier (aider): 33
aider/repo.py:
Paul Gauthier (aider): 5
aider/urls.py:
Paul Gauthier: 1
aider/website/_includes/edit-leaderboard.js:
- Paul Gauthier (aider): 96
+ Paul Gauthier (aider): 97
aider/website/_includes/quant-chart.js:
Paul Gauthier: 3
- Paul Gauthier (aider): 65
+ Paul Gauthier (aider): 66
aider/website/_includes/refactor-leaderboard.js:
- Paul Gauthier (aider): 89
+ Paul Gauthier (aider): 90
aider/website/docs/leaderboards/index.md:
Paul Gauthier: 1
Paul Gauthier (aider): 10
@@ -3075,7 +3082,7 @@
Paul Gauthier (aider): 29
benchmark/over_time.py:
Paul Gauthier: 11
- Paul Gauthier (aider): 162
+ Paul Gauthier (aider): 159
scripts/blame.py:
Paul Gauthier: 1
Paul Gauthier (aider): 2
@@ -3083,7 +3090,7 @@
Paul Gauthier: 5
Paul Gauthier (aider): 12
scripts/versionbump.py:
- Paul Gauthier: 5
+ Paul Gauthier: 7
tests/basic/test_analytics.py:
Paul Gauthier: 12
Paul Gauthier (aider): 30
@@ -3092,20 +3099,20 @@
tests/basic/test_editor.py:
Paul Gauthier (aider): 129
tests/basic/test_main.py:
- Paul Gauthier (aider): 5
+ Paul Gauthier (aider): 8
tests/basic/test_models.py:
- Paul Gauthier: 4
- Paul Gauthier (aider): 54
+ Paul Gauthier: 3
+ Paul Gauthier (aider): 55
grand_total:
- Chad Phillips: 148
- Paul Gauthier: 141
- Paul Gauthier (aider): 865
+ Chad Phillips: 146
+ Paul Gauthier: 155
+ Paul Gauthier (aider): 873
caetanominuzzo: 1
mw: 21
start_tag: v0.63.0
- total_lines: 1176
-- aider_percentage: 81.19
- aider_total: 544
+ total_lines: 1196
+- aider_percentage: 81.11
+ aider_total: 584
end_date: '2024-11-26'
end_tag: v0.65.0
file_counts:
@@ -3115,7 +3122,7 @@
Paul Gauthier: 2
Paul Gauthier (aider): 5
aider/args.py:
- Paul Gauthier (aider): 10
+ Paul Gauthier (aider): 12
aider/coders/base_coder.py:
Paul Gauthier: 1
Paul Gauthier (aider): 31
@@ -3125,13 +3132,13 @@
Paul Gauthier: 3
Paul Gauthier (aider): 9
aider/main.py:
- Paul Gauthier: 13
+ Paul Gauthier: 15
Paul Gauthier (aider): 19
aider/models.py:
Paul Gauthier: 9
Paul Gauthier (aider): 17
aider/queries/tree-sitter-dart-tags.scm:
- malkoG: 83
+ malkoG: 91
aider/urls.py:
Paul Gauthier (aider): 1
aider/website/_includes/quant-chart.js:
@@ -3151,24 +3158,24 @@
Paul Gauthier: 8
Paul Gauthier (aider): 64
tests/basic/test_coder.py:
- Paul Gauthier (aider): 70
+ Paul Gauthier (aider): 81
tests/basic/test_editor.py:
- Paul Gauthier (aider): 12
+ Paul Gauthier (aider): 16
tests/basic/test_main.py:
Paul Gauthier: 1
- Paul Gauthier (aider): 19
+ Paul Gauthier (aider): 42
tests/basic/test_models.py:
Paul Gauthier (aider): 30
tests/basic/test_repomap.py:
Paul Gauthier (aider): 13
grand_total:
- Paul Gauthier: 43
- Paul Gauthier (aider): 544
- malkoG: 83
+ Paul Gauthier: 45
+ Paul Gauthier (aider): 584
+ malkoG: 91
start_tag: v0.64.0
- total_lines: 670
-- aider_percentage: 86.17
- aider_total: 841
+ total_lines: 720
+- aider_percentage: 86.35
+ aider_total: 854
end_date: '2024-12-01'
end_tag: v0.66.0
file_counts:
@@ -3195,7 +3202,7 @@
Philippe de Reynal: 6
aider/coders/base_coder.py:
Paul Gauthier: 15
- Paul Gauthier (aider): 39
+ Paul Gauthier (aider): 41
aider/commands.py:
Paul Gauthier: 5
Paul Gauthier (aider): 27
@@ -3223,12 +3230,12 @@
scripts/issues.py:
Paul Gauthier: 3
scripts/update-history.py:
- Paul Gauthier (aider): 58
+ Paul Gauthier (aider): 59
tests/basic/test_coder.py:
Paul Gauthier: 4
tests/basic/test_commands.py:
- Paul Gauthier: 10
- Paul Gauthier (aider): 64
+ Paul Gauthier: 12
+ Paul Gauthier (aider): 72
tests/basic/test_main.py:
Paul Gauthier (aider): 4
tests/basic/test_models.py:
@@ -3263,8 +3270,7 @@
Paul Gauthier: 1
Paul Gauthier (aider): 25
tests/fixtures/languages/ocaml/test.ml:
- Paul Gauthier: 2
- Paul Gauthier (aider): 17
+ Paul Gauthier (aider): 19
tests/fixtures/languages/php/test.php:
Paul Gauthier (aider): 5
tests/fixtures/languages/python/test.py:
@@ -3282,12 +3288,12 @@
Paul Gauthier (aider): 3
grand_total:
Paul Gauthier: 105
- Paul Gauthier (aider): 841
+ Paul Gauthier (aider): 854
Philippe de Reynal: 30
start_tag: v0.65.0
- total_lines: 976
-- aider_percentage: 67.86
- aider_total: 437
+ total_lines: 989
+- aider_percentage: 64.41
+ aider_total: 429
end_date: '2024-12-06'
end_tag: v0.67.0
file_counts:
@@ -3300,14 +3306,14 @@
Paul Gauthier (aider): 7
aider/args.py:
Paul Gauthier: 3
- Paul Gauthier (aider): 4
+ Paul Gauthier (aider): 5
aider/coders/base_coder.py:
Paul Gauthier: 15
aider/commands.py:
Paul Gauthier: 11
aider/io.py:
Paul Gauthier: 28
- Paul Gauthier (aider): 31
+ Paul Gauthier (aider): 32
aider/llm.py:
Paul Gauthier: 5
aider/main.py:
@@ -3321,10 +3327,10 @@
Paul Gauthier: 7
Paul Gauthier (aider): 22
aider/watch.py:
- Paul Gauthier: 51
- Paul Gauthier (aider): 221
+ Paul Gauthier: 52
+ Paul Gauthier (aider): 211
aider/website/_includes/qwq-chart.js:
- Paul Gauthier: 30
+ Paul Gauthier: 55
Paul Gauthier (aider): 47
aider/website/docs/leaderboards/index.md:
Paul Gauthier: 1
@@ -3340,7 +3346,7 @@
tests/basic/test_main.py:
Paul Gauthier: 1
tests/basic/test_models.py:
- Paul Gauthier: 4
+ Paul Gauthier: 8
Paul Gauthier (aider): 7
tests/basic/test_watch.py:
Paul Gauthier: 10
@@ -3349,12 +3355,12 @@
Paul Gauthier: 2
Paul Gauthier (aider): 1
grand_total:
- Paul Gauthier: 207
- Paul Gauthier (aider): 437
+ Paul Gauthier: 237
+ Paul Gauthier (aider): 429
start_tag: v0.66.0
- total_lines: 644
-- aider_percentage: 71.57
- aider_total: 428
+ total_lines: 666
+- aider_percentage: 65.11
+ aider_total: 418
end_date: '2024-12-10'
end_tag: v0.68.0
file_counts:
@@ -3365,21 +3371,21 @@
aider/analytics.py:
Paul Gauthier: 2
aider/args.py:
- Paul Gauthier: 30
- Paul Gauthier (aider): 15
+ Paul Gauthier: 62
+ Paul Gauthier (aider): 7
aider/coders/base_coder.py:
Paul Gauthier: 12
- Paul Gauthier (aider): 10
+ Paul Gauthier (aider): 12
aider/coders/editor_editblock_coder.py:
Paul Gauthier: 1
aider/coders/editor_whole_coder.py:
Paul Gauthier: 1
aider/commands.py:
- Paul Gauthier: 24
- Paul Gauthier (aider): 25
+ Paul Gauthier: 28
+ Paul Gauthier (aider): 21
aider/copypaste.py:
- Paul Gauthier: 4
- Paul Gauthier (aider): 68
+ Paul Gauthier: 5
+ Paul Gauthier (aider): 60
aider/exceptions.py:
Paul Gauthier: 9
aider/history.py:
@@ -3387,8 +3393,8 @@
aider/io.py:
Paul Gauthier: 13
aider/main.py:
- Paul Gauthier: 17
- Paul Gauthier (aider): 29
+ Paul Gauthier: 34
+ Paul Gauthier (aider): 26
aider/models.py:
Paul Gauthier: 15
aider/repo.py:
@@ -3419,11 +3425,11 @@
scripts/pip-compile.sh:
Paul Gauthier: 2
tests/basic/test_commands.py:
- Paul Gauthier (aider): 24
+ Paul Gauthier (aider): 28
tests/basic/test_history.py:
Paul Gauthier (aider): 3
tests/basic/test_main.py:
- Paul Gauthier (aider): 46
+ Paul Gauthier (aider): 53
tests/basic/test_repo.py:
Paul Gauthier (aider): 3
tests/basic/test_sendchat.py:
@@ -3432,12 +3438,12 @@
tests/basic/test_watch.py:
Paul Gauthier: 1
grand_total:
- Paul Gauthier: 170
- Paul Gauthier (aider): 428
+ Paul Gauthier: 224
+ Paul Gauthier (aider): 418
start_tag: v0.67.0
- total_lines: 598
-- aider_percentage: 67.87
- aider_total: 207
+ total_lines: 642
+- aider_percentage: 68.65
+ aider_total: 219
end_date: '2024-12-13'
end_tag: v0.69.0
file_counts:
@@ -3448,7 +3454,7 @@
aider/analytics.py:
Paul Gauthier: 2
aider/args.py:
- Mir Adnan ALI: 3
+ Mir Adnan ALI: 5
Paul Gauthier: 1
aider/coders/base_coder.py:
JeongJuhyeon: 1
@@ -3476,7 +3482,7 @@
scripts/blame.py:
Paul Gauthier (aider): 1
scripts/issues.py:
- Paul Gauthier (aider): 58
+ Paul Gauthier (aider): 70
scripts/update-history.py:
Paul Gauthier: 3
tests/basic/test_io.py:
@@ -3486,13 +3492,13 @@
Paul Gauthier (aider): 68
grand_total:
JeongJuhyeon: 1
- Mir Adnan ALI: 48
+ Mir Adnan ALI: 50
Paul Gauthier: 49
- Paul Gauthier (aider): 207
+ Paul Gauthier (aider): 219
start_tag: v0.68.0
- total_lines: 305
-- aider_percentage: 74.22
- aider_total: 875
+ total_lines: 319
+- aider_percentage: 73.19
+ aider_total: 871
end_date: '2024-12-26'
end_tag: v0.70.0
file_counts:
@@ -3500,13 +3506,13 @@
Paul Gauthier: 1
aider/analytics.py:
Paul Gauthier: 6
- Paul Gauthier (aider): 41
+ Paul Gauthier (aider): 42
aider/args.py:
Evan Johnson: 2
aider/coders/search_replace.py:
Paul Gauthier: 5
aider/commands.py:
- Paul Gauthier (aider): 41
+ Paul Gauthier (aider): 36
aider/help_pats.py:
Paul Gauthier: 3
aider/io.py:
@@ -3518,7 +3524,7 @@
apaz-cli: 3
mdk: 6
aider/models.py:
- Paul Gauthier: 29
+ Paul Gauthier: 38
aider/repo.py:
Paul Gauthier: 14
aider/utils.py:
@@ -3536,8 +3542,8 @@
Paul Gauthier: 8
Paul Gauthier (aider): 43
benchmark/benchmark.py:
- Paul Gauthier: 69
- Paul Gauthier (aider): 153
+ Paul Gauthier: 70
+ Paul Gauthier (aider): 152
benchmark/clone-exercism.sh:
Paul Gauthier: 2
Paul Gauthier (aider): 18
@@ -3552,8 +3558,8 @@
Paul Gauthier: 10
Paul Gauthier (aider): 3
benchmark/problem_stats.py:
- Paul Gauthier: 35
- Paul Gauthier (aider): 318
+ Paul Gauthier: 34
+ Paul Gauthier (aider): 319
benchmark/rsync.sh:
Paul Gauthier: 7
Paul Gauthier (aider): 26
@@ -3570,17 +3576,17 @@
tests/basic/test_main.py:
Paul Gauthier (aider): 7
tests/basic/test_sanity_check_repo.py:
- mdk: 28
+ mdk: 34
grand_total:
Evan Johnson: 2
- Paul Gauthier: 265
- Paul Gauthier (aider): 875
+ Paul Gauthier: 274
+ Paul Gauthier (aider): 871
apaz-cli: 3
- mdk: 34
+ mdk: 40
start_tag: v0.69.0
- total_lines: 1179
-- aider_percentage: 60.36
- aider_total: 236
+ total_lines: 1190
+- aider_percentage: 60.61
+ aider_total: 237
end_date: '2025-01-10'
end_tag: v0.71.0
file_counts:
@@ -3598,7 +3604,7 @@
Paul Gauthier: 3
Paul Gauthier (aider): 16
aider/linter.py:
- Aaron Weisberg: 5
+ Aaron Weisberg: 6
aider/main.py:
Paul Gauthier: 7
Paul Gauthier (aider): 13
@@ -3634,32 +3640,30 @@
Paul Gauthier (aider): 32
scripts/update-history.py:
Paul Gauthier (aider): 1
- tests/basic/test_commands.py:
- Paul Gauthier: 2
tests/basic/test_io.py:
- Paul Gauthier (aider): 6
+ Paul Gauthier (aider): 7
tests/basic/test_linter.py:
Aaron Weisberg: 2
tests/basic/test_models.py:
Paul Gauthier (aider): 25
grand_total:
- Aaron Weisberg: 9
+ Aaron Weisberg: 10
Josh Vera: 1
Krazer: 10
Nimesh Ghelani: 1
- Paul Gauthier: 104
- Paul Gauthier (aider): 236
+ Paul Gauthier: 102
+ Paul Gauthier (aider): 237
Paul Maunders: 12
apaz-cli: 18
start_tag: v0.70.0
total_lines: 391
-- aider_percentage: 48.76
- aider_total: 138
+- aider_percentage: 48.35
+ aider_total: 161
end_date: '2025-01-20'
end_tag: v0.72.0
file_counts:
.github/workflows/docker-build-test.yml:
- Paul Gauthier (aider): 38
+ Paul Gauthier (aider): 58
.github/workflows/pages.yml:
Paul Gauthier: 3
Paul Gauthier (aider): 1
@@ -3673,6 +3677,7 @@
Titusz Pan: 6
aider/coders/base_coder.py:
Paul Gauthier: 11
+ Paul Gauthier (aider): 2
aider/coders/single_wholefile_func_coder.py:
Paul Gauthier: 1
aider/coders/wholefile_func_coder.py:
@@ -3683,11 +3688,11 @@
Paul Gauthier: 7
aider/io.py:
Paul Gauthier (aider): 14
- Titusz Pan: 2
+ Titusz Pan: 6
aider/main.py:
Titusz Pan: 1
aider/models.py:
- Paul Gauthier: 16
+ Paul Gauthier: 39
aider/queries/tree-sitter-kotlin-tags.scm:
Paul Walker: 27
aider/repomap.py:
@@ -3711,31 +3716,30 @@
scripts/update-docs.sh:
Paul Gauthier: 2
tests/basic/test_io.py:
- Paul Gauthier (aider): 39
+ Paul Gauthier (aider): 40
tests/basic/test_repomap.py:
Paul Walker: 1
tests/fixtures/languages/kotlin/test.kt:
Paul Walker: 16
grand_total:
- Paul Gauthier: 92
- Paul Gauthier (aider): 138
+ Paul Gauthier: 115
+ Paul Gauthier (aider): 161
Paul Walker: 44
- Titusz Pan: 9
+ Titusz Pan: 13
start_tag: v0.71.0
- total_lines: 283
-- aider_percentage: 37.47
- aider_total: 284
+ total_lines: 333
+- aider_percentage: 33.7
+ aider_total: 307
end_date: '2025-01-31'
end_tag: v0.73.0
file_counts:
aider/__init__.py:
Paul Gauthier: 1
aider/args.py:
- Paul Gauthier: 3
- Paul Gauthier (aider): 2
+ Paul Gauthier: 5
aider/coders/base_coder.py:
- Paul Gauthier: 37
- Paul Gauthier (aider): 26
+ Paul Gauthier: 38
+ Paul Gauthier (aider): 29
aider/commands.py:
xqyz: 1
aider/io.py:
@@ -3745,14 +3749,14 @@
Paul Gauthier (aider): 15
aider/models.py:
Paul Gauthier: 8
- Paul Gauthier (aider): 33
+ Paul Gauthier (aider): 34
aider/resources/model-settings.yml:
- Paul Gauthier: 334
- kennyfrc: 11
- xqyz: 4
+ Paul Gauthier: 442
+ kennyfrc: 17
+ xqyz: 12
aider/sendchat.py:
- Mir Adnan ALI: 28
- Paul Gauthier: 11
+ Mir Adnan ALI: 26
+ Paul Gauthier: 13
Paul Gauthier (aider): 6
aider/urls.py:
Paul Gauthier: 1
@@ -3766,22 +3770,22 @@
benchmark/rsync.sh:
Paul Gauthier: 2
tests/basic/test_coder.py:
- Paul Gauthier: 10
- Paul Gauthier (aider): 39
+ Paul Gauthier: 15
+ Paul Gauthier (aider): 53
tests/basic/test_main.py:
- Paul Gauthier (aider): 62
+ Paul Gauthier (aider): 69
tests/basic/test_sendchat.py:
Paul Gauthier (aider): 77
grand_total:
- Mir Adnan ALI: 28
- Paul Gauthier: 430
- Paul Gauthier (aider): 284
- kennyfrc: 11
- xqyz: 5
+ Mir Adnan ALI: 26
+ Paul Gauthier: 548
+ Paul Gauthier (aider): 307
+ kennyfrc: 17
+ xqyz: 13
start_tag: v0.72.0
- total_lines: 758
-- aider_percentage: 76.07
- aider_total: 604
+ total_lines: 911
+- aider_percentage: 72.82
+ aider_total: 635
end_date: '2025-02-06'
end_tag: v0.74.0
file_counts:
@@ -3799,27 +3803,27 @@
aider/commands.py:
Paul Gauthier: 1
aider/exceptions.py:
- Paul Gauthier: 4
- Paul Gauthier (aider): 6
+ Paul Gauthier: 3
+ Paul Gauthier (aider): 7
aider/history.py:
Paul Gauthier (aider): 1
aider/io.py:
Paul Gauthier: 4
- Paul Gauthier (aider): 18
+ Paul Gauthier (aider): 20
aider/llm.py:
Paul Gauthier: 3
aider/main.py:
Paul Gauthier: 21
Paul Gauthier (aider): 25
aider/models.py:
- Paul Gauthier: 83
+ Paul Gauthier: 104
Paul Gauthier (aider): 77
aider/repo.py:
Paul Gauthier: 1
Paul Gauthier (aider): 2
"Viktor Sz\xE9pe": 3
aider/resources/model-settings.yml:
- Paul Gauthier: 11
+ Paul Gauthier: 24
aider/watch.py:
Paul Gauthier (aider): 45
benchmark/docker.sh:
@@ -3828,31 +3832,31 @@
Paul Gauthier: 5
Paul Gauthier (aider): 4
tests/basic/test_editblock.py:
- Paul Gauthier: 7
+ Paul Gauthier: 21
tests/basic/test_history.py:
Paul Gauthier (aider): 13
tests/basic/test_io.py:
- Paul Gauthier (aider): 46
+ Paul Gauthier (aider): 68
tests/basic/test_main.py:
Paul Gauthier: 8
Paul Gauthier (aider): 1
tests/basic/test_models.py:
- Paul Gauthier (aider): 297
+ Paul Gauthier (aider): 298
tests/basic/test_repo.py:
Paul Gauthier (aider): 11
tests/basic/test_sendchat.py:
Paul Gauthier (aider): 7
tests/basic/test_watch.py:
Paul Gauthier: 4
- Paul Gauthier (aider): 42
+ Paul Gauthier (aider): 47
grand_total:
- Paul Gauthier: 187
- Paul Gauthier (aider): 604
+ Paul Gauthier: 234
+ Paul Gauthier (aider): 635
"Viktor Sz\xE9pe": 3
start_tag: v0.73.0
- total_lines: 794
-- aider_percentage: 44.78
- aider_total: 163
+ total_lines: 872
+- aider_percentage: 43.8
+ aider_total: 166
end_date: '2025-02-24'
end_tag: v0.75.0
file_counts:
@@ -3874,7 +3878,7 @@
aider/linter.py:
Paul Gauthier: 1
aider/main.py:
- Paul Gauthier: 16
+ Paul Gauthier: 20
aider/models.py:
Paul Gauthier: 4
aider/queries/tree-sitter-language-pack/javascript-tags.scm:
@@ -3888,7 +3892,7 @@
Paul Gauthier: 43
Paul Gauthier (aider): 11
aider/resources/model-settings.yml:
- Paul Gauthier: 12
+ Paul Gauthier: 20
aider/special.py:
Lucas Shadler: 1
aider/website/docs/leaderboards/index.md:
@@ -3902,9 +3906,9 @@
scripts/blame.py:
Paul Gauthier (aider): 2
scripts/issues.py:
- Paul Gauthier (aider): 17
+ Paul Gauthier (aider): 19
tests/basic/test_coder.py:
- Paul Gauthier (aider): 18
+ Paul Gauthier (aider): 19
tests/basic/test_editor.py:
Antti Kaihola: 1
Paul Gauthier (aider): 41
@@ -3918,40 +3922,40 @@
Antti Kaihola: 1
FeepingCreature (aider): 6
Lucas Shadler: 1
- Paul Gauthier: 125
- Paul Gauthier (aider): 157
+ Paul Gauthier: 137
+ Paul Gauthier (aider): 160
Warren Krewenki: 74
start_tag: v0.74.0
- total_lines: 364
-- aider_percentage: 84.75
- aider_total: 1589
+ total_lines: 379
+- aider_percentage: 82.52
+ aider_total: 1667
end_date: '2025-03-10'
end_tag: v0.76.0
file_counts:
aider/__init__.py:
Paul Gauthier: 1
aider/args.py:
- Paul Gauthier: 2
+ Paul Gauthier: 5
Paul Gauthier (aider): 25
aider/args_formatter.py:
Paul Gauthier: 4
Paul Gauthier (aider): 3
aider/coders/base_coder.py:
- Paul Gauthier: 54
- Paul Gauthier (aider): 29
+ Paul Gauthier: 57
+ Paul Gauthier (aider): 30
aider/deprecated.py:
- Paul Gauthier (aider): 107
+ Paul Gauthier (aider): 125
aider/io.py:
Paul Gauthier: 7
- Paul Gauthier (aider): 127
+ Paul Gauthier (aider): 130
aider/main.py:
Akira Komamura: 2
Mattias: 1
Paul Gauthier: 4
Paul Gauthier (aider): 16
aider/models.py:
- Paul Gauthier: 6
- Paul Gauthier (aider): 68
+ Paul Gauthier: 11
+ Paul Gauthier (aider): 72
aider/queries/tree-sitter-language-pack/csharp-tags.scm:
Paul Gauthier: 14
Paul Gauthier (aider): 12
@@ -3960,13 +3964,13 @@
Paul Gauthier (aider): 68
aider/repo.py:
Akira Komamura: 1
- Paul Gauthier (aider): 4
+ Paul Gauthier (aider): 5
aider/repomap.py:
Paul Gauthier: 9
aider/resources/model-settings.yml:
- Paul Gauthier: 61
- Paul Gauthier (aider): 32
- gmoz22: 4
+ Paul Gauthier: 105
+ Paul Gauthier (aider): 51
+ gmoz22: 12
aider/website/_includes/leaderboard.js:
Paul Gauthier (aider): 48
aider/website/docs/leaderboards/index.md:
@@ -3980,7 +3984,7 @@
scripts/blame.py:
Paul Gauthier: 1
scripts/pip-compile.sh:
- Claudia Pellegrino: 10
+ Claudia Pellegrino: 12
Paul Gauthier: 6
Paul Gauthier (aider): 11
scripts/update-history.py:
@@ -3990,49 +3994,49 @@
Paul Gauthier (aider): 64
tests/basic/test_deprecated.py:
Paul Gauthier: 10
- Paul Gauthier (aider): 130
+ Paul Gauthier (aider): 125
tests/basic/test_io.py:
Paul Gauthier (aider): 54
tests/basic/test_main.py:
- Paul Gauthier: 1
- Paul Gauthier (aider): 93
+ Paul Gauthier: 2
+ Paul Gauthier (aider): 97
tests/basic/test_model_info_manager.py:
- Paul Gauthier (aider): 72
+ Paul Gauthier (aider): 80
tests/basic/test_models.py:
- Paul Gauthier: 27
- Paul Gauthier (aider): 34
+ Paul Gauthier: 31
+ Paul Gauthier (aider): 38
tests/basic/test_reasoning.py:
- Paul Gauthier: 36
- Paul Gauthier (aider): 525
+ Paul Gauthier: 33
+ Paul Gauthier (aider): 534
tests/basic/test_repomap.py:
Paul Gauthier: 2
tests/basic/test_ssl_verification.py:
- Paul Gauthier (aider): 65
+ Paul Gauthier (aider): 77
grand_total:
Akira Komamura: 3
- Claudia Pellegrino: 10
+ Claudia Pellegrino: 12
Mattias: 1
- Paul Gauthier: 268
- Paul Gauthier (aider): 1589
- gmoz22: 4
+ Paul Gauthier: 325
+ Paul Gauthier (aider): 1667
+ gmoz22: 12
start_tag: v0.75.0
- total_lines: 1875
-- aider_percentage: 71.93
- aider_total: 1399
+ total_lines: 2020
+- aider_percentage: 68.94
+ aider_total: 1447
end_date: '2025-03-13'
end_tag: v0.77.0
file_counts:
aider/__init__.py:
Paul Gauthier: 1
aider/args.py:
- Paul Gauthier (aider): 5
+ Paul Gauthier (aider): 7
aider/coders/architect_coder.py:
Paul Gauthier (aider): 2
aider/coders/base_coder.py:
Paul Gauthier (aider): 14
aider/commands.py:
Paul Gauthier: 4
- Paul Gauthier (aider): 71
+ Paul Gauthier (aider): 73
aider/deprecated.py:
Paul Gauthier: 2
aider/io.py:
@@ -4060,25 +4064,25 @@
Paul Gauthier: 9
Paul Gauthier (aider): 17
aider/queries/tree-sitter-language-pack/dart-tags.scm:
- Paul Gauthier: 42
+ Paul Gauthier: 65
Paul Gauthier (aider): 19
aider/queries/tree-sitter-language-pack/elisp-tags.scm:
- Paul Gauthier: 1
+ Paul Gauthier: 3
Paul Gauthier (aider): 2
aider/queries/tree-sitter-language-pack/elixir-tags.scm:
- Paul Gauthier: 10
+ Paul Gauthier: 35
Paul Gauthier (aider): 8
aider/queries/tree-sitter-language-pack/elm-tags.scm:
Paul Gauthier: 8
- Paul Gauthier (aider): 11
+ Paul Gauthier (aider): 6
aider/queries/tree-sitter-language-pack/gleam-tags.scm:
Paul Gauthier: 26
Paul Gauthier (aider): 15
aider/queries/tree-sitter-language-pack/go-tags.scm:
- Paul Gauthier: 14
- Paul Gauthier (aider): 14
+ Paul Gauthier: 28
+ Paul Gauthier (aider): 10
aider/queries/tree-sitter-language-pack/java-tags.scm:
- Paul Gauthier: 10
+ Paul Gauthier: 13
Paul Gauthier (aider): 7
aider/queries/tree-sitter-language-pack/lua-tags.scm:
Paul Gauthier: 25
@@ -4099,10 +4103,10 @@
Paul Gauthier: 10
Paul Gauthier (aider): 2
aider/queries/tree-sitter-language-pack/ruby-tags.scm:
- Paul Gauthier: 23
+ Paul Gauthier: 52
Paul Gauthier (aider): 12
aider/queries/tree-sitter-language-pack/rust-tags.scm:
- Paul Gauthier: 41
+ Paul Gauthier: 46
Paul Gauthier (aider): 14
aider/queries/tree-sitter-language-pack/solidity-tags.scm:
Paul Gauthier: 30
@@ -4114,7 +4118,7 @@
Paul Gauthier: 15
Paul Gauthier (aider): 5
aider/resources/model-settings.yml:
- Paul Gauthier: 9
+ Paul Gauthier: 12
aider/watch.py:
Yutaka Matsubara: 4
aider/website/docs/leaderboards/index.md:
@@ -4126,21 +4130,23 @@
scripts/tsl_pack_langs.py:
Paul Gauthier (aider): 145
scripts/versionbump.py:
+ Paul Gauthier: 1
Paul Gauthier (aider): 1
tests/basic/test_coder.py:
- Paul Gauthier (aider): 104
+ Paul Gauthier: 1
+ Paul Gauthier (aider): 109
tests/basic/test_commands.py:
Paul Gauthier: 2
- Paul Gauthier (aider): 190
+ Paul Gauthier (aider): 222
tests/basic/test_models.py:
- Paul Gauthier (aider): 44
+ Paul Gauthier (aider): 45
tests/basic/test_repomap.py:
Paul Gauthier: 1
- Paul Gauthier (aider): 125
+ Paul Gauthier (aider): 132
tests/fixtures/languages/arduino/test.ino:
Paul Gauthier (aider): 21
tests/fixtures/languages/c/test.c:
- Paul Gauthier (aider): 12
+ Paul Gauthier (aider): 15
tests/fixtures/languages/chatito/test.chatito:
Paul Gauthier (aider): 20
tests/fixtures/languages/commonlisp/test.lisp:
@@ -4150,7 +4156,7 @@
tests/fixtures/languages/dart/test.dart:
Paul Gauthier (aider): 21
tests/fixtures/languages/elm/test.elm:
- Paul Gauthier (aider): 16
+ Paul Gauthier (aider): 21
tests/fixtures/languages/gleam/test.gleam:
Paul Gauthier (aider): 10
tests/fixtures/languages/lua/test.lua:
@@ -4170,11 +4176,11 @@
tests/fixtures/languages/udev/test.rules:
Paul Gauthier (aider): 22
grand_total:
- Paul Gauthier: 542
- Paul Gauthier (aider): 1399
+ Paul Gauthier: 648
+ Paul Gauthier (aider): 1447
Yutaka Matsubara: 4
start_tag: v0.76.0
- total_lines: 1945
+ total_lines: 2099
- aider_percentage: 91.82
aider_total: 2682
end_date: '2025-03-21'
@@ -4500,3 +4506,391 @@
Paul Gauthier (aider): 1567
start_tag: v0.81.0
total_lines: 1706
+- aider_percentage: 66.89
+ aider_total: 1735
+ end_date: '2025-05-09'
+ end_tag: v0.83.0
+ file_counts:
+ .github/workflows/check_pypi_version.yml:
+ Paul Gauthier (aider): 1
+ .github/workflows/pre-commit.yml:
+ MDW: 48
+ .github/workflows/ubuntu-tests.yml:
+ Paul Gauthier (aider): 1
+ .github/workflows/windows-tests.yml:
+ Paul Gauthier (aider): 1
+ .github/workflows/windows_check_pypi_version.yml:
+ Paul Gauthier (aider): 1
+ aider/__init__.py:
+ Paul Gauthier: 1
+ aider/args.py:
+ Andrew Grigorev: 5
+ Andrew Grigorev (aider): 21
+ Paul Gauthier (aider): 38
+ aider/coders/__init__.py:
+ Paul Gauthier (aider): 2
+ aider/coders/base_coder.py:
+ Andrew Grigorev (aider): 2
+ Paul Gauthier: 60
+ Paul Gauthier (aider): 104
+ aider/coders/editblock_coder.py:
+ Paul Gauthier: 10
+ Paul Gauthier (aider): 7
+ zjy1412: 2
+ aider/coders/editblock_fenced_coder.py:
+ MDW: 1
+ aider/coders/help_coder.py:
+ MDW: 1
+ aider/coders/patch_coder.py:
+ Paul Gauthier (aider): 38
+ aider/coders/shell.py:
+ Paul Gauthier: 37
+ aider/coders/udiff_coder.py:
+ Paul Gauthier: 2
+ Paul Gauthier (aider): 9
+ aider/coders/udiff_simple.py:
+ Paul Gauthier (aider): 14
+ aider/commands.py:
+ Andrew Grigorev (aider): 10
+ Paul Gauthier: 7
+ Paul Gauthier (aider): 1
+ aider/gui.py:
+ Jon Keys: 2
+ aider/io.py:
+ Kay Gosho: 1
+ Paul Gauthier (aider): 5
+ aider/linter.py:
+ Paul Gauthier: 1
+ Titusz Pan: 1
+ aider/main.py:
+ Paul Gauthier (aider): 9
+ aider/mdstream.py:
+ Paul Gauthier (aider): 11
+ aider/models.py:
+ Paul Gauthier: 4
+ Paul Gauthier (aider): 66
+ Stefan Hladnik: 4
+ Stefan Hladnik (aider): 41
+ aider/queries/tree-sitter-language-pack/ocaml_interface-tags.scm:
+ Andrey Popp: 98
+ aider/queries/tree-sitter-languages/ocaml_interface-tags.scm:
+ Andrey Popp: 98
+ aider/repo.py:
+ Andrew Grigorev (aider): 136
+ Paul Gauthier: 6
+ Paul Gauthier (aider): 33
+ aider/repomap.py:
+ Paul Gauthier: 5
+ Paul Gauthier (aider): 6
+ aider/resources/model-settings.yml:
+ Paul Gauthier: 183
+ Paul Gauthier (aider): 175
+ cantalupo555: 1
+ aider/scrape.py:
+ Jon Keys: 12
+ aider/utils.py:
+ Paul Gauthier: 13
+ Paul Gauthier (aider): 131
+ Titusz Pan: 1
+ aider/waiting.py:
+ Paul Gauthier: 1
+ Paul Gauthier (aider): 54
+ aider/watch.py:
+ Paul Gauthier: 6
+ Paul Gauthier (aider): 7
+ aider/website/_includes/leaderboard_table.js:
+ Paul Gauthier: 2
+ Paul Gauthier (aider): 18
+ aider/website/docs/leaderboards/index.md:
+ Paul Gauthier: 1
+ Paul Gauthier (aider): 2
+ aider/website/index.html:
+ Paul Gauthier: 13
+ benchmark/benchmark.py:
+ Paul Gauthier: 3
+ Paul Gauthier (aider): 42
+ benchmark/docker.sh:
+ Paul Gauthier: 2
+ benchmark/refactor_tools.py:
+ MDW: 1
+ scripts/30k-image.py:
+ MDW: 1
+ scripts/clean_metadata.py:
+ Paul Gauthier (aider): 258
+ scripts/update-history.py:
+ Paul Gauthier: 2
+ Paul Gauthier (aider): 7
+ tests/basic/test_coder.py:
+ Paul Gauthier (aider): 3
+ tests/basic/test_commands.py:
+ Paul Gauthier: 2
+ Paul Gauthier (aider): 90
+ tests/basic/test_editblock.py:
+ Paul Gauthier: 10
+ zjy1412: 52
+ tests/basic/test_io.py:
+ Paul Gauthier (aider): 132
+ tests/basic/test_linter.py:
+ Paul Gauthier: 22
+ Titusz Pan: 10
+ tests/basic/test_repo.py:
+ Andrew Grigorev: 1
+ Andrew Grigorev (aider): 139
+ Paul Gauthier: 79
+ Paul Gauthier (aider): 6
+ tests/basic/test_repomap.py:
+ Andrey Popp: 7
+ tests/basic/test_watch.py:
+ MDW: 1
+ tests/fixtures/languages/ocaml_interface/test.mli:
+ Andrey Popp: 14
+ tests/scrape/test_playwright_disable.py:
+ Andrew Grigorev (aider): 111
+ Paul Gauthier: 25
+ Paul Gauthier (aider): 3
+ grand_total:
+ Andrew Grigorev: 6
+ Andrew Grigorev (aider): 419
+ Andrey Popp: 217
+ Jon Keys: 14
+ Kay Gosho: 1
+ MDW: 53
+ Paul Gauthier: 497
+ Paul Gauthier (aider): 1275
+ Stefan Hladnik: 4
+ Stefan Hladnik (aider): 41
+ Titusz Pan: 12
+ cantalupo555: 1
+ zjy1412: 54
+ start_tag: v0.82.0
+ total_lines: 2594
+- aider_percentage: 78.92
+ aider_total: 655
+ end_date: '2025-05-30'
+ end_tag: v0.84.0
+ file_counts:
+ aider/__init__.py:
+ Paul Gauthier: 1
+ aider/args.py:
+ Paul Gauthier (aider): 27
+ saviour: 2
+ aider/args_formatter.py:
+ Paul Gauthier: 1
+ aider/coders/base_coder.py:
+ Paul Gauthier: 4
+ Paul Gauthier (aider): 10
+ aider/commands.py:
+ Paul Gauthier (aider): 23
+ wangboxue: 1
+ aider/models.py:
+ Lih Chen: 15
+ Paul Gauthier: 16
+ Paul Gauthier (aider): 12
+ aider/onboarding.py:
+ Paul Gauthier: 2
+ aider/openrouter.py:
+ Paul Gauthier (aider): 120
+ aider/repo.py:
+ Paul Gauthier: 1
+ Paul Gauthier (aider): 10
+ aider/repomap.py:
+ Paul Gauthier (aider): 1
+ aider/resources/model-settings.yml:
+ Paul Gauthier: 71
+ Paul Gauthier (aider): 193
+ Trung Dinh: 11
+ aider/utils.py:
+ Paul Gauthier (aider): 1
+ aider/waiting.py:
+ Paul Gauthier: 2
+ Paul Gauthier (aider): 6
+ aider/website/docs/leaderboards/index.md:
+ Paul Gauthier: 1
+ aider/website/index.html:
+ Paul Gauthier: 43
+ scripts/update-history.py:
+ Paul Gauthier: 2
+ tests/basic/test_coder.py:
+ Paul Gauthier: 2
+ Paul Gauthier (aider): 144
+ tests/basic/test_main.py:
+ Paul Gauthier (aider): 28
+ tests/basic/test_models.py:
+ Paul Gauthier (aider): 2
+ tests/basic/test_onboarding.py:
+ Paul Gauthier (aider): 5
+ tests/basic/test_openrouter.py:
+ Paul Gauthier (aider): 73
+ grand_total:
+ Lih Chen: 15
+ Paul Gauthier: 146
+ Paul Gauthier (aider): 655
+ Trung Dinh: 11
+ saviour: 2
+ wangboxue: 1
+ start_tag: v0.83.0
+ total_lines: 830
+- aider_percentage: 22.79
+ aider_total: 139
+ end_date: '2025-06-27'
+ end_tag: v0.85.0
+ file_counts:
+ aider/__init__.py:
+ Paul Gauthier: 1
+ aider/analytics.py:
+ Paul Gauthier: 5
+ Vasil Markoukin (aider): 6
+ aider/args.py:
+ Kyosuke Takayama: 6
+ Paul Gauthier: 5
+ Paul Gauthier (aider): 2
+ Vasil Markoukin (aider): 9
+ omarcinkonis: 6
+ aider/coders/base_coder.py:
+ Kyosuke Takayama: 3
+ omarcinkonis: 3
+ aider/coders/editblock_coder.py:
+ Mathis Beer (aider): 1
+ aider/coders/search_replace.py:
+ Emmanuel Ferdman: 1
+ aider/commands.py:
+ Ali Ayas (claude-sonnet-4-20250514): 6
+ Matteo Landi: 16
+ Paul Gauthier: 4
+ omarcinkonis: 5
+ aider/history.py:
+ jayeshthk: 18
+ aider/io.py:
+ Paul Gauthier: 1
+ Paul Gauthier (aider): 14
+ Vamsi Talupula: 5
+ aider/main.py:
+ Kyosuke Takayama: 1
+ Makar Ivashko: 1
+ Paul Gauthier: 3
+ Vasil Markoukin (aider): 5
+ omarcinkonis: 1
+ aider/models.py:
+ Ali Ayas (claude-sonnet-4-20250514): 11
+ Nimesh Ghelani: 3
+ Paul Gauthier: 1
+ Sebastian Estrella: 11
+ Vincent Taverna: 32
+ aider/queries/tree-sitter-language-pack/clojure-tags.scm:
+ Garrett Hopper: 7
+ aider/queries/tree-sitter-language-pack/matlab-tags.scm:
+ Matthew Tofano: 4
+ aider/queries/tree-sitter-languages/matlab-tags.scm:
+ Matthew Tofano: 4
+ aider/repo.py:
+ Kyosuke Takayama: 3
+ Luke Reeves: 13
+ Paul Gauthier: 2
+ muravvv: 12
+ aider/repomap.py:
+ Garrett Hopper: 2
+ aider/resources/model-settings.yml:
+ Andrew Grigorev: 7
+ Leon Mergen: 20
+ Nimesh Ghelani: 15
+ Paul Gauthier: 1
+ Paul Gauthier (aider): 21
+ Trung Dinh: 8
+ Wietse Venema: 9
+ therealmarv: 14
+ aider/utils.py:
+ Paul Gauthier (aider): 7
+ aider/website/docs/leaderboards/index.md:
+ Paul Gauthier: 1
+ aider/website/index.html:
+ Paul Gauthier: 8
+ Paul Gauthier (aider): 1
+ benchmark/benchmark.py:
+ Paul Gauthier: 1
+ tests/basic/test_commands.py:
+ Matteo Landi: 22
+ tests/basic/test_history.py:
+ Paul Gauthier: 15
+ tests/basic/test_main.py:
+ Kyosuke Takayama: 10
+ Paul Gauthier: 3
+ Paul Gauthier (aider): 64
+ omarcinkonis: 41
+ tests/basic/test_repo.py:
+ Luke Reeves: 31
+ Paul Gauthier: 2
+ muravvv: 22
+ tests/basic/test_repomap.py:
+ Matthew Tofano: 3
+ Paul Gauthier (aider): 3
+ tests/fixtures/languages/clojure/test.clj:
+ Paul Gauthier (aider): 6
+ tests/fixtures/languages/matlab/test.m:
+ Matthew Tofano: 42
+ grand_total:
+ Ali Ayas (claude-sonnet-4-20250514): 17
+ Andrew Grigorev: 7
+ Emmanuel Ferdman: 1
+ Garrett Hopper: 9
+ Kyosuke Takayama: 23
+ Leon Mergen: 20
+ Luke Reeves: 44
+ Makar Ivashko: 1
+ Mathis Beer (aider): 1
+ Matteo Landi: 38
+ Matthew Tofano: 53
+ Nimesh Ghelani: 18
+ Paul Gauthier: 53
+ Paul Gauthier (aider): 118
+ Sebastian Estrella: 11
+ Trung Dinh: 8
+ Vamsi Talupula: 5
+ Vasil Markoukin (aider): 20
+ Vincent Taverna: 32
+ Wietse Venema: 9
+ jayeshthk: 18
+ muravvv: 34
+ omarcinkonis: 56
+ therealmarv: 14
+ start_tag: v0.84.0
+ total_lines: 610
+- aider_percentage: 87.75
+ aider_total: 222
+ end_date: '2025-08-09'
+ end_tag: v0.86.0
+ file_counts:
+ aider/__init__.py:
+ Paul Gauthier: 1
+ aider/analytics.py:
+ Paul Gauthier (aider): 1
+ aider/commands.py:
+ Paul Gauthier (aider): 7
+ Zexin Yuan: 1
+ aider/models.py:
+ Andrew Grigorev (aider): 3
+ Paul Gauthier: 3
+ Paul Gauthier (aider): 5
+ aider/resources/model-settings.yml:
+ Jack Harrington: 7
+ Paul Gauthier: 6
+ Paul Gauthier (aider): 199
+ Tamir Zahavi-Brunner: 7
+ aider/website/_includes/leaderboard_table.js:
+ Paul Gauthier: 1
+ aider/website/docs/leaderboards/index.md:
+ Paul Gauthier: 1
+ aider/website/index.html:
+ Paul Gauthier: 3
+ scripts/blame.py:
+ Paul Gauthier (aider): 7
+ scripts/update-history.py:
+ Paul Gauthier: 1
+ grand_total:
+ Andrew Grigorev (aider): 3
+ Jack Harrington: 7
+ Paul Gauthier: 16
+ Paul Gauthier (aider): 219
+ Tamir Zahavi-Brunner: 7
+ Zexin Yuan: 1
+ start_tag: v0.85.0
+ total_lines: 253
diff --git a/aider/website/_data/polyglot_leaderboard.yml b/aider/website/_data/polyglot_leaderboard.yml
index 92cac000a..1ddb905c4 100644
--- a/aider/website/_data/polyglot_leaderboard.yml
+++ b/aider/website/_data/polyglot_leaderboard.yml
@@ -1093,32 +1093,6 @@
seconds_per_case: 12.0
total_cost: 0.4281
-- dirname: 2025-04-16-21-20-55--o3-high-diff-temp0-exsys
- test_cases: 225
- model: o3 (high)
- edit_format: diff
- commit_hash: 24805ff-dirty
- pass_rate_1: 36.9
- pass_rate_2: 79.6
- pass_num_1: 83
- pass_num_2: 179
- percent_cases_well_formed: 95.1
- error_outputs: 11
- num_malformed_responses: 11
- num_with_malformed_responses: 11
- user_asks: 110
- lazy_comments: 0
- syntax_errors: 0
- indentation_errors: 0
- exhausted_context_windows: 0
- test_timeouts: 2
- total_tests: 225
- command: aider --model o3
- date: 2025-04-16
- versions: 0.82.1.dev
- seconds_per_case: 113.8
- total_cost: 111.0325
-
- dirname: 2025-04-16-22-01-58--o4-mini-high-diff-exsys
test_cases: 225
model: o4-mini (high)
@@ -1145,34 +1119,6 @@
seconds_per_case: 176.5
total_cost: 19.6399
-- dirname: 2025-04-17-01-20-35--o3-mini-high-diff-arch
- test_cases: 225
- model: o3 (high) + gpt-4.1
- edit_format: architect
- commit_hash: 80909e1-dirty
- editor_model: gpt-4.1
- editor_edit_format: editor-diff
- pass_rate_1: 36.0
- pass_rate_2: 82.7
- pass_num_1: 81
- pass_num_2: 186
- percent_cases_well_formed: 100.0
- error_outputs: 9
- num_malformed_responses: 0
- num_with_malformed_responses: 0
- user_asks: 166
- lazy_comments: 0
- syntax_errors: 0
- indentation_errors: 0
- exhausted_context_windows: 0
- test_timeouts: 0
- total_tests: 225
- command: aider --model o3 --architect
- date: 2025-04-17
- versions: 0.82.2.dev
- seconds_per_case: 110.0
- total_cost: 69.2921
-
- dirname: 2025-04-19-14-43-04--o4-mini-patch
test_cases: 225
model: openhands-lm-32b-v0.1
@@ -1279,30 +1225,632 @@
seconds_per_case: 372.2
total_cost: 0.7603
-- dirname: 2025-05-08-03-22-37--qwen3-235b-defaults
+- dirname: 2025-05-09-17-02-02--qwen3-235b-a22b.unthink_16k_diff
test_cases: 225
- model: Qwen3 235B A22B
+ model: Qwen3 235B A22B diff, no think, Alibaba API
edit_format: diff
- commit_hash: aaacee5-dirty
- pass_rate_1: 17.3
- pass_rate_2: 49.8
- pass_num_1: 39
- pass_num_2: 112
+ commit_hash: 91d7fbd-dirty
+ pass_rate_1: 28.9
+ pass_rate_2: 59.6
+ pass_num_1: 65
+ pass_num_2: 134
+ percent_cases_well_formed: 92.9
+ error_outputs: 22
+ num_malformed_responses: 22
+ num_with_malformed_responses: 16
+ user_asks: 111
+ lazy_comments: 0
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 0
+ prompt_tokens: 2816192
+ completion_tokens: 342062
+ test_timeouts: 1
+ total_tests: 225
+ command: aider --model openai/qwen3-235b-a22b
+ date: 2025-05-09
+ versions: 0.82.4.dev
+ seconds_per_case: 45.4
+ total_cost: 0.0000
+
+- dirname: 2025-05-24-21-17-54--sonnet4-diff-exuser
+ test_cases: 225
+ model: claude-sonnet-4-20250514 (no thinking)
+ edit_format: diff
+ commit_hash: ef3f8bb-dirty
+ pass_rate_1: 20.4
+ pass_rate_2: 56.4
+ pass_num_1: 46
+ pass_num_2: 127
+ percent_cases_well_formed: 98.2
+ error_outputs: 6
+ num_malformed_responses: 4
+ num_with_malformed_responses: 4
+ user_asks: 129
+ lazy_comments: 0
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 1
+ prompt_tokens: 3460663
+ completion_tokens: 433373
+ test_timeouts: 7
+ total_tests: 225
+ command: aider --model claude-sonnet-4-20250514
+ date: 2025-05-24
+ versions: 0.83.3.dev
+ seconds_per_case: 29.8
+ total_cost: 15.8155
+
+- dirname: 2025-05-24-22-10-36--sonnet4-diff-exuser-think32k
+ test_cases: 225
+ model: claude-sonnet-4-20250514 (32k thinking)
+ edit_format: diff
+ commit_hash: e3cb907
+ thinking_tokens: 32000
+ pass_rate_1: 25.8
+ pass_rate_2: 61.3
+ pass_num_1: 58
+ pass_num_2: 138
+ percent_cases_well_formed: 97.3
+ error_outputs: 10
+ num_malformed_responses: 10
+ num_with_malformed_responses: 6
+ user_asks: 111
+ lazy_comments: 0
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 0
+ prompt_tokens: 2863068
+ completion_tokens: 1271074
+ test_timeouts: 6
+ total_tests: 225
+ command: aider --model claude-sonnet-4-20250514
+ date: 2025-05-24
+ versions: 0.83.3.dev
+ seconds_per_case: 79.9
+ total_cost: 26.5755
+
+- dirname: 2025-05-25-19-57-20--opus4-diff-exuser
+ test_cases: 225
+ model: claude-opus-4-20250514 (no think)
+ edit_format: diff
+ commit_hash: 9ef3211
+ pass_rate_1: 32.9
+ pass_rate_2: 70.7
+ pass_num_1: 74
+ pass_num_2: 159
+ percent_cases_well_formed: 98.7
+ error_outputs: 3
+ num_malformed_responses: 3
+ num_with_malformed_responses: 3
+ user_asks: 105
+ lazy_comments: 0
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 0
+ prompt_tokens: 2671437
+ completion_tokens: 380717
+ test_timeouts: 3
+ total_tests: 225
+ command: aider --model claude-opus-4-20250514
+ date: 2025-05-25
+ versions: 0.83.3.dev
+ seconds_per_case: 42.5
+ total_cost: 68.6253
+
+- dirname: 2025-05-25-20-40-51--opus4-diff-exuser
+ test_cases: 225
+ model: claude-opus-4-20250514 (32k thinking)
+ edit_format: diff
+ commit_hash: 9ef3211
+ thinking_tokens: 32000
+ pass_rate_1: 37.3
+ pass_rate_2: 72.0
+ pass_num_1: 84
+ pass_num_2: 162
+ percent_cases_well_formed: 97.3
+ error_outputs: 10
+ num_malformed_responses: 6
+ num_with_malformed_responses: 6
+ user_asks: 97
+ lazy_comments: 0
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 0
+ prompt_tokens: 2567514
+ completion_tokens: 363142
+ test_timeouts: 4
+ total_tests: 225
+ command: aider --model claude-opus-4-20250514
+ date: 2025-05-25
+ versions: 0.83.3.dev
+ seconds_per_case: 44.1
+ total_cost: 65.7484
+
+- dirname: 2025-05-26-15-56-31--flash25-05-20-24k-think # dirname is misleading
+ test_cases: 225
+ model: gemini-2.5-flash-preview-05-20 (no think)
+ edit_format: diff
+ commit_hash: 214b811-dirty
+ thinking_tokens: 0 # <-- no thinking
+ pass_rate_1: 20.9
+ pass_rate_2: 44.0
+ pass_num_1: 47
+ pass_num_2: 99
+ percent_cases_well_formed: 93.8
+ error_outputs: 16
+ num_malformed_responses: 16
+ num_with_malformed_responses: 14
+ user_asks: 79
+ lazy_comments: 0
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 0
+ prompt_tokens: 5512458
+ completion_tokens: 514145
+ test_timeouts: 4
+ total_tests: 225
+ command: aider --model gemini/gemini-2.5-flash-preview-05-20
+ date: 2025-05-26
+ versions: 0.83.3.dev
+ seconds_per_case: 12.2
+ total_cost: 1.1354
+
+- dirname: 2025-05-25-22-58-44--flash25-05-20-24k-think
+ test_cases: 225
+ model: gemini-2.5-flash-preview-05-20 (24k think)
+ edit_format: diff
+ commit_hash: a8568c3-dirty
+ thinking_tokens: 24576
+ pass_rate_1: 26.2
+ pass_rate_2: 55.1
+ pass_num_1: 59
+ pass_num_2: 124
+ percent_cases_well_formed: 95.6
+ error_outputs: 15
+ num_malformed_responses: 15
+ num_with_malformed_responses: 10
+ user_asks: 101
+ lazy_comments: 0
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 0
+ prompt_tokens: 3666792
+ completion_tokens: 2703162
+ test_timeouts: 4
+ total_tests: 225
+ command: aider --model gemini/gemini-2.5-flash-preview-05-20
+ date: 2025-05-25
+ versions: 0.83.3.dev
+ seconds_per_case: 53.9
+ total_cost: 8.5625
+
+- dirname: 2025-06-06-18-38-56--gemini0605-diff-fenced
+ test_cases: 225
+ model: gemini-2.5-pro-preview-06-05 (default think)
+ edit_format: diff-fenced
+ commit_hash: 4c161f9-dirty
+ pass_rate_1: 44.9
+ pass_rate_2: 79.1
+ pass_num_1: 101
+ pass_num_2: 178
+ percent_cases_well_formed: 100.0
+ error_outputs: 4
+ num_malformed_responses: 0
+ num_with_malformed_responses: 0
+ user_asks: 105
+ lazy_comments: 0
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 4
+ prompt_tokens: 2751296
+ completion_tokens: 4142197
+ test_timeouts: 1
+ total_tests: 225
+ command: aider --model gemini/gemini-2.5-pro-preview-06-05
+ date: 2025-06-06
+ versions: 0.84.1.dev
+ seconds_per_case: 175.2
+ total_cost: 45.5961
+
+- dirname: 2025-06-06-16-36-21--gemini0605-32k-think-diff-fenced
+ test_cases: 225
+ model: gemini-2.5-pro-preview-06-05 (32k think)
+ edit_format: diff-fenced
+ commit_hash: f827f22
+ thinking_tokens: 32768
+ pass_rate_1: 46.2
+ pass_rate_2: 83.1
+ pass_num_1: 104
+ pass_num_2: 187
+ percent_cases_well_formed: 99.6
+ error_outputs: 1
+ num_malformed_responses: 1
+ num_with_malformed_responses: 1
+ user_asks: 112
+ lazy_comments: 0
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 0
+ prompt_tokens: 2719961
+ completion_tokens: 4648227
+ test_timeouts: 0
+ total_tests: 225
+ command: aider --model gemini/gemini-2.5-pro-preview-06-05 --thinking-tokens 32k
+ date: 2025-06-06
+ versions: 0.84.1.dev
+ seconds_per_case: 200.3
+ total_cost: 49.8822
+
+- dirname: 2025-06-06-16-47-07--r1-diff
+ test_cases: 224
+ model: DeepSeek R1 (0528)
+ edit_format: diff
+ commit_hash: 4c161f9-dirty
+ pass_rate_1: 34.4
+ pass_rate_2: 71.4
+ pass_num_1: 77
+ pass_num_2: 160
+ percent_cases_well_formed: 94.6
+ error_outputs: 28
+ num_malformed_responses: 15
+ num_with_malformed_responses: 12
+ user_asks: 105
+ lazy_comments: 0
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 0
+ prompt_tokens: 2644169
+ completion_tokens: 1842168
+ test_timeouts: 2
+ total_tests: 225
+ command: aider --model deepseek/deepseek-reasoner
+ date: 2025-06-06
+ versions: 0.84.1.dev
+ seconds_per_case: 716.6
+ total_cost: 4.8016
+
+- dirname: 2025-06-25-21-04-24--o3-price-reduction-high
+ test_cases: 225
+ model: o3 (high)
+ edit_format: diff
+ commit_hash: c48fea6
+ reasoning_effort: high
+ pass_rate_1: 40.0
+ pass_rate_2: 81.3
+ pass_num_1: 90
+ pass_num_2: 183
+ percent_cases_well_formed: 94.7
+ error_outputs: 25
+ num_malformed_responses: 23
+ num_with_malformed_responses: 12
+ user_asks: 116
+ lazy_comments: 0
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 1
+ prompt_tokens: 3148932
+ completion_tokens: 2047615
+ test_timeouts: 2
+ total_tests: 225
+ command: aider --model o3 --reasoning-effort high
+ date: 2025-06-25
+ versions: 0.84.1.dev
+ seconds_per_case: 197.3
+ total_cost: 21.2259
+
+- dirname: 2025-06-25-20-30-16--o3-price-reduction
+ test_cases: 225
+ model: o3
+ edit_format: diff
+ commit_hash: c48fea6
+ pass_rate_1: 40.9
+ pass_rate_2: 76.9
+ pass_num_1: 92
+ pass_num_2: 173
+ percent_cases_well_formed: 93.8
+ error_outputs: 22
+ num_malformed_responses: 22
+ num_with_malformed_responses: 14
+ user_asks: 108
+ lazy_comments: 2
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 0
+ prompt_tokens: 2893189
+ completion_tokens: 1154767
+ test_timeouts: 1
+ total_tests: 225
+ command: aider --model o3
+ date: 2025-06-25
+ versions: 0.84.1.dev
+ seconds_per_case: 101.7
+ total_cost: 13.7517
+
+- dirname: 2025-06-27-23-53-57--o3-mini-high-diff-arch
+ test_cases: 224
+ model: o3 (high) + gpt-4.1
+ edit_format: architect
+ commit_hash: 4f4f00f-dirty
+ editor_model: gpt-4.1
+ editor_edit_format: editor-diff
+ reasoning_effort: high
+ pass_rate_1: 34.8
+ pass_rate_2: 78.2
+ pass_num_1: 78
+ pass_num_2: 176
+ percent_cases_well_formed: 100.0
+ error_outputs: 18
+ num_malformed_responses: 0
+ num_with_malformed_responses: 0
+ user_asks: 172
+ lazy_comments: 0
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 1
+ prompt_tokens: 1306877
+ completion_tokens: 1327154
+ test_timeouts: 1
+ total_tests: 225
+ command: aider --model o3
+ date: 2025-06-27
+ versions: 0.85.1.dev
+ seconds_per_case: 121.8
+ total_cost: 17.5518
+
+- dirname: 2025-06-28-00-38-18--o3-pro-high
+ test_cases: 225
+ model: o3-pro (high)
+ edit_format: diff
+ commit_hash: 5318380
+ reasoning_effort: high
+ pass_rate_1: 43.6
+ pass_rate_2: 84.9
+ pass_num_1: 98
+ pass_num_2: 191
+ percent_cases_well_formed: 97.8
+ error_outputs: 20
+ num_malformed_responses: 8
+ num_with_malformed_responses: 5
+ user_asks: 100
+ lazy_comments: 0
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 0
+ prompt_tokens: 2372636
+ completion_tokens: 1235902
+ test_timeouts: 1
+ total_tests: 225
+ command: aider --model o3-pro
+ date: 2025-06-28
+ versions: 0.85.1.dev
+ seconds_per_case: 449.0
+ total_cost: 146.3249
+
+- dirname: 2025-07-11-19-37-40--xai-or-grok4-high
+ test_cases: 225
+ model: grok-4 (high)
+ edit_format: diff
+ commit_hash: f7870b6-dirty
+ reasoning_effort: high
+ pass_rate_1: 40.9
+ pass_rate_2: 79.6
+ pass_num_1: 92
+ pass_num_2: 179
+ percent_cases_well_formed: 97.3
+ error_outputs: 11
+ num_malformed_responses: 8
+ num_with_malformed_responses: 6
+ user_asks: 133
+ lazy_comments: 0
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 0
+ prompt_tokens: 2815347
+ completion_tokens: 3411480
+ test_timeouts: 0
+ total_tests: 225
+ command: aider --model openrouter/x-ai/grok-4
+ date: 2025-07-11
+ versions: 0.85.2.dev
+ seconds_per_case: 403.2
+ total_cost: 59.6182
+
+- dirname: 2025-07-17-17-41-54--kimi-k2-diff-or-pricing
+ test_cases: 225
+ model: Kimi K2
+ edit_format: diff
+ commit_hash: 915ebff-dirty
+ pass_rate_1: 20.4
+ pass_rate_2: 59.1
+ pass_num_1: 46
+ pass_num_2: 133
+ percent_cases_well_formed: 92.9
+ error_outputs: 19
+ num_malformed_responses: 19
+ num_with_malformed_responses: 16
+ user_asks: 61
+ lazy_comments: 0
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 0
+ prompt_tokens: 2355141
+ completion_tokens: 363846
+ test_timeouts: 4
+ total_tests: 225
+ command: aider --model openrouter/moonshotai/kimi-k2
+ date: 2025-07-17
+ versions: 0.85.3.dev
+ seconds_per_case: 67.6
+ total_cost: 1.2357
+
+- dirname: 2025-08-06-04-54-48--gpt-oss-120b-high-polyglot
+ test_cases: 225
+ model: gpt-oss-120b (high)
+ edit_format: diff
+ commit_hash: 1af0e59
+ pass_rate_1: 13.8
+ pass_rate_2: 41.8
+ pass_num_1: 31
+ pass_num_2: 94
+ percent_cases_well_formed: 79.1
+ error_outputs: 95
+ num_malformed_responses: 77
+ num_with_malformed_responses: 47
+ user_asks: 142
+ lazy_comments: 0
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 0
+ prompt_tokens: 3123768
+ completion_tokens: 856495
+ test_timeouts: 4
+ total_tests: 225
+ command: aider --model openrouter/openai/gpt-oss-120b --reasoning-effort high
+ date: 2025-08-06
+ versions: 0.85.3.dev
+ seconds_per_case: 35.5
+ total_cost: 0.7406
+
+- dirname: 2025-08-23-15-47-21--gpt-5-high
+ test_cases: 225
+ model: gpt-5 (high)
+ edit_format: diff
+ commit_hash: 32faf82
+ reasoning_effort: high
+ pass_rate_1: 52.0
+ pass_rate_2: 88.0
+ pass_num_1: 117
+ pass_num_2: 198
percent_cases_well_formed: 91.6
- error_outputs: 58
- num_malformed_responses: 29
+ error_outputs: 23
+ num_malformed_responses: 22
num_with_malformed_responses: 19
+ user_asks: 96
+ lazy_comments: 3
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 0
+ prompt_tokens: 2675561
+ completion_tokens: 2623429
+ test_timeouts: 3
+ total_tests: 225
+ command: aider --model openai/gpt-5
+ date: 2025-08-23
+ versions: 0.86.2.dev
+ seconds_per_case: 194.0
+ total_cost: 29.0829
+
+- dirname: 2025-08-25-13-23-27--gpt-5-medium
+ test_cases: 225
+ model: gpt-5 (medium)
+ edit_format: diff
+ commit_hash: 32faf82
+ reasoning_effort: medium
+ pass_rate_1: 49.8
+ pass_rate_2: 86.7
+ pass_num_1: 112
+ pass_num_2: 195
+ percent_cases_well_formed: 88.4
+ error_outputs: 40
+ num_malformed_responses: 40
+ num_with_malformed_responses: 26
user_asks: 102
lazy_comments: 0
syntax_errors: 0
indentation_errors: 0
exhausted_context_windows: 0
- prompt_tokens: 0
- completion_tokens: 0
+ prompt_tokens: 2827261
+ completion_tokens: 1468799
+ test_timeouts: 0
+ total_tests: 225
+ command: aider --model openai/gpt-5
+ date: 2025-08-25
+ versions: 0.86.2.dev
+ seconds_per_case: 118.7
+ total_cost: 17.6930
+
+- dirname: 2025-08-25-14-16-37--gpt-5-low
+ test_cases: 225
+ model: gpt-5 (low)
+ edit_format: diff
+ commit_hash: 32faf82
+ reasoning_effort: low
+ pass_rate_1: 43.1
+ pass_rate_2: 81.3
+ pass_num_1: 97
+ pass_num_2: 183
+ percent_cases_well_formed: 86.7
+ error_outputs: 46
+ num_malformed_responses: 46
+ num_with_malformed_responses: 30
+ user_asks: 113
+ lazy_comments: 1
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 0
+ prompt_tokens: 2534059
+ completion_tokens: 779568
test_timeouts: 1
total_tests: 225
- command: aider --model openrouter/qwen/qwen3-235b-a22b
- date: 2025-05-08
- versions: 0.82.4.dev
- seconds_per_case: 428.1
- total_cost: 1.8037
\ No newline at end of file
+ command: aider --model openai/gpt-5
+ date: 2025-08-25
+ versions: 0.86.2.dev
+ seconds_per_case: 62.4
+ total_cost: 10.3713
+
+- dirname: 2025-10-03-09-45-34--deepseek-v3.2-reasoner
+ test_cases: 225
+ model: DeepSeek-V3.2-Exp (Reasoner)
+ edit_format: diff
+ commit_hash: cbb5376
+ pass_rate_1: 39.6
+ pass_rate_2: 74.2
+ pass_num_1: 89
+ pass_num_2: 167
+ percent_cases_well_formed: 97.3
+ error_outputs: 8
+ num_malformed_responses: 6
+ num_with_malformed_responses: 6
+ user_asks: 67
+ lazy_comments: 0
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 1
+ prompt_tokens: 2191446
+ completion_tokens: 1645129
+ test_timeouts: 1
+ total_tests: 225
+ command: aider --model deepseek/deepseek-reasoner
+ date: 2025-10-03
+ versions: 0.86.2.dev
+ seconds_per_case: 291.2
+ total_cost: 1.3045
+
+- dirname: 2025-10-03-09-21-36--deepseek-v3.2-chat
+ test_cases: 225
+ model: DeepSeek-V3.2-Exp (Chat)
+ edit_format: diff
+ commit_hash: cbb5376
+ pass_rate_1: 38.7
+ pass_rate_2: 70.2
+ pass_num_1: 87
+ pass_num_2: 158
+ percent_cases_well_formed: 98.2
+ error_outputs: 6
+ num_malformed_responses: 4
+ num_with_malformed_responses: 4
+ user_asks: 60
+ lazy_comments: 0
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 1
+ prompt_tokens: 2266868
+ completion_tokens: 573477
+ test_timeouts: 4
+ total_tests: 225
+ command: aider --model deepseek/deepseek-chat
+ date: 2025-10-03
+ versions: 0.86.2.dev
+ seconds_per_case: 104.0
+ total_cost: 0.8756
diff --git a/aider/website/_data/qwen3_leaderboard.yml b/aider/website/_data/qwen3_leaderboard.yml
index 2e9eac1fc..68233c26f 100644
--- a/aider/website/_data/qwen3_leaderboard.yml
+++ b/aider/website/_data/qwen3_leaderboard.yml
@@ -213,3 +213,60 @@
versions: 0.82.4.dev
seconds_per_case: 635.2
total_cost: 0.0000
+
+
+- dirname: 2025-05-09-17-02-02--qwen3-235b-a22b.unthink_16k_diff
+ test_cases: 225
+ model: Qwen3 235B A22B diff, no think, via official Alibaba API
+ edit_format: diff
+ commit_hash: 91d7fbd-dirty
+ pass_rate_1: 28.9
+ pass_rate_2: 59.6
+ pass_num_1: 65
+ pass_num_2: 134
+ percent_cases_well_formed: 92.9
+ error_outputs: 22
+ num_malformed_responses: 22
+ num_with_malformed_responses: 16
+ user_asks: 111
+ lazy_comments: 0
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 0
+ prompt_tokens: 2816192
+ completion_tokens: 342062
+ test_timeouts: 1
+ total_tests: 225
+ command: aider --model openai/qwen3-235b-a22b
+ date: 2025-05-09
+ versions: 0.82.4.dev
+ seconds_per_case: 45.4
+ total_cost: 0.0000
+
+- dirname: 2025-05-09-23-01-22--qwen3-235b-a22b.unthink_16k_whole
+ test_cases: 225
+ model: Qwen3 235B A22B whole, no think, via official Alibaba API
+ edit_format: whole
+ commit_hash: 425fb6d
+ pass_rate_1: 26.7
+ pass_rate_2: 61.8
+ pass_num_1: 60
+ pass_num_2: 139
+ percent_cases_well_formed: 100.0
+ error_outputs: 0
+ num_malformed_responses: 0
+ num_with_malformed_responses: 0
+ user_asks: 175
+ lazy_comments: 0
+ syntax_errors: 0
+ indentation_errors: 0
+ exhausted_context_windows: 0
+ prompt_tokens: 2768173
+ completion_tokens: 384000
+ test_timeouts: 1
+ total_tests: 225
+ command: aider --model openai/qwen3-235b-a22b
+ date: 2025-05-09
+ versions: 0.82.4.dev
+ seconds_per_case: 50.8
+ total_cost: 0.0000
\ No newline at end of file
diff --git a/aider/website/_includes/footer_custom.html b/aider/website/_includes/footer_custom.html
new file mode 100644
index 000000000..e69de29bb
diff --git a/aider/website/_includes/head_custom.html b/aider/website/_includes/head_custom.html
index 20f888728..364a5e1f8 100644
--- a/aider/website/_includes/head_custom.html
+++ b/aider/website/_includes/head_custom.html
@@ -32,6 +32,11 @@
.side-bar {
background: linear-gradient(135deg, #ffffff 0%, rgba(20, 176, 20, 0.01) 25%, rgba(20, 176, 20, 0.04) 40%, rgba(220, 230, 255, 0.4) 60%, rgba(205, 218, 255, 0.4) 80%, #F5F6FA 100%);
}
+
+ @media (max-width: 50em) {
+ .ea-ad--sidebar { display: none; }
+ .ea-ad--mobile { display: block; }
+ }
diff --git a/aider/website/_includes/leaderboard_table.js b/aider/website/_includes/leaderboard_table.js
index 0dacbdbe7..039d6e121 100644
--- a/aider/website/_includes/leaderboard_table.js
+++ b/aider/website/_includes/leaderboard_table.js
@@ -1,7 +1,7 @@
document.addEventListener('DOMContentLoaded', function() {
let currentMode = 'view'; // 'view', 'select', 'detail'
let selectedRows = new Set(); // Store indices of selected rows
- const MAX_DISPLAY_COST_CAP = 75; // Define the constant here
+ const MAX_DISPLAY_COST_CAP = 200; // Define the constant here
const allMainRows = document.querySelectorAll('tr[id^="main-row-"]');
const allDetailsRows = document.querySelectorAll('tr[id^="details-"]');
diff --git a/aider/website/_posts/2024-05-13-models-over-time.md b/aider/website/_posts/2024-05-13-models-over-time.md
index 7b2bbdf3e..57cc08f89 100644
--- a/aider/website/_posts/2024-05-13-models-over-time.md
+++ b/aider/website/_posts/2024-05-13-models-over-time.md
@@ -15,12 +15,12 @@ nav_exclude: true
I recently wanted to draw a graph showing how LLM code editing skill has been
changing over time as new models have been released by OpenAI, Anthropic and others.
I have all the
-[data in a yaml file](https://github.com/Aider-AI/aider/blob/main/website/_data/edit_leaderboard.yml) that is used to render
+[data in a YAML file](https://github.com/Aider-AI/aider/blob/main/website/_data/edit_leaderboard.yml) that is used to render
[aider's LLM leaderboards](https://aider.chat/docs/leaderboards/).
Below is the aider chat transcript, which shows:
-- I launch aider with the yaml file, a file with other plots I've done recently (so GPT can crib the style) and an empty file called `over_time.py`.
+- I launch aider with the YAML file, a file with other plots I've done recently (so GPT can crib the style) and an empty file called `over_time.py`.
- Then I ask GPT to draw the scatterplot I want.
- I run the resulting script and share the error output with GPT so it can fix a small bug.
- I ask it to color the points for GPT-4 and GPT-3.5 family models differently, to better see trends within those model families.
@@ -28,7 +28,7 @@ Below is the aider chat transcript, which shows:
- I work through a series of other small style changes, like changing fonts and the graph border.
In the end I have the graph, but I also have the python code in my repo.
-So I can update this graph easily whenever I add new entries to the yaml data file.
+So I can update this graph easily whenever I add new entries to the YAML data file.
## Aider chat transcript
diff --git a/aider/website/_posts/2025-05-08-qwen3.md b/aider/website/_posts/2025-05-08-qwen3.md
index 474ee5852..80b580d1c 100644
--- a/aider/website/_posts/2025-05-08-qwen3.md
+++ b/aider/website/_posts/2025-05-08-qwen3.md
@@ -277,6 +277,31 @@ const LEADERBOARD_CUSTOM_TITLE = "Qwen3 results on the aider polyglot benchmark"
+## No think, via official Alibaba API
+
+These results were obtained running against `https://dashscope.aliyuncs.com/compatible-mode/v1`
+with no thinking.
+
+```bash
+export OPENAI_API_BASE=https://dashscope.aliyuncs.com/compatible-mode/v1
+export OPENAI_API_KEY=
+```
+
+```yaml
+- name: openai/qwen3-235b-a22b
+ use_temperature: 0.7
+ streaming: false
+ extra_params:
+ stream: false
+ max_tokens: 16384
+ top_p: 0.8
+ top_k: 20
+ temperature: 0.7
+ enable_thinking: false
+ extra_body:
+ enable_thinking: false
+```
+
## OpenRouter only TogetherAI, recommended /no_think settings
These results were obtained with the
diff --git a/aider/website/assets/sample-analytics.jsonl b/aider/website/assets/sample-analytics.jsonl
index db51c4c31..b4560686c 100644
--- a/aider/website/assets/sample-analytics.jsonl
+++ b/aider/website/assets/sample-analytics.jsonl
@@ -1,1000 +1,1000 @@
-{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743969}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743969}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743969}
-{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743969}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743969}
-{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743969}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743969}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743969}
-{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743969}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743969}
-{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743970}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743970}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743970}
-{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743970}
-{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743984}
-{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744009}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744009}
-{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-pro-exp-03-25", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 24331, "completion_tokens": 1664, "total_tokens": 25995, "cost": 0.30987000000000003, "total_cost": 0.7573300000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744032}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744069}
-{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-pro-exp-03-25", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "diff", "prompt_tokens": 27682, "completion_tokens": 1547, "total_tokens": 29229, "cost": 0.3387, "total_cost": 1.09603}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744090}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744094}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744095}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744095}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744095}
-{"event": "message_send_exception", "properties": {"exception": "'EditBlockCoder' object has no attribute '_stop_waiting_spinner'"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744108}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744159}
-{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-pro-exp-03-25", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "diff", "prompt_tokens": 28471, "completion_tokens": 1850, "total_tokens": 30321, "cost": 0.35871000000000003, "total_cost": 1.4547400000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744180}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744188}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744190}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744190}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744190}
-{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-pro-exp-03-25", "editor_model": "gpt-4.1", "edit_format": "diff", "prompt_tokens": 7494, "completion_tokens": 276, "total_tokens": 7770, "cost": 0.08598, "total_cost": 0.08598}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744195}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744195}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744208}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744210}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744210}
-{"event": "cli session", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-pro-exp-03-25", "editor_model": "gpt-4.1", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744210}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744256}
-{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744302}
-{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744304}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744421}
-{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-pro-exp-03-25", "editor_model": "gpt-4.1", "edit_format": "diff", "prompt_tokens": 8987, "completion_tokens": 7646, "total_tokens": 16633, "cost": 0.39571, "total_cost": 0.39571}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744517}
-{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744547}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744591}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744640}
-{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-pro-exp-03-25", "editor_model": "gpt-4.1", "edit_format": "diff", "prompt_tokens": 10351, "completion_tokens": 2858, "total_tokens": 13209, "cost": 0.21783000000000002, "total_cost": 0.61354}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746744693}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745011}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745011}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745011}
-{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745068}
-{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745068}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745076}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-pro-exp-03-25", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 7804, "completion_tokens": 185, "total_tokens": 7989, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745082}
-{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745086}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745197}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745197}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745197}
-{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745253}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745253}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745254}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745254}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-flash-preview-04-17", "weak_model": "gemini/gemini-2.5-pro-exp-03-25", "editor_model": "gemini/gemini-2.5-flash-preview-04-17", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745254}
-{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745257}
-{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745257}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745302}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745304}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745304}
-{"event": "cli session", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gpt-4.1", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745304}
-{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745308}
-{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745311}
-{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745329}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745329}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745367}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745367}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745367}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745367}
-{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745368}
-{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gpt-4.1", "edit_format": "ask", "prompt_tokens": 22843, "completion_tokens": 1684, "total_tokens": 24527, "cost": 0.29579, "total_cost": 0.29579}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745376}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745384}
-{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745444}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745444}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 6977, "completion_tokens": 1526, "total_tokens": 8503, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745473}
-{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745513}
-{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745513}
-{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gpt-4.1", "edit_format": "ask", "prompt_tokens": 23524, "completion_tokens": 4435, "total_tokens": 27959, "cost": 0.41264, "total_cost": 0.70843}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745514}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745539}
-{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gpt-4.1", "edit_format": "diff", "prompt_tokens": 27062, "completion_tokens": 4657, "total_tokens": 31719, "cost": 0.4569000000000001, "total_cost": 1.16533}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746745601}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746382}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746382}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746382}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746382}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 5471, "completion_tokens": 285, "total_tokens": 5756, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746417}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746417}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746432}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746432}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746432}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746432}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 7626, "completion_tokens": 3778, "total_tokens": 11404, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746468}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746468}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746594}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746594}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746594}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746594}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 38859, "completion_tokens": 263, "total_tokens": 39122, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746724}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746724}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746902}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746902}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746902}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746902}
-{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746906}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746919}
-{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746928}
-{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746928}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 8141, "completion_tokens": 527, "total_tokens": 8668, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746942}
-{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746970}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746982}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 8145, "completion_tokens": 2, "total_tokens": 8147, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746983}
-{"event": "command_model", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746995}
-{"event": "command_reasoning-effort", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746746997}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747003}
-{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 7199, "completion_tokens": 21, "total_tokens": 7220, "cost": 0.07283, "total_cost": 0.07283}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747008}
-{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747072}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747080}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747082}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747082}
-{"event": "cli session", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gpt-4.1", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747082}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747084}
-{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gpt-4.1", "edit_format": "diff", "prompt_tokens": 11919, "completion_tokens": 805, "total_tokens": 12724, "cost": 0.15139, "total_cost": 0.15139}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747100}
-{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747106}
-{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747108}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747109}
-{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gpt-4.1", "edit_format": "ask", "prompt_tokens": 9564, "completion_tokens": 21, "total_tokens": 9585, "cost": 0.09648, "total_cost": 0.24786999999999998}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747113}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747123}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747123}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747123}
-{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747127}
-{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747190}
-{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747190}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747194}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747196}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747196}
-{"event": "cli session", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gpt-4.1", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747196}
-{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747197}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747206}
-{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gpt-4.1", "edit_format": "ask", "prompt_tokens": 7646, "completion_tokens": 85, "total_tokens": 7731, "cost": 0.07986, "total_cost": 0.07986}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747210}
-{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747215}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747217}
-{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gpt-4.1", "edit_format": "ask", "prompt_tokens": 7642, "completion_tokens": 466, "total_tokens": 8108, "cost": 0.09506, "total_cost": 0.17492000000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747228}
-{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747234}
-{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747234}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747328}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747329}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747329}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747332}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747432}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747433}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747433}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747436}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747449}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747450}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747450}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747450}
-{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747451}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747481}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747490}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747491}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747491}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747494}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747526}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747527}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747527}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747527}
-{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747531}
-{"event": "command_tokens", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747534}
-{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747541}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747560}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 10472, "completion_tokens": 1189, "total_tokens": 11661, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747572}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 94725, "completion_tokens": 673, "total_tokens": 95398, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747633}
-{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746747648}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748758}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748759}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748759}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748772}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748773}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748773}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748784}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748785}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748785}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748803}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748803}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748803}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748819}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748820}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748820}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748824}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748824}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748824}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748828}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748828}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748828}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748846}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748846}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748846}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748889}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748889}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748889}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748898}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748898}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748898}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748901}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748902}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748902}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748908}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748909}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748909}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748912}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748912}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748912}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748920}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748921}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748921}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748951}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748951}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748951}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748955}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748959}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748959}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748959}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748963}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748965}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748966}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748966}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746748969}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749018}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749020}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749020}
-{"event": "cli session", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gpt-4.1", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749020}
-{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749045}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749151}
-{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749161}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749165}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749166}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749166}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749169}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749187}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749187}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749187}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749191}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749193}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749194}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749194}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749197}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749200}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749201}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749201}
-{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749204}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749204}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749208}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749208}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749208}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749211}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749216}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749216}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749216}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749216}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749217}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 8495, "completion_tokens": 17, "total_tokens": 8512, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749222}
-{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749225}
-{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749225}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749229}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749229}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749229}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749229}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 8507, "completion_tokens": 17, "total_tokens": 8524, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749235}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749235}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749253}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749253}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749253}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749253}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 10418, "completion_tokens": 21, "total_tokens": 10439, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749259}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749259}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749281}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749282}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749282}
-{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749287}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749297}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749297}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749297}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749297}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749367}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 6871, "completion_tokens": 316, "total_tokens": 7187, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749381}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749390}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749391}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749391}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749391}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 8628, "completion_tokens": 17, "total_tokens": 8645, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749396}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749396}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749404}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749405}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749405}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749405}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 8507, "completion_tokens": 17, "total_tokens": 8524, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749410}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749410}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749440}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749440}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749440}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749440}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749449}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749450}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749450}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749450}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 8490, "completion_tokens": 17, "total_tokens": 8507, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749455}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749455}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749465}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749466}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749466}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749466}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749474}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749480}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749480}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749480}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749480}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 9334, "completion_tokens": 211, "total_tokens": 9545, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749528}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749528}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749544}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749544}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749544}
-{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749548}
-{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749609}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749804}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749804}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749804}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749804}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749810}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 7706, "completion_tokens": 335, "total_tokens": 8041, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746749817}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746750812}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746750814}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746750814}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746750814}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746750830}
-{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746750835}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 7829, "completion_tokens": 1580, "total_tokens": 9409, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746750925}
-{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746750936}
-{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746750951}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751276}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751276}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751276}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751276}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751303}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751304}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751305}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751305}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751305}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 9360, "completion_tokens": 161, "total_tokens": 9521, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751364}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751398}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751398}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751398}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751399}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 9265, "completion_tokens": 238, "total_tokens": 9503, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751448}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751462}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751463}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751463}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751463}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 9307, "completion_tokens": 115, "total_tokens": 9422, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751503}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751512}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751512}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751512}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751512}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751523}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751524}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751525}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751525}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751525}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 9339, "completion_tokens": 189, "total_tokens": 9528, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751577}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751652}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751652}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751652}
-{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751661}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751782}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751782}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751782}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751782}
-{"event": "command_help", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751789}
-{"event": "interactive help", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751789}
-{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751814}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751872}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "help", "prompt_tokens": 16994, "completion_tokens": 241, "total_tokens": 17235, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751881}
-{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751885}
-{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751885}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751892}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751893}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751893}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751893}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 9391, "completion_tokens": 329, "total_tokens": 9720, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751949}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746751949}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746757491}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746757491}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746757491}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746757492}
-{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746757492}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746757497}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 8137, "completion_tokens": 540, "total_tokens": 8677, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746757521}
-{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746757582}
-{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746757582}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746757599}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746757600}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746757600}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746757600}
-{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746757603}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746757626}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 7987, "completion_tokens": 400, "total_tokens": 8387, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746757703}
-{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746758816}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746758822}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746758823}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746758823}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746758823}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 9336, "completion_tokens": 219, "total_tokens": 9555, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746758868}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746758914}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746758915}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746758915}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746758915}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 9337, "completion_tokens": 301, "total_tokens": 9638, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746758940}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746758940}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746758952}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746758952}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746758952}
-{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746758959}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746759050}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746759051}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746759051}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746759051}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746759060}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 6990, "completion_tokens": 577, "total_tokens": 7567, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746759125}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746759154}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746759155}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746759155}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746759155}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 9336, "completion_tokens": 117, "total_tokens": 9453, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746759214}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746759214}
-{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746795628}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746795628}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 7628, "completion_tokens": 123, "total_tokens": 7751, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746795637}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746795698}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 8182, "completion_tokens": 309, "total_tokens": 8491, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746795705}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746795754}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746795755}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746795755}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-05-06", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-preview-05-06", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746795755}
-{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746795756}
-{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746795756}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796457}
-{"event": "model warning", "properties": {"main_model": "google/REDACTED", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "google/REDACTED"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796459}
-{"event": "exit", "properties": {"reason": "Keyboard interrupt during model warnings"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796467}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796482}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796485}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796485}
-{"event": "cli session", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "openrouter/REDACTED", "edit_format": "whole"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796485}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796486}
-{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 8735, "completion_tokens": 10, "total_tokens": 8745, "cost": 0.01101875, "total_cost": 0.01101875}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796490}
-{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796491}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796529}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796530}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796530}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796530}
-{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796536}
-{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796540}
-{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796589}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796617}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 26887, "completion_tokens": 185, "total_tokens": 27072, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796623}
-{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796634}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796655}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 27130, "completion_tokens": 528, "total_tokens": 27658, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796666}
-{"event": "command_reset", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796846}
-{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796848}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796859}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 14018, "completion_tokens": 113, "total_tokens": 14131, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746796864}
-{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798309}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798501}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798502}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798502}
-{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798506}
-{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798522}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798528}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798528}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798528}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798528}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 9316, "completion_tokens": 152, "total_tokens": 9468, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798578}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798578}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798607}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798607}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798607}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798611}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798618}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798619}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798619}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798619}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798635}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 7630, "completion_tokens": 132, "total_tokens": 7762, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798640}
-{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798648}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798651}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798651}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798651}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798651}
-{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798652}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798655}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798655}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798655}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798659}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798672}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798673}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798673}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798676}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798724}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798724}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798724}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798728}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798742}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798742}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798742}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798742}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798757}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798806}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798806}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798806}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798806}
-{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798809}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798819}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 9628, "completion_tokens": 60, "total_tokens": 9688, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798824}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798826}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 15462, "completion_tokens": 392, "total_tokens": 15854, "cost": 0.0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798833}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 8163, "completion_tokens": 778, "total_tokens": 8941, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798847}
-{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798856}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798865}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798865}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798865}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798869}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798877}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798877}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798877}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798880}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798886}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798887}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798887}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798890}
-{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798929}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798929}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 8014, "completion_tokens": 157, "total_tokens": 8171, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798936}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798958}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798990}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798990}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798990}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798994}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798997}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798998}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746798998}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799001}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799005}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799005}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799005}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799009}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 8952, "completion_tokens": 611, "total_tokens": 9563, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799035}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799044}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 10212, "completion_tokens": 251, "total_tokens": 10463, "cost": 0.0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799050}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799051}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799051}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799051}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799055}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799058}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799058}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799058}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799061}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799071}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799072}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799072}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799074}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799084}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799085}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799085}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799089}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799137}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799137}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799137}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799141}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799173}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799174}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799174}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799177}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799196}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799196}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799196}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799207}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799207}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799207}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799216}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799223}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799224}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799224}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799236}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799295}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799296}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799296}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799312}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799313}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799313}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799326}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799329}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799330}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799330}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799358}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799358}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799358}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799362}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799371}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799372}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799372}
-{"event": "exit", "properties": {"reason": "Showed repo map"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799375}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799385}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799385}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799385}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799385}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 9371, "completion_tokens": 166, "total_tokens": 9537, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746799449}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803120}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803121}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803121}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803121}
-{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803139}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 9346, "completion_tokens": 233, "total_tokens": 9579, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803166}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803201}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803201}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803201}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803201}
-{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803204}
-{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803226}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803226}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 23451, "completion_tokens": 1189, "total_tokens": 24640, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803290}
-{"event": "command_drop", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803399}
-{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803409}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803428}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 5344, "completion_tokens": 235, "total_tokens": 5579, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803433}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803437}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803440}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803440}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803440}
-{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gpt-4.1", "edit_format": "diff", "prompt_tokens": 47265, "completion_tokens": 1360, "total_tokens": 48625, "cost": 0.52705, "total_cost": 0.52705}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803472}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803472}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803523}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 5700, "completion_tokens": 275, "total_tokens": 5975, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803529}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803631}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 5985, "completion_tokens": 234, "total_tokens": 6219, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803637}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803643}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803646}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803646}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803646}
-{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gpt-4.1", "edit_format": "diff", "prompt_tokens": 47281, "completion_tokens": 1782, "total_tokens": 49063, "cost": 0.5440900000000001, "total_cost": 0.5440900000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803690}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803690}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803718}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803718}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803718}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803718}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 44733, "completion_tokens": 365, "total_tokens": 45098, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803787}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803787}
-{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803791}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803791}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 6662, "completion_tokens": 261, "total_tokens": 6923, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746803800}
-{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746804067}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746804086}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746804086}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746804086}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746804086}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746804098}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 6018, "completion_tokens": 517, "total_tokens": 6535, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746804107}
-{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746804368}
-{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746804368}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746804370}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746804370}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746804370}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746804370}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 32147, "completion_tokens": 247, "total_tokens": 32394, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746804504}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746804504}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805231}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805234}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805234}
-{"event": "cli session", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gpt-4.1", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805234}
-{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805237}
-{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805245}
-{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805245}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805248}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805250}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805250}
-{"event": "cli session", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gpt-4.1", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805250}
-{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805252}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805351}
-{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gpt-4.1", "edit_format": "ask", "prompt_tokens": 7724, "completion_tokens": 21, "total_tokens": 7745, "cost": 0.07808, "total_cost": 0.07808}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805358}
-{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805362}
-{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805362}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805367}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805370}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805370}
-{"event": "cli session", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gpt-4.1", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805370}
-{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805371}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805394}
-{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gpt-4.1", "edit_format": "ask", "prompt_tokens": 7749, "completion_tokens": 21, "total_tokens": 7770, "cost": 0.07833, "total_cost": 0.07833}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805398}
-{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805402}
-{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805402}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805407}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805409}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805409}
-{"event": "cli session", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gpt-4.1", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805409}
-{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805410}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805414}
-{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gpt-4.1", "edit_format": "ask", "prompt_tokens": 7735, "completion_tokens": 85, "total_tokens": 7820, "cost": 0.08075, "total_cost": 0.08075}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805421}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805822}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805822}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805822}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805822}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805895}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 8284, "completion_tokens": 277, "total_tokens": 8561, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805902}
-{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805909}
-{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746805909}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806175}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806176}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806176}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806176}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806181}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 4530, "completion_tokens": 172, "total_tokens": 4702, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806186}
-{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806199}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806199}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 4468, "completion_tokens": 415, "total_tokens": 4883, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806221}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806245}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 10674, "completion_tokens": 489, "total_tokens": 11163, "cost": 0.0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806259}
-{"event": "command_drop", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806310}
-{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806311}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806321}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 5866, "completion_tokens": 333, "total_tokens": 6199, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806328}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806333}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806333}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806333}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806336}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806342}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 8939, "completion_tokens": 469, "total_tokens": 9408, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806353}
-{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806360}
-{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806382}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806577}
-{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806581}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806581}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806581}
-{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806581}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806581}
-{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806582}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806582}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806582}
-{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806582}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806582}
-{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806582}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806582}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806582}
-{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806582}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806582}
-{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806583}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806583}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806583}
-{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806583}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806583}
-{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806583}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806583}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806583}
-{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806583}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806583}
-{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806584}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806584}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806584}
-{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806584}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806584}
-{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806584}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806584}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806584}
-{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806584}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806584}
-{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806585}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806585}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806585}
-{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806585}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806585}
-{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806585}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806585}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806585}
-{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806585}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806585}
-{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806586}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806586}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806586}
-{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806586}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806586}
-{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806586}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806586}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806586}
-{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806586}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806586}
-{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806587}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806587}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806587}
-{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806587}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806587}
-{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806587}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806587}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806587}
-{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806587}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806588}
-{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806588}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806588}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806588}
-{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806588}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806588}
-{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806588}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806588}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806588}
-{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806588}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806589}
-{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806589}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806589}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806589}
-{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806589}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806680}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806681}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806681}
-{"event": "exit", "properties": {"reason": "Exit flag set"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806681}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806681}
-{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806681}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806681}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806681}
-{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806681}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806797}
-{"event": "gui session", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806805}
-{"event": "exit", "properties": {"reason": "GUI session ended"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746806805}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746807045}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746807045}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746807045}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746807045}
-{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746807048}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746807269}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746807269}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746807269}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746807269}
-{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746807285}
-{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746807297}
-{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746807308}
-{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746807318}
-{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746807321}
-{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746807329}
-{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746807363}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746807363}
-{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746807398}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746807398}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 23026, "completion_tokens": 502, "total_tokens": 23528, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746807420}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746807470}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 23799, "completion_tokens": 166, "total_tokens": 23965, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746807477}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746809445}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746809445}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746809445}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746809445}
-{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746809475}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746809482}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746809482}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746809482}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746809482}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746809497}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 8097, "completion_tokens": 165, "total_tokens": 8262, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746809502}
-{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746809516}
-{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746809724}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746809985}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746809986}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746809986}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746809986}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746809996}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746809997}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746809997}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746809997}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810015}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810207}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810207}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810207}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810207}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810226}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810226}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810226}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810227}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810240}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 21143, "completion_tokens": 203, "total_tokens": 21346, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810247}
-{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810275}
-{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810275}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810280}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810281}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810281}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810281}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810324}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810324}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810324}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810325}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810335}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 22156, "completion_tokens": 681, "total_tokens": 22837, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810354}
-{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810368}
-{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810368}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810372}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810372}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810372}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810373}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810382}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810383}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810384}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810384}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810384}
-{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810386}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810390}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810391}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810391}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810391}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810396}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810436}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810437}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810437}
-{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810441}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810453}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810454}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810454}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810454}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810503}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810513}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810513}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810513}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810513}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 8627, "completion_tokens": 44, "total_tokens": 8671, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810519}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810519}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810525}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810525}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810525}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810525}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 8428, "completion_tokens": 48, "total_tokens": 8476, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810532}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810532}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810538}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810539}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810539}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810539}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746810545}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811483}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811483}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811483}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811483}
-{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811485}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811519}
-{"event": "repo", "properties": {"num_files": 614}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811520}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811520}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811520}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811526}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811526}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811526}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811526}
-{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811531}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811540}
-{"event": "repo", "properties": {"num_files": 614}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811540}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811540}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811540}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811542}
-{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 8329, "completion_tokens": 48, "total_tokens": 8377, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811547}
-{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811552}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811566}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811567}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811567}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-flash-preview-04-17", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-flash-preview-04-17", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811567}
-{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811569}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811575}
-{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811575}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811575}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-flash-preview-04-17", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-flash-preview-04-17", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811575}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811595}
-{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811608}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811613}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811614}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811614}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-flash-preview-04-17", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-flash-preview-04-17", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811614}
-{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811615}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811618}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811618}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811618}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811618}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811620}
-{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811628}
-{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811628}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811652}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811653}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811653}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811653}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811654}
-{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811658}
-{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811662}
-{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811662}
-{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811703}
-{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811703}
-{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811703}
-{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811703}
-{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746811705}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754596422}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754596423}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754596423}
+{"event": "cli session", "properties": {"main_model": "None", "weak_model": "gemini/gemini-2.5-flash", "editor_model": "None", "edit_format": "whole"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754596423}
+{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754596535}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754596591}
+{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754596608}
+{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754596613}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754596675}
+{"event": "message_send", "properties": {"main_model": "None", "weak_model": "gemini/gemini-2.5-flash", "editor_model": "None", "edit_format": "diff", "prompt_tokens": 17302, "completion_tokens": 87, "total_tokens": 17389, "cost": 0.0224975, "total_cost": 0.0224975}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754596723}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754596986}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754596986}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754596986}
+{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754596990}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597081}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597081}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597081}
+{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597084}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597461}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597461}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597461}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597461}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597461}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597461}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597461}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597461}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597461}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597461}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597461}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597462}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597462}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597462}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597462}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597462}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597462}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597462}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597462}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597462}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597462}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597462}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597462}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597462}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597462}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597462}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597462}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597462}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597462}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597462}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597462}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597463}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597463}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597463}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597463}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597463}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597463}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597463}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597463}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597463}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597463}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597463}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597463}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597463}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597463}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597463}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597463}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597463}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597463}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597463}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597463}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597464}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597464}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597464}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597464}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597464}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597464}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597464}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597464}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597464}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597464}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597464}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597464}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597464}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597464}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597464}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597465}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597465}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597465}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597465}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597465}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597465}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597465}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597465}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597465}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597465}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597465}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597465}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597465}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597465}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597497}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597498}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597498}
+{"event": "exit", "properties": {"reason": "Exit flag set"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597498}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597498}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597498}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597498}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597498}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597498}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597511}
+{"event": "gui session", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597511}
+{"event": "exit", "properties": {"reason": "GUI session ended"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754597511}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600030}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600031}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600031}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600031}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600031}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600031}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600031}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600031}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600031}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600031}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600031}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600031}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600031}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600031}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600031}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600031}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600031}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600031}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600031}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600031}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600031}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600032}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600032}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600032}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600032}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600032}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600032}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600032}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600032}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600032}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600032}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600032}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600032}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600032}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600032}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600032}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600032}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600032}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600032}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600032}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600032}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600033}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600033}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600033}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600033}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600033}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600033}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600033}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600033}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600033}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600033}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600033}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600033}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600033}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600033}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600033}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600034}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600034}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600034}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600034}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600034}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600034}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600034}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600034}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600034}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600034}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600034}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600034}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600034}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600034}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600034}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600034}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600034}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600034}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600034}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600034}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600035}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600035}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600035}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600035}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600068}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600068}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600068}
+{"event": "exit", "properties": {"reason": "Exit flag set"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600068}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600068}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600068}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600068}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600068}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600068}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600079}
+{"event": "gui session", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600079}
+{"event": "exit", "properties": {"reason": "GUI session ended"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754600079}
+{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656324}
+{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656335}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656441}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656462}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "gemini/gemini-2.5-flash", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656463}
+{"event": "exit", "properties": {"reason": "Keyboard interrupt during model warnings"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656463}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656473}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656473}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656473}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656473}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656479}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656480}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656480}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656480}
+{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656480}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656487}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656488}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656488}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656488}
+{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656488}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656496}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656496}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656496}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656496}
+{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656498}
+{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656500}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656511}
+{"event": "message_send", "properties": {"main_model": "None", "weak_model": "gemini/gemini-2.5-flash", "editor_model": "None", "edit_format": "diff", "prompt_tokens": 33867, "completion_tokens": 1347, "total_tokens": 35214, "cost": 0.055803750000000006, "total_cost": 0.07830125}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656662}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656857}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656858}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656858}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656858}
+{"event": "message_send", "properties": {"main_model": "None", "weak_model": "gemini/gemini-2.5-flash", "editor_model": "None", "edit_format": "diff", "prompt_tokens": 9529, "completion_tokens": 78, "total_tokens": 9607, "cost": 0.0005076499999999999, "total_cost": 0.0005076499999999999}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754656878}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754657762}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754657780}
+{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754657790}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754657804}
+{"event": "message_send", "properties": {"main_model": "None", "weak_model": "gemini/gemini-2.5-flash", "editor_model": "None", "edit_format": "diff", "prompt_tokens": 34423, "completion_tokens": 318, "total_tokens": 34741, "cost": 0.04620875000000001, "total_cost": 0.12451000000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754657909}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754659127}
+{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754659135}
+{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754659136}
+{"event": "command_drop", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754659141}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754659146}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754659355}
+{"event": "message_send", "properties": {"main_model": "None", "weak_model": "gemini/gemini-2.5-flash", "editor_model": "None", "edit_format": "diff", "prompt_tokens": 24990, "completion_tokens": 1597, "total_tokens": 26587, "cost": 0.0472075, "total_cost": 0.17171750000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754659469}
+{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754662848}
+{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754662853}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754662891}
+{"event": "message_send", "properties": {"main_model": "None", "weak_model": "gemini/gemini-2.5-flash", "editor_model": "None", "edit_format": "ask", "prompt_tokens": 22199, "completion_tokens": 59, "total_tokens": 22258, "cost": 0.028338750000000003, "total_cost": 0.20005625000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754662921}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754743653}
+{"event": "message_send", "properties": {"main_model": "None", "weak_model": "gemini/gemini-2.5-flash", "editor_model": "None", "edit_format": "ask", "prompt_tokens": 22280, "completion_tokens": 912, "total_tokens": 23192, "cost": 0.03697, "total_cost": 0.23702625000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754743709}
+{"event": "command_code", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754743759}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754743759}
+{"event": "command_chat-mode", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754743826}
+{"event": "command_code", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754743828}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754743828}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754743839}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754743840}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754743840}
+{"event": "cli session", "properties": {"main_model": "gpt-5", "weak_model": "gemini/gemini-2.5-flash", "editor_model": "gpt-5", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754743840}
+{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754743842}
+{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754743882}
+{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754743883}
+{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754743883}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754743891}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754743891}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754743891}
+{"event": "cli session", "properties": {"main_model": "gpt-5", "weak_model": "gemini/gemini-2.5-flash", "editor_model": "gpt-5", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754743892}
+{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754743897}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754743914}
+{"event": "message_send", "properties": {"main_model": "gpt-5", "weak_model": "gemini/gemini-2.5-flash", "editor_model": "gpt-5", "edit_format": "diff", "prompt_tokens": 24532, "completion_tokens": 930, "total_tokens": 25462, "cost": 0.039965, "total_cost": 0.039965}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754744011}
+{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754744023}
+{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754744023}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754744056}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754744057}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754744057}
+{"event": "cli session", "properties": {"main_model": "gpt-5", "weak_model": "gemini/gemini-2.5-flash", "editor_model": "gpt-5", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754744057}
+{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754744062}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754744091}
+{"event": "message_send", "properties": {"main_model": "gpt-5", "weak_model": "gemini/gemini-2.5-flash", "editor_model": "gpt-5", "edit_format": "diff", "prompt_tokens": 9067, "completion_tokens": 266, "total_tokens": 9333, "cost": 0.01399375, "total_cost": 0.01399375}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754744150}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754748500}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754748501}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754748501}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754748501}
+{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754748502}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753011}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753013}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753013}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753013}
+{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753014}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753045}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753051}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753051}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753051}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753190}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753192}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753192}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753192}
+{"event": "message_send", "properties": {"main_model": "gpt-5", "weak_model": "gemini/gemini-2.5-flash", "editor_model": "gpt-5", "edit_format": "diff", "prompt_tokens": 5598, "completion_tokens": 169, "total_tokens": 5767, "cost": 0.0086875, "total_cost": 0.0086875}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753302}
+{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753302}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753444}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753444}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753444}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753444}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753444}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753444}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753444}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753444}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753444}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753444}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753444}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753445}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753445}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753445}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753445}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753445}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753445}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753445}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753445}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753445}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753445}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753445}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753445}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753445}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753445}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753445}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753445}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753445}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753445}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753445}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753445}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753446}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753446}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753446}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753446}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753446}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753446}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753446}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753446}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753446}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753446}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753446}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753446}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753446}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753446}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753446}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753446}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753446}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753446}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753446}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753446}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753447}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753447}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753447}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753447}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753447}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753447}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753447}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753447}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753447}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753447}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753447}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753447}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753447}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753447}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753447}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753448}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753448}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753448}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753448}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753448}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753448}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753448}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753448}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753448}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753448}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753448}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753448}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753448}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753448}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753485}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753486}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753486}
+{"event": "exit", "properties": {"reason": "Exit flag set"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753486}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753486}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753486}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753486}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753486}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753486}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753584}
+{"event": "gui session", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753584}
+{"event": "exit", "properties": {"reason": "GUI session ended"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753584}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753822}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753822}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753822}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753822}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753822}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753822}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753823}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753823}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753823}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753823}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753823}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753823}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753823}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753823}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753823}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753823}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753823}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753823}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753823}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753823}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753823}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753823}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753823}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753823}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753823}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753823}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753824}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753824}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753824}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753824}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753824}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753824}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753824}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753824}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753824}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753824}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753824}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753824}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753824}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753824}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753824}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753825}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753825}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753825}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753825}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753825}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753825}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753825}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753825}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753825}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753825}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753825}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753825}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753825}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753825}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753825}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753825}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753825}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753825}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753825}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753825}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753826}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753826}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753826}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753826}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753826}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753826}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753826}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753826}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753826}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753826}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753826}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753826}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753826}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753826}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753826}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753826}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753826}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753826}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753826}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753874}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753875}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753875}
+{"event": "exit", "properties": {"reason": "Exit flag set"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753875}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753875}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753875}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753875}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753875}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753875}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753991}
+{"event": "gui session", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753991}
+{"event": "exit", "properties": {"reason": "GUI session ended"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754753991}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754234}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754234}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754234}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754234}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754234}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754234}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754235}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754235}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754235}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754235}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754235}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754235}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754235}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754235}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754235}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754235}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754235}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754235}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754235}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754235}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754235}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754235}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754235}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754235}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754235}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754236}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754236}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754236}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754236}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754236}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754236}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754236}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754236}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754236}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754236}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754236}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754236}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754236}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754236}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754236}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754236}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754237}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754237}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754237}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754237}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754237}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754237}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754237}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754237}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754237}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754237}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754237}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754237}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754237}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754237}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754237}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754237}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754237}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754237}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754237}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754237}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754238}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754238}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754238}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754238}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754238}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754238}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754238}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754238}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754238}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754238}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754238}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754238}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754238}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754238}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754238}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754238}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754238}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754238}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754754238}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754755056}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754755056}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754755056}
+{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro", "weak_model": "gemini/gemini-2.5-flash", "editor_model": "gemini/gemini-2.5-pro", "edit_format": "diff-fenced"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754755056}
+{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754755058}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761389}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761389}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761389}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761389}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-flash-lite-preview-06-17", "weak_model": "gemini/gemini-2.5-flash", "editor_model": "gemini/gemini-2.5-flash-lite-preview-06-17", "edit_format": "diff-fenced", "prompt_tokens": 11364, "completion_tokens": 7, "total_tokens": 11371, "cost": 0.00011644, "total_cost": 0.00011644}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761392}
+{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761392}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761396}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761397}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761397}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761397}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-flash-lite", "weak_model": "gemini/gemini-2.5-flash", "editor_model": "gemini/gemini-2.5-flash-lite", "edit_format": "whole", "prompt_tokens": 7744, "completion_tokens": 10, "total_tokens": 7754, "cost": 0.0007784, "total_cost": 0.0007784}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761399}
+{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761399}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761448}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761448}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761448}
+{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-flash-lite", "weak_model": "gemini/gemini-2.5-flash", "editor_model": "gemini/gemini-2.5-flash-lite", "edit_format": "whole"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761449}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761451}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-flash-lite", "weak_model": "gemini/gemini-2.5-flash", "editor_model": "gemini/gemini-2.5-flash-lite", "edit_format": "whole", "prompt_tokens": 7706, "completion_tokens": 10, "total_tokens": 7716, "cost": 0.0007746, "total_cost": 0.0007746}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761452}
+{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761453}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761465}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761465}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761465}
+{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754761467}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754930718}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754930719}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754930719}
+{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754930720}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754933180}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754933180}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754933180}
+{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-2.5-pro", "edit_format": "diff-fenced"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754933180}
+{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754933182}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754933186}
+{"event": "repo", "properties": {"num_files": 630}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754933186}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754933186}
+{"event": "cli session", "properties": {"main_model": "gpt-5", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-5", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754933186}
+{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754933194}
+{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754933195}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754933238}
+{"event": "message_send", "properties": {"main_model": "gpt-5", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-5", "edit_format": "ask", "prompt_tokens": 9039, "completion_tokens": 480, "total_tokens": 9519, "cost": 0.016098750000000002, "total_cost": 0.016098750000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754933277}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754933429}
+{"event": "message_send", "properties": {"main_model": "gpt-5", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-5", "edit_format": "ask", "prompt_tokens": 10555, "completion_tokens": 614, "total_tokens": 11169, "cost": 0.01933375, "total_cost": 0.035432500000000006}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754933466}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754933484}
+{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754933511}
+{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754933518}
+{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754933520}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754933531}
+{"event": "message_send", "properties": {"main_model": "gpt-5", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-5", "edit_format": "ask", "prompt_tokens": 11213, "completion_tokens": 402, "total_tokens": 11615, "cost": 0.01803625, "total_cost": 0.05346875000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754933553}
+{"event": "command_model", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754934338}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754934346}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-5", "edit_format": "ask", "prompt_tokens": 10367, "completion_tokens": 152, "total_tokens": 10519, "cost": 0.014478750000000002, "total_cost": 0.06794750000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754934374}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754935784}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-5", "edit_format": "ask", "prompt_tokens": 14048, "completion_tokens": 99, "total_tokens": 14147, "cost": 0.018550000000000004, "total_cost": 0.0864975}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754935804}
+{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754935822}
+{"event": "command_paste", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754935845}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754935845}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-5", "edit_format": "ask", "prompt_tokens": 14345, "completion_tokens": 191, "total_tokens": 14536, "cost": 0.019841250000000005, "total_cost": 0.10633875000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754935865}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754935868}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-5", "edit_format": "ask", "prompt_tokens": 16341, "completion_tokens": 329, "total_tokens": 16670, "cost": 0.02371625, "total_cost": 0.130055}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754935893}
+{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754935909}
+{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754935947}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754935985}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-5", "edit_format": "ask", "prompt_tokens": 13105, "completion_tokens": 305, "total_tokens": 13410, "cost": 0.01943125, "total_cost": 0.14948625000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754936015}
+{"event": "command_code", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754936019}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754936019}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-5", "edit_format": "diff-fenced", "prompt_tokens": 15838, "completion_tokens": 219, "total_tokens": 16057, "cost": 0.021987500000000004, "total_cost": 0.17147375}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754936041}
+{"event": "command_paste", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754938389}
+{"event": "command_paste", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754938401}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754938425}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-5", "edit_format": "ask", "prompt_tokens": 15599, "completion_tokens": 419, "total_tokens": 16018, "cost": 0.02368875, "total_cost": 0.19516250000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754938476}
+{"event": "command_code", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754938512}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754938512}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-5", "edit_format": "diff-fenced", "prompt_tokens": 16555, "completion_tokens": 442, "total_tokens": 16997, "cost": 0.02511375, "total_cost": 0.22027625}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754938570}
+{"event": "command_paste", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754938670}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754938672}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-5", "edit_format": "ask", "prompt_tokens": 15547, "completion_tokens": 236, "total_tokens": 15783, "cost": 0.021793750000000004, "total_cost": 0.24207}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754938709}
+{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754938928}
+{"event": "command_model", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754938931}
+{"event": "command_reasoning-effort", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754938934}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754938947}
+{"event": "message_send", "properties": {"main_model": "gpt-5", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-5", "edit_format": "ask", "prompt_tokens": 13076, "completion_tokens": 242, "total_tokens": 13318, "cost": 0.018765000000000004, "total_cost": 0.26083500000000004}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754938998}
+{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754939180}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754939197}
+{"event": "message_send", "properties": {"main_model": "gpt-5", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-5", "edit_format": "ask", "prompt_tokens": 13093, "completion_tokens": 370, "total_tokens": 13463, "cost": 0.02006625, "total_cost": 0.28090125000000005}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754939266}
+{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754939471}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754939472}
+{"event": "message_send", "properties": {"main_model": "gpt-5", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-5", "edit_format": "ask", "prompt_tokens": 13026, "completion_tokens": 346, "total_tokens": 13372, "cost": 0.019742500000000003, "total_cost": 0.30064375000000004}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754939515}
+{"event": "command_code", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754939561}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754939561}
+{"event": "message_send", "properties": {"main_model": "gpt-5", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-5", "edit_format": "diff", "prompt_tokens": 15724, "completion_tokens": 557, "total_tokens": 16281, "cost": 0.025225000000000004, "total_cost": 0.32586875000000004}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754939680}
+{"event": "command_paste", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754939951}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754939953}
+{"event": "message_send", "properties": {"main_model": "gpt-5", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-5", "edit_format": "ask", "prompt_tokens": 14953, "completion_tokens": 386, "total_tokens": 15339, "cost": 0.022551250000000002, "total_cost": 0.34842000000000006}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754940056}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754940444}
+{"event": "message_send", "properties": {"main_model": "gpt-5", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-5", "edit_format": "ask", "prompt_tokens": 15349, "completion_tokens": 275, "total_tokens": 15624, "cost": 0.02193625, "total_cost": 0.37035625000000005}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754940489}
+{"event": "command_code", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754940788}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754940788}
+{"event": "message_send", "properties": {"main_model": "gpt-5", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-5", "edit_format": "diff", "prompt_tokens": 17199, "completion_tokens": 302, "total_tokens": 17501, "cost": 0.02451875, "total_cost": 0.39487500000000003}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754940881}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754941211}
+{"event": "message_send", "properties": {"main_model": "gpt-5", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-5", "edit_format": "ask", "prompt_tokens": 15569, "completion_tokens": 208, "total_tokens": 15777, "cost": 0.021541250000000005, "total_cost": 0.41641625000000004}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754941379}
+{"event": "command_code", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754942025}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754942025}
+{"event": "message_send", "properties": {"main_model": "gpt-5", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-5", "edit_format": "diff", "prompt_tokens": 17425, "completion_tokens": 107, "total_tokens": 17532, "cost": 0.022851250000000004, "total_cost": 0.43926750000000003}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754942076}
+{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1754944311}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755004879}
+{"event": "repo", "properties": {"num_files": 631}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755004880}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755004880}
+{"event": "cli session", "properties": {"main_model": "o3-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-4.1", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755004880}
+{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755004902}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755004902}
+{"event": "message_send", "properties": {"main_model": "o3-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-4.1", "edit_format": "ask", "prompt_tokens": 7420, "completion_tokens": 616, "total_tokens": 8036, "cost": 0.19768000000000002, "total_cost": 0.19768000000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755004942}
+{"event": "command_code", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755004948}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755004948}
+{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755004961}
+{"event": "command_paste", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755004990}
+{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755005009}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755005009}
+{"event": "message_send", "properties": {"main_model": "o3-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-4.1", "edit_format": "ask", "prompt_tokens": 7438, "completion_tokens": 1987, "total_tokens": 9425, "cost": 0.30772, "total_cost": 0.5054000000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755005114}
+{"event": "command_code", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755005139}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755005139}
+{"event": "message_send", "properties": {"main_model": "o3-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-4.1", "edit_format": "diff", "prompt_tokens": 9835, "completion_tokens": 807, "total_tokens": 10642, "cost": 0.26126000000000005, "total_cost": 0.7666600000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755005204}
+{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755005241}
+{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755005605}
+{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755005607}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755005622}
+{"event": "message_send", "properties": {"main_model": "o3-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gpt-4.1", "edit_format": "ask", "prompt_tokens": 7375, "completion_tokens": 1142, "total_tokens": 8517, "cost": 0.23886000000000002, "total_cost": 1.0055200000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755005682}
+{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755005775}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755005802}
+{"event": "repo", "properties": {"num_files": 631}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755005802}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755005802}
+{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755005803}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755048059}
+{"event": "repo", "properties": {"num_files": 631}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755048059}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755048059}
+{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-2.5-pro", "edit_format": "diff-fenced"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755048059}
+{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755048062}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755048090}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-2.5-pro", "edit_format": "diff-fenced", "prompt_tokens": 25454, "completion_tokens": 3540, "total_tokens": 28994, "cost": 0.06721750000000001, "total_cost": 0.06721750000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755048217}
+{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755097040}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099878}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099878}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099878}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099878}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099878}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099878}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099878}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099878}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099878}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099878}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099878}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099878}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099878}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099878}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099878}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099878}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099879}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099879}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099879}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099879}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099879}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099879}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099879}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099879}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099879}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099879}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099879}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099879}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099879}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099879}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099879}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099880}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099880}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099880}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099880}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099880}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099880}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099880}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099880}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099880}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099880}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099880}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099880}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099880}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099880}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099880}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099880}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099880}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099880}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099880}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099880}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099881}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099881}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099881}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099881}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099881}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099881}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099881}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099881}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099881}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099881}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099881}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099881}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099881}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099881}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099881}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099881}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099881}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099881}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099881}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099881}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099882}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099882}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099882}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099882}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099882}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099882}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099882}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099882}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099882}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099914}
+{"event": "repo", "properties": {"num_files": 631}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099914}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099914}
+{"event": "exit", "properties": {"reason": "Exit flag set"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099914}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099914}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099914}
+{"event": "repo", "properties": {"num_files": 631}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099914}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099914}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099914}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099935}
+{"event": "gui session", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099935}
+{"event": "exit", "properties": {"reason": "GUI session ended"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755099935}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755100327}
+{"event": "repo", "properties": {"num_files": 631}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755100327}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755100327}
+{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-2.5-pro", "edit_format": "diff-fenced"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755100327}
+{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755100329}
+{"event": "command_paste", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755100352}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755100352}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-2.5-pro", "edit_format": "ask", "prompt_tokens": 10006, "completion_tokens": 81, "total_tokens": 10087, "cost": 0.013317500000000001, "total_cost": 0.013317500000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755100406}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755100791}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-2.5-pro", "edit_format": "ask", "prompt_tokens": 10829, "completion_tokens": 591, "total_tokens": 11420, "cost": 0.01944625, "total_cost": 0.03276375}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755100863}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755102232}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-2.5-pro", "edit_format": "ask", "prompt_tokens": 11436, "completion_tokens": 162, "total_tokens": 11598, "cost": 0.015915000000000002, "total_cost": 0.04867875000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755102250}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755102403}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-2.5-pro", "edit_format": "ask", "prompt_tokens": 11631, "completion_tokens": 72, "total_tokens": 11703, "cost": 0.015258750000000001, "total_cost": 0.06393750000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755102419}
+{"event": "command_code", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755105446}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755105446}
+{"event": "command_code", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755105454}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755105454}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-2.5-pro", "edit_format": "diff-fenced", "prompt_tokens": 14046, "completion_tokens": 62, "total_tokens": 14108, "cost": 0.0181775, "total_cost": 0.08211500000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755105459}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755106216}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755106216}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755106216}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755106216}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1755106216}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1759166990}
+{"event": "repo", "properties": {"num_files": 633}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1759166990}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1759166990}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1759166999}
+{"event": "repo", "properties": {"num_files": 633}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1759167000}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1759167000}
+{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1759167001}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666075}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666076}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666077}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666077}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666077}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666077}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666077}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666077}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666077}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666077}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666077}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666077}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666077}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666077}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666077}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666077}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666077}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666077}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666077}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666077}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666077}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666077}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666078}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666078}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666078}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666078}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666078}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666078}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666078}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666078}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666078}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666078}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666078}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666078}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666078}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666078}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666078}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666078}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666078}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666078}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666078}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666078}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666079}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666079}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666079}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666079}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666079}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666079}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666079}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666079}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666079}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666079}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666079}
+{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666079}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666079}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666079}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666108}
+{"event": "repo", "properties": {"num_files": 635}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666109}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666109}
+{"event": "exit", "properties": {"reason": "Exit flag set"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666109}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666109}
+{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666109}
+{"event": "repo", "properties": {"num_files": 635}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666109}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666109}
+{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666109}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666132}
+{"event": "gui session", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666132}
+{"event": "exit", "properties": {"reason": "GUI session ended"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763666132}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763766579}
+{"event": "repo", "properties": {"num_files": 635}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763766579}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763766579}
+{"event": "cli session", "properties": {"main_model": "gemini/gemini-3-pro-preview", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-3-pro-preview", "edit_format": "diff-fenced"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763766579}
+{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763766585}
+{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763766594}
+{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763766596}
+{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763766598}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763766615}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-3-pro-preview", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-3-pro-preview", "edit_format": "ask", "prompt_tokens": 25709, "completion_tokens": 321, "total_tokens": 26030, "cost": 0.05527, "total_cost": 0.05527}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763766666}
+{"event": "command_reasoning-effort", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763767274}
+{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763767286}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763767289}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-3-pro-preview", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-3-pro-preview", "edit_format": "ask", "prompt_tokens": 26356, "completion_tokens": 275, "total_tokens": 26631, "cost": 0.05601199999999999, "total_cost": 0.11128199999999999}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763767312}
+{"event": "command_code", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763767322}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763767322}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-3-pro-preview", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-3-pro-preview", "edit_format": "diff-fenced", "prompt_tokens": 28932, "completion_tokens": 258, "total_tokens": 29190, "cost": 0.06096, "total_cost": 0.172242}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1763767333}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1764387139}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1764387146}
+{"event": "repo", "properties": {"num_files": 635}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1764387147}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1764387147}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1764387147}
+{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1764387186}
+{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1764800794}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082484}
+{"event": "model warning", "properties": {"main_model": "gemini/REDACTED", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/REDACTED"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082486}
+{"event": "repo", "properties": {"num_files": 635}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082488}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082488}
+{"event": "cli session", "properties": {"main_model": "gemini/REDACTED", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/REDACTED", "edit_format": "whole"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082488}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082490}
+{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082500}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082505}
+{"event": "repo", "properties": {"num_files": 635}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082505}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082505}
+{"event": "cli session", "properties": {"main_model": "gemini/gemini-3-flash-preview", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-3-flash-preview", "edit_format": "whole"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082505}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082508}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-3-flash-preview", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-3-flash-preview", "edit_format": "whole", "prompt_tokens": 9566, "completion_tokens": 44, "total_tokens": 9610, "cost": 0.004915, "total_cost": 0.004915}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082511}
+{"event": "command_chat-mode", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082533}
+{"event": "command_chat-mode", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082537}
+{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082545}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082563}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-3-flash-preview", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-3-flash-preview", "edit_format": "diff-fenced", "prompt_tokens": 28242, "completion_tokens": 276, "total_tokens": 28518, "cost": 0.014949, "total_cost": 0.019864}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082572}
+{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082585}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082588}
+{"event": "repo", "properties": {"num_files": 635}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082589}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082589}
+{"event": "cli session", "properties": {"main_model": "gemini/gemini-3-flash-preview", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-3-flash-preview", "edit_format": "diff-fenced"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082589}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082592}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-3-flash-preview", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-3-flash-preview", "edit_format": "diff-fenced", "prompt_tokens": 11441, "completion_tokens": 36, "total_tokens": 11477, "cost": 0.0058284999999999995, "total_cost": 0.0058284999999999995}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082601}
+{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082604}
+{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082604}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082784}
+{"event": "repo", "properties": {"num_files": 635}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082784}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082784}
+{"event": "cli session", "properties": {"main_model": "gemini/gemini-3-flash-preview", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-3-flash-preview", "edit_format": "diff-fenced"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082784}
+{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082798}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082805}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-3-flash-preview", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-3-flash-preview", "edit_format": "ask", "prompt_tokens": 33123, "completion_tokens": 119, "total_tokens": 33242, "cost": 0.0169185, "total_cost": 0.0169185}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082812}
+{"event": "command_code", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082826}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082826}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-3-flash-preview", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-3-flash-preview", "edit_format": "diff-fenced", "prompt_tokens": 35613, "completion_tokens": 86, "total_tokens": 35699, "cost": 0.0180645, "total_cost": 0.034983}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082831}
+{"event": "command_code", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082856}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082858}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-3-flash-preview", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-3-flash-preview", "edit_format": "diff-fenced", "prompt_tokens": 34442, "completion_tokens": 115, "total_tokens": 34557, "cost": 0.017566000000000002, "total_cost": 0.052549}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082870}
+{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082885}
+{"event": "message_send", "properties": {"main_model": "gemini/gemini-3-flash-preview", "weak_model": "gemini/gemini-2.5-flash-lite", "editor_model": "gemini/gemini-3-flash-preview", "edit_format": "diff-fenced", "prompt_tokens": 34631, "completion_tokens": 102, "total_tokens": 34733, "cost": 0.0176215, "total_cost": 0.0701705}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082891}
+{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082968}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082994}
+{"event": "repo", "properties": {"num_files": 635}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082995}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082995}
+{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766082995}
+{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766083018}
+{"event": "repo", "properties": {"num_files": 635}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766083019}
+{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766083019}
+{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1766083022}
diff --git a/aider/website/assets/sample.aider.conf.yml b/aider/website/assets/sample.aider.conf.yml
index 7fe9459bf..f79b13dfb 100644
--- a/aider/website/assets/sample.aider.conf.yml
+++ b/aider/website/assets/sample.aider.conf.yml
@@ -4,7 +4,7 @@
# Place in your home dir, or at the root of your git repo.
##########################################################
-# Note: You can only put OpenAI and Anthropic API keys in the yaml
+# Note: You can only put OpenAI and Anthropic API keys in the YAML
# config file. Keys for all APIs can be stored in a .env file
# https://aider.chat/docs/config/dotenv.html
@@ -83,7 +83,7 @@
## Set the reasoning_effort API parameter (default: not set)
#reasoning-effort: xxx
-## Set the thinking token budget for models that support it (default: not set)
+## Set the thinking token budget for models that support it. Use 0 to disable. (default: not set)
#thinking-tokens: xxx
## Verify the SSL cert when connecting to models (default: True)
@@ -212,6 +212,9 @@
## Enable/disable adding .aider* to .gitignore (default: True)
#gitignore: true
+## Enable/disable the addition of files listed in .gitignore to Aider's editing scope.
+#add-gitignore-files: false
+
## Specify the aider ignore file (default: .aiderignore in git root)
#aiderignore: .aiderignore
@@ -236,8 +239,8 @@
## Prefix all commit messages with 'aider: ' (default: False)
#attribute-commit-message-committer: false
-## Attribute aider edits using the Co-authored-by trailer in the commit message (default: False). If True, this takes precedence over default --attribute-author and --attribute-committer behavior unless they are explicitly set to True.
-#attribute-co-authored-by: false
+## Attribute aider edits using the Co-authored-by trailer in the commit message (default: True). If True, this takes precedence over default --attribute-author and --attribute-committer behavior unless they are explicitly set to True.
+#attribute-co-authored-by: true
## Enable/disable git pre-commit hooks with --no-verify (default: False)
#git-commit-verify: false
@@ -295,6 +298,12 @@
## Permanently disable analytics
#analytics-disable: false
+## Send analytics to custom PostHog instance
+#analytics-posthog-host: xxx
+
+## Send analytics to custom PostHog project
+#analytics-posthog-project-api-key: xxx
+
############
# Upgrading:
@@ -386,6 +395,9 @@
## Specify the language to use in the chat (default: None, uses system settings)
#chat-language: xxx
+## Specify the language to use in the commit message (default: None, user language)
+#commit-language: xxx
+
## Always say yes to every confirmation
#yes-always: false
diff --git a/aider/website/assets/sample.env b/aider/website/assets/sample.env
index 6d2a032cd..29ab1a386 100644
--- a/aider/website/assets/sample.env
+++ b/aider/website/assets/sample.env
@@ -72,7 +72,7 @@
## Set the reasoning_effort API parameter (default: not set)
#AIDER_REASONING_EFFORT=
-## Set the thinking token budget for models that support it (default: not set)
+## Set the thinking token budget for models that support it. Use 0 to disable. (default: not set)
#AIDER_THINKING_TOKENS=
## Verify the SSL cert when connecting to models (default: True)
@@ -201,6 +201,9 @@
## Enable/disable adding .aider* to .gitignore (default: True)
#AIDER_GITIGNORE=true
+## Enable/disable the addition of files listed in .gitignore to Aider's editing scope.
+#AIDER_ADD_GITIGNORE_FILES=false
+
## Specify the aider ignore file (default: .aiderignore in git root)
#AIDER_AIDERIGNORE=.aiderignore
@@ -225,8 +228,8 @@
## Prefix all commit messages with 'aider: ' (default: False)
#AIDER_ATTRIBUTE_COMMIT_MESSAGE_COMMITTER=false
-## Attribute aider edits using the Co-authored-by trailer in the commit message (default: False). If True, this takes precedence over default --attribute-author and --attribute-committer behavior unless they are explicitly set to True.
-#AIDER_ATTRIBUTE_CO_AUTHORED_BY=false
+## Attribute aider edits using the Co-authored-by trailer in the commit message (default: True). If True, this takes precedence over default --attribute-author and --attribute-committer behavior unless they are explicitly set to True.
+#AIDER_ATTRIBUTE_CO_AUTHORED_BY=true
## Enable/disable git pre-commit hooks with --no-verify (default: False)
#AIDER_GIT_COMMIT_VERIFY=false
@@ -279,6 +282,12 @@
## Permanently disable analytics
#AIDER_ANALYTICS_DISABLE=false
+## Send analytics to custom PostHog instance
+#AIDER_ANALYTICS_POSTHOG_HOST=
+
+## Send analytics to custom PostHog project
+#AIDER_ANALYTICS_POSTHOG_PROJECT_API_KEY=
+
############
# Upgrading:
@@ -357,6 +366,9 @@
## Specify the language to use in the chat (default: None, uses system settings)
#AIDER_CHAT_LANGUAGE=
+## Specify the language to use in the commit message (default: None, user language)
+#AIDER_COMMIT_LANGUAGE=
+
## Always say yes to every confirmation
#AIDER_YES_ALWAYS=
diff --git a/aider/website/docs/config/adv-model-settings.md b/aider/website/docs/config/adv-model-settings.md
index 311dec9ce..f2fec67be 100644
--- a/aider/website/docs/config/adv-model-settings.md
+++ b/aider/website/docs/config/adv-model-settings.md
@@ -81,7 +81,7 @@ You can override or add settings for any model by creating a `.aider.model.setti
If the files above exist, they will be loaded in that order.
Files loaded last will take priority.
-The yaml file should be a list of dictionary objects for each model.
+The YAML file should be a list of dictionary objects for each model.
### Passing extra params to litellm.completion
@@ -158,6 +158,34 @@ cog.out("```\n")
system_prompt_prefix: null
accepts_settings: null
+- name: anthropic.claude-opus-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 32000
+ cache_control: true
+ editor_model_name: anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
+- name: anthropic.claude-sonnet-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
- name: anthropic/claude-3-5-haiku-20241022
edit_format: diff
weak_model_name: anthropic/claude-3-5-haiku-20241022
@@ -246,6 +274,34 @@ cog.out("```\n")
anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25
cache_control: true
+- name: anthropic/claude-opus-4-20250514
+ edit_format: diff
+ weak_model_name: anthropic/claude-3-5-haiku-20241022
+ use_repo_map: true
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 32000
+ cache_control: true
+ editor_model_name: anthropic/claude-sonnet-4-20250514
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
+- name: anthropic/claude-sonnet-4-20250514
+ edit_format: diff
+ weak_model_name: anthropic/claude-3-5-haiku-20241022
+ use_repo_map: true
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: anthropic/claude-sonnet-4-20250514
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
- name: azure/gpt-4.1
edit_format: diff
weak_model_name: azure/gpt-4.1-mini
@@ -258,6 +314,139 @@ cog.out("```\n")
use_repo_map: true
reminder: sys
+- name: azure/gpt-5
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: azure/gpt-5-2025-08-07
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: azure/gpt-5-chat
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: azure/gpt-5-chat-latest
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: azure/gpt-5-mini
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: azure/gpt-5-mini-2025-08-07
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: azure/gpt-5-nano
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: azure/gpt-5-nano-2025-08-07
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: azure/gpt-5-pro
+ edit_format: diff
+ weak_model_name: azure/gpt-5-mini
+ use_repo_map: true
+ examples_as_sys_msg: true
+ use_temperature: false
+ streaming: false
+ editor_model_name: azure/gpt-5
+ editor_edit_format: editor-diff
+ system_prompt_prefix: 'Formatting re-enabled. '
+ accepts_settings:
+ - reasoning_effort
+
+- name: azure/gpt-5.1
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: azure/gpt-5.1-2025-11-13
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: azure/gpt-5.1-chat
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: azure/gpt-5.1-chat-latest
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: azure/gpt-5.2
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: azure/gpt-5.2-2025-12-11
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: azure/gpt-5.2-chat-latest
+ edit_format: diff
+ weak_model_name: azure/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
- name: azure/o1
edit_format: diff
weak_model_name: azure/gpt-4o-mini
@@ -309,6 +498,18 @@ cog.out("```\n")
accepts_settings:
- reasoning_effort
+- name: azure/o3-pro
+ edit_format: diff
+ weak_model_name: azure/gpt-4.1-mini
+ use_repo_map: true
+ examples_as_sys_msg: true
+ streaming: false
+ editor_model_name: azure/gpt-4.1
+ editor_edit_format: editor-diff
+ system_prompt_prefix: 'Formatting re-enabled. '
+ accepts_settings:
+ - reasoning_effort
+
- name: azure/o4-mini
edit_format: diff
weak_model_name: azure/gpt-4.1-mini
@@ -407,6 +608,34 @@ cog.out("```\n")
accepts_settings:
- thinking_tokens
+- name: bedrock/anthropic.claude-sonnet-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: bedrock/anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: bedrock/anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
+- name: bedrock/global.anthropic.claude-sonnet-4-5-20250929-v1:0
+ edit_format: diff
+ weak_model_name: bedrock/anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: bedrock/global.anthropic.claude-sonnet-4-5-20250929-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
- name: bedrock/us.anthropic.claude-3-7-sonnet-20250219-v1:0
edit_format: diff
weak_model_name: bedrock/us.anthropic.claude-3-5-haiku-20241022-v1:0
@@ -423,6 +652,20 @@ cog.out("```\n")
accepts_settings:
- thinking_tokens
+- name: bedrock/us.anthropic.claude-sonnet-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: bedrock/us.anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: bedrock/us.anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
- name: bedrock_converse/anthropic.claude-3-7-sonnet-20250219-v1:0
edit_format: diff
weak_model_name: bedrock_converse/anthropic.claude-3-5-haiku-20241022-v1:0
@@ -439,6 +682,62 @@ cog.out("```\n")
accepts_settings:
- thinking_tokens
+- name: bedrock_converse/anthropic.claude-opus-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: bedrock_converse/anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 32000
+ cache_control: true
+ editor_model_name: bedrock_converse/anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
+- name: bedrock_converse/anthropic.claude-sonnet-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: bedrock_converse/anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: bedrock_converse/anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
+- name: bedrock_converse/eu.anthropic.claude-opus-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: bedrock_converse/eu.anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 32000
+ cache_control: true
+ editor_model_name: bedrock_converse/eu.anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
+- name: bedrock_converse/eu.anthropic.claude-sonnet-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: bedrock_converse/eu.anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: bedrock_converse/eu.anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
- name: bedrock_converse/us.anthropic.claude-3-7-sonnet-20250219-v1:0
edit_format: diff
weak_model_name: bedrock_converse/us.anthropic.claude-3-5-haiku-20241022-v1:0
@@ -455,6 +754,34 @@ cog.out("```\n")
accepts_settings:
- thinking_tokens
+- name: bedrock_converse/us.anthropic.claude-opus-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: bedrock_converse/us.anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 32000
+ cache_control: true
+ editor_model_name: bedrock_converse/us.anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
+- name: bedrock_converse/us.anthropic.claude-sonnet-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: bedrock_converse/us.anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: bedrock_converse/us.anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
- name: claude-3-5-haiku-20241022
edit_format: diff
weak_model_name: claude-3-5-haiku-20241022
@@ -538,6 +865,34 @@ cog.out("```\n")
- name: claude-3-sonnet-20240229
weak_model_name: claude-3-5-haiku-20241022
+- name: claude-opus-4-20250514
+ edit_format: diff
+ weak_model_name: claude-3-5-haiku-20241022
+ use_repo_map: true
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 32000
+ cache_control: true
+ editor_model_name: claude-sonnet-4-20250514
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
+- name: claude-sonnet-4-20250514
+ edit_format: diff
+ weak_model_name: claude-3-5-haiku-20241022
+ use_repo_map: true
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: claude-sonnet-4-20250514
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
- name: cohere_chat/command-a-03-2025
examples_as_sys_msg: true
@@ -594,12 +949,40 @@ cog.out("```\n")
use_repo_map: true
examples_as_sys_msg: true
extra_params:
- max_tokens: 8192
+ max_tokens: 64000
caches_by_default: true
use_temperature: false
editor_model_name: deepseek/deepseek-chat
editor_edit_format: editor-diff
+- name: eu.anthropic.claude-opus-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: eu.anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 32000
+ cache_control: true
+ editor_model_name: eu.anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
+- name: eu.anthropic.claude-sonnet-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: eu.anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: eu.anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
- name: fireworks_ai/accounts/fireworks/models/deepseek-r1
edit_format: diff
weak_model_name: fireworks_ai/accounts/fireworks/models/deepseek-v3
@@ -649,8 +1032,6 @@ cog.out("```\n")
- name: gemini/gemini-1.5-flash-002
-- name: gemini/gemini-1.5-flash-exp-0827
-
- name: gemini/gemini-1.5-pro
edit_format: diff-fenced
use_repo_map: true
@@ -659,10 +1040,6 @@ cog.out("```\n")
edit_format: diff
use_repo_map: true
-- name: gemini/gemini-1.5-pro-exp-0827
- edit_format: diff-fenced
- use_repo_map: true
-
- name: gemini/gemini-1.5-pro-latest
edit_format: diff-fenced
use_repo_map: true
@@ -675,6 +1052,22 @@ cog.out("```\n")
edit_format: diff
use_repo_map: true
+- name: gemini/gemini-2.5-flash
+ edit_format: diff-fenced
+ use_repo_map: true
+ overeager: true
+ use_temperature: false
+ accepts_settings:
+ - thinking_tokens
+
+- name: gemini/gemini-2.5-flash-lite-preview-06-17
+ edit_format: diff-fenced
+ use_repo_map: true
+ overeager: true
+ use_temperature: false
+ accepts_settings:
+ - thinking_tokens
+
- name: gemini/gemini-2.5-flash-preview-04-17
edit_format: diff
use_repo_map: true
@@ -682,6 +1075,15 @@ cog.out("```\n")
- reasoning_effort
- thinking_tokens
+- name: gemini/gemini-2.5-pro
+ edit_format: diff-fenced
+ weak_model_name: gemini/gemini-2.5-flash
+ use_repo_map: true
+ overeager: true
+ use_temperature: false
+ accepts_settings:
+ - thinking_tokens
+
- name: gemini/gemini-2.5-pro-exp-03-25
edit_format: diff-fenced
weak_model_name: gemini/gemini-2.5-flash-preview-04-17
@@ -700,13 +1102,30 @@ cog.out("```\n")
use_repo_map: true
overeager: true
-- name: gemini/gemini-exp-1114
- edit_format: diff
+- name: gemini/gemini-2.5-pro-preview-06-05
+ edit_format: diff-fenced
+ weak_model_name: gemini/gemini-2.5-flash-preview-04-17
use_repo_map: true
+ overeager: true
+ accepts_settings:
+ - thinking_tokens
-- name: gemini/gemini-exp-1121
- edit_format: diff
+- name: gemini/gemini-3-flash-preview
+ edit_format: diff-fenced
use_repo_map: true
+ overeager: true
+ use_temperature: false
+ accepts_settings:
+ - thinking_tokens
+
+- name: gemini/gemini-3-pro-preview
+ edit_format: diff-fenced
+ weak_model_name: gemini/gemini-2.5-flash
+ use_repo_map: true
+ overeager: true
+ use_temperature: false
+ accepts_settings:
+ - thinking_tokens
- name: gemini/gemini-exp-1206
edit_format: diff
@@ -841,6 +1260,171 @@ cog.out("```\n")
lazy: true
reminder: sys
+- name: gpt-5
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ overeager: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: gpt-5-2025-08-07
+ edit_format: diff
+ weak_model_name: gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: gpt-5-chat
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: gpt-5-chat-latest
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: gpt-5-codex
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: gpt-5-mini
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: gpt-5-mini-2025-08-07
+ edit_format: diff
+ weak_model_name: gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: gpt-5-nano
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: gpt-5-nano-2025-08-07
+ edit_format: diff
+ weak_model_name: gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: gpt-5-pro
+ edit_format: diff
+ weak_model_name: gpt-5-mini
+ use_repo_map: true
+ examples_as_sys_msg: true
+ use_temperature: false
+ streaming: false
+ editor_model_name: gpt-5
+ editor_edit_format: editor-diff
+ system_prompt_prefix: 'Formatting re-enabled. '
+ accepts_settings:
+ - reasoning_effort
+
+- name: gpt-5.1
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ overeager: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: gpt-5.1-2025-11-13
+ edit_format: diff
+ weak_model_name: gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: gpt-5.1-chat
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: gpt-5.1-chat-latest
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: gpt-5.1-codex
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: gpt-5.2
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ overeager: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: gpt-5.2-2025-12-11
+ edit_format: diff
+ weak_model_name: gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: gpt-5.2-chat-latest
+ edit_format: diff
+ weak_model_name: gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: gpt-5.2-pro
+ edit_format: diff
+ weak_model_name: gpt-5-mini
+ use_repo_map: true
+ examples_as_sys_msg: true
+ use_temperature: false
+ streaming: false
+ editor_model_name: gpt-5.2
+ editor_edit_format: editor-diff
+ system_prompt_prefix: 'Formatting re-enabled. '
+ accepts_settings:
+ - reasoning_effort
+
- name: groq/llama3-70b-8192
edit_format: diff
weak_model_name: groq/llama3-8b-8192
@@ -910,6 +1494,18 @@ cog.out("```\n")
accepts_settings:
- reasoning_effort
+- name: o3-pro
+ edit_format: diff
+ weak_model_name: gpt-4.1-mini
+ use_repo_map: true
+ examples_as_sys_msg: true
+ streaming: false
+ editor_model_name: gpt-4.1
+ editor_edit_format: editor-diff
+ system_prompt_prefix: 'Formatting re-enabled. '
+ accepts_settings:
+ - reasoning_effort
+
- name: o4-mini
edit_format: diff
weak_model_name: gpt-4.1-mini
@@ -974,6 +1570,152 @@ cog.out("```\n")
lazy: true
reminder: sys
+- name: openai/gpt-5
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openai/gpt-5-2025-08-07
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openai/gpt-5-chat
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openai/gpt-5-chat-latest
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openai/gpt-5-mini
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openai/gpt-5-mini-2025-08-07
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openai/gpt-5-nano
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openai/gpt-5-nano-2025-08-07
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openai/gpt-5-pro
+ edit_format: diff
+ weak_model_name: openai/gpt-5-mini
+ use_repo_map: true
+ examples_as_sys_msg: true
+ use_temperature: false
+ streaming: false
+ editor_model_name: openai/gpt-5
+ editor_edit_format: editor-diff
+ system_prompt_prefix: 'Formatting re-enabled. '
+ accepts_settings:
+ - reasoning_effort
+
+- name: openai/gpt-5.1
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openai/gpt-5.1-2025-11-13
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openai/gpt-5.1-chat
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openai/gpt-5.1-chat-latest
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openai/gpt-5.2
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openai/gpt-5.2-2025-12-11
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openai/gpt-5.2-chat-latest
+ edit_format: diff
+ weak_model_name: openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openai/gpt-5.2-pro
+ edit_format: diff
+ weak_model_name: openai/gpt-5-mini
+ use_repo_map: true
+ examples_as_sys_msg: true
+ use_temperature: false
+ streaming: false
+ editor_model_name: openai/gpt-5.2
+ editor_edit_format: editor-diff
+ system_prompt_prefix: 'Formatting re-enabled. '
+ accepts_settings:
+ - reasoning_effort
+
- name: openai/o1
edit_format: diff
weak_model_name: openai/gpt-4o-mini
@@ -1026,6 +1768,18 @@ cog.out("```\n")
accepts_settings:
- reasoning_effort
+- name: openai/o3-pro
+ edit_format: diff
+ weak_model_name: openai/gpt-4.1-mini
+ use_repo_map: true
+ examples_as_sys_msg: true
+ streaming: false
+ editor_model_name: openai/gpt-4.1
+ editor_edit_format: editor-diff
+ system_prompt_prefix: 'Formatting re-enabled. '
+ accepts_settings:
+ - reasoning_effort
+
- name: openai/o4-mini
edit_format: diff
weak_model_name: openai/gpt-4.1-mini
@@ -1145,6 +1899,34 @@ cog.out("```\n")
accepts_settings:
- thinking_tokens
+- name: openrouter/anthropic/claude-opus-4
+ edit_format: diff
+ weak_model_name: openrouter/anthropic/claude-3-5-haiku
+ use_repo_map: true
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 32000
+ cache_control: true
+ editor_model_name: openrouter/anthropic/claude-sonnet-4
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
+- name: openrouter/anthropic/claude-sonnet-4
+ edit_format: diff
+ weak_model_name: openrouter/anthropic/claude-3-5-haiku
+ use_repo_map: true
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: openrouter/anthropic/claude-sonnet-4
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
- name: openrouter/cohere/command-a-03-2025
examples_as_sys_msg: true
@@ -1160,7 +1942,7 @@ cog.out("```\n")
reminder: sys
examples_as_sys_msg: true
extra_params:
- max_tokens: 8192
+ max_tokens: 65536
caches_by_default: true
- name: openrouter/deepseek/deepseek-chat-v3-0324:free
@@ -1224,6 +2006,14 @@ cog.out("```\n")
max_tokens: 8192
caches_by_default: true
+- name: openrouter/google/gemini-2.5-pro
+ edit_format: diff-fenced
+ weak_model_name: openrouter/google/gemini-2.5-flash
+ use_repo_map: true
+ overeager: true
+ accepts_settings:
+ - thinking_tokens
+
- name: openrouter/google/gemini-2.5-pro-exp-03-25
edit_format: diff-fenced
weak_model_name: openrouter/google/gemini-2.0-flash-exp:free
@@ -1242,6 +2032,29 @@ cog.out("```\n")
use_repo_map: true
overeager: true
+- name: openrouter/google/gemini-2.5-pro-preview-06-05
+ edit_format: diff-fenced
+ weak_model_name: openrouter/google/gemini-2.0-flash-001
+ use_repo_map: true
+ overeager: true
+ accepts_settings:
+ - thinking_tokens
+
+- name: openrouter/google/gemini-3-flash-preview
+ edit_format: diff-fenced
+ use_repo_map: true
+ overeager: true
+ accepts_settings:
+ - thinking_tokens
+
+- name: openrouter/google/gemini-3-pro-preview
+ edit_format: diff-fenced
+ weak_model_name: openrouter/google/gemini-2.5-flash
+ use_repo_map: true
+ overeager: true
+ accepts_settings:
+ - thinking_tokens
+
- name: openrouter/google/gemma-3-27b-it
use_system_prompt: false
@@ -1253,6 +2066,13 @@ cog.out("```\n")
weak_model_name: openrouter/meta-llama/llama-3-70b-instruct
examples_as_sys_msg: true
+- name: openrouter/moonshotai/kimi-k2
+ edit_format: diff
+ use_repo_map: true
+ examples_as_sys_msg: true
+ extra_params:
+ temperature: 0.6
+
- name: openrouter/openai/gpt-4.1
edit_format: diff
weak_model_name: openrouter/openai/gpt-4.1-mini
@@ -1274,6 +2094,152 @@ cog.out("```\n")
examples_as_sys_msg: true
editor_edit_format: editor-diff
+- name: openrouter/openai/gpt-5
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openrouter/openai/gpt-5-2025-08-07
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openrouter/openai/gpt-5-chat
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openrouter/openai/gpt-5-chat-latest
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openrouter/openai/gpt-5-mini
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openrouter/openai/gpt-5-mini-2025-08-07
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openrouter/openai/gpt-5-nano
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openrouter/openai/gpt-5-nano-2025-08-07
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openrouter/openai/gpt-5-pro
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-mini
+ use_repo_map: true
+ examples_as_sys_msg: true
+ use_temperature: false
+ streaming: false
+ editor_model_name: openrouter/openai/gpt-5
+ editor_edit_format: editor-diff
+ system_prompt_prefix: 'Formatting re-enabled. '
+ accepts_settings:
+ - reasoning_effort
+
+- name: openrouter/openai/gpt-5.1
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openrouter/openai/gpt-5.1-2025-11-13
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openrouter/openai/gpt-5.1-chat
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openrouter/openai/gpt-5.1-chat-latest
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openrouter/openai/gpt-5.2
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openrouter/openai/gpt-5.2-2025-12-11
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano-2025-08-07
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openrouter/openai/gpt-5.2-chat-latest
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-nano
+ use_repo_map: true
+ use_temperature: false
+ accepts_settings:
+ - reasoning_effort
+
+- name: openrouter/openai/gpt-5.2-pro
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-5-mini
+ use_repo_map: true
+ examples_as_sys_msg: true
+ use_temperature: false
+ streaming: false
+ editor_model_name: openrouter/openai/gpt-5.2
+ editor_edit_format: editor-diff
+ system_prompt_prefix: 'Formatting re-enabled. '
+ accepts_settings:
+ - reasoning_effort
+
- name: openrouter/openai/o1
edit_format: diff
weak_model_name: openrouter/openai/gpt-4o-mini
@@ -1339,6 +2305,18 @@ cog.out("```\n")
accepts_settings:
- reasoning_effort
+- name: openrouter/openai/o3-pro
+ edit_format: diff
+ weak_model_name: openrouter/openai/gpt-4.1-mini
+ use_repo_map: true
+ examples_as_sys_msg: true
+ streaming: false
+ editor_model_name: openrouter/openai/gpt-4.1
+ editor_edit_format: editor-diff
+ system_prompt_prefix: 'Formatting re-enabled. '
+ accepts_settings:
+ - reasoning_effort
+
- name: openrouter/openai/o4-mini
edit_format: diff
weak_model_name: openrouter/openai/gpt-4.1-mini
@@ -1434,24 +2412,38 @@ cog.out("```\n")
accepts_settings:
- reasoning_effort
-- name: vertex_ai-anthropic_models/vertex_ai/claude-3-7-sonnet@20250219
- edit_format: diff
- weak_model_name: vertex_ai/claude-3-5-haiku@20241022
- use_repo_map: true
- overeager: true
- examples_as_sys_msg: true
- extra_params:
- max_tokens: 64000
- editor_model_name: vertex_ai-anthropic_models/vertex_ai/claude-3-7-sonnet@20250219
- editor_edit_format: editor-diff
- accepts_settings:
- - thinking_tokens
-
-- name: vertex_ai-language-models/gemini-2.5-flash-preview-04-17
+- name: openrouter/x-ai/grok-4
edit_format: diff
use_repo_map: true
accepts_settings:
- reasoning_effort
+
+- name: us.anthropic.claude-opus-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: us.anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 32000
+ cache_control: true
+ editor_model_name: us.anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
+- name: us.anthropic.claude-sonnet-4-20250514-v1:0
+ edit_format: diff
+ weak_model_name: us.anthropic.claude-3-5-haiku-20241022-v1:0
+ use_repo_map: true
+ extra_params:
+ extra_headers:
+ anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25,output-128k-2025-02-19
+ max_tokens: 64000
+ cache_control: true
+ editor_model_name: us.anthropic.claude-sonnet-4-20250514-v1:0
+ editor_edit_format: editor-diff
+ accepts_settings:
- thinking_tokens
- name: vertex_ai/claude-3-5-haiku@20241022
@@ -1494,6 +2486,19 @@ cog.out("```\n")
accepts_settings:
- thinking_tokens
+- name: vertex_ai/claude-3-7-sonnet@20250219
+ edit_format: diff
+ weak_model_name: vertex_ai/claude-3-5-haiku@20241022
+ use_repo_map: true
+ overeager: true
+ examples_as_sys_msg: true
+ extra_params:
+ max_tokens: 64000
+ editor_model_name: vertex_ai/claude-3-7-sonnet@20250219
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
- name: vertex_ai/claude-3-opus@20240229
edit_format: diff
weak_model_name: vertex_ai/claude-3-5-haiku@20241022
@@ -1502,30 +2507,125 @@ cog.out("```\n")
- name: vertex_ai/claude-3-sonnet@20240229
weak_model_name: vertex_ai/claude-3-5-haiku@20241022
-- name: vertex_ai/gemini-2.5-pro-exp-03-25
+- name: vertex_ai/claude-opus-4@20250514
+ edit_format: diff
+ weak_model_name: vertex_ai/claude-3-5-haiku@20241022
+ use_repo_map: true
+ extra_params:
+ max_tokens: 32000
+ editor_model_name: vertex_ai/claude-sonnet-4@20250514
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
+- name: vertex_ai/claude-opus-4@20250514
+ edit_format: diff
+ weak_model_name: vertex_ai/claude-3-5-haiku@20241022
+ use_repo_map: true
+ extra_params:
+ max_tokens: 32000
+ editor_model_name: vertex_ai/claude-sonnet-4@20250514
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
+- name: vertex_ai/claude-sonnet-4@20250514
+ edit_format: diff
+ weak_model_name: vertex_ai/claude-3-5-haiku@20241022
+ use_repo_map: true
+ extra_params:
+ max_tokens: 64000
+ editor_model_name: vertex_ai/claude-sonnet-4@20250514
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
+- name: vertex_ai/claude-sonnet-4@20250514
+ edit_format: diff
+ weak_model_name: vertex_ai/claude-3-5-haiku@20241022
+ use_repo_map: true
+ extra_params:
+ max_tokens: 64000
+ editor_model_name: vertex_ai/claude-sonnet-4@20250514
+ editor_edit_format: editor-diff
+ accepts_settings:
+ - thinking_tokens
+
+- name: vertex_ai/gemini-2.5-flash
edit_format: diff-fenced
- weak_model_name: vertex_ai-language-models/gemini-2.5-flash-preview-04-17
use_repo_map: true
overeager: true
- editor_model_name: vertex_ai-language-models/gemini-2.5-flash-preview-04-17
+ accepts_settings:
+ - thinking_tokens
+
+- name: vertex_ai/gemini-2.5-flash-preview-04-17
+ edit_format: diff
+ use_repo_map: true
+ accepts_settings:
+ - reasoning_effort
+ - thinking_tokens
+
+- name: vertex_ai/gemini-2.5-flash-preview-05-20
+ edit_format: diff
+ use_repo_map: true
+ accepts_settings:
+ - reasoning_effort
+ - thinking_tokens
+
+- name: vertex_ai/gemini-2.5-pro
+ edit_format: diff-fenced
+ weak_model_name: vertex_ai/gemini-2.5-flash
+ use_repo_map: true
+ overeager: true
+ editor_model_name: vertex_ai/gemini-2.5-flash
+ accepts_settings:
+ - thinking_tokens
+
+- name: vertex_ai/gemini-2.5-pro-exp-03-25
+ edit_format: diff-fenced
+ weak_model_name: vertex_ai/gemini-2.5-flash-preview-04-17
+ use_repo_map: true
+ overeager: true
+ editor_model_name: vertex_ai/gemini-2.5-flash-preview-04-17
- name: vertex_ai/gemini-2.5-pro-preview-03-25
edit_format: diff-fenced
- weak_model_name: vertex_ai-language-models/gemini-2.5-flash-preview-04-17
+ weak_model_name: vertex_ai/gemini-2.5-flash-preview-04-17
use_repo_map: true
overeager: true
- editor_model_name: vertex_ai-language-models/gemini-2.5-flash-preview-04-17
+ editor_model_name: vertex_ai/gemini-2.5-flash-preview-04-17
- name: vertex_ai/gemini-2.5-pro-preview-05-06
edit_format: diff-fenced
- weak_model_name: vertex_ai-language-models/gemini-2.5-flash-preview-04-17
+ weak_model_name: vertex_ai/gemini-2.5-flash-preview-04-17
use_repo_map: true
overeager: true
- editor_model_name: vertex_ai-language-models/gemini-2.5-flash-preview-04-17
+ editor_model_name: vertex_ai/gemini-2.5-flash-preview-04-17
-- name: vertex_ai/gemini-pro-experimental
+- name: vertex_ai/gemini-2.5-pro-preview-06-05
+ edit_format: diff-fenced
+ weak_model_name: vertex_ai/gemini-2.5-flash-preview-04-17
+ use_repo_map: true
+ overeager: true
+ editor_model_name: vertex_ai/gemini-2.5-flash-preview-04-17
+ accepts_settings:
+ - thinking_tokens
+
+- name: vertex_ai/gemini-3-flash-preview
edit_format: diff-fenced
use_repo_map: true
+ overeager: true
+ accepts_settings:
+ - thinking_tokens
+
+- name: vertex_ai/gemini-3-pro-preview
+ edit_format: diff-fenced
+ weak_model_name: vertex_ai/gemini-2.5-flash
+ use_repo_map: true
+ overeager: true
+ editor_model_name: vertex_ai/gemini-2.5-flash
+ accepts_settings:
+ - thinking_tokens
- name: xai/grok-3-beta
edit_format: diff
@@ -1544,6 +2644,12 @@ cog.out("```\n")
use_repo_map: true
accepts_settings:
- reasoning_effort
+
+- name: xai/grok-4
+ edit_format: diff
+ use_repo_map: true
+ accepts_settings:
+ - reasoning_effort
```
diff --git a/aider/website/docs/config/aider_conf.md b/aider/website/docs/config/aider_conf.md
index 99bccf401..bd5ea6246 100644
--- a/aider/website/docs/config/aider_conf.md
+++ b/aider/website/docs/config/aider_conf.md
@@ -1,7 +1,7 @@
---
parent: Configuration
nav_order: 15
-description: How to configure aider with a yaml config file.
+description: How to configure aider with a YAML config file.
---
# YAML config file
@@ -58,7 +58,7 @@ cog.outl("```")
# Place in your home dir, or at the root of your git repo.
##########################################################
-# Note: You can only put OpenAI and Anthropic API keys in the yaml
+# Note: You can only put OpenAI and Anthropic API keys in the YAML
# config file. Keys for all APIs can be stored in a .env file
# https://aider.chat/docs/config/dotenv.html
@@ -137,7 +137,7 @@ cog.outl("```")
## Set the reasoning_effort API parameter (default: not set)
#reasoning-effort: xxx
-## Set the thinking token budget for models that support it (default: not set)
+## Set the thinking token budget for models that support it. Use 0 to disable. (default: not set)
#thinking-tokens: xxx
## Verify the SSL cert when connecting to models (default: True)
@@ -266,6 +266,9 @@ cog.outl("```")
## Enable/disable adding .aider* to .gitignore (default: True)
#gitignore: true
+## Enable/disable the addition of files listed in .gitignore to Aider's editing scope.
+#add-gitignore-files: false
+
## Specify the aider ignore file (default: .aiderignore in git root)
#aiderignore: .aiderignore
@@ -290,8 +293,8 @@ cog.outl("```")
## Prefix all commit messages with 'aider: ' (default: False)
#attribute-commit-message-committer: false
-## Attribute aider edits using the Co-authored-by trailer in the commit message (default: False). If True, this takes precedence over default --attribute-author and --attribute-committer behavior unless they are explicitly set to True.
-#attribute-co-authored-by: false
+## Attribute aider edits using the Co-authored-by trailer in the commit message (default: True). If True, this takes precedence over default --attribute-author and --attribute-committer behavior unless they are explicitly set to True.
+#attribute-co-authored-by: true
## Enable/disable git pre-commit hooks with --no-verify (default: False)
#git-commit-verify: false
@@ -349,6 +352,12 @@ cog.outl("```")
## Permanently disable analytics
#analytics-disable: false
+## Send analytics to custom PostHog instance
+#analytics-posthog-host: xxx
+
+## Send analytics to custom PostHog project
+#analytics-posthog-project-api-key: xxx
+
############
# Upgrading:
@@ -440,6 +449,9 @@ cog.outl("```")
## Specify the language to use in the chat (default: None, uses system settings)
#chat-language: xxx
+## Specify the language to use in the commit message (default: None, user language)
+#commit-language: xxx
+
## Always say yes to every confirmation
#yes-always: false
diff --git a/aider/website/docs/config/api-keys.md b/aider/website/docs/config/api-keys.md
index f353579f1..3be726aa2 100644
--- a/aider/website/docs/config/api-keys.md
+++ b/aider/website/docs/config/api-keys.md
@@ -40,9 +40,9 @@ OPENAI_API_KEY=
ANTHROPIC_API_KEY=
```
-#### Yaml config file
+#### YAML config file
You can also set those API keys via special entries in the
-[yaml config file](/docs/config/aider_conf.html), like this:
+[YAML config file](/docs/config/aider_conf.html), like this:
```yaml
openai-api-key:
@@ -74,7 +74,7 @@ OPENROUTER_API_KEY=bar
DEEPSEEK_API_KEY=baz
```
-#### Yaml config file
+#### YAML config file
You can also set API keys in the
diff --git a/aider/website/docs/config/dotenv.md b/aider/website/docs/config/dotenv.md
index 82ad974de..11681bf07 100644
--- a/aider/website/docs/config/dotenv.md
+++ b/aider/website/docs/config/dotenv.md
@@ -112,7 +112,7 @@ cog.outl("```")
## Set the reasoning_effort API parameter (default: not set)
#AIDER_REASONING_EFFORT=
-## Set the thinking token budget for models that support it (default: not set)
+## Set the thinking token budget for models that support it. Use 0 to disable. (default: not set)
#AIDER_THINKING_TOKENS=
## Verify the SSL cert when connecting to models (default: True)
@@ -241,6 +241,9 @@ cog.outl("```")
## Enable/disable adding .aider* to .gitignore (default: True)
#AIDER_GITIGNORE=true
+## Enable/disable the addition of files listed in .gitignore to Aider's editing scope.
+#AIDER_ADD_GITIGNORE_FILES=false
+
## Specify the aider ignore file (default: .aiderignore in git root)
#AIDER_AIDERIGNORE=.aiderignore
@@ -265,8 +268,8 @@ cog.outl("```")
## Prefix all commit messages with 'aider: ' (default: False)
#AIDER_ATTRIBUTE_COMMIT_MESSAGE_COMMITTER=false
-## Attribute aider edits using the Co-authored-by trailer in the commit message (default: False). If True, this takes precedence over default --attribute-author and --attribute-committer behavior unless they are explicitly set to True.
-#AIDER_ATTRIBUTE_CO_AUTHORED_BY=false
+## Attribute aider edits using the Co-authored-by trailer in the commit message (default: True). If True, this takes precedence over default --attribute-author and --attribute-committer behavior unless they are explicitly set to True.
+#AIDER_ATTRIBUTE_CO_AUTHORED_BY=true
## Enable/disable git pre-commit hooks with --no-verify (default: False)
#AIDER_GIT_COMMIT_VERIFY=false
@@ -319,6 +322,12 @@ cog.outl("```")
## Permanently disable analytics
#AIDER_ANALYTICS_DISABLE=false
+## Send analytics to custom PostHog instance
+#AIDER_ANALYTICS_POSTHOG_HOST=
+
+## Send analytics to custom PostHog project
+#AIDER_ANALYTICS_POSTHOG_PROJECT_API_KEY=
+
############
# Upgrading:
@@ -397,6 +406,9 @@ cog.outl("```")
## Specify the language to use in the chat (default: None, uses system settings)
#AIDER_CHAT_LANGUAGE=
+## Specify the language to use in the commit message (default: None, user language)
+#AIDER_COMMIT_LANGUAGE=
+
## Always say yes to every confirmation
#AIDER_YES_ALWAYS=
diff --git a/aider/website/docs/config/editor.md b/aider/website/docs/config/editor.md
index aff3e376c..dc1d74df8 100644
--- a/aider/website/docs/config/editor.md
+++ b/aider/website/docs/config/editor.md
@@ -12,7 +12,7 @@ Aider allows you to configure your preferred text editor for use with the `/edit
You can specify the text editor with the `--editor` switch or using
`editor:` in aider's
-[yaml config file](https://aider.chat/docs/config/aider_conf.html).
+[YAML config file](https://aider.chat/docs/config/aider_conf.html).
## Environment variables
diff --git a/aider/website/docs/config/model-aliases.md b/aider/website/docs/config/model-aliases.md
index c3871a094..c27b34da0 100644
--- a/aider/website/docs/config/model-aliases.md
+++ b/aider/website/docs/config/model-aliases.md
@@ -79,17 +79,19 @@ for alias, model in sorted(MODEL_ALIASES.items()):
- `4-turbo`: gpt-4-1106-preview
- `4o`: gpt-4o
- `deepseek`: deepseek/deepseek-chat
-- `flash`: gemini/gemini-2.5-flash-preview-04-17
-- `gemini`: gemini/gemini-2.5-pro-preview-05-06
-- `gemini-2.5-pro`: gemini/gemini-2.5-pro-preview-05-06
+- `flash`: gemini/gemini-2.5-flash
+- `flash-lite`: gemini/gemini-2.5-flash-lite
+- `gemini`: gemini/gemini-3-pro-preview
+- `gemini-2.5-pro`: gemini/gemini-2.5-pro
+- `gemini-3-pro-preview`: gemini/gemini-3-pro-preview
- `gemini-exp`: gemini/gemini-2.5-pro-exp-03-25
- `grok3`: xai/grok-3-beta
- `haiku`: claude-3-5-haiku-20241022
- `optimus`: openrouter/openrouter/optimus-alpha
-- `opus`: claude-3-opus-20240229
+- `opus`: claude-opus-4-20250514
- `quasar`: openrouter/openrouter/quasar-alpha
- `r1`: deepseek/deepseek-reasoner
-- `sonnet`: anthropic/claude-3-7-sonnet-20250219
+- `sonnet`: anthropic/claude-sonnet-4-20250514
## Priority
diff --git a/aider/website/docs/config/options.md b/aider/website/docs/config/options.md
index 368c4ec7e..c974f671b 100644
--- a/aider/website/docs/config/options.md
+++ b/aider/website/docs/config/options.md
@@ -49,8 +49,10 @@ usage: aider [-h] [--model] [--openai-api-key] [--anthropic-api-key]
[--completion-menu-current-color]
[--completion-menu-current-bg-color] [--code-theme]
[--show-diffs] [--git | --no-git]
- [--gitignore | --no-gitignore] [--aiderignore]
- [--subtree-only] [--auto-commits | --no-auto-commits]
+ [--gitignore | --no-gitignore]
+ [--add-gitignore-files | --no-add-gitignore-files]
+ [--aiderignore] [--subtree-only]
+ [--auto-commits | --no-auto-commits]
[--dirty-commits | --no-dirty-commits]
[--attribute-author | --no-attribute-author]
[--attribute-committer | --no-attribute-committer]
@@ -64,7 +66,9 @@ usage: aider [-h] [--model] [--openai-api-key] [--anthropic-api-key]
[--lint-cmd] [--auto-lint | --no-auto-lint]
[--test-cmd] [--auto-test | --no-auto-test] [--test]
[--analytics | --no-analytics] [--analytics-log]
- [--analytics-disable] [--just-check-update]
+ [--analytics-disable] [--analytics-posthog-host]
+ [--analytics-posthog-project-api-key]
+ [--just-check-update]
[--check-update | --no-check-update]
[--show-release-notes | --no-show-release-notes]
[--install-main-branch] [--upgrade] [--version]
@@ -74,9 +78,9 @@ usage: aider [-h] [--model] [--openai-api-key] [--anthropic-api-key]
[--apply-clipboard-edits] [--exit] [--show-repo-map]
[--show-prompts] [--voice-format] [--voice-language]
[--voice-input-device] [--disable-playwright] [--file]
- [--read] [--vim] [--chat-language] [--yes-always] [-v]
- [--load] [--encoding] [--line-endings] [-c]
- [--env-file]
+ [--read] [--vim] [--chat-language] [--commit-language]
+ [--yes-always] [-v] [--load] [--encoding]
+ [--line-endings] [-c] [--env-file]
[--suggest-shell-commands | --no-suggest-shell-commands]
[--fancy-input | --no-fancy-input]
[--multiline | --no-multiline]
@@ -171,7 +175,7 @@ Set the reasoning_effort API parameter (default: not set)
Environment variable: `AIDER_REASONING_EFFORT`
### `--thinking-tokens VALUE`
-Set the thinking token budget for models that support it (default: not set)
+Set the thinking token budget for models that support it. Use 0 to disable. (default: not set)
Environment variable: `AIDER_THINKING_TOKENS`
### `--verify-ssl`
@@ -388,6 +392,14 @@ Aliases:
- `--gitignore`
- `--no-gitignore`
+### `--add-gitignore-files`
+Enable/disable the addition of files listed in .gitignore to Aider's editing scope.
+Default: False
+Environment variable: `AIDER_ADD_GITIGNORE_FILES`
+Aliases:
+ - `--add-gitignore-files`
+ - `--no-add-gitignore-files`
+
### `--aiderignore AIDERIGNORE`
Specify the aider ignore file (default: .aiderignore in git root)
Default: .aiderignore
@@ -445,8 +457,8 @@ Aliases:
- `--no-attribute-commit-message-committer`
### `--attribute-co-authored-by`
-Attribute aider edits using the Co-authored-by trailer in the commit message (default: False). If True, this takes precedence over default --attribute-author and --attribute-committer behavior unless they are explicitly set to True.
-Default: False
+Attribute aider edits using the Co-authored-by trailer in the commit message (default: True). If True, this takes precedence over default --attribute-author and --attribute-committer behavior unless they are explicitly set to True.
+Default: True
Environment variable: `AIDER_ATTRIBUTE_CO_AUTHORED_BY`
Aliases:
- `--attribute-co-authored-by`
@@ -546,6 +558,14 @@ Permanently disable analytics
Default: False
Environment variable: `AIDER_ANALYTICS_DISABLE`
+### `--analytics-posthog-host ANALYTICS_POSTHOG_HOST`
+Send analytics to custom PostHog instance
+Environment variable: `AIDER_ANALYTICS_POSTHOG_HOST`
+
+### `--analytics-posthog-project-api-key ANALYTICS_POSTHOG_PROJECT_API_KEY`
+Send analytics to custom PostHog project
+Environment variable: `AIDER_ANALYTICS_POSTHOG_PROJECT_API_KEY`
+
## Upgrading:
### `--just-check-update`
@@ -683,6 +703,10 @@ Environment variable: `AIDER_VIM`
Specify the language to use in the chat (default: None, uses system settings)
Environment variable: `AIDER_CHAT_LANGUAGE`
+### `--commit-language COMMIT_LANGUAGE`
+Specify the language to use in the commit message (default: None, user language)
+Environment variable: `AIDER_COMMIT_LANGUAGE`
+
### `--yes-always`
Always say yes to every confirmation
Environment variable: `AIDER_YES_ALWAYS`
diff --git a/aider/website/docs/config/reasoning.md b/aider/website/docs/config/reasoning.md
index 168516feb..bbdeaa7f9 100644
--- a/aider/website/docs/config/reasoning.md
+++ b/aider/website/docs/config/reasoning.md
@@ -25,7 +25,7 @@ aider --model r1
```
Inside the aider chat, you can use `/thinking-tokens 4k` or `/reasoning-effort low` to change
-the amount of reasoning.
+the amount of reasoning. Use `/thinking-tokens 0` to disable thinking tokens.
The rest of this document describes more advanced details which are mainly needed
if you're configuring aider to work with a lesser known reasoning model or one served
@@ -47,6 +47,7 @@ You can use the `--thinking-tokens` switch to request
the model use a certain number of thinking tokens.
This switch is useful for Sonnet 3.7.
You can specify the token budget like "1024", "1k", "8k" or "0.01M".
+Use "0" to disable thinking tokens.
### Model compatibility and settings
diff --git a/aider/website/docs/faq.md b/aider/website/docs/faq.md
index 60d58efc7..0a913cb14 100644
--- a/aider/website/docs/faq.md
+++ b/aider/website/docs/faq.md
@@ -264,14 +264,15 @@ tr:hover { background-color: #f5f5f5; }
Model Name Total Tokens Percent
-gemini/gemini-2.5-pro-exp-03-25 890,057 69.9%
-o3 373,753 29.4%
-openrouter/REDACTED 8,745 0.7%
+gemini/gemini-2.5-pro 222,047 23.7%
+gpt-5 211,072 22.6%
+gemini/gemini-3-flash-preview 187,836 20.1%
+None 168,988 18.1%
+gemini/gemini-3-pro-preview 81,851 8.8%
+o3-pro 36,620 3.9%
+gemini/gemini-2.5-flash-lite 15,470 1.7%
+gemini/gemini-2.5-flash-lite-preview-06-17 11,371 1.2%
-
-{: .note :}
-Some models show as REDACTED, because they are new or unpopular models.
-Aider's analytics only records the names of "well known" LLMs.
## How are the "aider wrote xx% of code" stats computed?
@@ -370,6 +371,10 @@ Aider is
under an
[Apache 2.0 license](https://github.com/Aider-AI/aider/blob/main/LICENSE.txt).
+## Can I Script Aider?
+
+Yes. You can script aider via the command line or python. See more from here: [Scripting aider](https://aider.chat/docs/scripting.html)
+
diff --git a/aider/website/docs/install.md b/aider/website/docs/install.md
index 024c76f34..0ebf1d2e2 100644
--- a/aider/website/docs/install.md
+++ b/aider/website/docs/install.md
@@ -28,12 +28,6 @@ These one-liners will install aider, along with python 3.12 if needed.
They are based on the
[uv installers](https://docs.astral.sh/uv/getting-started/installation/).
-#### Windows
-
-```powershell
-powershell -ExecutionPolicy ByPass -c "irm https://aider.chat/install.ps1 | iex"
-```
-
#### Mac & Linux
Use curl to download the script and execute it with sh:
@@ -48,6 +42,12 @@ If your system doesn't have curl, you can use wget:
wget -qO- https://aider.chat/install.sh | sh
```
+#### Windows
+
+```powershell
+powershell -ExecutionPolicy ByPass -c "irm https://aider.chat/install.ps1 | iex"
+```
+
## Install with uv
@@ -55,7 +55,7 @@ You can install aider with uv:
```bash
python -m pip install uv # If you need to install uv
-uv tool install --force --python python3.12 aider-chat@latest
+uv tool install --force --python python3.12 --with pip aider-chat@latest
```
This will install uv using your existing python version 3.8-3.13,
diff --git a/aider/website/docs/languages.md b/aider/website/docs/languages.md
index f5eba91ca..9bf2f20a7 100644
--- a/aider/website/docs/languages.md
+++ b/aider/website/docs/languages.md
@@ -77,10 +77,10 @@ cog.out(get_supported_languages_md())
| capnp | .capnp | | β |
| chatito | .chatito | β | β |
| clarity | .clar | | β |
-| clojure | .clj | | β |
-| clojure | .cljc | | β |
-| clojure | .cljs | | β |
-| clojure | .edn | | β |
+| clojure | .clj | β | β |
+| clojure | .cljc | β | β |
+| clojure | .cljs | β | β |
+| clojure | .edn | β | β |
| cmake | .cmake | | β |
| cmake | CMakeLists.txt | | β |
| commonlisp | .cl | β | β |
@@ -110,11 +110,11 @@ cog.out(get_supported_languages_md())
| fennel | .fnl | | β |
| firrtl | .fir | | β |
| fish | .fish | | β |
-| fortran | .f | | β |
-| fortran | .f03 | | β |
-| fortran | .f08 | | β |
-| fortran | .f90 | | β |
-| fortran | .f95 | | β |
+| fortran | .f | β | β |
+| fortran | .f03 | β | β |
+| fortran | .f08 | β | β |
+| fortran | .f90 | β | β |
+| fortran | .f95 | β | β |
| func | .fc | | β |
| gdscript | .gd | | β |
| gitattributes | .gitattributes | | β |
@@ -133,7 +133,7 @@ cog.out(get_supported_languages_md())
| gstlaunch | .launch | | β |
| hack | .hack | | β |
| hare | .ha | | β |
-| haskell | .hs | | β |
+| haskell | .hs | β | β |
| haxe | .hx | | β |
| hcl | .hcl | β | β |
| hcl | .tf | β | β |
@@ -153,7 +153,7 @@ cog.out(get_supported_languages_md())
| json | .json | | β |
| jsonnet | .jsonnet | | β |
| jsonnet | .libsonnet | | β |
-| julia | .jl | | β |
+| julia | .jl | β | β |
| kconfig | Kconfig | | β |
| kdl | .kdl | | β |
| kotlin | .kt | β | β |
@@ -172,8 +172,8 @@ cog.out(get_supported_languages_md())
| make | Makefile | | β |
| markdown | .markdown | | β |
| markdown | .md | | β |
-| matlab | .m | | β |
-| matlab | .mat | | β |
+| matlab | .m | β | β |
+| matlab | .mat | β | β |
| mermaid | .mermaid | | β |
| meson | meson.build | | β |
| ninja | .ninja | | β |
@@ -257,7 +257,7 @@ cog.out(get_supported_languages_md())
| xml | .xml | | β |
| xml | .xsl | | β |
| yuck | .yuck | | β |
-| zig | .zig | | β |
+| zig | .zig | β | β |
diff --git a/aider/website/docs/leaderboards/index.md b/aider/website/docs/leaderboards/index.md
index 865f73b3a..e3072f99e 100644
--- a/aider/website/docs/leaderboards/index.md
+++ b/aider/website/docs/leaderboards/index.md
@@ -285,6 +285,6 @@ mod_dates = [get_last_modified_date(file) for file in files]
latest_mod_date = max(mod_dates)
cog.out(f"{latest_mod_date.strftime('%B %d, %Y.')}")
]]]-->
-May 08, 2025.
+November 20, 2025.
diff --git a/aider/website/docs/llms/github.md b/aider/website/docs/llms/github.md
new file mode 100644
index 000000000..43c785344
--- /dev/null
+++ b/aider/website/docs/llms/github.md
@@ -0,0 +1,111 @@
+---
+parent: Connecting to LLMs
+nav_order: 510
+---
+
+# GitHub Copilot
+
+Aider can connect to GitHub Copilotβs LLMs because Copilot exposes a standard **OpenAI-style**
+endpoint at:
+
+```
+https://api.githubcopilot.com
+```
+
+First, install aider:
+
+{% include install.md %}
+
+---
+
+## Configure your environment
+
+```bash
+# macOS/Linux
+export OPENAI_API_BASE=https://api.githubcopilot.com
+export OPENAI_API_KEY=
+
+# Windows (PowerShell)
+setx OPENAI_API_BASE https://api.githubcopilot.com
+setx OPENAI_API_KEY
+# β¦restart the shell after setx commands
+```
+
+---
+
+### Where do I get the token?
+The easiest path is to sign in to Copilot from any JetBrains IDE (PyCharm, GoLand, etc).
+After you authenticate a file appears:
+
+```
+~/.config/github-copilot/apps.json
+```
+
+On Windows the config can be found in:
+
+```
+~\AppData\Local\github-copilot\apps.json
+```
+
+Copy the `oauth_token` value β that string is your `OPENAI_API_KEY`.
+
+*Note:* tokens created by the Neovim **copilot.lua** plugin (old `hosts.json`) sometimes lack the
+needed scopes. If you see βaccess to this endpoint is forbiddenβ, regenerate the token with a
+JetBrains IDE.
+
+---
+
+## Discover available models
+
+Copilot hosts many models (OpenAI, Anthropic, Google, etc).
+List the models your subscription allows with:
+
+```bash
+curl -s https://api.githubcopilot.com/models \
+ -H "Authorization: Bearer $OPENAI_API_KEY" \
+ -H "Content-Type: application/json" \
+ -H "Copilot-Integration-Id: vscode-chat" | jq -r '.data[].id'
+```
+
+Each returned ID can be used with aider by **prefixing it with `openai/`**:
+
+```bash
+aider --model openai/gpt-4o
+# or
+aider --model openai/claude-3.7-sonnet-thought
+```
+
+---
+
+## Quick start
+
+```bash
+# change into your project
+cd /to/your/project
+
+# talk to Copilot
+aider --model openai/gpt-4o
+```
+
+---
+
+## Optional config file (`~/.aider.conf.yml`)
+
+```yaml
+openai-api-base: https://api.githubcopilot.com
+openai-api-key: ""
+model: openai/gpt-4o
+weak-model: openai/gpt-4o-mini
+show-model-warnings: false
+```
+
+---
+
+## FAQ
+
+* Calls made through aider are billed through your Copilot subscription
+ (aider will still print *estimated* costs).
+* The Copilot docs explicitly allow third-party βagentsβ that hit this API β aider is playing by
+ the rules.
+* Aider talks directly to the REST endpointβno web-UI scraping or browser automation.
+
diff --git a/aider/website/docs/llms/other.md b/aider/website/docs/llms/other.md
index be1ccdbce..a2335a9c7 100644
--- a/aider/website/docs/llms/other.md
+++ b/aider/website/docs/llms/other.md
@@ -59,43 +59,57 @@ cog.out(''.join(lines))
- ALEPHALPHA_API_KEY
- ANTHROPIC_API_KEY
- ANYSCALE_API_KEY
+- ARK_API_KEY
- AZURE_AI_API_KEY
- AZURE_API_KEY
- AZURE_OPENAI_API_KEY
- BASETEN_API_KEY
+- BYTEZ_API_KEY
- CEREBRAS_API_KEY
- CLARIFAI_API_KEY
- CLOUDFLARE_API_KEY
- CO_API_KEY
- CODESTRAL_API_KEY
- COHERE_API_KEY
+- COMPACTIFAI_API_KEY
+- DASHSCOPE_API_KEY
- DATABRICKS_API_KEY
- DEEPINFRA_API_KEY
- DEEPSEEK_API_KEY
+- FEATHERLESS_AI_API_KEY
- FIREWORKS_AI_API_KEY
- FIREWORKS_API_KEY
- FIREWORKSAI_API_KEY
- GEMINI_API_KEY
+- GOOGLE_API_KEY
- GROQ_API_KEY
- HUGGINGFACE_API_KEY
- INFINITY_API_KEY
- MARITALK_API_KEY
- MISTRAL_API_KEY
+- MOONSHOT_API_KEY
+- NEBIUS_API_KEY
- NLP_CLOUD_API_KEY
+- NOVITA_API_KEY
- NVIDIA_NIM_API_KEY
- OLLAMA_API_KEY
- OPENAI_API_KEY
- OPENAI_LIKE_API_KEY
- OPENROUTER_API_KEY
- OR_API_KEY
+- OVHCLOUD_API_KEY
- PALM_API_KEY
- PERPLEXITYAI_API_KEY
- PREDIBASE_API_KEY
- PROVIDER_API_KEY
- REPLICATE_API_KEY
+- SAMBANOVA_API_KEY
- TOGETHERAI_API_KEY
+- USER_API_KEY
+- VERCEL_AI_GATEWAY_API_KEY
- VOLCENGINE_API_KEY
- VOYAGE_API_KEY
+- WANDB_API_KEY
- WATSONX_API_KEY
- WX_API_KEY
- XAI_API_KEY
diff --git a/aider/website/docs/llms/vertex.md b/aider/website/docs/llms/vertex.md
index 9dc82ea38..5d6bd20f2 100644
--- a/aider/website/docs/llms/vertex.md
+++ b/aider/website/docs/llms/vertex.md
@@ -40,7 +40,7 @@ cd /to/your/project
aider --model vertex_ai/claude-3-5-sonnet@20240620
```
-Or you can use the [yaml config](/docs/config/aider_conf.html) to set the model to any of the
+Or you can use the [YAML config](/docs/config/aider_conf.html) to set the model to any of the
models supported by Vertex AI.
Example `.aider.conf.yml` file:
diff --git a/aider/website/docs/more/analytics.md b/aider/website/docs/more/analytics.md
index 24bd4910b..74de05213 100644
--- a/aider/website/docs/more/analytics.md
+++ b/aider/website/docs/more/analytics.md
@@ -52,10 +52,9 @@ will confirm you wish to opt-in to analytics.
- `--no-analytics` will turn off analytics for the current session.
- By default, if you don't provide `--analytics` or `--no-analytics`,
aider will enable analytics for a random subset of users.
+Such randomly selected users will be asked if they wish to opt-in to analytics.
This will never happen if you have permanently disabled analytics
with `--analytics-disable`.
-Randomly selected users will be asked if they wish to opt-in to analytics.
-
## Opting in
@@ -106,6 +105,12 @@ If you want to just log analytics without reporting them, you can do:
aider --analytics-log filename.jsonl --no-analytics
```
+### Sending analytics to custom PostHog project or installation
+
+Aider uses PostHog for analytics collection. You can configure aider to send analytics to your own PostHog project or a custom PostHog installation using these parameters:
+
+- `--analytics-posthog-project-api-key KEY` - Set a custom PostHog project API key
+- `--analytics-posthog-host HOST` - Set a custom PostHog host (default is app.posthog.com)
## Reporting issues
diff --git a/aider/website/docs/more/infinite-output.md b/aider/website/docs/more/infinite-output.md
index be61226d6..069be5da6 100644
--- a/aider/website/docs/more/infinite-output.md
+++ b/aider/website/docs/more/infinite-output.md
@@ -57,7 +57,30 @@ cog.out(model_list)
]]]-->
- anthropic.claude-3-5-haiku-20241022-v1:0
- anthropic.claude-3-5-sonnet-20241022-v2:0
+- anthropic.claude-3-7-sonnet-20240620-v1:0
- anthropic.claude-3-7-sonnet-20250219-v1:0
+- anthropic.claude-haiku-4-5-20251001-v1:0
+- anthropic.claude-haiku-4-5@20251001
+- anthropic.claude-opus-4-1-20250805-v1:0
+- anthropic.claude-opus-4-20250514-v1:0
+- anthropic.claude-opus-4-5-20251101-v1:0
+- anthropic.claude-sonnet-4-20250514-v1:0
+- anthropic.claude-sonnet-4-5-20250929-v1:0
+- apac.anthropic.claude-3-5-sonnet-20241022-v2:0
+- apac.anthropic.claude-haiku-4-5-20251001-v1:0
+- apac.anthropic.claude-sonnet-4-20250514-v1:0
+- au.anthropic.claude-haiku-4-5-20251001-v1:0
+- au.anthropic.claude-sonnet-4-5-20250929-v1:0
+- azure_ai/claude-haiku-4-5
+- azure_ai/claude-opus-4-1
+- azure_ai/claude-sonnet-4-5
+- azure_ai/deepseek-v3.2
+- azure_ai/deepseek-v3.2-speciale
+- azure_ai/mistral-medium-2505
+- bedrock/us-gov-east-1/claude-sonnet-4-5-20250929-v1:0
+- bedrock/us-gov-west-1/anthropic.claude-3-7-sonnet-20250219-v1:0
+- bedrock/us-gov-west-1/claude-sonnet-4-5-20250929-v1:0
+- bedrock/us.anthropic.claude-3-5-haiku-20241022-v1:0
- claude-3-5-haiku-20241022
- claude-3-5-haiku-latest
- claude-3-5-sonnet-20240620
@@ -68,24 +91,72 @@ cog.out(model_list)
- claude-3-haiku-20240307
- claude-3-opus-20240229
- claude-3-opus-latest
-- claude-3-sonnet-20240229
+- claude-4-opus-20250514
+- claude-4-sonnet-20250514
+- claude-haiku-4-5
+- claude-haiku-4-5-20251001
+- claude-opus-4-1
+- claude-opus-4-1-20250805
+- claude-opus-4-20250514
+- claude-opus-4-5
+- claude-opus-4-5-20251101
+- claude-sonnet-4-20250514
+- claude-sonnet-4-5
+- claude-sonnet-4-5-20250929
+- claude-sonnet-4-5-20250929-v1:0
- codestral/codestral-2405
- codestral/codestral-latest
- databricks/databricks-claude-3-7-sonnet
+- databricks/databricks-claude-haiku-4-5
+- databricks/databricks-claude-opus-4
+- databricks/databricks-claude-opus-4-1
+- databricks/databricks-claude-opus-4-5
+- databricks/databricks-claude-sonnet-4
+- databricks/databricks-claude-sonnet-4-1
+- databricks/databricks-claude-sonnet-4-5
- deepseek/deepseek-chat
- deepseek/deepseek-coder
+- deepseek/deepseek-r1
- deepseek/deepseek-reasoner
+- deepseek/deepseek-v3
+- deepseek/deepseek-v3.2
- eu.anthropic.claude-3-5-haiku-20241022-v1:0
- eu.anthropic.claude-3-5-sonnet-20241022-v2:0
+- eu.anthropic.claude-3-7-sonnet-20250219-v1:0
+- eu.anthropic.claude-haiku-4-5-20251001-v1:0
+- eu.anthropic.claude-opus-4-1-20250805-v1:0
+- eu.anthropic.claude-opus-4-20250514-v1:0
+- eu.anthropic.claude-opus-4-5-20251101-v1:0
+- eu.anthropic.claude-sonnet-4-20250514-v1:0
+- eu.anthropic.claude-sonnet-4-5-20250929-v1:0
+- global.anthropic.claude-haiku-4-5-20251001-v1:0
+- global.anthropic.claude-opus-4-5-20251101-v1:0
+- global.anthropic.claude-sonnet-4-20250514-v1:0
+- global.anthropic.claude-sonnet-4-5-20250929-v1:0
+- jp.anthropic.claude-haiku-4-5-20251001-v1:0
+- jp.anthropic.claude-sonnet-4-5-20250929-v1:0
- mistral/codestral-2405
+- mistral/codestral-2508
- mistral/codestral-latest
- mistral/codestral-mamba-latest
+- mistral/devstral-2512
+- mistral/devstral-medium-2507
+- mistral/devstral-small-2505
+- mistral/devstral-small-2507
+- mistral/labs-devstral-small-2512
+- mistral/magistral-medium-2506
+- mistral/magistral-medium-2509
+- mistral/magistral-medium-latest
+- mistral/magistral-small-2506
+- mistral/magistral-small-latest
- mistral/mistral-large-2402
- mistral/mistral-large-2407
- mistral/mistral-large-2411
+- mistral/mistral-large-3
- mistral/mistral-large-latest
- mistral/mistral-medium
- mistral/mistral-medium-2312
+- mistral/mistral-medium-2505
- mistral/mistral-medium-latest
- mistral/mistral-small
- mistral/mistral-small-latest
@@ -101,10 +172,26 @@ cog.out(model_list)
- mistral/pixtral-large-latest
- openrouter/anthropic/claude-3.5-sonnet
- openrouter/anthropic/claude-3.7-sonnet
+- openrouter/anthropic/claude-haiku-4.5
+- openrouter/anthropic/claude-opus-4
+- openrouter/anthropic/claude-opus-4.1
+- openrouter/anthropic/claude-opus-4.5
+- openrouter/anthropic/claude-sonnet-4
+- openrouter/anthropic/claude-sonnet-4.5
+- openrouter/deepseek/deepseek-chat-v3.1
- openrouter/deepseek/deepseek-r1
+- openrouter/deepseek/deepseek-r1-0528
+- openrouter/deepseek/deepseek-v3.2
+- openrouter/deepseek/deepseek-v3.2-exp
- us.anthropic.claude-3-5-haiku-20241022-v1:0
- us.anthropic.claude-3-5-sonnet-20241022-v2:0
- us.anthropic.claude-3-7-sonnet-20250219-v1:0
+- us.anthropic.claude-haiku-4-5-20251001-v1:0
+- us.anthropic.claude-opus-4-1-20250805-v1:0
+- us.anthropic.claude-opus-4-20250514-v1:0
+- us.anthropic.claude-opus-4-5-20251101-v1:0
+- us.anthropic.claude-sonnet-4-20250514-v1:0
+- us.anthropic.claude-sonnet-4-5-20250929-v1:0
- vertex_ai/claude-3-5-haiku
- vertex_ai/claude-3-5-haiku@20241022
- vertex_ai/claude-3-5-sonnet
@@ -118,6 +205,20 @@ cog.out(model_list)
- vertex_ai/claude-3-opus@20240229
- vertex_ai/claude-3-sonnet
- vertex_ai/claude-3-sonnet@20240229
+- vertex_ai/claude-haiku-4-5@20251001
+- vertex_ai/claude-opus-4
+- vertex_ai/claude-opus-4-1
+- vertex_ai/claude-opus-4-1@20250805
+- vertex_ai/claude-opus-4-5
+- vertex_ai/claude-opus-4-5@20251101
+- vertex_ai/claude-opus-4@20250514
+- vertex_ai/claude-sonnet-4
+- vertex_ai/claude-sonnet-4-5
+- vertex_ai/claude-sonnet-4-5@20250929
+- vertex_ai/claude-sonnet-4@20250514
+- vertex_ai/deepseek-ai/deepseek-r1-0528-maas
+- vertex_ai/deepseek-ai/deepseek-v3.1-maas
+- vertex_ai/deepseek-ai/deepseek-v3.2-maas
diff --git a/aider/website/docs/scripting.md b/aider/website/docs/scripting.md
index 32d060f25..71bb3282a 100644
--- a/aider/website/docs/scripting.md
+++ b/aider/website/docs/scripting.md
@@ -88,7 +88,7 @@ for all the supported arguments.
It can also be helpful to set the equivalent of `--yes` by doing this:
-```
+```python
from aider.io import InputOutput
io = InputOutput(yes=True)
# ...
diff --git a/aider/website/docs/usage/commands.md b/aider/website/docs/usage/commands.md
index 9a0caca19..d8bbaed0f 100644
--- a/aider/website/docs/usage/commands.md
+++ b/aider/website/docs/usage/commands.md
@@ -57,7 +57,7 @@ cog.out(get_help_md())
| **/save** | Save commands to a file that can reconstruct the current chat session's files |
| **/settings** | Print out the current settings |
| **/test** | Run a shell command and add the output to the chat on non-zero exit code |
-| **/think-tokens** | Set the thinking token budget (supports formats like 8096, 8k, 10.5k, 0.5M) |
+| **/think-tokens** | Set the thinking token budget, eg: 8096, 8k, 10.5k, 0.5M, or 0 to disable. |
| **/tokens** | Report on the number of tokens used by the current chat context |
| **/undo** | Undo the last git commit if it was done by aider |
| **/voice** | Record and transcribe voice input |
diff --git a/aider/website/index.html b/aider/website/index.html
index c632fbc6c..fd8b6b4c5 100644
--- a/aider/website/index.html
+++ b/aider/website/index.html
@@ -69,11 +69,11 @@ cog.out(text)
]]]-->
β GitHub Stars
- 33K
+ 39K
π¦ Installs
- 2.2M
+ 4.1M
@@ -269,178 +269,183 @@ cog.out(text)